; LLVM IR from Try/Tempest :: Engine/thirdparty/spirv_cross (spirv_msl)

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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator.71" = type { i8 }
%"class.spirv_cross::TypedID.414" = type { i32 }
%"struct.spirv_cross::SPIRType" = type { %"struct.spirv_cross::IVariant.base", i32, i32, i32, i32, i32, %"class.spirv_cross::SmallVector.92", %"class.spirv_cross::SmallVector.416", i32, i8, i8, i32, %"class.spirv_cross::SmallVector.227", %"class.spirv_cross::SmallVector.92", %"struct.spirv_cross::SPIRType::ImageType", %"class.spirv_cross::TypedID.414", %"class.spirv_cross::TypedID.414", %"class.std::unordered_set.165" }
%"struct.spirv_cross::IVariant.base" = type <{ ptr, %"class.spirv_cross::TypedID.413" }>
%"class.spirv_cross::TypedID.413" = type { i32 }
%"class.spirv_cross::SmallVector.416" = type { %"class.spirv_cross::VectorView.417", i64, %"class.spirv_cross::AlignedBuffer.418" }
%"class.spirv_cross::VectorView.417" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.418" = type { [8 x i8] }
%"class.spirv_cross::SmallVector.227" = type { %"class.spirv_cross::VectorView.228", i64, %"class.spirv_cross::AlignedBuffer.229" }
%"class.spirv_cross::VectorView.228" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.229" = type { [32 x i8] }
%"class.spirv_cross::SmallVector.92" = type { %"class.spirv_cross::VectorView.93", i64, %"class.spirv_cross::AlignedBuffer.94" }
%"class.spirv_cross::VectorView.93" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.94" = type { [32 x i8] }
%"struct.spirv_cross::SPIRType::ImageType" = type { %"class.spirv_cross::TypedID.414", i32, i8, i8, i8, i32, i32, i32 }
%"class.std::unordered_set.165" = type { %"class.std::_Hashtable.166" }
%"class.std::_Hashtable.166" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"struct.spirv_cross::IVariant" = type <{ ptr, %"class.spirv_cross::TypedID.413", [4 x i8] }>
%"class.spirv_cross::Compiler" = type { ptr, %"class.spirv_cross::ParsedIR", %"class.spirv_cross::SmallVector.92", %"class.spirv_cross::SmallVector.92", ptr, ptr, i32, %"class.std::unordered_set.95", i8, %"class.std::unordered_set", i8, i8, %"class.spirv_cross::SmallVector.114", %"class.spirv_cross::SmallVector.92", %"class.std::function", %"class.std::unordered_set", %"class.std::unordered_set", %"class.std::unordered_set", %"class.std::unordered_set", %"class.std::unordered_set", %"class.spirv_cross::Bitset", %"class.spirv_cross::Bitset", i32, i32, i8, %"class.std::unordered_set", i8, i8, i32, %"class.std::unordered_map.117", %"class.spirv_cross::SmallVector.92", %"class.std::unordered_map.131", %"class.std::unordered_set", i8, %"class.std::unordered_map.145" }
%"class.spirv_cross::ParsedIR" = type { %"class.std::unique_ptr", %"class.std::vector", %"class.spirv_cross::SmallVector", %"class.std::unordered_map", [14 x %"class.spirv_cross::SmallVector.7"], %"class.spirv_cross::SmallVector.7", %"class.spirv_cross::SmallVector.7", %"class.std::unordered_map.10", %"class.spirv_cross::SmallVector.24", %"class.spirv_cross::SmallVector.27", %"class.spirv_cross::SmallVector.30", %"class.std::unordered_map.33", %"class.std::unordered_map.52", %"class.spirv_cross::TypedID", %"struct.spirv_cross::ParsedIR::Source", i32, i32, i32, i32, %"class.std::__cxx11::basic_string", %"class.spirv_cross::Bitset", %"class.std::unordered_set" }
%"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.1" }
%"struct.std::_Head_base.1" = type { ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.spirv_cross::SmallVector" = type { %"class.spirv_cross::VectorView", i64, %"class.spirv_cross::AlignedBuffer" }
%"class.spirv_cross::VectorView" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer" = type { [192 x i8] }
%"class.std::unordered_map" = type { %"class.std::_Hashtable" }
%"class.std::_Hashtable" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.spirv_cross::SmallVector.7" = type { %"class.spirv_cross::VectorView.8", i64, %"class.spirv_cross::AlignedBuffer.9" }
%"class.spirv_cross::VectorView.8" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.9" = type { [32 x i8] }
%"class.std::unordered_map.10" = type { %"class.std::_Hashtable.11" }
%"class.std::_Hashtable.11" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.spirv_cross::SmallVector.24" = type { %"class.spirv_cross::VectorView.25", i64, %"class.spirv_cross::AlignedBuffer.26" }
%"class.spirv_cross::VectorView.25" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.26" = type { [32 x i8] }
%"class.spirv_cross::SmallVector.27" = type { %"class.spirv_cross::VectorView.28", i64, %"class.spirv_cross::AlignedBuffer.29" }
%"class.spirv_cross::VectorView.28" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.29" = type { [256 x i8] }
%"class.spirv_cross::SmallVector.30" = type { %"class.spirv_cross::VectorView.31", i64, %"class.spirv_cross::AlignedBuffer.32" }
%"class.spirv_cross::VectorView.31" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.32" = type { [8 x i8] }
%"class.std::unordered_map.33" = type { %"class.std::_Hashtable.34" }
%"class.std::_Hashtable.34" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.52" = type { %"class.std::_Hashtable.53" }
%"class.std::_Hashtable.53" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.spirv_cross::TypedID" = type { i32 }
%"struct.spirv_cross::ParsedIR::Source" = type <{ i32, i8, i8, i8, i8 }>
%"class.std::unordered_set.95" = type { %"class.std::_Hashtable.96" }
%"class.std::_Hashtable.96" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.spirv_cross::SmallVector.114" = type { %"class.spirv_cross::VectorView.115", i64, %"class.spirv_cross::AlignedBuffer.116" }
%"class.spirv_cross::VectorView.115" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.116" = type { [96 x i8] }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%"class.spirv_cross::Bitset" = type { i64, %"class.std::unordered_set" }
%"class.std::unordered_map.117" = type { %"class.std::_Hashtable.118" }
%"class.std::_Hashtable.118" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.131" = type { %"class.std::_Hashtable.132" }
%"class.std::_Hashtable.132" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_set" = type { %"class.std::_Hashtable.74" }
%"class.std::_Hashtable.74" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.145" = type { %"class.std::_Hashtable.146" }
%"class.std::_Hashtable.146" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.spirv_cross::SPIREntryPoint" = type <{ %"class.spirv_cross::TypedID", [4 x i8], %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.spirv_cross::SmallVector.419", %"class.spirv_cross::Bitset", %"struct.spirv_cross::SPIREntryPoint::WorkgroupSize", i32, i32, i32, i32, i8, [3 x i8] }>
%"class.spirv_cross::SmallVector.419" = type { %"class.spirv_cross::VectorView.420", i64, %"class.spirv_cross::AlignedBuffer.421" }
%"class.spirv_cross::VectorView.420" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.421" = type { [32 x i8] }
%"struct.spirv_cross::SPIREntryPoint::WorkgroupSize" = type { i32, i32, i32, i32, i32, i32, i32 }
%"class.spirv_cross::CompilerMSL" = type <{ %"class.spirv_cross::CompilerGLSL", %"class.std::unordered_map.277", i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i8, [2 x i8], %"struct.spirv_cross::CompilerMSL::Options", %"class.std::set", %"class.std::map", %"class.std::unordered_map.299", %"class.std::map", %"class.std::unordered_map.299", %"class.std::unordered_set", %"class.std::unordered_set", %"class.std::unordered_set", %"class.std::unordered_set", %"class.std::unordered_map.213", %"class.std::unordered_map.213", %"class.std::unordered_map.213", %"class.std::set.313", %"class.std::set.313", %"class.spirv_cross::SmallVector.92", %"class.std::unordered_map.319", %"class.std::unordered_map.336", i32, i32, i32, [8 x i32], %"class.spirv_cross::TypedID.350", %"class.spirv_cross::TypedID.350", %"class.spirv_cross::TypedID.350", %"class.spirv_cross::TypedID.350", %"class.spirv_cross::TypedID.350", %"class.spirv_cross::TypedID.350", %"class.spirv_cross::TypedID.350", %"class.spirv_cross::TypedID.350", %"class.spirv_cross::TypedID.350", %"class.spirv_cross::TypedID.350", %"class.spirv_cross::TypedID.350", i32, i32, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, [3 x i8], %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", i32, [4 x i8], %"class.std::map.351", %"class.std::unordered_map.357", %"class.std::unordered_set", %"class.spirv_cross::SmallVector.374", %"class.spirv_cross::SmallVector.92", %"class.std::unordered_set", %"class.std::unordered_set", %"class.std::unordered_set", %"class.spirv_cross::SmallVector.377", %"class.std::map.380", %"class.spirv_cross::SmallVector.92", %"class.std::unordered_set.386", [8 x i32], i32, i32, i8, i8, [6 x i8] }>
%"class.spirv_cross::CompilerGLSL" = type { %"class.spirv_cross::Compiler", ptr, %"class.spirv_cross::SmallVector.159", i8, %"class.spirv_cross::StringStream", ptr, ptr, i8, i8, %"struct.spirv_cross::CompilerGLSL::Options", %"class.std::unordered_set.165", %"class.std::unordered_set.165", %"class.std::unordered_set.165", %"class.std::unordered_set.165", %"class.std::unordered_set.165", %"class.std::unordered_set.165", %"class.std::unordered_set.165", %"class.std::unordered_map.185", %"class.std::unordered_map.145", i8, [7 x i8], %"struct.spirv_cross::CompilerGLSL::BackendVariations", i32, %"class.std::unordered_set", %"class.std::unordered_set", %"class.std::unordered_set", %"class.std::unordered_map.199", %"struct.spirv_cross::CompilerGLSL::ShaderSubgroupSupportHelper", %"class.std::unordered_map.213", %"class.spirv_cross::SmallVector.27", %"class.spirv_cross::SmallVector.27", %"class.std::unordered_map.213", %"class.spirv_cross::SmallVector.227", i32, i32, i32, i8, i8, %"class.std::vector.230", %"class.std::vector.230", %"class.std::vector.235", %"class.std::vector.240", %"class.std::unordered_map.213", %"class.std::unordered_set", %"class.std::unordered_set", i8, %"class.std::unordered_set.245", %"class.std::unordered_set", ptr, %"class.std::unordered_map.263" }
%"class.spirv_cross::SmallVector.159" = type { %"class.spirv_cross::VectorView.160", i64, %"class.spirv_cross::AlignedBuffer.161" }
%"class.spirv_cross::VectorView.160" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.161" = type { [64 x i8] }
%"class.spirv_cross::StringStream" = type { %"struct.spirv_cross::StringStream<>::Buffer", [4096 x i8], %"class.spirv_cross::SmallVector.162" }
%"struct.spirv_cross::StringStream<>::Buffer" = type { ptr, i64, i64 }
%"class.spirv_cross::SmallVector.162" = type { %"class.spirv_cross::VectorView.163", i64, %"class.spirv_cross::AlignedBuffer.164" }
%"class.spirv_cross::VectorView.163" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.164" = type { [192 x i8] }
%"struct.spirv_cross::CompilerGLSL::Options" = type { i32, i8, i8, i32, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i32, %"struct.spirv_cross::CompilerGLSL::Options::VertexOptions", %"struct.spirv_cross::CompilerGLSL::Options::FragmentOptions" }
%"struct.spirv_cross::CompilerGLSL::Options::VertexOptions" = type { i8, i8, i8 }
%"struct.spirv_cross::CompilerGLSL::Options::FragmentOptions" = type { i32, i32 }
%"class.std::unordered_map.185" = type { %"class.std::_Hashtable.186" }
%"class.std::_Hashtable.186" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.spirv_cross::CompilerGLSL::BackendVariations" = type <{ %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", i8, i8, i8, i8, [4 x i8], ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, [4 x i8] }>
%"class.std::unordered_map.199" = type { %"class.std::_Hashtable.200" }
%"class.std::_Hashtable.200" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.spirv_cross::CompilerGLSL::ShaderSubgroupSupportHelper" = type { i32 }
%"class.std::vector.230" = type { %"struct.std::_Vector_base.231" }
%"struct.std::_Vector_base.231" = type { %"struct.std::_Vector_base<spirv_cross::PlsRemap, std::allocator<spirv_cross::PlsRemap>>::_Vector_impl" }
%"struct.std::_Vector_base<spirv_cross::PlsRemap, std::allocator<spirv_cross::PlsRemap>>::_Vector_impl" = type { %"struct.std::_Vector_base<spirv_cross::PlsRemap, std::allocator<spirv_cross::PlsRemap>>::_Vector_impl_data" }
%"struct.std::_Vector_base<spirv_cross::PlsRemap, std::allocator<spirv_cross::PlsRemap>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.235" = type { %"struct.std::_Vector_base.236" }
%"struct.std::_Vector_base.236" = type { %"struct.std::_Vector_base<std::pair<unsigned int, unsigned int>, std::allocator<std::pair<unsigned int, unsigned int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<unsigned int, unsigned int>, std::allocator<std::pair<unsigned int, unsigned int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<unsigned int, unsigned int>, std::allocator<std::pair<unsigned int, unsigned int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<unsigned int, unsigned int>, std::allocator<std::pair<unsigned int, unsigned int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.240" = type { %"struct.std::_Vector_base.241" }
%"struct.std::_Vector_base.241" = type { %"struct.std::_Vector_base<std::pair<unsigned int, bool>, std::allocator<std::pair<unsigned int, bool>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<unsigned int, bool>, std::allocator<std::pair<unsigned int, bool>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<unsigned int, bool>, std::allocator<std::pair<unsigned int, bool>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<unsigned int, bool>, std::allocator<std::pair<unsigned int, bool>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::unordered_set.245" = type { %"class.std::_Hashtable.246" }
%"class.std::_Hashtable.246" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.263" = type { %"class.std::_Hashtable.264" }
%"class.std::_Hashtable.264" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.277" = type { %"class.std::_Hashtable.278" }
%"class.std::_Hashtable.278" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.spirv_cross::CompilerMSL::Options" = type <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, [3 x i8], i32, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i32, i32, i8, i8, i8, i8, i8, i8, i8, i8, i8, [3 x i8] }>
%"class.std::set" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<spirv_cross::CompilerMSL::SPVFuncImpl, spirv_cross::CompilerMSL::SPVFuncImpl, std::_Identity<spirv_cross::CompilerMSL::SPVFuncImpl>, std::less<spirv_cross::CompilerMSL::SPVFuncImpl>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<spirv_cross::CompilerMSL::SPVFuncImpl, spirv_cross::CompilerMSL::SPVFuncImpl, std::_Identity<spirv_cross::CompilerMSL::SPVFuncImpl>, std::less<spirv_cross::CompilerMSL::SPVFuncImpl>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::map" = type { %"class.std::_Rb_tree.294" }
%"class.std::_Rb_tree.294" = type { %"struct.std::_Rb_tree<spirv_cross::LocationComponentPair, std::pair<const spirv_cross::LocationComponentPair, spirv_cross::MSLShaderInterfaceVariable>, std::_Select1st<std::pair<const spirv_cross::LocationComponentPair, spirv_cross::MSLShaderInterfaceVariable>>, std::less<spirv_cross::LocationComponentPair>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<spirv_cross::LocationComponentPair, std::pair<const spirv_cross::LocationComponentPair, spirv_cross::MSLShaderInterfaceVariable>, std::_Select1st<std::pair<const spirv_cross::LocationComponentPair, spirv_cross::MSLShaderInterfaceVariable>>, std::less<spirv_cross::LocationComponentPair>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::unordered_map.299" = type { %"class.std::_Hashtable.300" }
%"class.std::_Hashtable.300" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.213" = type { %"class.std::_Hashtable.214" }
%"class.std::_Hashtable.214" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::set.313" = type { %"class.std::_Rb_tree.314" }
%"class.std::_Rb_tree.314" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, std::_Identity<std::__cxx11::basic_string<char>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, std::_Identity<std::__cxx11::basic_string<char>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::unordered_map.319" = type { %"class.std::_Hashtable.320" }
%"class.std::_Hashtable.320" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.336" = type { %"class.std::_Hashtable.337" }
%"class.std::_Hashtable.337" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.spirv_cross::TypedID.350" = type { i32 }
%"class.std::map.351" = type { %"class.std::_Rb_tree.352" }
%"class.std::_Rb_tree.352" = type { %"struct.std::_Rb_tree<unsigned int, std::pair<const unsigned int, spirv_cross::MSLConstexprSampler>, std::_Select1st<std::pair<const unsigned int, spirv_cross::MSLConstexprSampler>>, std::less<unsigned int>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<unsigned int, std::pair<const unsigned int, spirv_cross::MSLConstexprSampler>, std::_Select1st<std::pair<const unsigned int, spirv_cross::MSLConstexprSampler>>, std::less<unsigned int>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::unordered_map.357" = type { %"class.std::_Hashtable.358" }
%"class.std::_Hashtable.358" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.spirv_cross::SmallVector.374" = type { %"class.spirv_cross::VectorView.375", i64, %"class.spirv_cross::AlignedBuffer.376" }
%"class.spirv_cross::VectorView.375" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.376" = type { [64 x i8] }
%"class.spirv_cross::SmallVector.377" = type { %"class.spirv_cross::VectorView.378", i64, %"class.spirv_cross::AlignedBuffer.379" }
%"class.spirv_cross::VectorView.378" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.379" = type { [64 x i8] }
%"class.std::map.380" = type { %"class.std::_Rb_tree.381" }
%"class.std::_Rb_tree.381" = type { %"struct.std::_Rb_tree<spirv_cross::SetBindingPair, std::pair<const spirv_cross::SetBindingPair, std::pair<unsigned int, unsigned int>>, std::_Select1st<std::pair<const spirv_cross::SetBindingPair, std::pair<unsigned int, unsigned int>>>, std::less<spirv_cross::SetBindingPair>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<spirv_cross::SetBindingPair, std::pair<const spirv_cross::SetBindingPair, std::pair<unsigned int, unsigned int>>, std::_Select1st<std::pair<const spirv_cross::SetBindingPair, std::pair<unsigned int, unsigned int>>>, std::less<spirv_cross::SetBindingPair>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::unordered_set.386" = type { %"class.std::_Hashtable.387" }
%"class.std::_Hashtable.387" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }

@_ZTIN11spirv_cross13CompilerErrorE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.35 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1316 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.1317 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.1318 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.1319 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.1320 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.1321 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.1322 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.1323 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.1324 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.1325 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.1326 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.1327 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.1328 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.1329 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.1330 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.1331 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.1332 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.1333 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1334 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.1335 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1336 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.1337 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.1338 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.1339 = external hidden unnamed_addr constant [10 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

; 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) #3

declare ptr @__cxa_allocate_exception(i64)

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

declare void @__cxa_free_exception(ptr)

; Function Attrs: nounwind
declare void @_ZNSt13runtime_errorD2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #4

declare void @__cxa_throw(ptr, ptr, ptr)

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZNKSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEE5countERKj(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 4 dereferenceable(4)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4)) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL14is_tesc_shaderEv(ptr noundef nonnull align 8 dereferenceable(12482)) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL14is_tese_shaderEv(ptr noundef nonnull align 8 dereferenceable(12482)) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL14is_mesh_shaderEv(ptr noundef nonnull align 8 dereferenceable(12482)) #2 align 2

declare noundef nonnull align 8 dereferenceable(237) ptr @_ZN11spirv_cross8Compiler15get_entry_pointEv(ptr noundef nonnull align 8 dereferenceable(3176)) #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options20supports_msl_versionEjjj(ptr noundef nonnull align 4 dereferenceable(137), i32 noundef, i32 noundef, i32 noundef) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(336) ptr @_ZN11spirv_cross8Compiler3getINS_8SPIRTypeEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176), i32 noundef) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE1EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4)) #0 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK11spirv_cross10VectorViewIjE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16)) #0 align 2

declare noundef zeroext i1 @_ZNK11spirv_cross8Compiler17is_member_builtinERKNS_8SPIRTypeEjPN3spv7BuiltInE(ptr noundef nonnull align 8 dereferenceable(3176), ptr noundef nonnull align 8 dereferenceable(336), i32 noundef, ptr noundef) #5

declare noundef nonnull align 8 dereferenceable(336) ptr @_ZNK11spirv_cross8Compiler8get_typeENS_7TypedIDILNS_5TypesE1EEE(ptr noundef nonnull align 8 dereferenceable(3176), i32) #5

; Function Attrs: mustprogress uwtable
declare dso_local i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvNS0_IXT_EEEILS1_1EEEv(ptr noundef nonnull align 4 dereferenceable(4)) #2 align 2

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

declare noundef zeroext i1 @_ZNK11spirv_cross8Compiler21has_member_decorationENS_7TypedIDILNS_5TypesE1EEEjN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176), i32, i32 noundef, i32 noundef) #5

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) #6

declare noundef i32 @_ZNK11spirv_cross8Compiler21get_member_decorationENS_7TypedIDILNS_5TypesE1EEEjN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176), i32, i32 noundef, i32 noundef) #5

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZN11spirv_crossL16type_is_integralERKNS_8SPIRTypeE(ptr noundef nonnull align 8 dereferenceable(336)) #7

declare noundef i32 @_ZNK11spirv_cross8Compiler30get_extended_member_decorationEjjNS_19ExtendedDecorationsE(ptr noundef nonnull align 8 dereferenceable(3176), i32 noundef, i32 noundef, i32 noundef) #5

declare noundef zeroext i1 @_ZNK11spirv_cross8Compiler30has_extended_member_decorationEjjNS_19ExtendedDecorationsE(ptr noundef nonnull align 8 dereferenceable(3176), i32 noundef, i32 noundef, i32 noundef) #5

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #6

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN11spirv_cross17convert_to_stringIjTnNSt9enable_ifIXntsr3std17is_floating_pointIT_EE5valueEiE4typeELi0EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS2_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 4 dereferenceable(4)) #7

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) #2

; Function Attrs: mustprogress nounwind uwtable
declare noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32)) #0 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11spirv_cross11CompilerMSL26member_attribute_qualifierB5cxx11ERKNS_8SPIRTypeEj(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(12482) %1, ptr noundef nonnull align 8 dereferenceable(336) %2, i32 noundef %3) #2 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca i8, align 1
  %14 = alloca i1, align 1
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca ptr, align 8
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca %"class.std::allocator.71", align 1
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  %23 = alloca %"class.std::allocator.71", align 1
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.std::allocator.71", align 1
  %26 = alloca i32, align 4
  %27 = alloca %"class.std::__cxx11::basic_string", align 8
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  %29 = alloca %"class.std::allocator.71", align 1
  %30 = alloca %"class.std::__cxx11::basic_string", align 8
  %31 = alloca i8, align 1
  %32 = alloca %"class.std::__cxx11::basic_string", align 8
  %33 = alloca i1, align 1
  %34 = alloca %"class.std::__cxx11::basic_string", align 8
  %35 = alloca i1, align 1
  %36 = alloca %"class.std::allocator.71", align 1
  %37 = alloca i1, align 1
  %38 = alloca i1, align 1
  %39 = alloca i1, align 1
  %40 = alloca %"class.std::__cxx11::basic_string", align 8
  %41 = alloca i1, align 1
  %42 = alloca i1, align 1
  %43 = alloca i1, align 1
  %44 = alloca %"class.std::allocator.71", align 1
  %45 = alloca i1, align 1
  %46 = alloca i1, align 1
  %47 = alloca %"class.std::__cxx11::basic_string", align 8
  %48 = alloca %"class.std::__cxx11::basic_string", align 8
  %49 = alloca %"class.std::__cxx11::basic_string", align 8
  %50 = alloca %"class.std::allocator.71", align 1
  %51 = alloca %"class.std::__cxx11::basic_string", align 8
  %52 = alloca %"class.spirv_cross::TypedID.414", align 4
  %53 = alloca i32, align 4
  %54 = alloca %"class.spirv_cross::TypedID.414", align 4
  %55 = alloca %"class.std::__cxx11::basic_string", align 8
  %56 = alloca %"class.std::__cxx11::basic_string", align 8
  %57 = alloca %"class.std::__cxx11::basic_string", align 8
  %58 = alloca %"class.std::allocator.71", align 1
  %59 = alloca %"class.std::__cxx11::basic_string", align 8
  %60 = alloca %"class.spirv_cross::TypedID.414", align 4
  %61 = alloca i32, align 4
  %62 = alloca %"class.spirv_cross::TypedID.414", align 4
  %63 = alloca %"class.std::__cxx11::basic_string", align 8
  %64 = alloca %"class.std::__cxx11::basic_string", align 8
  %65 = alloca %"class.std::__cxx11::basic_string", align 8
  %66 = alloca %"class.std::allocator.71", align 1
  %67 = alloca %"class.std::__cxx11::basic_string", align 8
  %68 = alloca %"class.std::allocator.71", align 1
  %69 = alloca %"class.std::__cxx11::basic_string", align 8
  %70 = alloca %"class.std::allocator.71", align 1
  %71 = alloca %"class.std::allocator.71", align 1
  %72 = alloca %"class.std::__cxx11::basic_string", align 8
  %73 = alloca %"class.std::__cxx11::basic_string", align 8
  %74 = alloca %"class.std::__cxx11::basic_string", align 8
  %75 = alloca %"class.std::allocator.71", align 1
  %76 = alloca %"class.std::__cxx11::basic_string", align 8
  %77 = alloca %"class.std::allocator.71", align 1
  %78 = alloca %"class.std::__cxx11::basic_string", align 8
  %79 = alloca %"class.std::__cxx11::basic_string", align 8
  %80 = alloca %"class.std::__cxx11::basic_string", align 8
  %81 = alloca %"class.std::allocator.71", align 1
  %82 = alloca %"class.std::__cxx11::basic_string", align 8
  %83 = alloca %"class.std::allocator.71", align 1
  %84 = alloca %"class.std::allocator.71", align 1
  %85 = alloca i32, align 4
  %86 = alloca %"class.std::__cxx11::basic_string", align 8
  %87 = alloca %"class.std::__cxx11::basic_string", align 8
  %88 = alloca %"class.std::allocator.71", align 1
  %89 = alloca %"class.std::__cxx11::basic_string", align 8
  %90 = alloca %"class.std::allocator.71", align 1
  %91 = alloca %"class.std::__cxx11::basic_string", align 8
  %92 = alloca %"class.std::__cxx11::basic_string", align 8
  %93 = alloca %"class.std::allocator.71", align 1
  %94 = alloca %"class.std::__cxx11::basic_string", align 8
  %95 = alloca %"class.std::allocator.71", align 1
  %96 = alloca %"class.std::allocator.71", align 1
  %97 = alloca %"class.spirv_cross::TypedID.414", align 4
  %98 = alloca %"class.std::allocator.71", align 1
  %99 = alloca i32, align 4
  %100 = alloca %"class.std::__cxx11::basic_string", align 8
  %101 = alloca %"class.std::__cxx11::basic_string", align 8
  %102 = alloca %"class.std::allocator.71", align 1
  %103 = alloca %"class.std::__cxx11::basic_string", align 8
  %104 = alloca %"class.std::__cxx11::basic_string", align 8
  %105 = alloca %"class.std::__cxx11::basic_string", align 8
  %106 = alloca i32, align 4
  %107 = alloca %"class.spirv_cross::TypedID.414", align 4
  %108 = alloca i32, align 4
  %109 = alloca %"class.spirv_cross::TypedID.414", align 4
  %110 = alloca %"class.std::__cxx11::basic_string", align 8
  %111 = alloca %"class.spirv_cross::TypedID.414", align 4
  %112 = alloca %"class.spirv_cross::TypedID.414", align 4
  %113 = alloca %"class.spirv_cross::TypedID.414", align 4
  %114 = alloca %"class.spirv_cross::TypedID.414", align 4
  %115 = alloca %"class.spirv_cross::TypedID.414", align 4
  %116 = alloca %"class.spirv_cross::TypedID.414", align 4
  %117 = alloca %"class.spirv_cross::TypedID.414", align 4
  %118 = alloca %"class.std::__cxx11::basic_string", align 8
  %119 = alloca %"class.std::allocator.71", align 1
  %120 = alloca %"class.std::__cxx11::basic_string", align 8
  %121 = alloca %"class.std::__cxx11::basic_string", align 8
  %122 = alloca %"class.std::allocator.71", align 1
  %123 = alloca %"class.std::__cxx11::basic_string", align 8
  %124 = alloca %"class.std::allocator.71", align 1
  %125 = alloca %"class.std::__cxx11::basic_string", align 8
  %126 = alloca %"class.std::__cxx11::basic_string", align 8
  %127 = alloca %"class.std::allocator.71", align 1
  %128 = alloca %"class.std::__cxx11::basic_string", align 8
  %129 = alloca %"class.std::allocator.71", align 1
  %130 = alloca i32, align 4
  %131 = alloca %"class.std::allocator.71", align 1
  %132 = alloca %"class.spirv_cross::TypedID.414", align 4
  %133 = alloca i32, align 4
  %134 = alloca %"class.spirv_cross::TypedID.414", align 4
  %135 = alloca %"class.spirv_cross::TypedID.414", align 4
  %136 = alloca i32, align 4
  %137 = alloca %"class.spirv_cross::TypedID.414", align 4
  %138 = alloca %"class.std::allocator.71", align 1
  %139 = alloca %"class.std::__cxx11::basic_string", align 8
  %140 = alloca %"class.std::__cxx11::basic_string", align 8
  %141 = alloca %"class.std::allocator.71", align 1
  %142 = alloca %"class.std::__cxx11::basic_string", align 8
  %143 = alloca %"class.std::allocator.71", align 1
  %144 = alloca %"class.std::allocator.71", align 1
  store ptr %0, ptr %5, align 8
  store ptr %1, ptr %6, align 8, !tbaa !5
  store ptr %2, ptr %7, align 8, !tbaa !5
  store i32 %3, ptr %8, align 4, !tbaa !9
  %145 = load ptr, ptr %6, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #8
  %146 = call noundef nonnull align 8 dereferenceable(237) ptr @_ZN11spirv_cross8Compiler15get_entry_pointEv(ptr noundef nonnull align 8 dereferenceable(3176) %145)
  store ptr %146, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #8
  %147 = load ptr, ptr %7, align 8, !tbaa !5
  %148 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %147, i32 0, i32 12
  %149 = load i32, ptr %8, align 4, !tbaa !9
  %150 = zext i32 %149 to i64
  %151 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewINS_7TypedIDILNS_5TypesE1EEEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %148, i64 noundef %150) #8
  %152 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE1EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %151)
  store i32 %152, ptr %10, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #8
  %153 = load i32, ptr %10, align 4, !tbaa !9
  %154 = call noundef nonnull align 8 dereferenceable(336) ptr @_ZN11spirv_cross8Compiler3getINS_8SPIRTypeEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %145, i32 noundef %153)
  store ptr %154, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #8
  store i32 2147483647, ptr %12, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #8
  %155 = load ptr, ptr %7, align 8, !tbaa !5
  %156 = load i32, ptr %8, align 4, !tbaa !9
  %157 = call noundef zeroext i1 @_ZNK11spirv_cross8Compiler17is_member_builtinERKNS_8SPIRTypeEjPN3spv7BuiltInE(ptr noundef nonnull align 8 dereferenceable(3176) %145, ptr noundef nonnull align 8 dereferenceable(336) %155, i32 noundef %156, ptr noundef %12)
  %158 = zext i1 %157 to i8
  store i8 %158, ptr %13, align 1, !tbaa !13
  %159 = load ptr, ptr %7, align 8, !tbaa !5
  %160 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %159, i32 0, i32 1
  %161 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %160)
  %162 = load i32, ptr %8, align 4, !tbaa !9
  %163 = call noundef zeroext i1 @_ZNK11spirv_cross8Compiler30has_extended_member_decorationEjjNS_19ExtendedDecorationsE(ptr noundef nonnull align 8 dereferenceable(3176) %145, i32 noundef %161, i32 noundef %162, i32 noundef 6)
  br i1 %163, label %164, label %199

164:                                              ; preds = %4
  store i1 false, ptr %14, align 1
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #8
  %165 = load ptr, ptr %7, align 8, !tbaa !5
  %166 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %165, i32 0, i32 1
  %167 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %166)
  %168 = load i32, ptr %8, align 4, !tbaa !9
  %169 = call noundef i32 @_ZNK11spirv_cross8Compiler30get_extended_member_decorationEjjNS_19ExtendedDecorationsE(ptr noundef nonnull align 8 dereferenceable(3176) %145, i32 noundef %167, i32 noundef %168, i32 noundef 6)
  store i32 %169, ptr %15, align 4, !tbaa !9
  call void @_ZN11spirv_cross4joinIJRA7_KcjRA2_S1_EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 1 dereferenceable(7) @.str.1316, ptr noundef nonnull align 4 dereferenceable(4) %15, ptr noundef nonnull align 1 dereferenceable(2) @.str.53)
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #8
  %170 = getelementptr inbounds %"class.spirv_cross::Compiler", ptr %145, i32 0, i32 32
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #8
  %171 = load ptr, ptr %7, align 8, !tbaa !5
  %172 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %171, i32 0, i32 1
  %173 = invoke noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %172)
          to label %174 unwind label %184

174:                                              ; preds = %164
  %175 = load i32, ptr %8, align 4, !tbaa !9
  %176 = invoke noundef i32 @_ZNK11spirv_cross8Compiler30get_extended_member_decorationEjjNS_19ExtendedDecorationsE(ptr noundef nonnull align 8 dereferenceable(3176) %145, i32 noundef %173, i32 noundef %175, i32 noundef 5)
          to label %177 unwind label %184

177:                                              ; preds = %174
  store i32 %176, ptr %16, align 4, !tbaa !9
  %178 = invoke noundef i64 @_ZNKSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEE5countERKj(ptr noundef nonnull align 8 dereferenceable(56) %170, ptr noundef nonnull align 4 dereferenceable(4) %16)
          to label %179 unwind label %184

179:                                              ; preds = %177
  %180 = icmp ne i64 %178, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #8
  br i1 %180, label %181, label %192

181:                                              ; preds = %179
  %182 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1317)
          to label %183 unwind label %188

183:                                              ; preds = %181
  br label %192

184:                                              ; preds = %177, %174, %164
  %185 = landingpad { ptr, i32 }
          cleanup
  %186 = extractvalue { ptr, i32 } %185, 0
  store ptr %186, ptr %17, align 8
  %187 = extractvalue { ptr, i32 } %185, 1
  store i32 %187, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #8
  br label %198

188:                                              ; preds = %192, %181
  %189 = landingpad { ptr, i32 }
          cleanup
  %190 = extractvalue { ptr, i32 } %189, 0
  store ptr %190, ptr %17, align 8
  %191 = extractvalue { ptr, i32 } %189, 1
  store i32 %191, ptr %18, align 4
  br label %198

192:                                              ; preds = %183, %179
  %193 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1318)
          to label %194 unwind label %188

194:                                              ; preds = %192
  store i1 true, ptr %14, align 1
  store i32 1, ptr %19, align 4
  %195 = load i1, ptr %14, align 1
  br i1 %195, label %197, label %196

196:                                              ; preds = %194
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %0) #8
  br label %197

197:                                              ; preds = %196, %194
  br label %1487

198:                                              ; preds = %188, %184
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %0) #8
  br label %1488

199:                                              ; preds = %4
  %200 = load ptr, ptr %9, align 8, !tbaa !5
  %201 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %200, i32 0, i32 10
  %202 = load i32, ptr %201, align 8, !tbaa !15
  %203 = icmp eq i32 %202, 0
  br i1 %203, label %204, label %310

204:                                              ; preds = %199
  %205 = load ptr, ptr %7, align 8, !tbaa !5
  %206 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %205, i32 0, i32 11
  %207 = load i32, ptr %206, align 8, !tbaa !32
  %208 = icmp eq i32 %207, 1
  br i1 %208, label %209, label %310

209:                                              ; preds = %204
  %210 = load i8, ptr %13, align 1, !tbaa !13, !range !55, !noundef !56
  %211 = trunc i8 %210 to i1
  br i1 %211, label %212, label %263

212:                                              ; preds = %209
  %213 = load i32, ptr %12, align 4, !tbaa !11
  switch i32 %213, label %257 [
    i32 5, label %214
    i32 42, label %214
    i32 4424, label %214
    i32 6, label %214
    i32 43, label %214
    i32 4425, label %214
    i32 4426, label %250
  ]

214:                                              ; preds = %212, %212, %212, %212, %212, %212
  %215 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %145, i32 0, i32 37
  %216 = getelementptr inbounds %"struct.spirv_cross::CompilerMSL::Options", ptr %215, i32 0, i32 50
  %217 = load i8, ptr %216, align 1, !tbaa !57, !range !55, !noundef !56
  %218 = trunc i8 %217 to i1
  br i1 %218, label %219, label %225

219:                                              ; preds = %214
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.35, ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %220 unwind label %221

220:                                              ; preds = %219
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #8
  store i32 1, ptr %19, align 4
  br label %1487

221:                                              ; preds = %219
  %222 = landingpad { ptr, i32 }
          cleanup
  %223 = extractvalue { ptr, i32 } %222, 0
  store ptr %223, ptr %17, align 8
  %224 = extractvalue { ptr, i32 } %222, 1
  store i32 %224, ptr %18, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #8
  br label %1488

225:                                              ; preds = %214
  call void @llvm.lifetime.start.p0(i64 32, ptr %21) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %22) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef @.str.1319, ptr noundef nonnull align 1 dereferenceable(1) %23)
          to label %226 unwind label %231

226:                                              ; preds = %225
  call void @llvm.lifetime.start.p0(i64 32, ptr %24) #8
  %227 = load i32, ptr %12, align 4, !tbaa !11
  invoke void @_ZN11spirv_cross11CompilerMSL17builtin_qualifierB5cxx11EN3spv7BuiltInE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %24, ptr noundef nonnull align 8 dereferenceable(12482) %145, i32 noundef %227)
          to label %228 unwind label %235

228:                                              ; preds = %226
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %21, ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull align 8 dereferenceable(32) %24)
          to label %229 unwind label %239

229:                                              ; preds = %228
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef @.str.1318)
          to label %230 unwind label %243

230:                                              ; preds = %229
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #8
  store i32 1, ptr %19, align 4
  br label %1487

231:                                              ; preds = %225
  %232 = landingpad { ptr, i32 }
          cleanup
  %233 = extractvalue { ptr, i32 } %232, 0
  store ptr %233, ptr %17, align 8
  %234 = extractvalue { ptr, i32 } %232, 1
  store i32 %234, ptr %18, align 4
  br label %249

235:                                              ; preds = %226
  %236 = landingpad { ptr, i32 }
          cleanup
  %237 = extractvalue { ptr, i32 } %236, 0
  store ptr %237, ptr %17, align 8
  %238 = extractvalue { ptr, i32 } %236, 1
  store i32 %238, ptr %18, align 4
  br label %248

239:                                              ; preds = %228
  %240 = landingpad { ptr, i32 }
          cleanup
  %241 = extractvalue { ptr, i32 } %240, 0
  store ptr %241, ptr %17, align 8
  %242 = extractvalue { ptr, i32 } %240, 1
  store i32 %242, ptr %18, align 4
  br label %247

243:                                              ; preds = %229
  %244 = landingpad { ptr, i32 }
          cleanup
  %245 = extractvalue { ptr, i32 } %244, 0
  store ptr %245, ptr %17, align 8
  %246 = extractvalue { ptr, i32 } %244, 1
  store i32 %246, ptr %18, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #8
  br label %247

247:                                              ; preds = %243, %239
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #8
  br label %248

248:                                              ; preds = %247, %235
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #8
  br label %249

249:                                              ; preds = %248, %231
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #8
  br label %1488

250:                                              ; preds = %212
  %251 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %251, ptr noundef @.str.1320)
          to label %252 unwind label %253

252:                                              ; preds = %250
  call void @__cxa_throw(ptr %251, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #9
  unreachable

253:                                              ; preds = %250
  %254 = landingpad { ptr, i32 }
          cleanup
  %255 = extractvalue { ptr, i32 } %254, 0
  store ptr %255, ptr %17, align 8
  %256 = extractvalue { ptr, i32 } %254, 1
  store i32 %256, ptr %18, align 4
  call void @__cxa_free_exception(ptr %251) #8
  br label %1488

257:                                              ; preds = %212
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.35, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %258 unwind label %259

258:                                              ; preds = %257
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #8
  store i32 1, ptr %19, align 4
  br label %1487

259:                                              ; preds = %257
  %260 = landingpad { ptr, i32 }
          cleanup
  %261 = extractvalue { ptr, i32 } %260, 0
  store ptr %261, ptr %17, align 8
  %262 = extractvalue { ptr, i32 } %260, 1
  store i32 %262, ptr %18, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #8
  br label %1488

263:                                              ; preds = %209
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #8
  %264 = load i8, ptr %13, align 1, !tbaa !13, !range !55, !noundef !56
  %265 = trunc i8 %264 to i1
  br i1 %265, label %266, label %273

266:                                              ; preds = %263
  %267 = load i32, ptr %12, align 4, !tbaa !11
  %268 = load ptr, ptr %7, align 8, !tbaa !5
  %269 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %268, i32 0, i32 1
  %270 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %269)
  %271 = load i32, ptr %8, align 4, !tbaa !9
  %272 = call noundef i32 @_ZN11spirv_cross11CompilerMSL45get_or_allocate_builtin_input_member_locationEN3spv7BuiltInEjjPj(ptr noundef nonnull align 8 dereferenceable(12482) %145, i32 noundef %267, i32 noundef %270, i32 noundef %271, ptr noundef null)
  store i32 %272, ptr %26, align 4, !tbaa !9
  br label %279

273:                                              ; preds = %263
  %274 = load ptr, ptr %7, align 8, !tbaa !5
  %275 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %274, i32 0, i32 1
  %276 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %275)
  %277 = load i32, ptr %8, align 4, !tbaa !9
  %278 = call noundef i32 @_ZNK11spirv_cross11CompilerMSL19get_member_locationEjjPj(ptr noundef nonnull align 8 dereferenceable(12482) %145, i32 noundef %276, i32 noundef %277, ptr noundef null)
  store i32 %278, ptr %26, align 4, !tbaa !9
  br label %279

279:                                              ; preds = %273, %266
  %280 = load i32, ptr %26, align 4, !tbaa !9
  %281 = icmp ne i32 %280, -1
  br i1 %281, label %282, label %306

282:                                              ; preds = %279
  call void @llvm.lifetime.start.p0(i64 32, ptr %27) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %28) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %29) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef @.str.1321, ptr noundef nonnull align 1 dereferenceable(1) %29)
          to label %283 unwind label %287

283:                                              ; preds = %282
  call void @llvm.lifetime.start.p0(i64 32, ptr %30) #8
  invoke void @_ZN11spirv_cross17convert_to_stringIjTnNSt9enable_ifIXntsr3std17is_floating_pointIT_EE5valueEiE4typeELi0EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS2_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %30, ptr noundef nonnull align 4 dereferenceable(4) %26)
          to label %284 unwind label %291

284:                                              ; preds = %283
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %27, ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef nonnull align 8 dereferenceable(32) %30)
          to label %285 unwind label %295

285:                                              ; preds = %284
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef @.str.1322)
          to label %286 unwind label %299

286:                                              ; preds = %285
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #8
  store i32 1, ptr %19, align 4
  br label %307

287:                                              ; preds = %282
  %288 = landingpad { ptr, i32 }
          cleanup
  %289 = extractvalue { ptr, i32 } %288, 0
  store ptr %289, ptr %17, align 8
  %290 = extractvalue { ptr, i32 } %288, 1
  store i32 %290, ptr %18, align 4
  br label %305

291:                                              ; preds = %283
  %292 = landingpad { ptr, i32 }
          cleanup
  %293 = extractvalue { ptr, i32 } %292, 0
  store ptr %293, ptr %17, align 8
  %294 = extractvalue { ptr, i32 } %292, 1
  store i32 %294, ptr %18, align 4
  br label %304

295:                                              ; preds = %284
  %296 = landingpad { ptr, i32 }
          cleanup
  %297 = extractvalue { ptr, i32 } %296, 0
  store ptr %297, ptr %17, align 8
  %298 = extractvalue { ptr, i32 } %296, 1
  store i32 %298, ptr %18, align 4
  br label %303

299:                                              ; preds = %285
  %300 = landingpad { ptr, i32 }
          cleanup
  %301 = extractvalue { ptr, i32 } %300, 0
  store ptr %301, ptr %17, align 8
  %302 = extractvalue { ptr, i32 } %300, 1
  store i32 %302, ptr %18, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #8
  br label %303

303:                                              ; preds = %299, %295
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #8
  br label %304

304:                                              ; preds = %303, %291
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #8
  br label %305

305:                                              ; preds = %304, %287
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #8
  br label %1488

306:                                              ; preds = %279
  store i32 0, ptr %19, align 4
  br label %307

307:                                              ; preds = %306, %286
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #8
  %308 = load i32, ptr %19, align 4
  switch i32 %308, label %1487 [
    i32 0, label %309
  ]

309:                                              ; preds = %307
  br label %310

310:                                              ; preds = %309, %204, %199
  call void @llvm.lifetime.start.p0(i64 1, ptr %31) #8
  %311 = call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL14is_mesh_shaderEv(ptr noundef nonnull align 8 dereferenceable(12482) %145)
  br i1 %311, label %327, label %312

312:                                              ; preds = %310
  %313 = call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL14is_tese_shaderEv(ptr noundef nonnull align 8 dereferenceable(12482) %145)
  br i1 %313, label %327, label %314

314:                                              ; preds = %312
  %315 = load ptr, ptr %9, align 8, !tbaa !5
  %316 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %315, i32 0, i32 10
  %317 = load i32, ptr %316, align 8, !tbaa !15
  %318 = icmp eq i32 %317, 0
  br i1 %318, label %319, label %325

319:                                              ; preds = %314
  %320 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %145, i32 0, i32 37
  %321 = getelementptr inbounds %"struct.spirv_cross::CompilerMSL::Options", ptr %320, i32 0, i32 50
  %322 = load i8, ptr %321, align 1, !tbaa !57, !range !55, !noundef !56
  %323 = trunc i8 %322 to i1
  %324 = xor i1 %323, true
  br label %325

325:                                              ; preds = %319, %314
  %326 = phi i1 [ false, %314 ], [ %324, %319 ]
  br label %327

327:                                              ; preds = %325, %312, %310
  %328 = phi i1 [ true, %312 ], [ true, %310 ], [ %326, %325 ]
  %329 = zext i1 %328 to i8
  store i8 %329, ptr %31, align 1, !tbaa !13
  %330 = load ptr, ptr %7, align 8, !tbaa !5
  %331 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %330, i32 0, i32 11
  %332 = load i32, ptr %331, align 8, !tbaa !32
  %333 = icmp eq i32 %332, 3
  br i1 %333, label %336, label %334

334:                                              ; preds = %327
  %335 = call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL14is_mesh_shaderEv(ptr noundef nonnull align 8 dereferenceable(12482) %145)
  br i1 %335, label %336, label %617

336:                                              ; preds = %334, %327
  %337 = load i8, ptr %31, align 1, !tbaa !13, !range !55, !noundef !56
  %338 = trunc i8 %337 to i1
  br i1 %338, label %339, label %617

339:                                              ; preds = %336
  %340 = load i8, ptr %13, align 1, !tbaa !13, !range !55, !noundef !56
  %341 = trunc i8 %340 to i1
  br i1 %341, label %342, label %603

342:                                              ; preds = %339
  %343 = load i32, ptr %12, align 4, !tbaa !11
  switch i32 %343, label %597 [
    i32 1, label %344
    i32 10, label %442
    i32 0, label %453
    i32 9, label %453
    i32 5299, label %453
    i32 4432, label %453
    i32 7, label %453
    i32 3, label %489
    i32 4, label %543
  ]

344:                                              ; preds = %342
  %345 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %145, i32 0, i32 37
  %346 = getelementptr inbounds %"struct.spirv_cross::CompilerMSL::Options", ptr %345, i32 0, i32 20
  %347 = load i8, ptr %346, align 4, !tbaa !199, !range !55, !noundef !56
  %348 = trunc i8 %347 to i1
  store i1 false, ptr %33, align 1
  store i1 false, ptr %35, align 1
  store i1 false, ptr %37, align 1
  store i1 false, ptr %38, align 1
  store i1 false, ptr %39, align 1
  store i1 false, ptr %41, align 1
  store i1 false, ptr %42, align 1
  store i1 false, ptr %43, align 1
  store i1 false, ptr %45, align 1
  store i1 false, ptr %46, align 1
  br i1 %348, label %349, label %355

349:                                              ; preds = %344
  call void @llvm.lifetime.start.p0(i64 32, ptr %32) #8
  store i1 true, ptr %33, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %34) #8
  store i1 true, ptr %35, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #8
  store i1 true, ptr %37, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #8
  store i1 true, ptr %38, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef @.str.1319, ptr noundef nonnull align 1 dereferenceable(1) %36)
          to label %350 unwind label %388

350:                                              ; preds = %349
  store i1 true, ptr %39, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %40) #8
  store i1 true, ptr %41, align 1
  %351 = load i32, ptr %12, align 4, !tbaa !11
  invoke void @_ZN11spirv_cross11CompilerMSL17builtin_qualifierB5cxx11EN3spv7BuiltInE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %40, ptr noundef nonnull align 8 dereferenceable(12482) %145, i32 noundef %351)
          to label %352 unwind label %392

352:                                              ; preds = %350
  store i1 true, ptr %42, align 1
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %32, ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef nonnull align 8 dereferenceable(32) %40)
          to label %353 unwind label %396

353:                                              ; preds = %352
  store i1 true, ptr %43, align 1
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef @.str.1318)
          to label %354 unwind label %400

354:                                              ; preds = %353
  br label %357

355:                                              ; preds = %344
  call void @llvm.lifetime.start.p0(i64 1, ptr %44) #8
  store i1 true, ptr %45, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #8
  store i1 true, ptr %46, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.35, ptr noundef nonnull align 1 dereferenceable(1) %44)
          to label %356 unwind label %404

356:                                              ; preds = %355
  br label %357

357:                                              ; preds = %356, %354
  %358 = load i1, ptr %46, align 1
  br i1 %358, label %359, label %360

359:                                              ; preds = %357
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #8
  br label %360

360:                                              ; preds = %359, %357
  %361 = load i1, ptr %45, align 1
  br i1 %361, label %362, label %363

362:                                              ; preds = %360
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #8
  br label %363

363:                                              ; preds = %362, %360
  %364 = load i1, ptr %43, align 1
  br i1 %364, label %365, label %366

365:                                              ; preds = %363
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #8
  br label %366

366:                                              ; preds = %365, %363
  %367 = load i1, ptr %42, align 1
  br i1 %367, label %368, label %369

368:                                              ; preds = %366
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #8
  br label %369

369:                                              ; preds = %368, %366
  %370 = load i1, ptr %41, align 1
  br i1 %370, label %371, label %372

371:                                              ; preds = %369
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #8
  br label %372

372:                                              ; preds = %371, %369
  %373 = load i1, ptr %39, align 1
  br i1 %373, label %374, label %375

374:                                              ; preds = %372
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #8
  br label %375

375:                                              ; preds = %374, %372
  %376 = load i1, ptr %38, align 1
  br i1 %376, label %377, label %378

377:                                              ; preds = %375
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #8
  br label %378

378:                                              ; preds = %377, %375
  %379 = load i1, ptr %37, align 1
  br i1 %379, label %380, label %381

380:                                              ; preds = %378
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #8
  br label %381

381:                                              ; preds = %380, %378
  %382 = load i1, ptr %35, align 1
  br i1 %382, label %383, label %384

383:                                              ; preds = %381
  call void @llvm.lifetime.end.p0(i64 32, ptr %34) #8
  br label %384

384:                                              ; preds = %383, %381
  %385 = load i1, ptr %33, align 1
  br i1 %385, label %386, label %387

386:                                              ; preds = %384
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #8
  br label %387

387:                                              ; preds = %386, %384
  store i32 1, ptr %19, align 4
  br label %1485

388:                                              ; preds = %349
  %389 = landingpad { ptr, i32 }
          cleanup
  %390 = extractvalue { ptr, i32 } %389, 0
  store ptr %390, ptr %17, align 8
  %391 = extractvalue { ptr, i32 } %389, 1
  store i32 %391, ptr %18, align 4
  br label %429

392:                                              ; preds = %350
  %393 = landingpad { ptr, i32 }
          cleanup
  %394 = extractvalue { ptr, i32 } %393, 0
  store ptr %394, ptr %17, align 8
  %395 = extractvalue { ptr, i32 } %393, 1
  store i32 %395, ptr %18, align 4
  br label %422

396:                                              ; preds = %352
  %397 = landingpad { ptr, i32 }
          cleanup
  %398 = extractvalue { ptr, i32 } %397, 0
  store ptr %398, ptr %17, align 8
  %399 = extractvalue { ptr, i32 } %397, 1
  store i32 %399, ptr %18, align 4
  br label %418

400:                                              ; preds = %353
  %401 = landingpad { ptr, i32 }
          cleanup
  %402 = extractvalue { ptr, i32 } %401, 0
  store ptr %402, ptr %17, align 8
  %403 = extractvalue { ptr, i32 } %401, 1
  store i32 %403, ptr %18, align 4
  br label %414

404:                                              ; preds = %355
  %405 = landingpad { ptr, i32 }
          cleanup
  %406 = extractvalue { ptr, i32 } %405, 0
  store ptr %406, ptr %17, align 8
  %407 = extractvalue { ptr, i32 } %405, 1
  store i32 %407, ptr %18, align 4
  %408 = load i1, ptr %46, align 1
  br i1 %408, label %409, label %410

409:                                              ; preds = %404
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #8
  br label %410

410:                                              ; preds = %409, %404
  %411 = load i1, ptr %45, align 1
  br i1 %411, label %412, label %413

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

413:                                              ; preds = %412, %410
  br label %414

414:                                              ; preds = %413, %400
  %415 = load i1, ptr %43, align 1
  br i1 %415, label %416, label %417

416:                                              ; preds = %414
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #8
  br label %417

417:                                              ; preds = %416, %414
  br label %418

418:                                              ; preds = %417, %396
  %419 = load i1, ptr %42, align 1
  br i1 %419, label %420, label %421

420:                                              ; preds = %418
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #8
  br label %421

421:                                              ; preds = %420, %418
  br label %422

422:                                              ; preds = %421, %392
  %423 = load i1, ptr %41, align 1
  br i1 %423, label %424, label %425

424:                                              ; preds = %422
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #8
  br label %425

425:                                              ; preds = %424, %422
  %426 = load i1, ptr %39, align 1
  br i1 %426, label %427, label %428

427:                                              ; preds = %425
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #8
  br label %428

428:                                              ; preds = %427, %425
  br label %429

429:                                              ; preds = %428, %388
  %430 = load i1, ptr %38, align 1
  br i1 %430, label %431, label %432

431:                                              ; preds = %429
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #8
  br label %432

432:                                              ; preds = %431, %429
  %433 = load i1, ptr %37, align 1
  br i1 %433, label %434, label %435

434:                                              ; preds = %432
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #8
  br label %435

435:                                              ; preds = %434, %432
  %436 = load i1, ptr %35, align 1
  br i1 %436, label %437, label %438

437:                                              ; preds = %435
  call void @llvm.lifetime.end.p0(i64 32, ptr %34) #8
  br label %438

438:                                              ; preds = %437, %435
  %439 = load i1, ptr %33, align 1
  br i1 %439, label %440, label %441

440:                                              ; preds = %438
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #8
  br label %441

441:                                              ; preds = %440, %438
  br label %1486

442:                                              ; preds = %342
  %443 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %145, i32 0, i32 37
  %444 = call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options20supports_msl_versionEjjj(ptr noundef nonnull align 4 dereferenceable(137) %443, i32 noundef 2, i32 noundef 0, i32 noundef 0)
  br i1 %444, label %452, label %445

445:                                              ; preds = %442
  %446 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %446, ptr noundef @.str.1323)
          to label %447 unwind label %448

447:                                              ; preds = %445
  call void @__cxa_throw(ptr %446, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #9
  unreachable

448:                                              ; preds = %445
  %449 = landingpad { ptr, i32 }
          cleanup
  %450 = extractvalue { ptr, i32 } %449, 0
  store ptr %450, ptr %17, align 8
  %451 = extractvalue { ptr, i32 } %449, 1
  store i32 %451, ptr %18, align 4
  call void @__cxa_free_exception(ptr %446) #8
  br label %1486

452:                                              ; preds = %442
  br label %453

453:                                              ; preds = %452, %342, %342, %342, %342, %342
  call void @llvm.lifetime.start.p0(i64 32, ptr %47) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %48) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %49) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %50) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %49, ptr noundef @.str.1319, ptr noundef nonnull align 1 dereferenceable(1) %50)
          to label %454 unwind label %465

454:                                              ; preds = %453
  call void @llvm.lifetime.start.p0(i64 32, ptr %51) #8
  %455 = load i32, ptr %12, align 4, !tbaa !11
  invoke void @_ZN11spirv_cross11CompilerMSL17builtin_qualifierB5cxx11EN3spv7BuiltInE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %51, ptr noundef nonnull align 8 dereferenceable(12482) %145, i32 noundef %455)
          to label %456 unwind label %469

456:                                              ; preds = %454
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %48, ptr noundef nonnull align 8 dereferenceable(32) %49, ptr noundef nonnull align 8 dereferenceable(32) %51)
          to label %457 unwind label %473

457:                                              ; preds = %456
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %47, ptr noundef nonnull align 8 dereferenceable(32) %48, ptr noundef @.str.1318)
          to label %458 unwind label %477

458:                                              ; preds = %457
  %459 = load ptr, ptr %11, align 8, !tbaa !5
  %460 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %459, i32 0, i32 6
  %461 = call noundef zeroext i1 @_ZNK11spirv_cross10VectorViewIjE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %460) #8
  %462 = zext i1 %461 to i64
  %463 = select i1 %461, ptr @.str.35, ptr @.str.60
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef %463)
          to label %464 unwind label %481

464:                                              ; preds = %458
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %51) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %50) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %49) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %48) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %47) #8
  store i32 1, ptr %19, align 4
  br label %1485

465:                                              ; preds = %453
  %466 = landingpad { ptr, i32 }
          cleanup
  %467 = extractvalue { ptr, i32 } %466, 0
  store ptr %467, ptr %17, align 8
  %468 = extractvalue { ptr, i32 } %466, 1
  store i32 %468, ptr %18, align 4
  br label %488

469:                                              ; preds = %454
  %470 = landingpad { ptr, i32 }
          cleanup
  %471 = extractvalue { ptr, i32 } %470, 0
  store ptr %471, ptr %17, align 8
  %472 = extractvalue { ptr, i32 } %470, 1
  store i32 %472, ptr %18, align 4
  br label %487

473:                                              ; preds = %456
  %474 = landingpad { ptr, i32 }
          cleanup
  %475 = extractvalue { ptr, i32 } %474, 0
  store ptr %475, ptr %17, align 8
  %476 = extractvalue { ptr, i32 } %474, 1
  store i32 %476, ptr %18, align 4
  br label %486

477:                                              ; preds = %457
  %478 = landingpad { ptr, i32 }
          cleanup
  %479 = extractvalue { ptr, i32 } %478, 0
  store ptr %479, ptr %17, align 8
  %480 = extractvalue { ptr, i32 } %478, 1
  store i32 %480, ptr %18, align 4
  br label %485

481:                                              ; preds = %458
  %482 = landingpad { ptr, i32 }
          cleanup
  %483 = extractvalue { ptr, i32 } %482, 0
  store ptr %483, ptr %17, align 8
  %484 = extractvalue { ptr, i32 } %482, 1
  store i32 %484, ptr %18, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #8
  br label %485

485:                                              ; preds = %481, %477
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #8
  br label %486

486:                                              ; preds = %485, %473
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #8
  br label %487

487:                                              ; preds = %486, %469
  call void @llvm.lifetime.end.p0(i64 32, ptr %51) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #8
  br label %488

488:                                              ; preds = %487, %465
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %50) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %49) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %48) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %47) #8
  br label %1486

489:                                              ; preds = %342
  %490 = load ptr, ptr %7, align 8, !tbaa !5
  %491 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %490, i32 0, i32 1
  %492 = call i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvNS0_IXT_EEEILS1_1EEEv(ptr noundef nonnull align 4 dereferenceable(4) %491)
  %493 = getelementptr inbounds %"class.spirv_cross::TypedID.414", ptr %52, i32 0, i32 0
  store i32 %492, ptr %493, align 4
  %494 = load i32, ptr %8, align 4, !tbaa !9
  %495 = getelementptr inbounds %"class.spirv_cross::TypedID.414", ptr %52, i32 0, i32 0
  %496 = load i32, ptr %495, align 4
  %497 = call noundef zeroext i1 @_ZNK11spirv_cross8Compiler21has_member_decorationENS_7TypedIDILNS_5TypesE1EEEjN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %145, i32 %496, i32 noundef %494, i32 noundef 32)
  br i1 %497, label %498, label %507

498:                                              ; preds = %489
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #8
  %499 = load ptr, ptr %7, align 8, !tbaa !5
  %500 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %499, i32 0, i32 1
  %501 = call i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvNS0_IXT_EEEILS1_1EEEv(ptr noundef nonnull align 4 dereferenceable(4) %500)
  %502 = getelementptr inbounds %"class.spirv_cross::TypedID.414", ptr %54, i32 0, i32 0
  store i32 %501, ptr %502, align 4
  %503 = load i32, ptr %8, align 4, !tbaa !9
  %504 = getelementptr inbounds %"class.spirv_cross::TypedID.414", ptr %54, i32 0, i32 0
  %505 = load i32, ptr %504, align 4
  %506 = call noundef i32 @_ZNK11spirv_cross8Compiler21get_member_decorationENS_7TypedIDILNS_5TypesE1EEEjN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %145, i32 %505, i32 noundef %503, i32 noundef 32)
  store i32 %506, ptr %53, align 4, !tbaa !9
  call void @_ZN11spirv_cross4joinIJRA13_KcjRA4_S1_EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 1 dereferenceable(13) @.str.1324, ptr noundef nonnull align 4 dereferenceable(4) %53, ptr noundef nonnull align 1 dereferenceable(4) @.str.1322)
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #8
  store i32 1, ptr %19, align 4
  br label %1485

507:                                              ; preds = %489
  call void @llvm.lifetime.start.p0(i64 32, ptr %55) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %56) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %57) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %58) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %57, ptr noundef @.str.1319, ptr noundef nonnull align 1 dereferenceable(1) %58)
          to label %508 unwind label %519

508:                                              ; preds = %507
  call void @llvm.lifetime.start.p0(i64 32, ptr %59) #8
  %509 = load i32, ptr %12, align 4, !tbaa !11
  invoke void @_ZN11spirv_cross11CompilerMSL17builtin_qualifierB5cxx11EN3spv7BuiltInE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %59, ptr noundef nonnull align 8 dereferenceable(12482) %145, i32 noundef %509)
          to label %510 unwind label %523

510:                                              ; preds = %508
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %56, ptr noundef nonnull align 8 dereferenceable(32) %57, ptr noundef nonnull align 8 dereferenceable(32) %59)
          to label %511 unwind label %527

511:                                              ; preds = %510
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %55, ptr noundef nonnull align 8 dereferenceable(32) %56, ptr noundef @.str.1318)
          to label %512 unwind label %531

512:                                              ; preds = %511
  %513 = load ptr, ptr %11, align 8, !tbaa !5
  %514 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %513, i32 0, i32 6
  %515 = call noundef zeroext i1 @_ZNK11spirv_cross10VectorViewIjE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %514) #8
  %516 = zext i1 %515 to i64
  %517 = select i1 %515, ptr @.str.35, ptr @.str.60
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(32) %55, ptr noundef %517)
          to label %518 unwind label %535

518:                                              ; preds = %512
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %59) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %57) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %56) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %55) #8
  store i32 1, ptr %19, align 4
  br label %1485

519:                                              ; preds = %507
  %520 = landingpad { ptr, i32 }
          cleanup
  %521 = extractvalue { ptr, i32 } %520, 0
  store ptr %521, ptr %17, align 8
  %522 = extractvalue { ptr, i32 } %520, 1
  store i32 %522, ptr %18, align 4
  br label %542

523:                                              ; preds = %508
  %524 = landingpad { ptr, i32 }
          cleanup
  %525 = extractvalue { ptr, i32 } %524, 0
  store ptr %525, ptr %17, align 8
  %526 = extractvalue { ptr, i32 } %524, 1
  store i32 %526, ptr %18, align 4
  br label %541

527:                                              ; preds = %510
  %528 = landingpad { ptr, i32 }
          cleanup
  %529 = extractvalue { ptr, i32 } %528, 0
  store ptr %529, ptr %17, align 8
  %530 = extractvalue { ptr, i32 } %528, 1
  store i32 %530, ptr %18, align 4
  br label %540

531:                                              ; preds = %511
  %532 = landingpad { ptr, i32 }
          cleanup
  %533 = extractvalue { ptr, i32 } %532, 0
  store ptr %533, ptr %17, align 8
  %534 = extractvalue { ptr, i32 } %532, 1
  store i32 %534, ptr %18, align 4
  br label %539

535:                                              ; preds = %512
  %536 = landingpad { ptr, i32 }
          cleanup
  %537 = extractvalue { ptr, i32 } %536, 0
  store ptr %537, ptr %17, align 8
  %538 = extractvalue { ptr, i32 } %536, 1
  store i32 %538, ptr %18, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #8
  br label %539

539:                                              ; preds = %535, %531
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #8
  br label %540

540:                                              ; preds = %539, %527
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #8
  br label %541

541:                                              ; preds = %540, %523
  call void @llvm.lifetime.end.p0(i64 32, ptr %59) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #8
  br label %542

542:                                              ; preds = %541, %519
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %57) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %56) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %55) #8
  br label %1486

543:                                              ; preds = %342
  %544 = load ptr, ptr %7, align 8, !tbaa !5
  %545 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %544, i32 0, i32 1
  %546 = call i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvNS0_IXT_EEEILS1_1EEEv(ptr noundef nonnull align 4 dereferenceable(4) %545)
  %547 = getelementptr inbounds %"class.spirv_cross::TypedID.414", ptr %60, i32 0, i32 0
  store i32 %546, ptr %547, align 4
  %548 = load i32, ptr %8, align 4, !tbaa !9
  %549 = getelementptr inbounds %"class.spirv_cross::TypedID.414", ptr %60, i32 0, i32 0
  %550 = load i32, ptr %549, align 4
  %551 = call noundef zeroext i1 @_ZNK11spirv_cross8Compiler21has_member_decorationENS_7TypedIDILNS_5TypesE1EEEjN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %145, i32 %550, i32 noundef %548, i32 noundef 32)
  br i1 %551, label %552, label %561

552:                                              ; preds = %543
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #8
  %553 = load ptr, ptr %7, align 8, !tbaa !5
  %554 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %553, i32 0, i32 1
  %555 = call i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvNS0_IXT_EEEILS1_1EEEv(ptr noundef nonnull align 4 dereferenceable(4) %554)
  %556 = getelementptr inbounds %"class.spirv_cross::TypedID.414", ptr %62, i32 0, i32 0
  store i32 %555, ptr %556, align 4
  %557 = load i32, ptr %8, align 4, !tbaa !9
  %558 = getelementptr inbounds %"class.spirv_cross::TypedID.414", ptr %62, i32 0, i32 0
  %559 = load i32, ptr %558, align 4
  %560 = call noundef i32 @_ZNK11spirv_cross8Compiler21get_member_decorationENS_7TypedIDILNS_5TypesE1EEEjN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %145, i32 %559, i32 noundef %557, i32 noundef 32)
  store i32 %560, ptr %61, align 4, !tbaa !9
  call void @_ZN11spirv_cross4joinIJRA13_KcjRA4_S1_EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 1 dereferenceable(13) @.str.1325, ptr noundef nonnull align 4 dereferenceable(4) %61, ptr noundef nonnull align 1 dereferenceable(4) @.str.1322)
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #8
  store i32 1, ptr %19, align 4
  br label %1485

561:                                              ; preds = %543
  call void @llvm.lifetime.start.p0(i64 32, ptr %63) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %64) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %65) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %66) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %66) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %65, ptr noundef @.str.1319, ptr noundef nonnull align 1 dereferenceable(1) %66)
          to label %562 unwind label %573

562:                                              ; preds = %561
  call void @llvm.lifetime.start.p0(i64 32, ptr %67) #8
  %563 = load i32, ptr %12, align 4, !tbaa !11
  invoke void @_ZN11spirv_cross11CompilerMSL17builtin_qualifierB5cxx11EN3spv7BuiltInE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %67, ptr noundef nonnull align 8 dereferenceable(12482) %145, i32 noundef %563)
          to label %564 unwind label %577

564:                                              ; preds = %562
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %64, ptr noundef nonnull align 8 dereferenceable(32) %65, ptr noundef nonnull align 8 dereferenceable(32) %67)
          to label %565 unwind label %581

565:                                              ; preds = %564
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %63, ptr noundef nonnull align 8 dereferenceable(32) %64, ptr noundef @.str.1318)
          to label %566 unwind label %585

566:                                              ; preds = %565
  %567 = load ptr, ptr %11, align 8, !tbaa !5
  %568 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %567, i32 0, i32 6
  %569 = call noundef zeroext i1 @_ZNK11spirv_cross10VectorViewIjE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %568) #8
  %570 = zext i1 %569 to i64
  %571 = select i1 %569, ptr @.str.35, ptr @.str.60
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(32) %63, ptr noundef %571)
          to label %572 unwind label %589

572:                                              ; preds = %566
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %67) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %66) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %66) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %65) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %64) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %63) #8
  store i32 1, ptr %19, align 4
  br label %1485

573:                                              ; preds = %561
  %574 = landingpad { ptr, i32 }
          cleanup
  %575 = extractvalue { ptr, i32 } %574, 0
  store ptr %575, ptr %17, align 8
  %576 = extractvalue { ptr, i32 } %574, 1
  store i32 %576, ptr %18, align 4
  br label %596

577:                                              ; preds = %562
  %578 = landingpad { ptr, i32 }
          cleanup
  %579 = extractvalue { ptr, i32 } %578, 0
  store ptr %579, ptr %17, align 8
  %580 = extractvalue { ptr, i32 } %578, 1
  store i32 %580, ptr %18, align 4
  br label %595

581:                                              ; preds = %564
  %582 = landingpad { ptr, i32 }
          cleanup
  %583 = extractvalue { ptr, i32 } %582, 0
  store ptr %583, ptr %17, align 8
  %584 = extractvalue { ptr, i32 } %582, 1
  store i32 %584, ptr %18, align 4
  br label %594

585:                                              ; preds = %565
  %586 = landingpad { ptr, i32 }
          cleanup
  %587 = extractvalue { ptr, i32 } %586, 0
  store ptr %587, ptr %17, align 8
  %588 = extractvalue { ptr, i32 } %586, 1
  store i32 %588, ptr %18, align 4
  br label %593

589:                                              ; preds = %566
  %590 = landingpad { ptr, i32 }
          cleanup
  %591 = extractvalue { ptr, i32 } %590, 0
  store ptr %591, ptr %17, align 8
  %592 = extractvalue { ptr, i32 } %590, 1
  store i32 %592, ptr %18, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #8
  br label %593

593:                                              ; preds = %589, %585
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #8
  br label %594

594:                                              ; preds = %593, %581
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #8
  br label %595

595:                                              ; preds = %594, %577
  call void @llvm.lifetime.end.p0(i64 32, ptr %67) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #8
  br label %596

596:                                              ; preds = %595, %573
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %66) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %66) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %65) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %64) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %63) #8
  br label %1486

597:                                              ; preds = %342
  call void @llvm.lifetime.start.p0(i64 1, ptr %68) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.35, ptr noundef nonnull align 1 dereferenceable(1) %68)
          to label %598 unwind label %599

598:                                              ; preds = %597
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #8
  store i32 1, ptr %19, align 4
  br label %1485

599:                                              ; preds = %597
  %600 = landingpad { ptr, i32 }
          cleanup
  %601 = extractvalue { ptr, i32 } %600, 0
  store ptr %601, ptr %17, align 8
  %602 = extractvalue { ptr, i32 } %600, 1
  store i32 %602, ptr %18, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #8
  br label %1486

603:                                              ; preds = %339
  call void @llvm.lifetime.start.p0(i64 32, ptr %69) #8
  %604 = load ptr, ptr %7, align 8, !tbaa !5
  %605 = load i32, ptr %8, align 4, !tbaa !9
  call void @_ZN11spirv_cross11CompilerMSL35member_location_attribute_qualifierB5cxx11ERKNS_8SPIRTypeEj(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %69, ptr noundef nonnull align 8 dereferenceable(12482) %145, ptr noundef nonnull align 8 dereferenceable(336) %604, i32 noundef %605)
  %606 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %69) #8
  br i1 %606, label %613, label %607

607:                                              ; preds = %603
  invoke void @_ZN11spirv_cross4joinIJRA4_KcRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA3_S1_EEES9_DpOT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 1 dereferenceable(4) @.str.1319, ptr noundef nonnull align 8 dereferenceable(32) %69, ptr noundef nonnull align 1 dereferenceable(3) @.str.1318)
          to label %608 unwind label %609

608:                                              ; preds = %607
  store i32 1, ptr %19, align 4
  br label %614

609:                                              ; preds = %607
  %610 = landingpad { ptr, i32 }
          cleanup
  %611 = extractvalue { ptr, i32 } %610, 0
  store ptr %611, ptr %17, align 8
  %612 = extractvalue { ptr, i32 } %610, 1
  store i32 %612, ptr %18, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %69) #8
  br label %1486

613:                                              ; preds = %603
  store i32 0, ptr %19, align 4
  br label %614

614:                                              ; preds = %613, %608
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %69) #8
  %615 = load i32, ptr %19, align 4
  switch i32 %615, label %1485 [
    i32 0, label %616
  ]

616:                                              ; preds = %614
  br label %617

617:                                              ; preds = %616, %336, %334
  %618 = load ptr, ptr %9, align 8, !tbaa !5
  %619 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %618, i32 0, i32 10
  %620 = load i32, ptr %619, align 8, !tbaa !15
  %621 = icmp eq i32 %620, 0
  br i1 %621, label %622, label %648

622:                                              ; preds = %617
  %623 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %145, i32 0, i32 37
  %624 = getelementptr inbounds %"struct.spirv_cross::CompilerMSL::Options", ptr %623, i32 0, i32 50
  %625 = load i8, ptr %624, align 1, !tbaa !57, !range !55, !noundef !56
  %626 = trunc i8 %625 to i1
  br i1 %626, label %627, label %648

627:                                              ; preds = %622
  %628 = load ptr, ptr %7, align 8, !tbaa !5
  %629 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %628, i32 0, i32 11
  %630 = load i32, ptr %629, align 8, !tbaa !32
  %631 = icmp eq i32 %630, 3
  br i1 %631, label %632, label %648

632:                                              ; preds = %627
  %633 = load i8, ptr %13, align 1, !tbaa !13, !range !55, !noundef !56
  %634 = trunc i8 %633 to i1
  br i1 %634, label %635, label %642

635:                                              ; preds = %632
  %636 = load i32, ptr %12, align 4, !tbaa !11
  %637 = load ptr, ptr %7, align 8, !tbaa !5
  %638 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %637, i32 0, i32 1
  %639 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %638)
  %640 = load i32, ptr %8, align 4, !tbaa !9
  %641 = call noundef i32 @_ZN11spirv_cross11CompilerMSL46get_or_allocate_builtin_output_member_locationEN3spv7BuiltInEjjPj(ptr noundef nonnull align 8 dereferenceable(12482) %145, i32 noundef %636, i32 noundef %639, i32 noundef %640, ptr noundef null)
  br label %642

642:                                              ; preds = %635, %632
  call void @llvm.lifetime.start.p0(i64 1, ptr %70) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %70) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.35, ptr noundef nonnull align 1 dereferenceable(1) %70)
          to label %643 unwind label %644

643:                                              ; preds = %642
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %70) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %70) #8
  store i32 1, ptr %19, align 4
  br label %1485

644:                                              ; preds = %642
  %645 = landingpad { ptr, i32 }
          cleanup
  %646 = extractvalue { ptr, i32 } %645, 0
  store ptr %646, ptr %17, align 8
  %647 = extractvalue { ptr, i32 } %645, 1
  store i32 %647, ptr %18, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %70) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %70) #8
  br label %1486

648:                                              ; preds = %627, %622, %617
  %649 = call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL14is_tesc_shaderEv(ptr noundef nonnull align 8 dereferenceable(12482) %145)
  br i1 %649, label %650, label %820

650:                                              ; preds = %648
  %651 = load ptr, ptr %7, align 8, !tbaa !5
  %652 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %651, i32 0, i32 11
  %653 = load i32, ptr %652, align 8, !tbaa !32
  %654 = icmp eq i32 %653, 1
  br i1 %654, label %655, label %820

655:                                              ; preds = %650
  %656 = load i8, ptr %13, align 1, !tbaa !13, !range !55, !noundef !56
  %657 = trunc i8 %656 to i1
  br i1 %657, label %658, label %762

658:                                              ; preds = %655
  %659 = load i32, ptr %12, align 4, !tbaa !11
  switch i32 %659, label %760 [
    i32 8, label %660
    i32 7, label %660
    i32 41, label %707
    i32 36, label %707
    i32 14, label %754
  ]

660:                                              ; preds = %658, %658
  %661 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %145, i32 0, i32 37
  %662 = getelementptr inbounds %"struct.spirv_cross::CompilerMSL::Options", ptr %661, i32 0, i32 48
  %663 = load i8, ptr %662, align 1, !tbaa !200, !range !55, !noundef !56
  %664 = trunc i8 %663 to i1
  br i1 %664, label %665, label %671

665:                                              ; preds = %660
  call void @llvm.lifetime.start.p0(i64 1, ptr %71) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.35, ptr noundef nonnull align 1 dereferenceable(1) %71)
          to label %666 unwind label %667

666:                                              ; preds = %665
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %71) #8
  store i32 1, ptr %19, align 4
  br label %1485

667:                                              ; preds = %665
  %668 = landingpad { ptr, i32 }
          cleanup
  %669 = extractvalue { ptr, i32 } %668, 0
  store ptr %669, ptr %17, align 8
  %670 = extractvalue { ptr, i32 } %668, 1
  store i32 %670, ptr %18, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %71) #8
  br label %1486

671:                                              ; preds = %660
  call void @llvm.lifetime.start.p0(i64 32, ptr %72) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %73) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %74) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %75) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %75) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %74, ptr noundef @.str.1319, ptr noundef nonnull align 1 dereferenceable(1) %75)
          to label %672 unwind label %683

672:                                              ; preds = %671
  call void @llvm.lifetime.start.p0(i64 32, ptr %76) #8
  %673 = load i32, ptr %12, align 4, !tbaa !11
  invoke void @_ZN11spirv_cross11CompilerMSL17builtin_qualifierB5cxx11EN3spv7BuiltInE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %76, ptr noundef nonnull align 8 dereferenceable(12482) %145, i32 noundef %673)
          to label %674 unwind label %687

674:                                              ; preds = %672
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %73, ptr noundef nonnull align 8 dereferenceable(32) %74, ptr noundef nonnull align 8 dereferenceable(32) %76)
          to label %675 unwind label %691

675:                                              ; preds = %674
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %72, ptr noundef nonnull align 8 dereferenceable(32) %73, ptr noundef @.str.1318)
          to label %676 unwind label %695

676:                                              ; preds = %675
  %677 = load ptr, ptr %11, align 8, !tbaa !5
  %678 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %677, i32 0, i32 6
  %679 = call noundef zeroext i1 @_ZNK11spirv_cross10VectorViewIjE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %678) #8
  %680 = zext i1 %679 to i64
  %681 = select i1 %679, ptr @.str.35, ptr @.str.60
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(32) %72, ptr noundef %681)
          to label %682 unwind label %699

682:                                              ; preds = %676
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %73) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %76) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %74) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %75) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %75) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %74) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %73) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %72) #8
  store i32 1, ptr %19, align 4
  br label %1485

683:                                              ; preds = %671
  %684 = landingpad { ptr, i32 }
          cleanup
  %685 = extractvalue { ptr, i32 } %684, 0
  store ptr %685, ptr %17, align 8
  %686 = extractvalue { ptr, i32 } %684, 1
  store i32 %686, ptr %18, align 4
  br label %706

687:                                              ; preds = %672
  %688 = landingpad { ptr, i32 }
          cleanup
  %689 = extractvalue { ptr, i32 } %688, 0
  store ptr %689, ptr %17, align 8
  %690 = extractvalue { ptr, i32 } %688, 1
  store i32 %690, ptr %18, align 4
  br label %705

691:                                              ; preds = %674
  %692 = landingpad { ptr, i32 }
          cleanup
  %693 = extractvalue { ptr, i32 } %692, 0
  store ptr %693, ptr %17, align 8
  %694 = extractvalue { ptr, i32 } %692, 1
  store i32 %694, ptr %18, align 4
  br label %704

695:                                              ; preds = %675
  %696 = landingpad { ptr, i32 }
          cleanup
  %697 = extractvalue { ptr, i32 } %696, 0
  store ptr %697, ptr %17, align 8
  %698 = extractvalue { ptr, i32 } %696, 1
  store i32 %698, ptr %18, align 4
  br label %703

699:                                              ; preds = %676
  %700 = landingpad { ptr, i32 }
          cleanup
  %701 = extractvalue { ptr, i32 } %700, 0
  store ptr %701, ptr %17, align 8
  %702 = extractvalue { ptr, i32 } %700, 1
  store i32 %702, ptr %18, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #8
  br label %703

703:                                              ; preds = %699, %695
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %73) #8
  br label %704

704:                                              ; preds = %703, %691
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #8
  br label %705

705:                                              ; preds = %704, %687
  call void @llvm.lifetime.end.p0(i64 32, ptr %76) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %74) #8
  br label %706

706:                                              ; preds = %705, %683
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %75) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %75) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %74) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %73) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %72) #8
  br label %1486

707:                                              ; preds = %658, %658
  %708 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %145, i32 0, i32 37
  %709 = getelementptr inbounds %"struct.spirv_cross::CompilerMSL::Options", ptr %708, i32 0, i32 53
  %710 = load i8, ptr %709, align 2, !tbaa !201, !range !55, !noundef !56
  %711 = trunc i8 %710 to i1
  br i1 %711, label %712, label %718

712:                                              ; preds = %707
  call void @llvm.lifetime.start.p0(i64 1, ptr %77) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %77) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.35, ptr noundef nonnull align 1 dereferenceable(1) %77)
          to label %713 unwind label %714

713:                                              ; preds = %712
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %77) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %77) #8
  store i32 1, ptr %19, align 4
  br label %1485

714:                                              ; preds = %712
  %715 = landingpad { ptr, i32 }
          cleanup
  %716 = extractvalue { ptr, i32 } %715, 0
  store ptr %716, ptr %17, align 8
  %717 = extractvalue { ptr, i32 } %715, 1
  store i32 %717, ptr %18, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %77) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %77) #8
  br label %1486

718:                                              ; preds = %707
  call void @llvm.lifetime.start.p0(i64 32, ptr %78) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %79) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %80) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %81) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %81) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %80, ptr noundef @.str.1319, ptr noundef nonnull align 1 dereferenceable(1) %81)
          to label %719 unwind label %730

719:                                              ; preds = %718
  call void @llvm.lifetime.start.p0(i64 32, ptr %82) #8
  %720 = load i32, ptr %12, align 4, !tbaa !11
  invoke void @_ZN11spirv_cross11CompilerMSL17builtin_qualifierB5cxx11EN3spv7BuiltInE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %82, ptr noundef nonnull align 8 dereferenceable(12482) %145, i32 noundef %720)
          to label %721 unwind label %734

721:                                              ; preds = %719
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %79, ptr noundef nonnull align 8 dereferenceable(32) %80, ptr noundef nonnull align 8 dereferenceable(32) %82)
          to label %722 unwind label %738

722:                                              ; preds = %721
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %78, ptr noundef nonnull align 8 dereferenceable(32) %79, ptr noundef @.str.1318)
          to label %723 unwind label %742

723:                                              ; preds = %722
  %724 = load ptr, ptr %11, align 8, !tbaa !5
  %725 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %724, i32 0, i32 6
  %726 = call noundef zeroext i1 @_ZNK11spirv_cross10VectorViewIjE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %725) #8
  %727 = zext i1 %726 to i64
  %728 = select i1 %726, ptr @.str.35, ptr @.str.60
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(32) %78, ptr noundef %728)
          to label %729 unwind label %746

729:                                              ; preds = %723
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %78) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %79) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %82) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %82) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %80) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %81) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %81) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %80) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %79) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %78) #8
  store i32 1, ptr %19, align 4
  br label %1485

730:                                              ; preds = %718
  %731 = landingpad { ptr, i32 }
          cleanup
  %732 = extractvalue { ptr, i32 } %731, 0
  store ptr %732, ptr %17, align 8
  %733 = extractvalue { ptr, i32 } %731, 1
  store i32 %733, ptr %18, align 4
  br label %753

734:                                              ; preds = %719
  %735 = landingpad { ptr, i32 }
          cleanup
  %736 = extractvalue { ptr, i32 } %735, 0
  store ptr %736, ptr %17, align 8
  %737 = extractvalue { ptr, i32 } %735, 1
  store i32 %737, ptr %18, align 4
  br label %752

738:                                              ; preds = %721
  %739 = landingpad { ptr, i32 }
          cleanup
  %740 = extractvalue { ptr, i32 } %739, 0
  store ptr %740, ptr %17, align 8
  %741 = extractvalue { ptr, i32 } %739, 1
  store i32 %741, ptr %18, align 4
  br label %751

742:                                              ; preds = %722
  %743 = landingpad { ptr, i32 }
          cleanup
  %744 = extractvalue { ptr, i32 } %743, 0
  store ptr %744, ptr %17, align 8
  %745 = extractvalue { ptr, i32 } %743, 1
  store i32 %745, ptr %18, align 4
  br label %750

746:                                              ; preds = %723
  %747 = landingpad { ptr, i32 }
          cleanup
  %748 = extractvalue { ptr, i32 } %747, 0
  store ptr %748, ptr %17, align 8
  %749 = extractvalue { ptr, i32 } %747, 1
  store i32 %749, ptr %18, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %78) #8
  br label %750

750:                                              ; preds = %746, %742
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %79) #8
  br label %751

751:                                              ; preds = %750, %738
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %82) #8
  br label %752

752:                                              ; preds = %751, %734
  call void @llvm.lifetime.end.p0(i64 32, ptr %82) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %80) #8
  br label %753

753:                                              ; preds = %752, %730
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %81) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %81) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %80) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %79) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %78) #8
  br label %1486

754:                                              ; preds = %658
  call void @llvm.lifetime.start.p0(i64 1, ptr %83) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %83) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.35, ptr noundef nonnull align 1 dereferenceable(1) %83)
          to label %755 unwind label %756

755:                                              ; preds = %754
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %83) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %83) #8
  store i32 1, ptr %19, align 4
  br label %1485

756:                                              ; preds = %754
  %757 = landingpad { ptr, i32 }
          cleanup
  %758 = extractvalue { ptr, i32 } %757, 0
  store ptr %758, ptr %17, align 8
  %759 = extractvalue { ptr, i32 } %757, 1
  store i32 %759, ptr %18, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %83) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %83) #8
  br label %1486

760:                                              ; preds = %658
  br label %761

761:                                              ; preds = %760
  br label %762

762:                                              ; preds = %761, %655
  %763 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %145, i32 0, i32 37
  %764 = getelementptr inbounds %"struct.spirv_cross::CompilerMSL::Options", ptr %763, i32 0, i32 48
  %765 = load i8, ptr %764, align 1, !tbaa !200, !range !55, !noundef !56
  %766 = trunc i8 %765 to i1
  br i1 %766, label %767, label %773

767:                                              ; preds = %762
  call void @llvm.lifetime.start.p0(i64 1, ptr %84) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %84) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.35, ptr noundef nonnull align 1 dereferenceable(1) %84)
          to label %768 unwind label %769

768:                                              ; preds = %767
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %84) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %84) #8
  store i32 1, ptr %19, align 4
  br label %1485

769:                                              ; preds = %767
  %770 = landingpad { ptr, i32 }
          cleanup
  %771 = extractvalue { ptr, i32 } %770, 0
  store ptr %771, ptr %17, align 8
  %772 = extractvalue { ptr, i32 } %770, 1
  store i32 %772, ptr %18, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %84) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %84) #8
  br label %1486

773:                                              ; preds = %762
  call void @llvm.lifetime.start.p0(i64 4, ptr %85) #8
  %774 = load i8, ptr %13, align 1, !tbaa !13, !range !55, !noundef !56
  %775 = trunc i8 %774 to i1
  br i1 %775, label %776, label %783

776:                                              ; preds = %773
  %777 = load i32, ptr %12, align 4, !tbaa !11
  %778 = load ptr, ptr %7, align 8, !tbaa !5
  %779 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %778, i32 0, i32 1
  %780 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %779)
  %781 = load i32, ptr %8, align 4, !tbaa !9
  %782 = call noundef i32 @_ZN11spirv_cross11CompilerMSL45get_or_allocate_builtin_input_member_locationEN3spv7BuiltInEjjPj(ptr noundef nonnull align 8 dereferenceable(12482) %145, i32 noundef %777, i32 noundef %780, i32 noundef %781, ptr noundef null)
  store i32 %782, ptr %85, align 4, !tbaa !9
  br label %789

783:                                              ; preds = %773
  %784 = load ptr, ptr %7, align 8, !tbaa !5
  %785 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %784, i32 0, i32 1
  %786 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %785)
  %787 = load i32, ptr %8, align 4, !tbaa !9
  %788 = call noundef i32 @_ZNK11spirv_cross11CompilerMSL19get_member_locationEjjPj(ptr noundef nonnull align 8 dereferenceable(12482) %145, i32 noundef %786, i32 noundef %787, ptr noundef null)
  store i32 %788, ptr %85, align 4, !tbaa !9
  br label %789

789:                                              ; preds = %783, %776
  %790 = load i32, ptr %85, align 4, !tbaa !9
  %791 = icmp ne i32 %790, -1
  br i1 %791, label %792, label %816

792:                                              ; preds = %789
  call void @llvm.lifetime.start.p0(i64 32, ptr %86) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %87) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %88) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %88) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %87, ptr noundef @.str.1321, ptr noundef nonnull align 1 dereferenceable(1) %88)
          to label %793 unwind label %797

793:                                              ; preds = %792
  call void @llvm.lifetime.start.p0(i64 32, ptr %89) #8
  invoke void @_ZN11spirv_cross17convert_to_stringIjTnNSt9enable_ifIXntsr3std17is_floating_pointIT_EE5valueEiE4typeELi0EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS2_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %89, ptr noundef nonnull align 4 dereferenceable(4) %85)
          to label %794 unwind label %801

794:                                              ; preds = %793
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %86, ptr noundef nonnull align 8 dereferenceable(32) %87, ptr noundef nonnull align 8 dereferenceable(32) %89)
          to label %795 unwind label %805

795:                                              ; preds = %794
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(32) %86, ptr noundef @.str.1322)
          to label %796 unwind label %809

796:                                              ; preds = %795
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %86) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %89) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %89) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %88) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %88) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %87) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %86) #8
  store i32 1, ptr %19, align 4
  br label %817

797:                                              ; preds = %792
  %798 = landingpad { ptr, i32 }
          cleanup
  %799 = extractvalue { ptr, i32 } %798, 0
  store ptr %799, ptr %17, align 8
  %800 = extractvalue { ptr, i32 } %798, 1
  store i32 %800, ptr %18, align 4
  br label %815

801:                                              ; preds = %793
  %802 = landingpad { ptr, i32 }
          cleanup
  %803 = extractvalue { ptr, i32 } %802, 0
  store ptr %803, ptr %17, align 8
  %804 = extractvalue { ptr, i32 } %802, 1
  store i32 %804, ptr %18, align 4
  br label %814

805:                                              ; preds = %794
  %806 = landingpad { ptr, i32 }
          cleanup
  %807 = extractvalue { ptr, i32 } %806, 0
  store ptr %807, ptr %17, align 8
  %808 = extractvalue { ptr, i32 } %806, 1
  store i32 %808, ptr %18, align 4
  br label %813

809:                                              ; preds = %795
  %810 = landingpad { ptr, i32 }
          cleanup
  %811 = extractvalue { ptr, i32 } %810, 0
  store ptr %811, ptr %17, align 8
  %812 = extractvalue { ptr, i32 } %810, 1
  store i32 %812, ptr %18, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %86) #8
  br label %813

813:                                              ; preds = %809, %805
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %89) #8
  br label %814

814:                                              ; preds = %813, %801
  call void @llvm.lifetime.end.p0(i64 32, ptr %89) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #8
  br label %815

815:                                              ; preds = %814, %797
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %88) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %88) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %87) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %86) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #8
  br label %1486

816:                                              ; preds = %789
  store i32 0, ptr %19, align 4
  br label %817

817:                                              ; preds = %816, %796
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #8
  %818 = load i32, ptr %19, align 4
  switch i32 %818, label %1485 [
    i32 0, label %819
  ]

819:                                              ; preds = %817
  br label %820

820:                                              ; preds = %819, %650, %648
  %821 = call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL14is_tesc_shaderEv(ptr noundef nonnull align 8 dereferenceable(12482) %145)
  br i1 %821, label %822, label %843

822:                                              ; preds = %820
  %823 = load ptr, ptr %7, align 8, !tbaa !5
  %824 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %823, i32 0, i32 11
  %825 = load i32, ptr %824, align 8, !tbaa !32
  %826 = icmp eq i32 %825, 3
  br i1 %826, label %827, label %843

827:                                              ; preds = %822
  %828 = load i8, ptr %13, align 1, !tbaa !13, !range !55, !noundef !56
  %829 = trunc i8 %828 to i1
  br i1 %829, label %830, label %837

830:                                              ; preds = %827
  %831 = load i32, ptr %12, align 4, !tbaa !11
  %832 = load ptr, ptr %7, align 8, !tbaa !5
  %833 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %832, i32 0, i32 1
  %834 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %833)
  %835 = load i32, ptr %8, align 4, !tbaa !9
  %836 = call noundef i32 @_ZN11spirv_cross11CompilerMSL46get_or_allocate_builtin_output_member_locationEN3spv7BuiltInEjjPj(ptr noundef nonnull align 8 dereferenceable(12482) %145, i32 noundef %831, i32 noundef %834, i32 noundef %835, ptr noundef null)
  br label %837

837:                                              ; preds = %830, %827
  call void @llvm.lifetime.start.p0(i64 1, ptr %90) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %90) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.35, ptr noundef nonnull align 1 dereferenceable(1) %90)
          to label %838 unwind label %839

838:                                              ; preds = %837
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %90) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %90) #8
  store i32 1, ptr %19, align 4
  br label %1485

839:                                              ; preds = %837
  %840 = landingpad { ptr, i32 }
          cleanup
  %841 = extractvalue { ptr, i32 } %840, 0
  store ptr %841, ptr %17, align 8
  %842 = extractvalue { ptr, i32 } %840, 1
  store i32 %842, ptr %18, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %90) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %90) #8
  br label %1486

843:                                              ; preds = %822, %820
  %844 = call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL14is_tese_shaderEv(ptr noundef nonnull align 8 dereferenceable(12482) %145)
  br i1 %844, label %845, label %964

845:                                              ; preds = %843
  %846 = load ptr, ptr %7, align 8, !tbaa !5
  %847 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %846, i32 0, i32 11
  %848 = load i32, ptr %847, align 8, !tbaa !32
  %849 = icmp eq i32 %848, 1
  br i1 %849, label %850, label %964

850:                                              ; preds = %845
  %851 = load i8, ptr %13, align 1, !tbaa !13, !range !55, !noundef !56
  %852 = trunc i8 %851 to i1
  br i1 %852, label %853, label %888

853:                                              ; preds = %850
  %854 = load i32, ptr %12, align 4, !tbaa !11
  switch i32 %854, label %886 [
    i32 7, label %855
    i32 13, label %855
    i32 14, label %880
  ]

855:                                              ; preds = %853, %853
  call void @llvm.lifetime.start.p0(i64 32, ptr %91) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %92) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %93) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %93) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %92, ptr noundef @.str.1319, ptr noundef nonnull align 1 dereferenceable(1) %93)
          to label %856 unwind label %861

856:                                              ; preds = %855
  call void @llvm.lifetime.start.p0(i64 32, ptr %94) #8
  %857 = load i32, ptr %12, align 4, !tbaa !11
  invoke void @_ZN11spirv_cross11CompilerMSL17builtin_qualifierB5cxx11EN3spv7BuiltInE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %94, ptr noundef nonnull align 8 dereferenceable(12482) %145, i32 noundef %857)
          to label %858 unwind label %865

858:                                              ; preds = %856
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %91, ptr noundef nonnull align 8 dereferenceable(32) %92, ptr noundef nonnull align 8 dereferenceable(32) %94)
          to label %859 unwind label %869

859:                                              ; preds = %858
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(32) %91, ptr noundef @.str.1318)
          to label %860 unwind label %873

860:                                              ; preds = %859
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %91) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %94) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %94) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %93) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %93) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %92) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %91) #8
  store i32 1, ptr %19, align 4
  br label %1485

861:                                              ; preds = %855
  %862 = landingpad { ptr, i32 }
          cleanup
  %863 = extractvalue { ptr, i32 } %862, 0
  store ptr %863, ptr %17, align 8
  %864 = extractvalue { ptr, i32 } %862, 1
  store i32 %864, ptr %18, align 4
  br label %879

865:                                              ; preds = %856
  %866 = landingpad { ptr, i32 }
          cleanup
  %867 = extractvalue { ptr, i32 } %866, 0
  store ptr %867, ptr %17, align 8
  %868 = extractvalue { ptr, i32 } %866, 1
  store i32 %868, ptr %18, align 4
  br label %878

869:                                              ; preds = %858
  %870 = landingpad { ptr, i32 }
          cleanup
  %871 = extractvalue { ptr, i32 } %870, 0
  store ptr %871, ptr %17, align 8
  %872 = extractvalue { ptr, i32 } %870, 1
  store i32 %872, ptr %18, align 4
  br label %877

873:                                              ; preds = %859
  %874 = landingpad { ptr, i32 }
          cleanup
  %875 = extractvalue { ptr, i32 } %874, 0
  store ptr %875, ptr %17, align 8
  %876 = extractvalue { ptr, i32 } %874, 1
  store i32 %876, ptr %18, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %91) #8
  br label %877

877:                                              ; preds = %873, %869
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %94) #8
  br label %878

878:                                              ; preds = %877, %865
  call void @llvm.lifetime.end.p0(i64 32, ptr %94) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #8
  br label %879

879:                                              ; preds = %878, %861
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %93) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %93) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %92) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %91) #8
  br label %1486

880:                                              ; preds = %853
  call void @llvm.lifetime.start.p0(i64 1, ptr %95) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %95) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.35, ptr noundef nonnull align 1 dereferenceable(1) %95)
          to label %881 unwind label %882

881:                                              ; preds = %880
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %95) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %95) #8
  store i32 1, ptr %19, align 4
  br label %1485

882:                                              ; preds = %880
  %883 = landingpad { ptr, i32 }
          cleanup
  %884 = extractvalue { ptr, i32 } %883, 0
  store ptr %884, ptr %17, align 8
  %885 = extractvalue { ptr, i32 } %883, 1
  store i32 %885, ptr %18, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %95) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %95) #8
  br label %1486

886:                                              ; preds = %853
  br label %887

887:                                              ; preds = %886
  br label %888

888:                                              ; preds = %887, %850
  %889 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %145, i32 0, i32 37
  %890 = getelementptr inbounds %"struct.spirv_cross::CompilerMSL::Options", ptr %889, i32 0, i32 49
  %891 = load i8, ptr %890, align 2, !tbaa !202, !range !55, !noundef !56
  %892 = trunc i8 %891 to i1
  br i1 %892, label %893, label %899

893:                                              ; preds = %888
  call void @llvm.lifetime.start.p0(i64 1, ptr %96) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %96) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.35, ptr noundef nonnull align 1 dereferenceable(1) %96)
          to label %894 unwind label %895

894:                                              ; preds = %893
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %96) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %96) #8
  store i32 1, ptr %19, align 4
  br label %1485

895:                                              ; preds = %893
  %896 = landingpad { ptr, i32 }
          cleanup
  %897 = extractvalue { ptr, i32 } %896, 0
  store ptr %897, ptr %17, align 8
  %898 = extractvalue { ptr, i32 } %896, 1
  store i32 %898, ptr %18, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %96) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %96) #8
  br label %1486

899:                                              ; preds = %888
  %900 = load ptr, ptr %7, align 8, !tbaa !5
  %901 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %900, i32 0, i32 12
  %902 = load i32, ptr %8, align 4, !tbaa !9
  %903 = zext i32 %902 to i64
  %904 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewINS_7TypedIDILNS_5TypesE1EEEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %901, i64 noundef %903) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %97, ptr align 4 %904, i64 4, i1 false), !tbaa.struct !203
  %905 = getelementptr inbounds %"class.spirv_cross::TypedID.414", ptr %97, i32 0, i32 0
  %906 = load i32, ptr %905, align 4
  %907 = call noundef nonnull align 8 dereferenceable(336) ptr @_ZNK11spirv_cross8Compiler8get_typeENS_7TypedIDILNS_5TypesE1EEE(ptr noundef nonnull align 8 dereferenceable(3176) %145, i32 %906)
  %908 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %907, i32 0, i32 2
  %909 = load i32, ptr %908, align 8, !tbaa !204
  %910 = icmp eq i32 %909, 21
  br i1 %910, label %911, label %917

911:                                              ; preds = %899
  call void @llvm.lifetime.start.p0(i64 1, ptr %98) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %98) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.35, ptr noundef nonnull align 1 dereferenceable(1) %98)
          to label %912 unwind label %913

912:                                              ; preds = %911
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %98) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %98) #8
  store i32 1, ptr %19, align 4
  br label %1485

913:                                              ; preds = %911
  %914 = landingpad { ptr, i32 }
          cleanup
  %915 = extractvalue { ptr, i32 } %914, 0
  store ptr %915, ptr %17, align 8
  %916 = extractvalue { ptr, i32 } %914, 1
  store i32 %916, ptr %18, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %98) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %98) #8
  br label %1486

917:                                              ; preds = %899
  call void @llvm.lifetime.start.p0(i64 4, ptr %99) #8
  %918 = load i8, ptr %13, align 1, !tbaa !13, !range !55, !noundef !56
  %919 = trunc i8 %918 to i1
  br i1 %919, label %920, label %927

920:                                              ; preds = %917
  %921 = load i32, ptr %12, align 4, !tbaa !11
  %922 = load ptr, ptr %7, align 8, !tbaa !5
  %923 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %922, i32 0, i32 1
  %924 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %923)
  %925 = load i32, ptr %8, align 4, !tbaa !9
  %926 = call noundef i32 @_ZN11spirv_cross11CompilerMSL45get_or_allocate_builtin_input_member_locationEN3spv7BuiltInEjjPj(ptr noundef nonnull align 8 dereferenceable(12482) %145, i32 noundef %921, i32 noundef %924, i32 noundef %925, ptr noundef null)
  store i32 %926, ptr %99, align 4, !tbaa !9
  br label %933

927:                                              ; preds = %917
  %928 = load ptr, ptr %7, align 8, !tbaa !5
  %929 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %928, i32 0, i32 1
  %930 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %929)
  %931 = load i32, ptr %8, align 4, !tbaa !9
  %932 = call noundef i32 @_ZNK11spirv_cross11CompilerMSL19get_member_locationEjjPj(ptr noundef nonnull align 8 dereferenceable(12482) %145, i32 noundef %930, i32 noundef %931, ptr noundef null)
  store i32 %932, ptr %99, align 4, !tbaa !9
  br label %933

933:                                              ; preds = %927, %920
  %934 = load i32, ptr %99, align 4, !tbaa !9
  %935 = icmp ne i32 %934, -1
  br i1 %935, label %936, label %960

936:                                              ; preds = %933
  call void @llvm.lifetime.start.p0(i64 32, ptr %100) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %101) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %102) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %102) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %101, ptr noundef @.str.1321, ptr noundef nonnull align 1 dereferenceable(1) %102)
          to label %937 unwind label %941

937:                                              ; preds = %936
  call void @llvm.lifetime.start.p0(i64 32, ptr %103) #8
  invoke void @_ZN11spirv_cross17convert_to_stringIjTnNSt9enable_ifIXntsr3std17is_floating_pointIT_EE5valueEiE4typeELi0EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS2_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %103, ptr noundef nonnull align 4 dereferenceable(4) %99)
          to label %938 unwind label %945

938:                                              ; preds = %937
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %100, ptr noundef nonnull align 8 dereferenceable(32) %101, ptr noundef nonnull align 8 dereferenceable(32) %103)
          to label %939 unwind label %949

939:                                              ; preds = %938
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(32) %100, ptr noundef @.str.1322)
          to label %940 unwind label %953

940:                                              ; preds = %939
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %100) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %103) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %103) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %101) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %102) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %102) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %101) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %100) #8
  store i32 1, ptr %19, align 4
  br label %961

941:                                              ; preds = %936
  %942 = landingpad { ptr, i32 }
          cleanup
  %943 = extractvalue { ptr, i32 } %942, 0
  store ptr %943, ptr %17, align 8
  %944 = extractvalue { ptr, i32 } %942, 1
  store i32 %944, ptr %18, align 4
  br label %959

945:                                              ; preds = %937
  %946 = landingpad { ptr, i32 }
          cleanup
  %947 = extractvalue { ptr, i32 } %946, 0
  store ptr %947, ptr %17, align 8
  %948 = extractvalue { ptr, i32 } %946, 1
  store i32 %948, ptr %18, align 4
  br label %958

949:                                              ; preds = %938
  %950 = landingpad { ptr, i32 }
          cleanup
  %951 = extractvalue { ptr, i32 } %950, 0
  store ptr %951, ptr %17, align 8
  %952 = extractvalue { ptr, i32 } %950, 1
  store i32 %952, ptr %18, align 4
  br label %957

953:                                              ; preds = %939
  %954 = landingpad { ptr, i32 }
          cleanup
  %955 = extractvalue { ptr, i32 } %954, 0
  store ptr %955, ptr %17, align 8
  %956 = extractvalue { ptr, i32 } %954, 1
  store i32 %956, ptr %18, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %100) #8
  br label %957

957:                                              ; preds = %953, %949
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %103) #8
  br label %958

958:                                              ; preds = %957, %945
  call void @llvm.lifetime.end.p0(i64 32, ptr %103) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %101) #8
  br label %959

959:                                              ; preds = %958, %941
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %102) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %102) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %101) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %100) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %99) #8
  br label %1486

960:                                              ; preds = %933
  store i32 0, ptr %19, align 4
  br label %961

961:                                              ; preds = %960, %940
  call void @llvm.lifetime.end.p0(i64 4, ptr %99) #8
  %962 = load i32, ptr %19, align 4
  switch i32 %962, label %1485 [
    i32 0, label %963
  ]

963:                                              ; preds = %961
  br label %964

964:                                              ; preds = %963, %845, %843
  %965 = load ptr, ptr %9, align 8, !tbaa !5
  %966 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %965, i32 0, i32 10
  %967 = load i32, ptr %966, align 8, !tbaa !15
  %968 = icmp eq i32 %967, 4
  br i1 %968, label %969, label %1247

969:                                              ; preds = %964
  %970 = load ptr, ptr %7, align 8, !tbaa !5
  %971 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %970, i32 0, i32 11
  %972 = load i32, ptr %971, align 8, !tbaa !32
  %973 = icmp eq i32 %972, 1
  br i1 %973, label %974, label %1247

974:                                              ; preds = %969
  call void @llvm.lifetime.start.p0(i64 32, ptr %104) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %104) #8
  %975 = load i8, ptr %13, align 1, !tbaa !13, !range !55, !noundef !56
  %976 = trunc i8 %975 to i1
  br i1 %976, label %977, label %1033

977:                                              ; preds = %974
  %978 = load i32, ptr %12, align 4, !tbaa !11
  switch i32 %978, label %1031 [
    i32 4440, label %979
    i32 17, label %991
    i32 16, label %991
    i32 15, label %991
    i32 18, label %991
    i32 20, label %991
    i32 9, label %991
    i32 5286, label %991
    i32 5287, label %991
    i32 3, label %999
    i32 4, label %1015
  ]

979:                                              ; preds = %977
  %980 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %145, i32 0, i32 37
  %981 = getelementptr inbounds %"struct.spirv_cross::CompilerMSL::Options", ptr %980, i32 0, i32 27
  %982 = load i8, ptr %981, align 1, !tbaa !205, !range !55, !noundef !56
  %983 = trunc i8 %982 to i1
  br i1 %983, label %984, label %989

984:                                              ; preds = %979
  %985 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %145, i32 0, i32 37
  %986 = getelementptr inbounds %"struct.spirv_cross::CompilerMSL::Options", ptr %985, i32 0, i32 28
  %987 = load i8, ptr %986, align 4, !tbaa !206, !range !55, !noundef !56
  %988 = trunc i8 %987 to i1
  br i1 %988, label %990, label %989

989:                                              ; preds = %984, %979
  br label %1032

990:                                              ; preds = %984
  br label %991

991:                                              ; preds = %990, %977, %977, %977, %977, %977, %977, %977, %977
  call void @llvm.lifetime.start.p0(i64 32, ptr %105) #8
  %992 = load i32, ptr %12, align 4, !tbaa !11
  invoke void @_ZN11spirv_cross11CompilerMSL17builtin_qualifierB5cxx11EN3spv7BuiltInE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %105, ptr noundef nonnull align 8 dereferenceable(12482) %145, i32 noundef %992)
          to label %993 unwind label %995

993:                                              ; preds = %991
  %994 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %104, ptr noundef nonnull align 8 dereferenceable(32) %105) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %105) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %105) #8
  br label %1032

995:                                              ; preds = %991
  %996 = landingpad { ptr, i32 }
          cleanup
  %997 = extractvalue { ptr, i32 } %996, 0
  store ptr %997, ptr %17, align 8
  %998 = extractvalue { ptr, i32 } %996, 1
  store i32 %998, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %105) #8
  br label %1246

999:                                              ; preds = %977
  call void @llvm.lifetime.start.p0(i64 4, ptr %106) #8
  %1000 = load ptr, ptr %7, align 8, !tbaa !5
  %1001 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %1000, i32 0, i32 1
  %1002 = invoke i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvNS0_IXT_EEEILS1_1EEEv(ptr noundef nonnull align 4 dereferenceable(4) %1001)
          to label %1003 unwind label %1011

1003:                                             ; preds = %999
  %1004 = getelementptr inbounds %"class.spirv_cross::TypedID.414", ptr %107, i32 0, i32 0
  store i32 %1002, ptr %1004, align 4
  %1005 = load i32, ptr %8, align 4, !tbaa !9
  %1006 = getelementptr inbounds %"class.spirv_cross::TypedID.414", ptr %107, i32 0, i32 0
  %1007 = load i32, ptr %1006, align 4
  %1008 = invoke noundef i32 @_ZNK11spirv_cross8Compiler21get_member_decorationENS_7TypedIDILNS_5TypesE1EEEjN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %145, i32 %1007, i32 noundef %1005, i32 noundef 32)
          to label %1009 unwind label %1011

1009:                                             ; preds = %1003
  store i32 %1008, ptr %106, align 4, !tbaa !9
  invoke void @_ZN11spirv_cross4joinIJRA13_KcjRA4_S1_EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 1 dereferenceable(13) @.str.1324, ptr noundef nonnull align 4 dereferenceable(4) %106, ptr noundef nonnull align 1 dereferenceable(4) @.str.1322)
          to label %1010 unwind label %1011

1010:                                             ; preds = %1009
  call void @llvm.lifetime.end.p0(i64 4, ptr %106) #8
  store i32 1, ptr %19, align 4
  br label %1243

1011:                                             ; preds = %1009, %1003, %999
  %1012 = landingpad { ptr, i32 }
          cleanup
  %1013 = extractvalue { ptr, i32 } %1012, 0
  store ptr %1013, ptr %17, align 8
  %1014 = extractvalue { ptr, i32 } %1012, 1
  store i32 %1014, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %106) #8
  br label %1246

1015:                                             ; preds = %977
  call void @llvm.lifetime.start.p0(i64 4, ptr %108) #8
  %1016 = load ptr, ptr %7, align 8, !tbaa !5
  %1017 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %1016, i32 0, i32 1
  %1018 = invoke i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvNS0_IXT_EEEILS1_1EEEv(ptr noundef nonnull align 4 dereferenceable(4) %1017)
          to label %1019 unwind label %1027

1019:                                             ; preds = %1015
  %1020 = getelementptr inbounds %"class.spirv_cross::TypedID.414", ptr %109, i32 0, i32 0
  store i32 %1018, ptr %1020, align 4
  %1021 = load i32, ptr %8, align 4, !tbaa !9
  %1022 = getelementptr inbounds %"class.spirv_cross::TypedID.414", ptr %109, i32 0, i32 0
  %1023 = load i32, ptr %1022, align 4
  %1024 = invoke noundef i32 @_ZNK11spirv_cross8Compiler21get_member_decorationENS_7TypedIDILNS_5TypesE1EEEjN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %145, i32 %1023, i32 noundef %1021, i32 noundef 32)
          to label %1025 unwind label %1027

1025:                                             ; preds = %1019
  store i32 %1024, ptr %108, align 4, !tbaa !9
  invoke void @_ZN11spirv_cross4joinIJRA13_KcjRA4_S1_EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 1 dereferenceable(13) @.str.1325, ptr noundef nonnull align 4 dereferenceable(4) %108, ptr noundef nonnull align 1 dereferenceable(4) @.str.1322)
          to label %1026 unwind label %1027

1026:                                             ; preds = %1025
  call void @llvm.lifetime.end.p0(i64 4, ptr %108) #8
  store i32 1, ptr %19, align 4
  br label %1243

1027:                                             ; preds = %1025, %1019, %1015
  %1028 = landingpad { ptr, i32 }
          cleanup
  %1029 = extractvalue { ptr, i32 } %1028, 0
  store ptr %1029, ptr %17, align 8
  %1030 = extractvalue { ptr, i32 } %1028, 1
  store i32 %1030, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %108) #8
  br label %1246

1031:                                             ; preds = %977
  br label %1032

1032:                                             ; preds = %1031, %993, %989
  br label %1042

1033:                                             ; preds = %974
  call void @llvm.lifetime.start.p0(i64 32, ptr %110) #8
  %1034 = load ptr, ptr %7, align 8, !tbaa !5
  %1035 = load i32, ptr %8, align 4, !tbaa !9
  invoke void @_ZN11spirv_cross11CompilerMSL35member_location_attribute_qualifierB5cxx11ERKNS_8SPIRTypeEj(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %110, ptr noundef nonnull align 8 dereferenceable(12482) %145, ptr noundef nonnull align 8 dereferenceable(336) %1034, i32 noundef %1035)
          to label %1036 unwind label %1038

1036:                                             ; preds = %1033
  %1037 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %104, ptr noundef nonnull align 8 dereferenceable(32) %110) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %110) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %110) #8
  br label %1042

1038:                                             ; preds = %1033
  %1039 = landingpad { ptr, i32 }
          cleanup
  %1040 = extractvalue { ptr, i32 } %1039, 0
  store ptr %1040, ptr %17, align 8
  %1041 = extractvalue { ptr, i32 } %1039, 1
  store i32 %1041, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %110) #8
  br label %1246

1042:                                             ; preds = %1036, %1032
  %1043 = load i32, ptr %12, align 4, !tbaa !11
  %1044 = icmp eq i32 %1043, 5286
  br i1 %1044, label %1045, label %1067

1045:                                             ; preds = %1042
  %1046 = load ptr, ptr %7, align 8, !tbaa !5
  %1047 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %1046, i32 0, i32 1
  %1048 = invoke i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvNS0_IXT_EEEILS1_1EEEv(ptr noundef nonnull align 4 dereferenceable(4) %1047)
          to label %1049 unwind label %1059

1049:                                             ; preds = %1045
  %1050 = getelementptr inbounds %"class.spirv_cross::TypedID.414", ptr %111, i32 0, i32 0
  store i32 %1048, ptr %1050, align 4
  %1051 = load i32, ptr %8, align 4, !tbaa !9
  %1052 = getelementptr inbounds %"class.spirv_cross::TypedID.414", ptr %111, i32 0, i32 0
  %1053 = load i32, ptr %1052, align 4
  %1054 = invoke noundef zeroext i1 @_ZNK11spirv_cross8Compiler21has_member_decorationENS_7TypedIDILNS_5TypesE1EEEjN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %145, i32 %1053, i32 noundef %1051, i32 noundef 13)
          to label %1055 unwind label %1059

1055:                                             ; preds = %1049
  br i1 %1054, label %1056, label %1067

1056:                                             ; preds = %1055
  %1057 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1057, ptr noundef @.str.1326)
          to label %1058 unwind label %1063

1058:                                             ; preds = %1056
  invoke void @__cxa_throw(ptr %1057, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #9
          to label %1494 unwind label %1059

1059:                                             ; preds = %1220, %1217, %1209, %1206, %1194, %1190, %1186, %1183, %1176, %1172, %1167, %1156, %1147, %1143, %1139, %1136, %1129, %1125, %1120, %1109, %1100, %1096, %1093, %1090, %1081, %1077, %1067, %1058, %1049, %1045
  %1060 = landingpad { ptr, i32 }
          cleanup
  %1061 = extractvalue { ptr, i32 } %1060, 0
  store ptr %1061, ptr %17, align 8
  %1062 = extractvalue { ptr, i32 } %1060, 1
  store i32 %1062, ptr %18, align 4
  br label %1246

1063:                                             ; preds = %1056
  %1064 = landingpad { ptr, i32 }
          cleanup
  %1065 = extractvalue { ptr, i32 } %1064, 0
  store ptr %1065, ptr %17, align 8
  %1066 = extractvalue { ptr, i32 } %1064, 1
  store i32 %1066, ptr %18, align 4
  call void @__cxa_free_exception(ptr %1057) #8
  br label %1246

1067:                                             ; preds = %1055, %1042
  %1068 = load ptr, ptr %11, align 8, !tbaa !5
  %1069 = invoke noundef zeroext i1 @_ZN11spirv_crossL16type_is_integralERKNS_8SPIRTypeE(ptr noundef nonnull align 8 dereferenceable(336) %1068)
          to label %1070 unwind label %1059

1070:                                             ; preds = %1067
  br i1 %1069, label %1228, label %1071

1071:                                             ; preds = %1070
  %1072 = load i8, ptr %13, align 1, !tbaa !13, !range !55, !noundef !56
  %1073 = trunc i8 %1072 to i1
  br i1 %1073, label %1074, label %1077

1074:                                             ; preds = %1071
  %1075 = load i32, ptr %12, align 4, !tbaa !11
  %1076 = icmp ne i32 %1075, 15
  br i1 %1076, label %1077, label %1228

1077:                                             ; preds = %1074, %1071
  %1078 = load ptr, ptr %7, align 8, !tbaa !5
  %1079 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %1078, i32 0, i32 1
  %1080 = invoke i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvNS0_IXT_EEEILS1_1EEEv(ptr noundef nonnull align 4 dereferenceable(4) %1079)
          to label %1081 unwind label %1059

1081:                                             ; preds = %1077
  %1082 = getelementptr inbounds %"class.spirv_cross::TypedID.414", ptr %112, i32 0, i32 0
  store i32 %1080, ptr %1082, align 4
  %1083 = load i32, ptr %8, align 4, !tbaa !9
  %1084 = getelementptr inbounds %"class.spirv_cross::TypedID.414", ptr %112, i32 0, i32 0
  %1085 = load i32, ptr %1084, align 4
  %1086 = invoke noundef zeroext i1 @_ZNK11spirv_cross8Compiler21has_member_decorationENS_7TypedIDILNS_5TypesE1EEEjN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %145, i32 %1085, i32 noundef %1083, i32 noundef 14)
          to label %1087 unwind label %1059

1087:                                             ; preds = %1081
  br i1 %1086, label %1088, label %1096

1088:                                             ; preds = %1087
  %1089 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %104) #8
  br i1 %1089, label %1093, label %1090

1090:                                             ; preds = %1088
  %1091 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %104, ptr noundef @.str.55)
          to label %1092 unwind label %1059

1092:                                             ; preds = %1090
  br label %1093

1093:                                             ; preds = %1092, %1088
  %1094 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %104, ptr noundef @.str.1327)
          to label %1095 unwind label %1059

1095:                                             ; preds = %1093
  br label %1227

1096:                                             ; preds = %1087
  %1097 = load ptr, ptr %7, align 8, !tbaa !5
  %1098 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %1097, i32 0, i32 1
  %1099 = invoke i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvNS0_IXT_EEEILS1_1EEEv(ptr noundef nonnull align 4 dereferenceable(4) %1098)
          to label %1100 unwind label %1059

1100:                                             ; preds = %1096
  %1101 = getelementptr inbounds %"class.spirv_cross::TypedID.414", ptr %113, i32 0, i32 0
  store i32 %1099, ptr %1101, align 4
  %1102 = load i32, ptr %8, align 4, !tbaa !9
  %1103 = getelementptr inbounds %"class.spirv_cross::TypedID.414", ptr %113, i32 0, i32 0
  %1104 = load i32, ptr %1103, align 4
  %1105 = invoke noundef zeroext i1 @_ZNK11spirv_cross8Compiler21has_member_decorationENS_7TypedIDILNS_5TypesE1EEEjN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %145, i32 %1104, i32 noundef %1102, i32 noundef 16)
          to label %1106 unwind label %1059

1106:                                             ; preds = %1100
  br i1 %1105, label %1107, label %1143

1107:                                             ; preds = %1106
  %1108 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %104) #8
  br i1 %1108, label %1112, label %1109

1109:                                             ; preds = %1107
  %1110 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %104, ptr noundef @.str.55)
          to label %1111 unwind label %1059

1111:                                             ; preds = %1109
  br label %1112

1112:                                             ; preds = %1111, %1107
  %1113 = load i32, ptr %12, align 4, !tbaa !11
  %1114 = icmp eq i32 %1113, 5287
  br i1 %1114, label %1118, label %1115

1115:                                             ; preds = %1112
  %1116 = load i32, ptr %12, align 4, !tbaa !11
  %1117 = icmp eq i32 %1116, 5286
  br i1 %1117, label %1118, label %1125

1118:                                             ; preds = %1115, %1112
  %1119 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1119, ptr noundef @.str.1328)
          to label %1120 unwind label %1121

1120:                                             ; preds = %1118
  invoke void @__cxa_throw(ptr %1119, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #9
          to label %1494 unwind label %1059

1121:                                             ; preds = %1118
  %1122 = landingpad { ptr, i32 }
          cleanup
  %1123 = extractvalue { ptr, i32 } %1122, 0
  store ptr %1123, ptr %17, align 8
  %1124 = extractvalue { ptr, i32 } %1122, 1
  store i32 %1124, ptr %18, align 4
  call void @__cxa_free_exception(ptr %1119) #8
  br label %1246

1125:                                             ; preds = %1115
  %1126 = load ptr, ptr %7, align 8, !tbaa !5
  %1127 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %1126, i32 0, i32 1
  %1128 = invoke i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvNS0_IXT_EEEILS1_1EEEv(ptr noundef nonnull align 4 dereferenceable(4) %1127)
          to label %1129 unwind label %1059

1129:                                             ; preds = %1125
  %1130 = getelementptr inbounds %"class.spirv_cross::TypedID.414", ptr %114, i32 0, i32 0
  store i32 %1128, ptr %1130, align 4
  %1131 = load i32, ptr %8, align 4, !tbaa !9
  %1132 = getelementptr inbounds %"class.spirv_cross::TypedID.414", ptr %114, i32 0, i32 0
  %1133 = load i32, ptr %1132, align 4
  %1134 = invoke noundef zeroext i1 @_ZNK11spirv_cross8Compiler21has_member_decorationENS_7TypedIDILNS_5TypesE1EEEjN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %145, i32 %1133, i32 noundef %1131, i32 noundef 13)
          to label %1135 unwind label %1059

1135:                                             ; preds = %1129
  br i1 %1134, label %1136, label %1139

1136:                                             ; preds = %1135
  %1137 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %104, ptr noundef @.str.1329)
          to label %1138 unwind label %1059

1138:                                             ; preds = %1136
  br label %1142

1139:                                             ; preds = %1135
  %1140 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %104, ptr noundef @.str.1330)
          to label %1141 unwind label %1059

1141:                                             ; preds = %1139
  br label %1142

1142:                                             ; preds = %1141, %1138
  br label %1226

1143:                                             ; preds = %1106
  %1144 = load ptr, ptr %7, align 8, !tbaa !5
  %1145 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %1144, i32 0, i32 1
  %1146 = invoke i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvNS0_IXT_EEEILS1_1EEEv(ptr noundef nonnull align 4 dereferenceable(4) %1145)
          to label %1147 unwind label %1059

1147:                                             ; preds = %1143
  %1148 = getelementptr inbounds %"class.spirv_cross::TypedID.414", ptr %115, i32 0, i32 0
  store i32 %1146, ptr %1148, align 4
  %1149 = load i32, ptr %8, align 4, !tbaa !9
  %1150 = getelementptr inbounds %"class.spirv_cross::TypedID.414", ptr %115, i32 0, i32 0
  %1151 = load i32, ptr %1150, align 4
  %1152 = invoke noundef zeroext i1 @_ZNK11spirv_cross8Compiler21has_member_decorationENS_7TypedIDILNS_5TypesE1EEEjN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %145, i32 %1151, i32 noundef %1149, i32 noundef 17)
          to label %1153 unwind label %1059

1153:                                             ; preds = %1147
  br i1 %1152, label %1154, label %1190

1154:                                             ; preds = %1153
  %1155 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %104) #8
  br i1 %1155, label %1159, label %1156

1156:                                             ; preds = %1154
  %1157 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %104, ptr noundef @.str.55)
          to label %1158 unwind label %1059

1158:                                             ; preds = %1156
  br label %1159

1159:                                             ; preds = %1158, %1154
  %1160 = load i32, ptr %12, align 4, !tbaa !11
  %1161 = icmp eq i32 %1160, 5287
  br i1 %1161, label %1165, label %1162

1162:                                             ; preds = %1159
  %1163 = load i32, ptr %12, align 4, !tbaa !11
  %1164 = icmp eq i32 %1163, 5286
  br i1 %1164, label %1165, label %1172

1165:                                             ; preds = %1162, %1159
  %1166 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1166, ptr noundef @.str.1331)
          to label %1167 unwind label %1168

1167:                                             ; preds = %1165
  invoke void @__cxa_throw(ptr %1166, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #9
          to label %1494 unwind label %1059

1168:                                             ; preds = %1165
  %1169 = landingpad { ptr, i32 }
          cleanup
  %1170 = extractvalue { ptr, i32 } %1169, 0
  store ptr %1170, ptr %17, align 8
  %1171 = extractvalue { ptr, i32 } %1169, 1
  store i32 %1171, ptr %18, align 4
  call void @__cxa_free_exception(ptr %1166) #8
  br label %1246

1172:                                             ; preds = %1162
  %1173 = load ptr, ptr %7, align 8, !tbaa !5
  %1174 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %1173, i32 0, i32 1
  %1175 = invoke i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvNS0_IXT_EEEILS1_1EEEv(ptr noundef nonnull align 4 dereferenceable(4) %1174)
          to label %1176 unwind label %1059

1176:                                             ; preds = %1172
  %1177 = getelementptr inbounds %"class.spirv_cross::TypedID.414", ptr %116, i32 0, i32 0
  store i32 %1175, ptr %1177, align 4
  %1178 = load i32, ptr %8, align 4, !tbaa !9
  %1179 = getelementptr inbounds %"class.spirv_cross::TypedID.414", ptr %116, i32 0, i32 0
  %1180 = load i32, ptr %1179, align 4
  %1181 = invoke noundef zeroext i1 @_ZNK11spirv_cross8Compiler21has_member_decorationENS_7TypedIDILNS_5TypesE1EEEjN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %145, i32 %1180, i32 noundef %1178, i32 noundef 13)
          to label %1182 unwind label %1059

1182:                                             ; preds = %1176
  br i1 %1181, label %1183, label %1186

1183:                                             ; preds = %1182
  %1184 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %104, ptr noundef @.str.1332)
          to label %1185 unwind label %1059

1185:                                             ; preds = %1183
  br label %1189

1186:                                             ; preds = %1182
  %1187 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %104, ptr noundef @.str.1333)
          to label %1188 unwind label %1059

1188:                                             ; preds = %1186
  br label %1189

1189:                                             ; preds = %1188, %1185
  br label %1225

1190:                                             ; preds = %1153
  %1191 = load ptr, ptr %7, align 8, !tbaa !5
  %1192 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %1191, i32 0, i32 1
  %1193 = invoke i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvNS0_IXT_EEEILS1_1EEEv(ptr noundef nonnull align 4 dereferenceable(4) %1192)
          to label %1194 unwind label %1059

1194:                                             ; preds = %1190
  %1195 = getelementptr inbounds %"class.spirv_cross::TypedID.414", ptr %117, i32 0, i32 0
  store i32 %1193, ptr %1195, align 4
  %1196 = load i32, ptr %8, align 4, !tbaa !9
  %1197 = getelementptr inbounds %"class.spirv_cross::TypedID.414", ptr %117, i32 0, i32 0
  %1198 = load i32, ptr %1197, align 4
  %1199 = invoke noundef zeroext i1 @_ZNK11spirv_cross8Compiler21has_member_decorationENS_7TypedIDILNS_5TypesE1EEEjN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %145, i32 %1198, i32 noundef %1196, i32 noundef 13)
          to label %1200 unwind label %1059

1200:                                             ; preds = %1194
  br i1 %1199, label %1204, label %1201

1201:                                             ; preds = %1200
  %1202 = load i32, ptr %12, align 4, !tbaa !11
  %1203 = icmp eq i32 %1202, 5287
  br i1 %1203, label %1204, label %1212

1204:                                             ; preds = %1201, %1200
  %1205 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %104) #8
  br i1 %1205, label %1209, label %1206

1206:                                             ; preds = %1204
  %1207 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %104, ptr noundef @.str.55)
          to label %1208 unwind label %1059

1208:                                             ; preds = %1206
  br label %1209

1209:                                             ; preds = %1208, %1204
  %1210 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %104, ptr noundef @.str.1334)
          to label %1211 unwind label %1059

1211:                                             ; preds = %1209
  br label %1224

1212:                                             ; preds = %1201
  %1213 = load i32, ptr %12, align 4, !tbaa !11
  %1214 = icmp eq i32 %1213, 5286
  br i1 %1214, label %1215, label %1223

1215:                                             ; preds = %1212
  %1216 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %104) #8
  br i1 %1216, label %1220, label %1217

1217:                                             ; preds = %1215
  %1218 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %104, ptr noundef @.str.55)
          to label %1219 unwind label %1059

1219:                                             ; preds = %1217
  br label %1220

1220:                                             ; preds = %1219, %1215
  %1221 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %104, ptr noundef @.str.1335)
          to label %1222 unwind label %1059

1222:                                             ; preds = %1220
  br label %1223

1223:                                             ; preds = %1222, %1212
  br label %1224

1224:                                             ; preds = %1223, %1211
  br label %1225

1225:                                             ; preds = %1224, %1189
  br label %1226

1226:                                             ; preds = %1225, %1142
  br label %1227

1227:                                             ; preds = %1226, %1095
  br label %1228

1228:                                             ; preds = %1227, %1074, %1070
  %1229 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %104) #8
  br i1 %1229, label %1242, label %1230

1230:                                             ; preds = %1228
  call void @llvm.lifetime.start.p0(i64 32, ptr %118) #8
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %118, ptr noundef @.str.1319, ptr noundef nonnull align 8 dereferenceable(32) %104)
          to label %1231 unwind label %1233

1231:                                             ; preds = %1230
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(32) %118, ptr noundef @.str.1318)
          to label %1232 unwind label %1237

1232:                                             ; preds = %1231
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %118) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %118) #8
  store i32 1, ptr %19, align 4
  br label %1243

1233:                                             ; preds = %1230
  %1234 = landingpad { ptr, i32 }
          cleanup
  %1235 = extractvalue { ptr, i32 } %1234, 0
  store ptr %1235, ptr %17, align 8
  %1236 = extractvalue { ptr, i32 } %1234, 1
  store i32 %1236, ptr %18, align 4
  br label %1241

1237:                                             ; preds = %1231
  %1238 = landingpad { ptr, i32 }
          cleanup
  %1239 = extractvalue { ptr, i32 } %1238, 0
  store ptr %1239, ptr %17, align 8
  %1240 = extractvalue { ptr, i32 } %1238, 1
  store i32 %1240, ptr %18, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %118) #8
  br label %1241

1241:                                             ; preds = %1237, %1233
  call void @llvm.lifetime.end.p0(i64 32, ptr %118) #8
  br label %1246

1242:                                             ; preds = %1228
  store i32 0, ptr %19, align 4
  br label %1243

1243:                                             ; preds = %1242, %1232, %1026, %1010
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %104) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %104) #8
  %1244 = load i32, ptr %19, align 4
  switch i32 %1244, label %1485 [
    i32 0, label %1245
  ]

1245:                                             ; preds = %1243
  br label %1247

1246:                                             ; preds = %1241, %1168, %1121, %1063, %1059, %1038, %1027, %1011, %995
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %104) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %104) #8
  br label %1486

1247:                                             ; preds = %1245, %969, %964
  %1248 = load ptr, ptr %9, align 8, !tbaa !5
  %1249 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %1248, i32 0, i32 10
  %1250 = load i32, ptr %1249, align 8, !tbaa !15
  %1251 = icmp eq i32 %1250, 4
  br i1 %1251, label %1252, label %1424

1252:                                             ; preds = %1247
  %1253 = load ptr, ptr %7, align 8, !tbaa !5
  %1254 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %1253, i32 0, i32 11
  %1255 = load i32, ptr %1254, align 8, !tbaa !32
  %1256 = icmp eq i32 %1255, 3
  br i1 %1256, label %1257, label %1424

1257:                                             ; preds = %1252
  %1258 = load i8, ptr %13, align 1, !tbaa !13, !range !55, !noundef !56
  %1259 = trunc i8 %1258 to i1
  br i1 %1259, label %1260, label %1351

1260:                                             ; preds = %1257
  %1261 = load i32, ptr %12, align 4, !tbaa !11
  switch i32 %1261, label %1345 [
    i32 5014, label %1262
    i32 22, label %1308
    i32 20, label %1320
  ]

1262:                                             ; preds = %1260
  %1263 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %145, i32 0, i32 37
  %1264 = getelementptr inbounds %"struct.spirv_cross::CompilerMSL::Options", ptr %1263, i32 0, i32 22
  %1265 = load i8, ptr %1264, align 2, !tbaa !207, !range !55, !noundef !56
  %1266 = trunc i8 %1265 to i1
  br i1 %1266, label %1273, label %1267

1267:                                             ; preds = %1262
  call void @llvm.lifetime.start.p0(i64 1, ptr %119) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %119) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.35, ptr noundef nonnull align 1 dereferenceable(1) %119)
          to label %1268 unwind label %1269

1268:                                             ; preds = %1267
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %119) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %119) #8
  store i32 1, ptr %19, align 4
  br label %1485

1269:                                             ; preds = %1267
  %1270 = landingpad { ptr, i32 }
          cleanup
  %1271 = extractvalue { ptr, i32 } %1270, 0
  store ptr %1271, ptr %17, align 8
  %1272 = extractvalue { ptr, i32 } %1270, 1
  store i32 %1272, ptr %18, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %119) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %119) #8
  br label %1486

1273:                                             ; preds = %1262
  %1274 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %145, i32 0, i32 37
  %1275 = call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options20supports_msl_versionEjjj(ptr noundef nonnull align 4 dereferenceable(137) %1274, i32 noundef 2, i32 noundef 1, i32 noundef 0)
  br i1 %1275, label %1283, label %1276

1276:                                             ; preds = %1273
  %1277 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1277, ptr noundef @.str.1336)
          to label %1278 unwind label %1279

1278:                                             ; preds = %1276
  call void @__cxa_throw(ptr %1277, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #9
  unreachable

1279:                                             ; preds = %1276
  %1280 = landingpad { ptr, i32 }
          cleanup
  %1281 = extractvalue { ptr, i32 } %1280, 0
  store ptr %1281, ptr %17, align 8
  %1282 = extractvalue { ptr, i32 } %1280, 1
  store i32 %1282, ptr %18, align 4
  call void @__cxa_free_exception(ptr %1277) #8
  br label %1486

1283:                                             ; preds = %1273
  call void @llvm.lifetime.start.p0(i64 32, ptr %120) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %121) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %122) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %122) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %121, ptr noundef @.str.1319, ptr noundef nonnull align 1 dereferenceable(1) %122)
          to label %1284 unwind label %1289

1284:                                             ; preds = %1283
  call void @llvm.lifetime.start.p0(i64 32, ptr %123) #8
  %1285 = load i32, ptr %12, align 4, !tbaa !11
  invoke void @_ZN11spirv_cross11CompilerMSL17builtin_qualifierB5cxx11EN3spv7BuiltInE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %123, ptr noundef nonnull align 8 dereferenceable(12482) %145, i32 noundef %1285)
          to label %1286 unwind label %1293

1286:                                             ; preds = %1284
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %120, ptr noundef nonnull align 8 dereferenceable(32) %121, ptr noundef nonnull align 8 dereferenceable(32) %123)
          to label %1287 unwind label %1297

1287:                                             ; preds = %1286
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(32) %120, ptr noundef @.str.1318)
          to label %1288 unwind label %1301

1288:                                             ; preds = %1287
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %120) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %123) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %123) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %121) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %122) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %122) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %121) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %120) #8
  store i32 1, ptr %19, align 4
  br label %1485

1289:                                             ; preds = %1283
  %1290 = landingpad { ptr, i32 }
          cleanup
  %1291 = extractvalue { ptr, i32 } %1290, 0
  store ptr %1291, ptr %17, align 8
  %1292 = extractvalue { ptr, i32 } %1290, 1
  store i32 %1292, ptr %18, align 4
  br label %1307

1293:                                             ; preds = %1284
  %1294 = landingpad { ptr, i32 }
          cleanup
  %1295 = extractvalue { ptr, i32 } %1294, 0
  store ptr %1295, ptr %17, align 8
  %1296 = extractvalue { ptr, i32 } %1294, 1
  store i32 %1296, ptr %18, align 4
  br label %1306

1297:                                             ; preds = %1286
  %1298 = landingpad { ptr, i32 }
          cleanup
  %1299 = extractvalue { ptr, i32 } %1298, 0
  store ptr %1299, ptr %17, align 8
  %1300 = extractvalue { ptr, i32 } %1298, 1
  store i32 %1300, ptr %18, align 4
  br label %1305

1301:                                             ; preds = %1287
  %1302 = landingpad { ptr, i32 }
          cleanup
  %1303 = extractvalue { ptr, i32 } %1302, 0
  store ptr %1303, ptr %17, align 8
  %1304 = extractvalue { ptr, i32 } %1302, 1
  store i32 %1304, ptr %18, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %120) #8
  br label %1305

1305:                                             ; preds = %1301, %1297
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %123) #8
  br label %1306

1306:                                             ; preds = %1305, %1293
  call void @llvm.lifetime.end.p0(i64 32, ptr %123) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %121) #8
  br label %1307

1307:                                             ; preds = %1306, %1289
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %122) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %122) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %121) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %120) #8
  br label %1486

1308:                                             ; preds = %1260
  %1309 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %145, i32 0, i32 37
  %1310 = getelementptr inbounds %"struct.spirv_cross::CompilerMSL::Options", ptr %1309, i32 0, i32 21
  %1311 = load i8, ptr %1310, align 1, !tbaa !208, !range !55, !noundef !56
  %1312 = trunc i8 %1311 to i1
  br i1 %1312, label %1319, label %1313

1313:                                             ; preds = %1308
  call void @llvm.lifetime.start.p0(i64 1, ptr %124) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %124) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.35, ptr noundef nonnull align 1 dereferenceable(1) %124)
          to label %1314 unwind label %1315

1314:                                             ; preds = %1313
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %124) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %124) #8
  store i32 1, ptr %19, align 4
  br label %1485

1315:                                             ; preds = %1313
  %1316 = landingpad { ptr, i32 }
          cleanup
  %1317 = extractvalue { ptr, i32 } %1316, 0
  store ptr %1317, ptr %17, align 8
  %1318 = extractvalue { ptr, i32 } %1316, 1
  store i32 %1318, ptr %18, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %124) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %124) #8
  br label %1486

1319:                                             ; preds = %1308
  br label %1320

1320:                                             ; preds = %1319, %1260
  call void @llvm.lifetime.start.p0(i64 32, ptr %125) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %126) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %127) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %127) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %126, ptr noundef @.str.1319, ptr noundef nonnull align 1 dereferenceable(1) %127)
          to label %1321 unwind label %1326

1321:                                             ; preds = %1320
  call void @llvm.lifetime.start.p0(i64 32, ptr %128) #8
  %1322 = load i32, ptr %12, align 4, !tbaa !11
  invoke void @_ZN11spirv_cross11CompilerMSL17builtin_qualifierB5cxx11EN3spv7BuiltInE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %128, ptr noundef nonnull align 8 dereferenceable(12482) %145, i32 noundef %1322)
          to label %1323 unwind label %1330

1323:                                             ; preds = %1321
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %125, ptr noundef nonnull align 8 dereferenceable(32) %126, ptr noundef nonnull align 8 dereferenceable(32) %128)
          to label %1324 unwind label %1334

1324:                                             ; preds = %1323
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(32) %125, ptr noundef @.str.1318)
          to label %1325 unwind label %1338

1325:                                             ; preds = %1324
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %125) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %128) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %128) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %126) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %127) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %127) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %126) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %125) #8
  store i32 1, ptr %19, align 4
  br label %1485

1326:                                             ; preds = %1320
  %1327 = landingpad { ptr, i32 }
          cleanup
  %1328 = extractvalue { ptr, i32 } %1327, 0
  store ptr %1328, ptr %17, align 8
  %1329 = extractvalue { ptr, i32 } %1327, 1
  store i32 %1329, ptr %18, align 4
  br label %1344

1330:                                             ; preds = %1321
  %1331 = landingpad { ptr, i32 }
          cleanup
  %1332 = extractvalue { ptr, i32 } %1331, 0
  store ptr %1332, ptr %17, align 8
  %1333 = extractvalue { ptr, i32 } %1331, 1
  store i32 %1333, ptr %18, align 4
  br label %1343

1334:                                             ; preds = %1323
  %1335 = landingpad { ptr, i32 }
          cleanup
  %1336 = extractvalue { ptr, i32 } %1335, 0
  store ptr %1336, ptr %17, align 8
  %1337 = extractvalue { ptr, i32 } %1335, 1
  store i32 %1337, ptr %18, align 4
  br label %1342

1338:                                             ; preds = %1324
  %1339 = landingpad { ptr, i32 }
          cleanup
  %1340 = extractvalue { ptr, i32 } %1339, 0
  store ptr %1340, ptr %17, align 8
  %1341 = extractvalue { ptr, i32 } %1339, 1
  store i32 %1341, ptr %18, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %125) #8
  br label %1342

1342:                                             ; preds = %1338, %1334
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %128) #8
  br label %1343

1343:                                             ; preds = %1342, %1330
  call void @llvm.lifetime.end.p0(i64 32, ptr %128) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %126) #8
  br label %1344

1344:                                             ; preds = %1343, %1326
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %127) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %127) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %126) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %125) #8
  br label %1486

1345:                                             ; preds = %1260
  call void @llvm.lifetime.start.p0(i64 1, ptr %129) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %129) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.35, ptr noundef nonnull align 1 dereferenceable(1) %129)
          to label %1346 unwind label %1347

1346:                                             ; preds = %1345
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %129) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %129) #8
  store i32 1, ptr %19, align 4
  br label %1485

1347:                                             ; preds = %1345
  %1348 = landingpad { ptr, i32 }
          cleanup
  %1349 = extractvalue { ptr, i32 } %1348, 0
  store ptr %1349, ptr %17, align 8
  %1350 = extractvalue { ptr, i32 } %1348, 1
  store i32 %1350, ptr %18, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %129) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %129) #8
  br label %1486

1351:                                             ; preds = %1257
  call void @llvm.lifetime.start.p0(i64 4, ptr %130) #8
  %1352 = load ptr, ptr %7, align 8, !tbaa !5
  %1353 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %1352, i32 0, i32 1
  %1354 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %1353)
  %1355 = load i32, ptr %8, align 4, !tbaa !9
  %1356 = call noundef i32 @_ZNK11spirv_cross11CompilerMSL19get_member_locationEjjPj(ptr noundef nonnull align 8 dereferenceable(12482) %145, i32 noundef %1354, i32 noundef %1355, ptr noundef null)
  store i32 %1356, ptr %130, align 4, !tbaa !9
  %1357 = load i32, ptr %130, align 4, !tbaa !9
  %1358 = icmp ne i32 %1357, -1
  br i1 %1358, label %1359, label %1373

1359:                                             ; preds = %1351
  %1360 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %145, i32 0, i32 37
  %1361 = getelementptr inbounds %"struct.spirv_cross::CompilerMSL::Options", ptr %1360, i32 0, i32 18
  %1362 = load i32, ptr %1361, align 4, !tbaa !209
  %1363 = load i32, ptr %130, align 4, !tbaa !9
  %1364 = shl i32 1, %1363
  %1365 = and i32 %1362, %1364
  %1366 = icmp ne i32 %1365, 0
  br i1 %1366, label %1373, label %1367

1367:                                             ; preds = %1359
  call void @llvm.lifetime.start.p0(i64 1, ptr %131) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %131) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.35, ptr noundef nonnull align 1 dereferenceable(1) %131)
          to label %1368 unwind label %1369

1368:                                             ; preds = %1367
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %131) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %131) #8
  store i32 1, ptr %19, align 4
  br label %1422

1369:                                             ; preds = %1367
  %1370 = landingpad { ptr, i32 }
          cleanup
  %1371 = extractvalue { ptr, i32 } %1370, 0
  store ptr %1371, ptr %17, align 8
  %1372 = extractvalue { ptr, i32 } %1370, 1
  store i32 %1372, ptr %18, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %131) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %131) #8
  br label %1423

1373:                                             ; preds = %1359, %1351
  %1374 = load i32, ptr %130, align 4, !tbaa !9
  %1375 = icmp ne i32 %1374, -1
  br i1 %1375, label %1376, label %1394

1376:                                             ; preds = %1373
  %1377 = load ptr, ptr %7, align 8, !tbaa !5
  %1378 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %1377, i32 0, i32 1
  %1379 = call i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvNS0_IXT_EEEILS1_1EEEv(ptr noundef nonnull align 4 dereferenceable(4) %1378)
  %1380 = getelementptr inbounds %"class.spirv_cross::TypedID.414", ptr %132, i32 0, i32 0
  store i32 %1379, ptr %1380, align 4
  %1381 = load i32, ptr %8, align 4, !tbaa !9
  %1382 = getelementptr inbounds %"class.spirv_cross::TypedID.414", ptr %132, i32 0, i32 0
  %1383 = load i32, ptr %1382, align 4
  %1384 = call noundef zeroext i1 @_ZNK11spirv_cross8Compiler21has_member_decorationENS_7TypedIDILNS_5TypesE1EEEjN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %145, i32 %1383, i32 noundef %1381, i32 noundef 32)
  br i1 %1384, label %1385, label %1394

1385:                                             ; preds = %1376
  call void @llvm.lifetime.start.p0(i64 4, ptr %133) #8
  %1386 = load ptr, ptr %7, align 8, !tbaa !5
  %1387 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %1386, i32 0, i32 1
  %1388 = call i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvNS0_IXT_EEEILS1_1EEEv(ptr noundef nonnull align 4 dereferenceable(4) %1387)
  %1389 = getelementptr inbounds %"class.spirv_cross::TypedID.414", ptr %134, i32 0, i32 0
  store i32 %1388, ptr %1389, align 4
  %1390 = load i32, ptr %8, align 4, !tbaa !9
  %1391 = getelementptr inbounds %"class.spirv_cross::TypedID.414", ptr %134, i32 0, i32 0
  %1392 = load i32, ptr %1391, align 4
  %1393 = call noundef i32 @_ZNK11spirv_cross8Compiler21get_member_decorationENS_7TypedIDILNS_5TypesE1EEEjN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %145, i32 %1392, i32 noundef %1390, i32 noundef 32)
  store i32 %1393, ptr %133, align 4, !tbaa !9
  call void @_ZN11spirv_cross4joinIJRA10_KcRjS3_jRA4_S1_EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 1 dereferenceable(10) @.str.1337, ptr noundef nonnull align 4 dereferenceable(4) %130, ptr noundef nonnull align 1 dereferenceable(10) @.str.1338, ptr noundef nonnull align 4 dereferenceable(4) %133, ptr noundef nonnull align 1 dereferenceable(4) @.str.1322)
  call void @llvm.lifetime.end.p0(i64 4, ptr %133) #8
  store i32 1, ptr %19, align 4
  br label %1422

1394:                                             ; preds = %1376, %1373
  %1395 = load i32, ptr %130, align 4, !tbaa !9
  %1396 = icmp ne i32 %1395, -1
  br i1 %1396, label %1397, label %1398

1397:                                             ; preds = %1394
  call void @_ZN11spirv_cross4joinIJRA10_KcRjRA4_S1_EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 1 dereferenceable(10) @.str.1337, ptr noundef nonnull align 4 dereferenceable(4) %130, ptr noundef nonnull align 1 dereferenceable(4) @.str.1322)
  store i32 1, ptr %19, align 4
  br label %1422

1398:                                             ; preds = %1394
  %1399 = load ptr, ptr %7, align 8, !tbaa !5
  %1400 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %1399, i32 0, i32 1
  %1401 = call i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvNS0_IXT_EEEILS1_1EEEv(ptr noundef nonnull align 4 dereferenceable(4) %1400)
  %1402 = getelementptr inbounds %"class.spirv_cross::TypedID.414", ptr %135, i32 0, i32 0
  store i32 %1401, ptr %1402, align 4
  %1403 = load i32, ptr %8, align 4, !tbaa !9
  %1404 = getelementptr inbounds %"class.spirv_cross::TypedID.414", ptr %135, i32 0, i32 0
  %1405 = load i32, ptr %1404, align 4
  %1406 = call noundef zeroext i1 @_ZNK11spirv_cross8Compiler21has_member_decorationENS_7TypedIDILNS_5TypesE1EEEjN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %145, i32 %1405, i32 noundef %1403, i32 noundef 32)
  br i1 %1406, label %1407, label %1416

1407:                                             ; preds = %1398
  call void @llvm.lifetime.start.p0(i64 4, ptr %136) #8
  %1408 = load ptr, ptr %7, align 8, !tbaa !5
  %1409 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %1408, i32 0, i32 1
  %1410 = call i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvNS0_IXT_EEEILS1_1EEEv(ptr noundef nonnull align 4 dereferenceable(4) %1409)
  %1411 = getelementptr inbounds %"class.spirv_cross::TypedID.414", ptr %137, i32 0, i32 0
  store i32 %1410, ptr %1411, align 4
  %1412 = load i32, ptr %8, align 4, !tbaa !9
  %1413 = getelementptr inbounds %"class.spirv_cross::TypedID.414", ptr %137, i32 0, i32 0
  %1414 = load i32, ptr %1413, align 4
  %1415 = call noundef i32 @_ZNK11spirv_cross8Compiler21get_member_decorationENS_7TypedIDILNS_5TypesE1EEEjN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %145, i32 %1414, i32 noundef %1412, i32 noundef 32)
  store i32 %1415, ptr %136, align 4, !tbaa !9
  call void @_ZN11spirv_cross4joinIJRA10_KcjRA4_S1_EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 1 dereferenceable(10) @.str.1339, ptr noundef nonnull align 4 dereferenceable(4) %136, ptr noundef nonnull align 1 dereferenceable(4) @.str.1322)
  call void @llvm.lifetime.end.p0(i64 4, ptr %136) #8
  store i32 1, ptr %19, align 4
  br label %1422

1416:                                             ; preds = %1398
  call void @llvm.lifetime.start.p0(i64 1, ptr %138) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %138) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.35, ptr noundef nonnull align 1 dereferenceable(1) %138)
          to label %1417 unwind label %1418

1417:                                             ; preds = %1416
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %138) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %138) #8
  store i32 1, ptr %19, align 4
  br label %1422

1418:                                             ; preds = %1416
  %1419 = landingpad { ptr, i32 }
          cleanup
  %1420 = extractvalue { ptr, i32 } %1419, 0
  store ptr %1420, ptr %17, align 8
  %1421 = extractvalue { ptr, i32 } %1419, 1
  store i32 %1421, ptr %18, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %138) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %138) #8
  br label %1423

1422:                                             ; preds = %1417, %1407, %1397, %1385, %1368
  call void @llvm.lifetime.end.p0(i64 4, ptr %130) #8
  br label %1485

1423:                                             ; preds = %1418, %1369
  call void @llvm.lifetime.end.p0(i64 4, ptr %130) #8
  br label %1486

1424:                                             ; preds = %1252, %1247
  %1425 = load ptr, ptr %9, align 8, !tbaa !5
  %1426 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %1425, i32 0, i32 10
  %1427 = load i32, ptr %1426, align 8, !tbaa !15
  %1428 = icmp eq i32 %1427, 5
  br i1 %1428, label %1429, label %1479

1429:                                             ; preds = %1424
  %1430 = load ptr, ptr %7, align 8, !tbaa !5
  %1431 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %1430, i32 0, i32 11
  %1432 = load i32, ptr %1431, align 8, !tbaa !32
  %1433 = icmp eq i32 %1432, 1
  br i1 %1433, label %1434, label %1479

1434:                                             ; preds = %1429
  %1435 = load i8, ptr %13, align 1, !tbaa !13, !range !55, !noundef !56
  %1436 = trunc i8 %1435 to i1
  br i1 %1436, label %1437, label %1478

1437:                                             ; preds = %1434
  %1438 = load i32, ptr %12, align 4, !tbaa !11
  switch i32 %1438, label %1471 [
    i32 38, label %1439
    i32 40, label %1439
    i32 41, label %1439
    i32 36, label %1439
    i32 28, label %1446
    i32 26, label %1446
    i32 24, label %1446
    i32 27, label %1446
    i32 29, label %1446
  ]

1439:                                             ; preds = %1437, %1437, %1437, %1437
  %1440 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %145, i32 0, i32 37
  %1441 = getelementptr inbounds %"struct.spirv_cross::CompilerMSL::Options", ptr %1440, i32 0, i32 53
  %1442 = load i8, ptr %1441, align 2, !tbaa !201, !range !55, !noundef !56
  %1443 = trunc i8 %1442 to i1
  br i1 %1443, label %1444, label %1445

1444:                                             ; preds = %1439
  br label %1477

1445:                                             ; preds = %1439
  br label %1446

1446:                                             ; preds = %1445, %1437, %1437, %1437, %1437, %1437
  call void @llvm.lifetime.start.p0(i64 32, ptr %139) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %140) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %141) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %141) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %140, ptr noundef @.str.1319, ptr noundef nonnull align 1 dereferenceable(1) %141)
          to label %1447 unwind label %1452

1447:                                             ; preds = %1446
  call void @llvm.lifetime.start.p0(i64 32, ptr %142) #8
  %1448 = load i32, ptr %12, align 4, !tbaa !11
  invoke void @_ZN11spirv_cross11CompilerMSL17builtin_qualifierB5cxx11EN3spv7BuiltInE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %142, ptr noundef nonnull align 8 dereferenceable(12482) %145, i32 noundef %1448)
          to label %1449 unwind label %1456

1449:                                             ; preds = %1447
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %139, ptr noundef nonnull align 8 dereferenceable(32) %140, ptr noundef nonnull align 8 dereferenceable(32) %142)
          to label %1450 unwind label %1460

1450:                                             ; preds = %1449
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(32) %139, ptr noundef @.str.1318)
          to label %1451 unwind label %1464

1451:                                             ; preds = %1450
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %139) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %142) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %142) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %140) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %141) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %141) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %140) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %139) #8
  store i32 1, ptr %19, align 4
  br label %1485

1452:                                             ; preds = %1446
  %1453 = landingpad { ptr, i32 }
          cleanup
  %1454 = extractvalue { ptr, i32 } %1453, 0
  store ptr %1454, ptr %17, align 8
  %1455 = extractvalue { ptr, i32 } %1453, 1
  store i32 %1455, ptr %18, align 4
  br label %1470

1456:                                             ; preds = %1447
  %1457 = landingpad { ptr, i32 }
          cleanup
  %1458 = extractvalue { ptr, i32 } %1457, 0
  store ptr %1458, ptr %17, align 8
  %1459 = extractvalue { ptr, i32 } %1457, 1
  store i32 %1459, ptr %18, align 4
  br label %1469

1460:                                             ; preds = %1449
  %1461 = landingpad { ptr, i32 }
          cleanup
  %1462 = extractvalue { ptr, i32 } %1461, 0
  store ptr %1462, ptr %17, align 8
  %1463 = extractvalue { ptr, i32 } %1461, 1
  store i32 %1463, ptr %18, align 4
  br label %1468

1464:                                             ; preds = %1450
  %1465 = landingpad { ptr, i32 }
          cleanup
  %1466 = extractvalue { ptr, i32 } %1465, 0
  store ptr %1466, ptr %17, align 8
  %1467 = extractvalue { ptr, i32 } %1465, 1
  store i32 %1467, ptr %18, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %139) #8
  br label %1468

1468:                                             ; preds = %1464, %1460
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %142) #8
  br label %1469

1469:                                             ; preds = %1468, %1456
  call void @llvm.lifetime.end.p0(i64 32, ptr %142) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %140) #8
  br label %1470

1470:                                             ; preds = %1469, %1452
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %141) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %141) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %140) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %139) #8
  br label %1486

1471:                                             ; preds = %1437
  call void @llvm.lifetime.start.p0(i64 1, ptr %143) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %143) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.35, ptr noundef nonnull align 1 dereferenceable(1) %143)
          to label %1472 unwind label %1473

1472:                                             ; preds = %1471
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %143) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %143) #8
  store i32 1, ptr %19, align 4
  br label %1485

1473:                                             ; preds = %1471
  %1474 = landingpad { ptr, i32 }
          cleanup
  %1475 = extractvalue { ptr, i32 } %1474, 0
  store ptr %1475, ptr %17, align 8
  %1476 = extractvalue { ptr, i32 } %1474, 1
  store i32 %1476, ptr %18, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %143) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %143) #8
  br label %1486

1477:                                             ; preds = %1444
  br label %1478

1478:                                             ; preds = %1477, %1434
  br label %1479

1479:                                             ; preds = %1478, %1429, %1424
  call void @llvm.lifetime.start.p0(i64 1, ptr %144) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %144) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.35, ptr noundef nonnull align 1 dereferenceable(1) %144)
          to label %1480 unwind label %1481

1480:                                             ; preds = %1479
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %144) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %144) #8
  store i32 1, ptr %19, align 4
  br label %1485

1481:                                             ; preds = %1479
  %1482 = landingpad { ptr, i32 }
          cleanup
  %1483 = extractvalue { ptr, i32 } %1482, 0
  store ptr %1483, ptr %17, align 8
  %1484 = extractvalue { ptr, i32 } %1482, 1
  store i32 %1484, ptr %18, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %144) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %144) #8
  br label %1486

1485:                                             ; preds = %1480, %1472, %1451, %1422, %1346, %1325, %1314, %1288, %1268, %1243, %961, %912, %894, %881, %860, %838, %817, %768, %755, %729, %713, %682, %666, %643, %614, %598, %572, %552, %518, %498, %464, %387
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #8
  br label %1487

1486:                                             ; preds = %1481, %1473, %1470, %1423, %1347, %1344, %1315, %1307, %1279, %1269, %1246, %959, %913, %895, %882, %879, %839, %815, %769, %756, %753, %714, %706, %667, %644, %609, %599, %596, %542, %488, %448, %441
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #8
  br label %1488

1487:                                             ; preds = %1485, %307, %258, %230, %220, %197
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #8
  ret void

1488:                                             ; preds = %1486, %305, %259, %253, %249, %221, %198
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #8
  br label %1489

1489:                                             ; preds = %1488
  %1490 = load ptr, ptr %17, align 8
  %1491 = load i32, ptr %18, align 4
  %1492 = insertvalue { ptr, i32 } poison, ptr %1490, 0
  %1493 = insertvalue { ptr, i32 } %1492, i32 %1491, 1
  resume { ptr, i32 } %1493

1494:                                             ; preds = %1167, %1120, %1058
  unreachable
}

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11spirv_cross4joinIJRA7_KcjRA2_S1_EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 1 dereferenceable(7), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(2)) #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11spirv_cross11CompilerMSL17builtin_qualifierB5cxx11EN3spv7BuiltInE(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(12482), i32 noundef) #2 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11spirv_cross4joinIJRA13_KcjRA4_S1_EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 1 dereferenceable(13), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(4)) #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11spirv_cross11CompilerMSL35member_location_attribute_qualifierB5cxx11ERKNS_8SPIRTypeEj(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(12482), ptr noundef nonnull align 8 dereferenceable(336), i32 noundef) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11spirv_cross4joinIJRA4_KcRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA3_S1_EEES9_DpOT_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 1 dereferenceable(4), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(3)) #2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11spirv_cross4joinIJRA10_KcRjS3_jRA4_S1_EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 1 dereferenceable(10), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(10), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(4)) #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11spirv_cross4joinIJRA10_KcRjRA4_S1_EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 1 dereferenceable(10), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(4)) #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11spirv_cross4joinIJRA10_KcjRA4_S1_EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 1 dereferenceable(10), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(4)) #2

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

!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 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"_ZTSN3spv7BuiltInE", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"bool", !7, i64 0}
!15 = !{!16, !31, i64 232}
!16 = !{!"_ZTSN11spirv_cross14SPIREntryPointE", !17, i64 0, !18, i64 8, !18, i64 40, !21, i64 72, !24, i64 128, !30, i64 192, !10, i64 220, !10, i64 224, !10, i64 228, !31, i64 232, !14, i64 236}
!17 = !{!"_ZTSN11spirv_cross7TypedIDILNS_5TypesE4EEE", !10, i64 0}
!18 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !19, i64 0, !20, i64 8, !7, i64 16}
!19 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!20 = !{!"long", !7, i64 0}
!21 = !{!"_ZTSN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE2EEELm8EEE", !22, i64 0, !20, i64 16, !23, i64 24}
!22 = !{!"_ZTSN11spirv_cross10VectorViewINS_7TypedIDILNS_5TypesE2EEEEE", !6, i64 0, !20, i64 8}
!23 = !{!"_ZTSN11spirv_cross13AlignedBufferINS_7TypedIDILNS_5TypesE2EEELm8EEE", !7, i64 0}
!24 = !{!"_ZTSN11spirv_cross6BitsetE", !20, i64 0, !25, i64 8}
!25 = !{!"_ZTSSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEE", !26, i64 0}
!26 = !{!"_ZTSSt10_HashtableIjjSaIjENSt8__detail9_IdentityESt8equal_toIjESt4hashIjENS1_18_Mod_range_hashingENS1_20_Default_ranged_hashENS1_20_Prime_rehash_policyENS1_17_Hashtable_traitsILb0ELb1ELb1EEEE", !6, i64 0, !20, i64 8, !27, i64 16, !20, i64 24, !28, i64 32, !6, i64 48}
!27 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!28 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !29, i64 0, !20, i64 8}
!29 = !{!"float", !7, i64 0}
!30 = !{!"_ZTSN11spirv_cross14SPIREntryPoint13WorkgroupSizeE", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24}
!31 = !{!"_ZTSN3spv14ExecutionModelE", !7, i64 0}
!32 = !{!33, !44, i64 128}
!33 = !{!"_ZTSN11spirv_cross8SPIRTypeE", !34, i64 0, !36, i64 12, !37, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !38, i64 32, !41, i64 88, !10, i64 120, !14, i64 124, !14, i64 125, !44, i64 128, !45, i64 136, !38, i64 192, !48, i64 248, !49, i64 272, !49, i64 276, !53, i64 280}
!34 = !{!"_ZTSN11spirv_cross8IVariantE", !35, i64 8}
!35 = !{!"_ZTSN11spirv_cross7TypedIDILNS_5TypesE0EEE", !10, i64 0}
!36 = !{!"_ZTSN3spv2OpE", !7, i64 0}
!37 = !{!"_ZTSN11spirv_cross8SPIRType8BaseTypeE", !7, i64 0}
!38 = !{!"_ZTSN11spirv_cross11SmallVectorIjLm8EEE", !39, i64 0, !20, i64 16, !40, i64 24}
!39 = !{!"_ZTSN11spirv_cross10VectorViewIjEE", !6, i64 0, !20, i64 8}
!40 = !{!"_ZTSN11spirv_cross13AlignedBufferIjLm8EEE", !7, i64 0}
!41 = !{!"_ZTSN11spirv_cross11SmallVectorIbLm8EEE", !42, i64 0, !20, i64 16, !43, i64 24}
!42 = !{!"_ZTSN11spirv_cross10VectorViewIbEE", !6, i64 0, !20, i64 8}
!43 = !{!"_ZTSN11spirv_cross13AlignedBufferIbLm8EEE", !7, i64 0}
!44 = !{!"_ZTSN3spv12StorageClassE", !7, i64 0}
!45 = !{!"_ZTSN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE1EEELm8EEE", !46, i64 0, !20, i64 16, !47, i64 24}
!46 = !{!"_ZTSN11spirv_cross10VectorViewINS_7TypedIDILNS_5TypesE1EEEEE", !6, i64 0, !20, i64 8}
!47 = !{!"_ZTSN11spirv_cross13AlignedBufferINS_7TypedIDILNS_5TypesE1EEELm8EEE", !7, i64 0}
!48 = !{!"_ZTSN11spirv_cross8SPIRType9ImageTypeE", !49, i64 0, !50, i64 4, !14, i64 8, !14, i64 9, !14, i64 10, !10, i64 12, !51, i64 16, !52, i64 20}
!49 = !{!"_ZTSN11spirv_cross7TypedIDILNS_5TypesE1EEE", !10, i64 0}
!50 = !{!"_ZTSN3spv3DimE", !7, i64 0}
!51 = !{!"_ZTSN3spv11ImageFormatE", !7, i64 0}
!52 = !{!"_ZTSN3spv15AccessQualifierE", !7, i64 0}
!53 = !{!"_ZTSSt13unordered_setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4hashIS5_ESt8equal_toIS5_ESaIS5_EE", !54, i64 0}
!54 = !{!"_ZTSSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_SaIS5_ENSt8__detail9_IdentityESt8equal_toIS5_ESt4hashIS5_ENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb1ELb1ELb1EEEE", !6, i64 0, !20, i64 8, !27, i64 16, !20, i64 24, !28, i64 32, !6, i64 48}
!55 = !{i8 0, i8 2}
!56 = !{}
!57 = !{!58, !14, i64 10151}
!58 = !{!"_ZTSN11spirv_cross11CompilerMSLE", !59, i64 0, !147, i64 9848, !10, i64 9904, !10, i64 9908, !10, i64 9912, !10, i64 9916, !10, i64 9920, !10, i64 9924, !10, i64 9928, !10, i64 9932, !10, i64 9936, !10, i64 9940, !10, i64 9944, !10, i64 9948, !10, i64 9952, !10, i64 9956, !10, i64 9960, !10, i64 9964, !10, i64 9968, !10, i64 9972, !10, i64 9976, !10, i64 9980, !10, i64 9984, !10, i64 9988, !10, i64 9992, !10, i64 9996, !10, i64 10000, !10, i64 10004, !10, i64 10008, !10, i64 10012, !10, i64 10016, !10, i64 10020, !10, i64 10024, !10, i64 10028, !14, i64 10032, !14, i64 10033, !149, i64 10036, !153, i64 10176, !161, i64 10224, !166, i64 10272, !161, i64 10328, !166, i64 10376, !25, i64 10432, !25, i64 10488, !25, i64 10544, !25, i64 10600, !129, i64 10656, !129, i64 10712, !129, i64 10768, !168, i64 10824, !168, i64 10872, !38, i64 10920, !173, i64 10976, !175, i64 11032, !10, i64 11088, !10, i64 11092, !10, i64 11096, !7, i64 11100, !177, i64 11132, !177, i64 11136, !177, i64 11140, !177, i64 11144, !177, i64 11148, !177, i64 11152, !177, i64 11156, !177, i64 11160, !177, i64 11164, !177, i64 11168, !177, i64 11172, !178, i64 11176, !178, i64 11180, !14, i64 11184, !14, i64 11185, !14, i64 11186, !14, i64 11187, !14, i64 11188, !14, i64 11189, !14, i64 11190, !14, i64 11191, !14, i64 11192, !14, i64 11193, !14, i64 11194, !14, i64 11195, !14, i64 11196, !18, i64 11200, !18, i64 11232, !18, i64 11264, !18, i64 11296, !18, i64 11328, !18, i64 11360, !18, i64 11392, !18, i64 11424, !18, i64 11456, !18, i64 11488, !18, i64 11520, !18, i64 11552, !18, i64 11584, !18, i64 11616, !18, i64 11648, !18, i64 11680, !36, i64 11712, !179, i64 11720, !184, i64 11768, !25, i64 11824, !186, i64 11880, !38, i64 11968, !25, i64 12024, !25, i64 12080, !25, i64 12136, !189, i64 12192, !192, i64 12280, !38, i64 12328, !197, i64 12384, !7, i64 12440, !10, i64 12472, !10, i64 12476, !14, i64 12480, !14, i64 12481}
!59 = !{!"_ZTSN11spirv_cross12CompilerGLSLE", !60, i64 0, !6, i64 3176, !111, i64 3184, !14, i64 3272, !114, i64 3280, !6, i64 7616, !6, i64 7624, !14, i64 7632, !14, i64 7633, !119, i64 7636, !53, i64 7680, !53, i64 7736, !53, i64 7792, !53, i64 7848, !53, i64 7904, !53, i64 7960, !53, i64 8016, !123, i64 8072, !109, i64 8128, !14, i64 8184, !125, i64 8192, !10, i64 8416, !25, i64 8424, !25, i64 8480, !25, i64 8536, !126, i64 8592, !128, i64 8648, !129, i64 8656, !85, i64 8712, !85, i64 8992, !129, i64 9272, !45, i64 9328, !10, i64 9384, !10, i64 9388, !10, i64 9392, !14, i64 9396, !14, i64 9397, !131, i64 9400, !131, i64 9424, !135, i64 9448, !139, i64 9472, !129, i64 9496, !25, i64 9552, !25, i64 9608, !7, i64 9664, !143, i64 9672, !25, i64 9728, !6, i64 9784, !145, i64 9792}
!60 = !{!"_ZTSN11spirv_cross8CompilerE", !61, i64 8, !38, i64 1928, !38, i64 1984, !6, i64 2040, !6, i64 2048, !10, i64 2056, !98, i64 2064, !14, i64 2120, !25, i64 2128, !14, i64 2184, !14, i64 2185, !100, i64 2192, !38, i64 2312, !103, i64 2368, !25, i64 2400, !25, i64 2456, !25, i64 2512, !25, i64 2568, !25, i64 2624, !24, i64 2680, !24, i64 2744, !10, i64 2808, !10, i64 2812, !14, i64 2816, !25, i64 2824, !14, i64 2880, !14, i64 2881, !10, i64 2884, !105, i64 2888, !38, i64 2944, !107, i64 3000, !25, i64 3056, !14, i64 3112, !109, i64 3120}
!61 = !{!"_ZTSN11spirv_cross8ParsedIRE", !62, i64 0, !68, i64 8, !72, i64 32, !75, i64 248, !7, i64 304, !77, i64 1088, !77, i64 1144, !80, i64 1200, !82, i64 1256, !85, i64 1312, !88, i64 1592, !91, i64 1624, !93, i64 1680, !17, i64 1736, !95, i64 1740, !96, i64 1748, !97, i64 1752, !10, i64 1756, !10, i64 1760, !18, i64 1768, !24, i64 1800, !25, i64 1864}
!62 = !{!"_ZTSSt10unique_ptrIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EE", !63, i64 0}
!63 = !{!"_ZTSSt15__uniq_ptr_dataIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_ELb1ELb1EE", !64, i64 0}
!64 = !{!"_ZTSSt15__uniq_ptr_implIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EE", !65, i64 0}
!65 = !{!"_ZTSSt5tupleIJPN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EEE", !66, i64 0}
!66 = !{!"_ZTSSt11_Tuple_implILm0EJPN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EEE", !67, i64 0}
!67 = !{!"_ZTSSt10_Head_baseILm0EPN11spirv_cross15ObjectPoolGroupELb0EE", !6, i64 0}
!68 = !{!"_ZTSSt6vectorIjSaIjEE", !69, i64 0}
!69 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !70, i64 0}
!70 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !71, i64 0}
!71 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!72 = !{!"_ZTSN11spirv_cross11SmallVectorINS_7VariantELm8EEE", !73, i64 0, !20, i64 16, !74, i64 24}
!73 = !{!"_ZTSN11spirv_cross10VectorViewINS_7VariantEEE", !6, i64 0, !20, i64 8}
!74 = !{!"_ZTSN11spirv_cross13AlignedBufferINS_7VariantELm8EEE", !7, i64 0}
!75 = !{!"_ZTSSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE0EEENS0_4MetaESt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S4_EEE", !76, i64 0}
!76 = !{!"_ZTSSt10_HashtableIN11spirv_cross7TypedIDILNS0_5TypesE0EEESt4pairIKS3_NS0_4MetaEESaIS7_ENSt8__detail10_Select1stESt8equal_toIS3_ESt4hashIS3_ENS9_18_Mod_range_hashingENS9_20_Default_ranged_hashENS9_20_Prime_rehash_policyENS9_17_Hashtable_traitsILb1ELb0ELb1EEEE", !6, i64 0, !20, i64 8, !27, i64 16, !20, i64 24, !28, i64 32, !6, i64 48}
!77 = !{!"_ZTSN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EEE", !78, i64 0, !20, i64 16, !79, i64 24}
!78 = !{!"_ZTSN11spirv_cross10VectorViewINS_7TypedIDILNS_5TypesE0EEEEE", !6, i64 0, !20, i64 8}
!79 = !{!"_ZTSN11spirv_cross13AlignedBufferINS_7TypedIDILNS_5TypesE0EEELm8EEE", !7, i64 0}
!80 = !{!"_ZTSSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE0EEEjSt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_jEEE", !81, i64 0}
!81 = !{!"_ZTSSt10_HashtableIN11spirv_cross7TypedIDILNS0_5TypesE0EEESt4pairIKS3_jESaIS6_ENSt8__detail10_Select1stESt8equal_toIS3_ESt4hashIS3_ENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb1ELb0ELb1EEEE", !6, i64 0, !20, i64 8, !27, i64 16, !20, i64 24, !28, i64 32, !6, i64 48}
!82 = !{!"_ZTSN11spirv_cross11SmallVectorIN3spv10CapabilityELm8EEE", !83, i64 0, !20, i64 16, !84, i64 24}
!83 = !{!"_ZTSN11spirv_cross10VectorViewIN3spv10CapabilityEEE", !6, i64 0, !20, i64 8}
!84 = !{!"_ZTSN11spirv_cross13AlignedBufferIN3spv10CapabilityELm8EEE", !7, i64 0}
!85 = !{!"_ZTSN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EEE", !86, i64 0, !20, i64 16, !87, i64 24}
!86 = !{!"_ZTSN11spirv_cross10VectorViewINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !6, i64 0, !20, i64 8}
!87 = !{!"_ZTSN11spirv_cross13AlignedBufferINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EEE", !7, i64 0}
!88 = !{!"_ZTSN11spirv_cross11SmallVectorIhLm8EEE", !89, i64 0, !20, i64 16, !90, i64 24}
!89 = !{!"_ZTSN11spirv_cross10VectorViewIhEE", !6, i64 0, !20, i64 8}
!90 = !{!"_ZTSN11spirv_cross13AlignedBufferIhLm8EEE", !7, i64 0}
!91 = !{!"_ZTSSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE6EEES3_St4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S3_EEE", !92, i64 0}
!92 = !{!"_ZTSSt10_HashtableIN11spirv_cross7TypedIDILNS0_5TypesE6EEESt4pairIKS3_S3_ESaIS6_ENSt8__detail10_Select1stESt8equal_toIS3_ESt4hashIS3_ENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb1ELb0ELb1EEEE", !6, i64 0, !20, i64 8, !27, i64 16, !20, i64 24, !28, i64 32, !6, i64 48}
!93 = !{!"_ZTSSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE4EEENS0_14SPIREntryPointESt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S4_EEE", !94, i64 0}
!94 = !{!"_ZTSSt10_HashtableIN11spirv_cross7TypedIDILNS0_5TypesE4EEESt4pairIKS3_NS0_14SPIREntryPointEESaIS7_ENSt8__detail10_Select1stESt8equal_toIS3_ESt4hashIS3_ENS9_18_Mod_range_hashingENS9_20_Default_ranged_hashENS9_20_Prime_rehash_policyENS9_17_Hashtable_traitsILb1ELb0ELb1EEEE", !6, i64 0, !20, i64 8, !27, i64 16, !20, i64 24, !28, i64 32, !6, i64 48}
!95 = !{!"_ZTSN11spirv_cross8ParsedIR6SourceE", !10, i64 0, !14, i64 4, !14, i64 5, !14, i64 6}
!96 = !{!"_ZTSN3spv15AddressingModelE", !7, i64 0}
!97 = !{!"_ZTSN3spv11MemoryModelE", !7, i64 0}
!98 = !{!"_ZTSSt13unordered_setIN11spirv_cross7TypedIDILNS0_5TypesE2EEESt4hashIS3_ESt8equal_toIS3_ESaIS3_EE", !99, i64 0}
!99 = !{!"_ZTSSt10_HashtableIN11spirv_cross7TypedIDILNS0_5TypesE2EEES3_SaIS3_ENSt8__detail9_IdentityESt8equal_toIS3_ESt4hashIS3_ENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb1ELb1ELb1EEEE", !6, i64 0, !20, i64 8, !27, i64 16, !20, i64 24, !28, i64 32, !6, i64 48}
!100 = !{!"_ZTSN11spirv_cross11SmallVectorINS_20CombinedImageSamplerELm8EEE", !101, i64 0, !20, i64 16, !102, i64 24}
!101 = !{!"_ZTSN11spirv_cross10VectorViewINS_20CombinedImageSamplerEEE", !6, i64 0, !20, i64 8}
!102 = !{!"_ZTSN11spirv_cross13AlignedBufferINS_20CombinedImageSamplerELm8EEE", !7, i64 0}
!103 = !{!"_ZTSSt8functionIFvRKN11spirv_cross8SPIRTypeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERS9_EE", !104, i64 0, !6, i64 24}
!104 = !{!"_ZTSSt14_Function_base", !7, i64 0, !6, i64 16}
!105 = !{!"_ZTSSt13unordered_mapIjSt10unique_ptrIN11spirv_cross3CFGESt14default_deleteIS2_EESt4hashIjESt8equal_toIjESaISt4pairIKjS5_EEE", !106, i64 0}
!106 = !{!"_ZTSSt10_HashtableIjSt4pairIKjSt10unique_ptrIN11spirv_cross3CFGESt14default_deleteIS4_EEESaIS8_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !20, i64 8, !27, i64 16, !20, i64 24, !28, i64 32, !6, i64 48}
!107 = !{!"_ZTSSt13unordered_mapIjN11spirv_cross8Compiler17PhysicalBlockMetaESt4hashIjESt8equal_toIjESaISt4pairIKjS2_EEE", !108, i64 0}
!108 = !{!"_ZTSSt10_HashtableIjSt4pairIKjN11spirv_cross8Compiler17PhysicalBlockMetaEESaIS5_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !20, i64 8, !27, i64 16, !20, i64 24, !28, i64 32, !6, i64 48}
!109 = !{!"_ZTSSt13unordered_mapIjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4hashIjESt8equal_toIjESaISt4pairIKjS5_EEE", !110, i64 0}
!110 = !{!"_ZTSSt10_HashtableIjSt4pairIKjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEESaIS8_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !20, i64 8, !27, i64 16, !20, i64 24, !28, i64 32, !6, i64 48}
!111 = !{!"_ZTSN11spirv_cross11SmallVectorIPNS_9SPIRBlockELm8EEE", !112, i64 0, !20, i64 16, !113, i64 24}
!112 = !{!"_ZTSN11spirv_cross10VectorViewIPNS_9SPIRBlockEEE", !6, i64 0, !20, i64 8}
!113 = !{!"_ZTSN11spirv_cross13AlignedBufferIPNS_9SPIRBlockELm8EEE", !7, i64 0}
!114 = !{!"_ZTSN11spirv_cross12StringStreamILm4096ELm4096EEE", !115, i64 0, !7, i64 24, !116, i64 4120}
!115 = !{!"_ZTSN11spirv_cross12StringStreamILm4096ELm4096EE6BufferE", !6, i64 0, !20, i64 8, !20, i64 16}
!116 = !{!"_ZTSN11spirv_cross11SmallVectorINS_12StringStreamILm4096ELm4096EE6BufferELm8EEE", !117, i64 0, !20, i64 16, !118, i64 24}
!117 = !{!"_ZTSN11spirv_cross10VectorViewINS_12StringStreamILm4096ELm4096EE6BufferEEE", !6, i64 0, !20, i64 8}
!118 = !{!"_ZTSN11spirv_cross13AlignedBufferINS_12StringStreamILm4096ELm4096EE6BufferELm8EEE", !7, i64 0}
!119 = !{!"_ZTSN11spirv_cross12CompilerGLSL7OptionsE", !10, i64 0, !14, i64 4, !14, i64 5, !10, i64 8, !14, i64 12, !14, i64 13, !14, i64 14, !14, i64 15, !14, i64 16, !14, i64 17, !14, i64 18, !14, i64 19, !14, i64 20, !14, i64 21, !14, i64 22, !14, i64 23, !10, i64 24, !120, i64 28, !121, i64 32}
!120 = !{!"_ZTSN11spirv_cross12CompilerGLSL7Options13VertexOptionsE", !14, i64 0, !14, i64 1, !14, i64 2}
!121 = !{!"_ZTSN11spirv_cross12CompilerGLSL7Options15FragmentOptionsE", !122, i64 0, !122, i64 4}
!122 = !{!"_ZTSN11spirv_cross12CompilerGLSL7Options9PrecisionE", !7, i64 0}
!123 = !{!"_ZTSSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt13unordered_setImSt4hashImESt8equal_toImESaImEES7_IS5_ES9_IS5_ESaISt4pairIKS5_SC_EEE", !124, i64 0}
!124 = !{!"_ZTSSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_St13unordered_setImSt4hashImESt8equal_toImESaImEEESaISF_ENSt8__detail10_Select1stESB_IS5_ES9_IS5_ENSH_18_Mod_range_hashingENSH_20_Default_ranged_hashENSH_20_Prime_rehash_policyENSH_17_Hashtable_traitsILb1ELb0ELb1EEEE", !6, i64 0, !20, i64 8, !27, i64 16, !20, i64 24, !28, i64 32, !6, i64 48}
!125 = !{!"_ZTSN11spirv_cross12CompilerGLSL17BackendVariationsE", !18, i64 0, !18, i64 32, !18, i64 64, !14, i64 96, !14, i64 97, !14, i64 98, !14, i64 99, !6, i64 104, !6, i64 112, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !37, i64 184, !14, i64 188, !14, i64 189, !14, i64 190, !14, i64 191, !14, i64 192, !14, i64 193, !14, i64 194, !14, i64 195, !14, i64 196, !14, i64 197, !14, i64 198, !14, i64 199, !14, i64 200, !14, i64 201, !14, i64 202, !14, i64 203, !14, i64 204, !14, i64 205, !14, i64 206, !14, i64 207, !14, i64 208, !14, i64 209, !14, i64 210, !14, i64 211, !14, i64 212, !14, i64 213, !14, i64 214, !14, i64 215, !14, i64 216, !14, i64 217, !14, i64 218, !14, i64 219}
!126 = !{!"_ZTSSt13unordered_mapIjbSt4hashIjESt8equal_toIjESaISt4pairIKjbEEE", !127, i64 0}
!127 = !{!"_ZTSSt10_HashtableIjSt4pairIKjbESaIS2_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !20, i64 8, !27, i64 16, !20, i64 24, !28, i64 32, !6, i64 48}
!128 = !{!"_ZTSN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelperE", !10, i64 0}
!129 = !{!"_ZTSSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEE", !130, i64 0}
!130 = !{!"_ZTSSt10_HashtableIjSt4pairIKjjESaIS2_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !20, i64 8, !27, i64 16, !20, i64 24, !28, i64 32, !6, i64 48}
!131 = !{!"_ZTSSt6vectorIN11spirv_cross8PlsRemapESaIS1_EE", !132, i64 0}
!132 = !{!"_ZTSSt12_Vector_baseIN11spirv_cross8PlsRemapESaIS1_EE", !133, i64 0}
!133 = !{!"_ZTSNSt12_Vector_baseIN11spirv_cross8PlsRemapESaIS1_EE12_Vector_implE", !134, i64 0}
!134 = !{!"_ZTSNSt12_Vector_baseIN11spirv_cross8PlsRemapESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!135 = !{!"_ZTSSt6vectorISt4pairIjjESaIS1_EE", !136, i64 0}
!136 = !{!"_ZTSSt12_Vector_baseISt4pairIjjESaIS1_EE", !137, i64 0}
!137 = !{!"_ZTSNSt12_Vector_baseISt4pairIjjESaIS1_EE12_Vector_implE", !138, i64 0}
!138 = !{!"_ZTSNSt12_Vector_baseISt4pairIjjESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!139 = !{!"_ZTSSt6vectorISt4pairIjbESaIS1_EE", !140, i64 0}
!140 = !{!"_ZTSSt12_Vector_baseISt4pairIjbESaIS1_EE", !141, i64 0}
!141 = !{!"_ZTSNSt12_Vector_baseISt4pairIjbESaIS1_EE12_Vector_implE", !142, i64 0}
!142 = !{!"_ZTSNSt12_Vector_baseISt4pairIjbESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!143 = !{!"_ZTSSt13unordered_setIN11spirv_cross21LocationComponentPairENS0_14InternalHasherESt8equal_toIS1_ESaIS1_EE", !144, i64 0}
!144 = !{!"_ZTSSt10_HashtableIN11spirv_cross21LocationComponentPairES1_SaIS1_ENSt8__detail9_IdentityESt8equal_toIS1_ENS0_14InternalHasherENS3_18_Mod_range_hashingENS3_20_Default_ranged_hashENS3_20_Prime_rehash_policyENS3_17_Hashtable_traitsILb1ELb1ELb1EEEE", !6, i64 0, !20, i64 8, !27, i64 16, !20, i64 24, !28, i64 32, !6, i64 48}
!145 = !{!"_ZTSSt13unordered_mapIjN11spirv_cross11SmallVectorINS0_7TypedIDILNS0_5TypesE3EEELm8EEESt4hashIjESt8equal_toIjESaISt4pairIKjS5_EEE", !146, i64 0}
!146 = !{!"_ZTSSt10_HashtableIjSt4pairIKjN11spirv_cross11SmallVectorINS2_7TypedIDILNS2_5TypesE3EEELm8EEEESaIS8_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !20, i64 8, !27, i64 16, !20, i64 24, !28, i64 32, !6, i64 48}
!147 = !{!"_ZTSSt13unordered_mapIjSt3setIjSt4lessIjESaIjEESt4hashIjESt8equal_toIjESaISt4pairIKjS4_EEE", !148, i64 0}
!148 = !{!"_ZTSSt10_HashtableIjSt4pairIKjSt3setIjSt4lessIjESaIjEEESaIS7_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENS9_18_Mod_range_hashingENS9_20_Default_ranged_hashENS9_20_Prime_rehash_policyENS9_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !20, i64 8, !27, i64 16, !20, i64 24, !28, i64 32, !6, i64 48}
!149 = !{!"_ZTSN11spirv_cross11CompilerMSL7OptionsE", !150, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !14, i64 80, !14, i64 81, !14, i64 82, !14, i64 83, !14, i64 84, !14, i64 85, !14, i64 86, !14, i64 87, !14, i64 88, !14, i64 89, !14, i64 90, !14, i64 91, !14, i64 92, !151, i64 96, !14, i64 100, !14, i64 101, !14, i64 102, !14, i64 103, !14, i64 104, !14, i64 105, !14, i64 106, !14, i64 107, !14, i64 108, !14, i64 109, !14, i64 110, !14, i64 111, !14, i64 112, !14, i64 113, !14, i64 114, !14, i64 115, !14, i64 116, !14, i64 117, !14, i64 118, !10, i64 120, !152, i64 124, !14, i64 128, !14, i64 129, !14, i64 130, !14, i64 131, !14, i64 132, !14, i64 133, !14, i64 134, !14, i64 135, !14, i64 136}
!150 = !{!"_ZTSN11spirv_cross11CompilerMSL7Options8PlatformE", !7, i64 0}
!151 = !{!"_ZTSN11spirv_cross11CompilerMSL7Options19ArgumentBuffersTierE", !7, i64 0}
!152 = !{!"_ZTSN11spirv_cross11CompilerMSL7Options9IndexTypeE", !7, i64 0}
!153 = !{!"_ZTSSt3setIN11spirv_cross11CompilerMSL11SPVFuncImplESt4lessIS2_ESaIS2_EE", !154, i64 0}
!154 = !{!"_ZTSSt8_Rb_treeIN11spirv_cross11CompilerMSL11SPVFuncImplES2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE", !155, i64 0}
!155 = !{!"_ZTSNSt8_Rb_treeIN11spirv_cross11CompilerMSL11SPVFuncImplES2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE13_Rb_tree_implIS6_Lb1EEE", !156, i64 0, !158, i64 8}
!156 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN11spirv_cross11CompilerMSL11SPVFuncImplEEE", !157, i64 0}
!157 = !{!"_ZTSSt4lessIN11spirv_cross11CompilerMSL11SPVFuncImplEE"}
!158 = !{!"_ZTSSt15_Rb_tree_header", !159, i64 0, !20, i64 32}
!159 = !{!"_ZTSSt18_Rb_tree_node_base", !160, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!160 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!161 = !{!"_ZTSSt3mapIN11spirv_cross21LocationComponentPairENS0_26MSLShaderInterfaceVariableESt4lessIS1_ESaISt4pairIKS1_S2_EEE", !162, i64 0}
!162 = !{!"_ZTSSt8_Rb_treeIN11spirv_cross21LocationComponentPairESt4pairIKS1_NS0_26MSLShaderInterfaceVariableEESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE", !163, i64 0}
!163 = !{!"_ZTSNSt8_Rb_treeIN11spirv_cross21LocationComponentPairESt4pairIKS1_NS0_26MSLShaderInterfaceVariableEESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE13_Rb_tree_implIS9_Lb1EEE", !164, i64 0, !158, i64 8}
!164 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN11spirv_cross21LocationComponentPairEEE", !165, i64 0}
!165 = !{!"_ZTSSt4lessIN11spirv_cross21LocationComponentPairEE"}
!166 = !{!"_ZTSSt13unordered_mapIjN11spirv_cross26MSLShaderInterfaceVariableESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE", !167, i64 0}
!167 = !{!"_ZTSSt10_HashtableIjSt4pairIKjN11spirv_cross26MSLShaderInterfaceVariableEESaIS4_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENS6_18_Mod_range_hashingENS6_20_Default_ranged_hashENS6_20_Prime_rehash_policyENS6_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !20, i64 8, !27, i64 16, !20, i64 24, !28, i64 32, !6, i64 48}
!168 = !{!"_ZTSSt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIS5_ESaIS5_EE", !169, i64 0}
!169 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St9_IdentityIS5_ESt4lessIS5_ESaIS5_EE", !170, i64 0}
!170 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St9_IdentityIS5_ESt4lessIS5_ESaIS5_EE13_Rb_tree_implIS9_Lb1EEE", !171, i64 0, !158, i64 8}
!171 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !172, i64 0}
!172 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!173 = !{!"_ZTSSt13unordered_mapIN11spirv_cross15StageSetBindingESt4pairINS0_18MSLResourceBindingEbENS0_14InternalHasherESt8equal_toIS1_ESaIS2_IKS1_S4_EEE", !174, i64 0}
!174 = !{!"_ZTSSt10_HashtableIN11spirv_cross15StageSetBindingESt4pairIKS1_S2_INS0_18MSLResourceBindingEbEESaIS6_ENSt8__detail10_Select1stESt8equal_toIS1_ENS0_14InternalHasherENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb1ELb0ELb1EEEE", !6, i64 0, !20, i64 8, !27, i64 16, !20, i64 24, !28, i64 32, !6, i64 48}
!175 = !{!"_ZTSSt13unordered_mapIN11spirv_cross15StageSetBindingEjNS0_14InternalHasherESt8equal_toIS1_ESaISt4pairIKS1_jEEE", !176, i64 0}
!176 = !{!"_ZTSSt10_HashtableIN11spirv_cross15StageSetBindingESt4pairIKS1_jESaIS4_ENSt8__detail10_Select1stESt8equal_toIS1_ENS0_14InternalHasherENS6_18_Mod_range_hashingENS6_20_Default_ranged_hashENS6_20_Prime_rehash_policyENS6_17_Hashtable_traitsILb1ELb0ELb1EEEE", !6, i64 0, !20, i64 8, !27, i64 16, !20, i64 24, !28, i64 32, !6, i64 48}
!177 = !{!"_ZTSN11spirv_cross7TypedIDILNS_5TypesE2EEE", !10, i64 0}
!178 = !{!"_ZTSN11spirv_cross11CompilerMSL8TriStateE", !7, i64 0}
!179 = !{!"_ZTSSt3mapIjN11spirv_cross19MSLConstexprSamplerESt4lessIjESaISt4pairIKjS1_EEE", !180, i64 0}
!180 = !{!"_ZTSSt8_Rb_treeIjSt4pairIKjN11spirv_cross19MSLConstexprSamplerEESt10_Select1stIS4_ESt4lessIjESaIS4_EE", !181, i64 0}
!181 = !{!"_ZTSNSt8_Rb_treeIjSt4pairIKjN11spirv_cross19MSLConstexprSamplerEESt10_Select1stIS4_ESt4lessIjESaIS4_EE13_Rb_tree_implIS8_Lb1EEE", !182, i64 0, !158, i64 8}
!182 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIjEE", !183, i64 0}
!183 = !{!"_ZTSSt4lessIjE"}
!184 = !{!"_ZTSSt13unordered_mapIN11spirv_cross14SetBindingPairENS0_19MSLConstexprSamplerENS0_14InternalHasherESt8equal_toIS1_ESaISt4pairIKS1_S2_EEE", !185, i64 0}
!185 = !{!"_ZTSSt10_HashtableIN11spirv_cross14SetBindingPairESt4pairIKS1_NS0_19MSLConstexprSamplerEESaIS5_ENSt8__detail10_Select1stESt8equal_toIS1_ENS0_14InternalHasherENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb1ELb0ELb1EEEE", !6, i64 0, !20, i64 8, !27, i64 16, !20, i64 24, !28, i64 32, !6, i64 48}
!186 = !{!"_ZTSN11spirv_cross11SmallVectorISt4pairIjjELm8EEE", !187, i64 0, !20, i64 16, !188, i64 24}
!187 = !{!"_ZTSN11spirv_cross10VectorViewISt4pairIjjEEE", !6, i64 0, !20, i64 8}
!188 = !{!"_ZTSN11spirv_cross13AlignedBufferISt4pairIjjELm8EEE", !7, i64 0}
!189 = !{!"_ZTSN11spirv_cross11SmallVectorIPNS_12SPIRVariableELm8EEE", !190, i64 0, !20, i64 16, !191, i64 24}
!190 = !{!"_ZTSN11spirv_cross10VectorViewIPNS_12SPIRVariableEEE", !6, i64 0, !20, i64 8}
!191 = !{!"_ZTSN11spirv_cross13AlignedBufferIPNS_12SPIRVariableELm8EEE", !7, i64 0}
!192 = !{!"_ZTSSt3mapIN11spirv_cross14SetBindingPairESt4pairIjjESt4lessIS1_ESaIS2_IKS1_S3_EEE", !193, i64 0}
!193 = !{!"_ZTSSt8_Rb_treeIN11spirv_cross14SetBindingPairESt4pairIKS1_S2_IjjEESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE", !194, i64 0}
!194 = !{!"_ZTSNSt8_Rb_treeIN11spirv_cross14SetBindingPairESt4pairIKS1_S2_IjjEESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE13_Rb_tree_implIS9_Lb1EEE", !195, i64 0, !158, i64 8}
!195 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN11spirv_cross14SetBindingPairEEE", !196, i64 0}
!196 = !{!"_ZTSSt4lessIN11spirv_cross14SetBindingPairEE"}
!197 = !{!"_ZTSSt13unordered_setIN11spirv_cross14SetBindingPairENS0_14InternalHasherESt8equal_toIS1_ESaIS1_EE", !198, i64 0}
!198 = !{!"_ZTSSt10_HashtableIN11spirv_cross14SetBindingPairES1_SaIS1_ENSt8__detail9_IdentityESt8equal_toIS1_ENS0_14InternalHasherENS3_18_Mod_range_hashingENS3_20_Default_ranged_hashENS3_20_Prime_rehash_policyENS3_17_Hashtable_traitsILb1ELb1ELb1EEEE", !6, i64 0, !20, i64 8, !27, i64 16, !20, i64 24, !28, i64 32, !6, i64 48}
!199 = !{!58, !14, i64 10116}
!200 = !{!58, !14, i64 10149}
!201 = !{!58, !14, i64 10154}
!202 = !{!58, !14, i64 10150}
!203 = !{i64 0, i64 4, !9}
!204 = !{!33, !37, i64 16}
!205 = !{!58, !14, i64 10123}
!206 = !{!58, !14, i64 10124}
!207 = !{!58, !14, i64 10118}
!208 = !{!58, !14, i64 10117}
!209 = !{!58, !10, i64 10108}


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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator.71" = type { i8 }

@_ZTIN11spirv_cross13CompilerErrorE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.35 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1316 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.1317 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.1318 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.1319 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.1320 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.1321 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.1322 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.1323 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.1324 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.1325 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.1326 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.1327 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.1328 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.1329 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.1330 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.1331 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.1332 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.1333 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1334 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.1335 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1336 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.1337 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.1338 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.1339 = external hidden unnamed_addr constant [10 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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

declare void @__cxa_free_exception(ptr) local_unnamed_addr

; Function Attrs: nounwind
declare void @_ZNSt13runtime_errorD2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #3

declare void @__cxa_throw(ptr, ptr, ptr) local_unnamed_addr

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL14is_tesc_shaderEv(ptr noundef nonnull align 8 dereferenceable(12482)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL14is_tese_shaderEv(ptr noundef nonnull align 8 dereferenceable(12482)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL14is_mesh_shaderEv(ptr noundef nonnull align 8 dereferenceable(12482)) local_unnamed_addr #2 align 2

declare noundef nonnull align 8 dereferenceable(237) ptr @_ZN11spirv_cross8Compiler15get_entry_pointEv(ptr noundef nonnull align 8 dereferenceable(3176)) local_unnamed_addr #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options20supports_msl_versionEjjj(ptr noundef nonnull align 4 dereferenceable(137), i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(336) ptr @_ZN11spirv_cross8Compiler3getINS_8SPIRTypeEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176), i32 noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE1EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0 align 2

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

declare noundef zeroext i1 @_ZNK11spirv_cross8Compiler17is_member_builtinERKNS_8SPIRTypeEjPN3spv7BuiltInE(ptr noundef nonnull align 8 dereferenceable(3176), ptr noundef nonnull align 8 dereferenceable(336), i32 noundef, ptr noundef) local_unnamed_addr #4

declare noundef nonnull align 8 dereferenceable(336) ptr @_ZNK11spirv_cross8Compiler8get_typeENS_7TypedIDILNS_5TypesE1EEE(ptr noundef nonnull align 8 dereferenceable(3176), i32) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvNS0_IXT_EEEILS1_1EEEv(ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #2 align 2

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

declare noundef zeroext i1 @_ZNK11spirv_cross8Compiler21has_member_decorationENS_7TypedIDILNS_5TypesE1EEEjN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176), i32, i32 noundef, i32 noundef) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #5

declare noundef i32 @_ZNK11spirv_cross8Compiler21get_member_decorationENS_7TypedIDILNS_5TypesE1EEEjN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176), i32, i32 noundef, i32 noundef) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZN11spirv_crossL16type_is_integralERKNS_8SPIRTypeE(ptr noundef nonnull align 8 dereferenceable(336)) local_unnamed_addr #6

declare noundef i32 @_ZNK11spirv_cross8Compiler30get_extended_member_decorationEjjNS_19ExtendedDecorationsE(ptr noundef nonnull align 8 dereferenceable(3176), i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #4

declare noundef zeroext i1 @_ZNK11spirv_cross8Compiler30has_extended_member_decorationEjjNS_19ExtendedDecorationsE(ptr noundef nonnull align 8 dereferenceable(3176), i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #5

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN11spirv_cross17convert_to_stringIjTnNSt9enable_ifIXntsr3std17is_floating_pointIT_EE5valueEiE4typeELi0EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS2_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11spirv_cross11CompilerMSL26member_attribute_qualifierB5cxx11ERKNS_8SPIRTypeEj(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(12482) %1, ptr noundef nonnull align 8 dereferenceable(336) %2, i32 noundef %3) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca %"class.std::allocator.71", align 1
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.std::allocator.71", align 1
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.std::allocator.71", align 1
  %14 = alloca i32, align 4
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca %"class.std::allocator.71", align 1
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %"class.std::allocator.71", align 1
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  %23 = alloca %"class.std::allocator.71", align 1
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca %"class.std::__cxx11::basic_string", align 8
  %27 = alloca %"class.std::allocator.71", align 1
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  %29 = alloca i32, align 4
  %30 = alloca %"class.std::__cxx11::basic_string", align 8
  %31 = alloca %"class.std::__cxx11::basic_string", align 8
  %32 = alloca %"class.std::__cxx11::basic_string", align 8
  %33 = alloca %"class.std::allocator.71", align 1
  %34 = alloca %"class.std::__cxx11::basic_string", align 8
  %35 = alloca i32, align 4
  %36 = alloca %"class.std::__cxx11::basic_string", align 8
  %37 = alloca %"class.std::__cxx11::basic_string", align 8
  %38 = alloca %"class.std::__cxx11::basic_string", align 8
  %39 = alloca %"class.std::allocator.71", align 1
  %40 = alloca %"class.std::__cxx11::basic_string", align 8
  %41 = alloca %"class.std::allocator.71", align 1
  %42 = alloca %"class.std::__cxx11::basic_string", align 8
  %43 = alloca %"class.std::allocator.71", align 1
  %44 = alloca %"class.std::allocator.71", align 1
  %45 = alloca %"class.std::__cxx11::basic_string", align 8
  %46 = alloca %"class.std::__cxx11::basic_string", align 8
  %47 = alloca %"class.std::__cxx11::basic_string", align 8
  %48 = alloca %"class.std::allocator.71", align 1
  %49 = alloca %"class.std::__cxx11::basic_string", align 8
  %50 = alloca %"class.std::allocator.71", align 1
  %51 = alloca %"class.std::__cxx11::basic_string", align 8
  %52 = alloca %"class.std::__cxx11::basic_string", align 8
  %53 = alloca %"class.std::__cxx11::basic_string", align 8
  %54 = alloca %"class.std::allocator.71", align 1
  %55 = alloca %"class.std::__cxx11::basic_string", align 8
  %56 = alloca %"class.std::allocator.71", align 1
  %57 = alloca %"class.std::allocator.71", align 1
  %58 = alloca i32, align 4
  %59 = alloca %"class.std::__cxx11::basic_string", align 8
  %60 = alloca %"class.std::__cxx11::basic_string", align 8
  %61 = alloca %"class.std::allocator.71", align 1
  %62 = alloca %"class.std::__cxx11::basic_string", align 8
  %63 = alloca %"class.std::allocator.71", align 1
  %64 = alloca %"class.std::__cxx11::basic_string", align 8
  %65 = alloca %"class.std::__cxx11::basic_string", align 8
  %66 = alloca %"class.std::allocator.71", align 1
  %67 = alloca %"class.std::__cxx11::basic_string", align 8
  %68 = alloca %"class.std::allocator.71", align 1
  %69 = alloca %"class.std::allocator.71", align 1
  %70 = alloca %"class.std::allocator.71", align 1
  %71 = alloca i32, align 4
  %72 = alloca %"class.std::__cxx11::basic_string", align 8
  %73 = alloca %"class.std::__cxx11::basic_string", align 8
  %74 = alloca %"class.std::allocator.71", align 1
  %75 = alloca %"class.std::__cxx11::basic_string", align 8
  %76 = alloca %"class.std::__cxx11::basic_string", align 8
  %77 = alloca %"class.std::__cxx11::basic_string", align 8
  %78 = alloca i32, align 4
  %79 = alloca i32, align 4
  %80 = alloca %"class.std::__cxx11::basic_string", align 8
  %81 = alloca %"class.std::__cxx11::basic_string", align 8
  %82 = alloca %"class.std::allocator.71", align 1
  %83 = alloca %"class.std::__cxx11::basic_string", align 8
  %84 = alloca %"class.std::__cxx11::basic_string", align 8
  %85 = alloca %"class.std::allocator.71", align 1
  %86 = alloca %"class.std::__cxx11::basic_string", align 8
  %87 = alloca %"class.std::allocator.71", align 1
  %88 = alloca %"class.std::__cxx11::basic_string", align 8
  %89 = alloca %"class.std::__cxx11::basic_string", align 8
  %90 = alloca %"class.std::allocator.71", align 1
  %91 = alloca %"class.std::__cxx11::basic_string", align 8
  %92 = alloca %"class.std::allocator.71", align 1
  %93 = alloca i32, align 4
  %94 = alloca %"class.std::allocator.71", align 1
  %95 = alloca i32, align 4
  %96 = alloca i32, align 4
  %97 = alloca %"class.std::allocator.71", align 1
  %98 = alloca %"class.std::__cxx11::basic_string", align 8
  %99 = alloca %"class.std::__cxx11::basic_string", align 8
  %100 = alloca %"class.std::allocator.71", align 1
  %101 = alloca %"class.std::__cxx11::basic_string", align 8
  %102 = alloca %"class.std::allocator.71", align 1
  %103 = alloca %"class.std::allocator.71", align 1
  %104 = tail call noundef nonnull align 8 dereferenceable(237) ptr @_ZN11spirv_cross8Compiler15get_entry_pointEv(ptr noundef nonnull align 8 dereferenceable(3176) %1)
  %105 = getelementptr inbounds i8, ptr %2, i64 136
  %106 = zext i32 %3 to i64
  %107 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewINS_7TypedIDILNS_5TypesE1EEEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %105, i64 noundef %106) #7
  %108 = tail call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE1EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %107)
  %109 = tail call noundef nonnull align 8 dereferenceable(336) ptr @_ZN11spirv_cross8Compiler3getINS_8SPIRTypeEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %1, i32 noundef %108)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #7
  store i32 2147483647, ptr %5, align 4, !tbaa !5
  %110 = call noundef zeroext i1 @_ZNK11spirv_cross8Compiler17is_member_builtinERKNS_8SPIRTypeEjPN3spv7BuiltInE(ptr noundef nonnull align 8 dereferenceable(3176) %1, ptr noundef nonnull align 8 dereferenceable(336) %2, i32 noundef %3, ptr noundef nonnull %5)
  %111 = getelementptr inbounds i8, ptr %2, i64 8
  %112 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %111)
  %113 = call noundef zeroext i1 @_ZNK11spirv_cross8Compiler30has_extended_member_decorationEjjNS_19ExtendedDecorationsE(ptr noundef nonnull align 8 dereferenceable(3176) %1, i32 noundef %112, i32 noundef %3, i32 noundef 6)
  br i1 %113, label %114, label %132

114:                                              ; preds = %4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #7
  %115 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %111)
  %116 = call noundef i32 @_ZNK11spirv_cross8Compiler30get_extended_member_decorationEjjNS_19ExtendedDecorationsE(ptr noundef nonnull align 8 dereferenceable(3176) %1, i32 noundef %115, i32 noundef %3, i32 noundef 6)
  store i32 %116, ptr %6, align 4, !tbaa !9
  call void @_ZN11spirv_cross4joinIJRA7_KcjRA2_S1_EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 1 dereferenceable(7) @.str.1316, ptr noundef nonnull align 4 dereferenceable(4) %6, ptr noundef nonnull align 1 dereferenceable(2) @.str.53)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #7
  %117 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %111)
  %118 = invoke noundef i32 @_ZNK11spirv_cross8Compiler30get_extended_member_decorationEjjNS_19ExtendedDecorationsE(ptr noundef nonnull align 8 dereferenceable(3176) %1, i32 noundef %117, i32 noundef %3, i32 noundef 5)
          to label %119 unwind label %125

119:                                              ; preds = %114
  %120 = getelementptr inbounds i8, ptr %1, i64 3056
  store i32 %118, ptr %7, align 4, !tbaa !9
  %121 = invoke noundef i64 @_ZNKSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEE5countERKj(ptr noundef nonnull align 8 dereferenceable(56) %120, ptr noundef nonnull align 4 dereferenceable(4) %7)
          to label %122 unwind label %125

122:                                              ; preds = %119
  %.not328 = icmp eq i64 %121, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #7
  br i1 %.not328, label %129, label %123

123:                                              ; preds = %122
  %124 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1317)
          to label %129 unwind label %127

125:                                              ; preds = %119, %114
  %126 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #7
  br label %131

127:                                              ; preds = %129, %123
  %128 = landingpad { ptr, i32 }
          cleanup
  br label %131

129:                                              ; preds = %123, %122
  %130 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1318)
          to label %.critedge346 unwind label %127

131:                                              ; preds = %127, %125
  %.pn329 = phi { ptr, i32 } [ %128, %127 ], [ %126, %125 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %0) #7
  br label %.critedge352

132:                                              ; preds = %4
  %133 = getelementptr inbounds i8, ptr %104, i64 232
  %134 = load i32, ptr %133, align 8, !tbaa !11
  %135 = icmp eq i32 %134, 0
  %136 = getelementptr inbounds i8, ptr %2, i64 128
  %137 = load i32, ptr %136, align 8
  %138 = icmp eq i32 %137, 1
  %or.cond = select i1 %135, i1 %138, i1 false
  br i1 %or.cond, label %139, label %191

139:                                              ; preds = %132
  br i1 %110, label %140, label %176

140:                                              ; preds = %139
  %141 = load i32, ptr %5, align 4, !tbaa !5
  switch i32 %141, label %172 [
    i32 5, label %142
    i32 42, label %142
    i32 4424, label %142
    i32 6, label %142
    i32 43, label %142
    i32 4425, label %142
    i32 4426, label %167
  ]

142:                                              ; preds = %140, %140, %140, %140, %140, %140
  %143 = getelementptr inbounds i8, ptr %1, i64 10151
  %144 = load i8, ptr %143, align 1, !tbaa !30, !range !182, !noundef !183
  %145 = trunc nuw i8 %144 to i1
  br i1 %145, label %146, label %150

146:                                              ; preds = %142
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %8) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.35, ptr noundef nonnull align 1 dereferenceable(1) %8)
          to label %147 unwind label %148

147:                                              ; preds = %146
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #7
  br label %.critedge346

148:                                              ; preds = %146
  %149 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #7
  br label %.critedge352

150:                                              ; preds = %142
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %11) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull @.str.1319, ptr noundef nonnull align 1 dereferenceable(1) %11)
          to label %151 unwind label %156

151:                                              ; preds = %150
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #7
  %152 = load i32, ptr %5, align 4, !tbaa !5
  invoke void @_ZN11spirv_cross11CompilerMSL17builtin_qualifierB5cxx11EN3spv7BuiltInE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %12, ptr noundef nonnull align 8 dereferenceable(12482) %1, i32 noundef %152)
          to label %153 unwind label %158

153:                                              ; preds = %151
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %9, ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull align 8 dereferenceable(32) %12)
          to label %154 unwind label %160

154:                                              ; preds = %153
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull @.str.1318)
          to label %155 unwind label %162

155:                                              ; preds = %154
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #7
  br label %.critedge346

156:                                              ; preds = %150
  %157 = landingpad { ptr, i32 }
          cleanup
  br label %166

158:                                              ; preds = %151
  %159 = landingpad { ptr, i32 }
          cleanup
  br label %165

160:                                              ; preds = %153
  %161 = landingpad { ptr, i32 }
          cleanup
  br label %164

162:                                              ; preds = %154
  %163 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #7
  br label %164

164:                                              ; preds = %162, %160
  %.pn324 = phi { ptr, i32 } [ %163, %162 ], [ %161, %160 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #7
  br label %165

165:                                              ; preds = %164, %158
  %.pn324.pn = phi { ptr, i32 } [ %.pn324, %164 ], [ %159, %158 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #7
  br label %166

166:                                              ; preds = %165, %156
  %.pn324.pn.pn = phi { ptr, i32 } [ %.pn324.pn, %165 ], [ %157, %156 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #7
  br label %.critedge352

167:                                              ; preds = %140
  %168 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %168, ptr noundef nonnull @.str.1320)
          to label %169 unwind label %170

169:                                              ; preds = %167
  call void @__cxa_throw(ptr nonnull %168, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #8
  unreachable

170:                                              ; preds = %167
  %171 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %168) #7
  br label %.critedge352

172:                                              ; preds = %140
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %13) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.35, ptr noundef nonnull align 1 dereferenceable(1) %13)
          to label %173 unwind label %174

173:                                              ; preds = %172
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #7
  br label %.critedge346

174:                                              ; preds = %172
  %175 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #7
  br label %.critedge352

176:                                              ; preds = %139
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #7
  %177 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %111)
  %178 = call noundef i32 @_ZNK11spirv_cross11CompilerMSL19get_member_locationEjjPj(ptr noundef nonnull align 8 dereferenceable(12482) %1, i32 noundef %177, i32 noundef %3, ptr noundef null)
  store i32 %178, ptr %14, align 4, !tbaa !9
  %.not254 = icmp eq i32 %178, -1
  br i1 %.not254, label %.critedge, label %179

179:                                              ; preds = %176
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %16) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %17) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull @.str.1321, ptr noundef nonnull align 1 dereferenceable(1) %17)
          to label %180 unwind label %183

180:                                              ; preds = %179
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %18) #7
  call void @_ZN11spirv_cross17convert_to_stringIjTnNSt9enable_ifIXntsr3std17is_floating_pointIT_EE5valueEiE4typeELi0EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS2_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %18, ptr noundef nonnull align 4 dereferenceable(4) %14)
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %15, ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull align 8 dereferenceable(32) %18)
          to label %181 unwind label %185

181:                                              ; preds = %180
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull @.str.1322)
          to label %182 unwind label %187

182:                                              ; preds = %181
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %17) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #7
  br label %.critedge346

183:                                              ; preds = %179
  %184 = landingpad { ptr, i32 }
          cleanup
  br label %190

185:                                              ; preds = %180
  %186 = landingpad { ptr, i32 }
          cleanup
  br label %189

187:                                              ; preds = %181
  %188 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  br label %189

189:                                              ; preds = %187, %185
  %.pn = phi { ptr, i32 } [ %188, %187 ], [ %186, %185 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #7
  br label %190

190:                                              ; preds = %189, %183
  %.pn.pn = phi { ptr, i32 } [ %.pn, %189 ], [ %184, %183 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %17) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #7
  br label %.critedge352

.critedge:                                        ; preds = %176
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #7
  br label %191

191:                                              ; preds = %.critedge, %132
  %192 = call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL14is_mesh_shaderEv(ptr noundef nonnull align 8 dereferenceable(12482) %1)
  br i1 %192, label %203, label %193

193:                                              ; preds = %191
  %194 = call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL14is_tese_shaderEv(ptr noundef nonnull align 8 dereferenceable(12482) %1)
  br i1 %194, label %203, label %195

195:                                              ; preds = %193
  %196 = load i32, ptr %133, align 8, !tbaa !11
  %197 = icmp eq i32 %196, 0
  br i1 %197, label %198, label %.thread

198:                                              ; preds = %195
  %199 = getelementptr inbounds i8, ptr %1, i64 10151
  %200 = load i8, ptr %199, align 1, !tbaa !30, !range !182, !noundef !183
  %201 = trunc nuw i8 %200 to i1
  %202 = xor i1 %201, true
  br label %203

203:                                              ; preds = %198, %193, %191
  %204 = phi i1 [ true, %193 ], [ true, %191 ], [ %202, %198 ]
  %205 = load i32, ptr %136, align 8, !tbaa !184
  %206 = icmp eq i32 %205, 3
  br i1 %206, label %213, label %210

.thread:                                          ; preds = %195
  %207 = load i32, ptr %136, align 8, !tbaa !184
  %208 = icmp eq i32 %207, 3
  br i1 %208, label %.thread376.thread, label %.thread412

.thread412:                                       ; preds = %.thread
  %209 = call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL14is_mesh_shaderEv(ptr noundef nonnull align 8 dereferenceable(12482) %1)
  br label %.thread376

210:                                              ; preds = %203
  %211 = call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL14is_mesh_shaderEv(ptr noundef nonnull align 8 dereferenceable(12482) %1)
  %212 = select i1 %211, i1 %204, i1 false
  br i1 %212, label %214, label %.thread376

213:                                              ; preds = %203
  br i1 %204, label %214, label %.thread376

214:                                              ; preds = %210, %213
  br i1 %110, label %215, label %334

215:                                              ; preds = %214
  %216 = load i32, ptr %5, align 4, !tbaa !5
  switch i32 %216, label %330 [
    i32 1, label %217
    i32 10, label %238
    i32 0, label %246
    i32 9, label %246
    i32 5299, label %246
    i32 4432, label %246
    i32 7, label %246
    i32 3, label %270
    i32 4, label %300
  ]

217:                                              ; preds = %215
  %218 = getelementptr inbounds i8, ptr %1, i64 10116
  %219 = load i8, ptr %218, align 4, !tbaa !197, !range !182, !noundef !183
  %220 = trunc nuw i8 %219 to i1
  br i1 %220, label %221, label %226

221:                                              ; preds = %217
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %20) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %21) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef nonnull @.str.1319, ptr noundef nonnull align 1 dereferenceable(1) %21)
          to label %222 unwind label %227

222:                                              ; preds = %221
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %22) #7
  %223 = load i32, ptr %5, align 4, !tbaa !5
  invoke void @_ZN11spirv_cross11CompilerMSL17builtin_qualifierB5cxx11EN3spv7BuiltInE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %22, ptr noundef nonnull align 8 dereferenceable(12482) %1, i32 noundef %223)
          to label %224 unwind label %229

224:                                              ; preds = %222
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %19, ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef nonnull align 8 dereferenceable(32) %22)
          to label %225 unwind label %231

225:                                              ; preds = %224
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull @.str.1318)
          to label %.critedge340.critedge unwind label %233

226:                                              ; preds = %217
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %23) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.35, ptr noundef nonnull align 1 dereferenceable(1) %23)
          to label %.critedge337 unwind label %.critedge348

.critedge337:                                     ; preds = %226
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %23) #7
  br label %.critedge346

.critedge340.critedge:                            ; preds = %225
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #7
  br label %.critedge346

227:                                              ; preds = %221
  %228 = landingpad { ptr, i32 }
          cleanup
  br label %.critedge350

229:                                              ; preds = %222
  %230 = landingpad { ptr, i32 }
          cleanup
  br label %236

231:                                              ; preds = %224
  %232 = landingpad { ptr, i32 }
          cleanup
  br label %235

233:                                              ; preds = %225
  %234 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #7
  br label %235

235:                                              ; preds = %233, %231
  %.pn317.pn.ph = phi { ptr, i32 } [ %232, %231 ], [ %234, %233 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #7
  br label %236

236:                                              ; preds = %235, %229
  %.pn317.pn.pn.ph = phi { ptr, i32 } [ %230, %229 ], [ %.pn317.pn.ph, %235 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #7
  br label %.critedge350

.critedge348:                                     ; preds = %226
  %237 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %23) #7
  br label %.critedge352

.critedge350:                                     ; preds = %236, %227
  %.pn317.pn.pn.pn.ph = phi { ptr, i32 } [ %228, %227 ], [ %.pn317.pn.pn.ph, %236 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #7
  br label %.critedge352

238:                                              ; preds = %215
  %239 = getelementptr inbounds i8, ptr %1, i64 10036
  %240 = call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options20supports_msl_versionEjjj(ptr noundef nonnull align 4 dereferenceable(137) %239, i32 noundef 2, i32 noundef 0, i32 noundef 0)
  br i1 %240, label %246, label %241

241:                                              ; preds = %238
  %242 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %242, ptr noundef nonnull @.str.1323)
          to label %243 unwind label %244

243:                                              ; preds = %241
  call void @__cxa_throw(ptr nonnull %242, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #8
  unreachable

244:                                              ; preds = %241
  %245 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %242) #7
  br label %.critedge352

246:                                              ; preds = %238, %215, %215, %215, %215, %215
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %24) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %25) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %26) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %27) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef nonnull @.str.1319, ptr noundef nonnull align 1 dereferenceable(1) %27)
          to label %247 unwind label %256

247:                                              ; preds = %246
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %28) #7
  %248 = load i32, ptr %5, align 4, !tbaa !5
  invoke void @_ZN11spirv_cross11CompilerMSL17builtin_qualifierB5cxx11EN3spv7BuiltInE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %28, ptr noundef nonnull align 8 dereferenceable(12482) %1, i32 noundef %248)
          to label %249 unwind label %258

249:                                              ; preds = %247
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %25, ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef nonnull align 8 dereferenceable(32) %28)
          to label %250 unwind label %260

250:                                              ; preds = %249
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %24, ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull @.str.1318)
          to label %251 unwind label %262

251:                                              ; preds = %250
  %252 = getelementptr inbounds i8, ptr %109, i64 32
  %253 = call noundef zeroext i1 @_ZNK11spirv_cross10VectorViewIjE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %252) #7
  %254 = select i1 %253, ptr @.str.35, ptr @.str.60
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull %254)
          to label %255 unwind label %264

255:                                              ; preds = %251
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #7
  br label %.critedge346

256:                                              ; preds = %246
  %257 = landingpad { ptr, i32 }
          cleanup
  br label %269

258:                                              ; preds = %247
  %259 = landingpad { ptr, i32 }
          cleanup
  br label %268

260:                                              ; preds = %249
  %261 = landingpad { ptr, i32 }
          cleanup
  br label %267

262:                                              ; preds = %250
  %263 = landingpad { ptr, i32 }
          cleanup
  br label %266

264:                                              ; preds = %251
  %265 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #7
  br label %266

266:                                              ; preds = %264, %262
  %.pn312 = phi { ptr, i32 } [ %265, %264 ], [ %263, %262 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #7
  br label %267

267:                                              ; preds = %266, %260
  %.pn312.pn = phi { ptr, i32 } [ %.pn312, %266 ], [ %261, %260 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #7
  br label %268

268:                                              ; preds = %267, %258
  %.pn312.pn.pn = phi { ptr, i32 } [ %.pn312.pn, %267 ], [ %259, %258 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #7
  br label %269

269:                                              ; preds = %268, %256
  %.pn312.pn.pn.pn = phi { ptr, i32 } [ %.pn312.pn.pn, %268 ], [ %257, %256 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #7
  br label %.critedge352

270:                                              ; preds = %215
  %271 = call i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvNS0_IXT_EEEILS1_1EEEv(ptr noundef nonnull align 4 dereferenceable(4) %111)
  %272 = call noundef zeroext i1 @_ZNK11spirv_cross8Compiler21has_member_decorationENS_7TypedIDILNS_5TypesE1EEEjN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %1, i32 %271, i32 noundef %3, i32 noundef 32)
  br i1 %272, label %273, label %276

273:                                              ; preds = %270
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %29) #7
  %274 = call i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvNS0_IXT_EEEILS1_1EEEv(ptr noundef nonnull align 4 dereferenceable(4) %111)
  %275 = call noundef i32 @_ZNK11spirv_cross8Compiler21get_member_decorationENS_7TypedIDILNS_5TypesE1EEEjN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %1, i32 %274, i32 noundef %3, i32 noundef 32)
  store i32 %275, ptr %29, align 4, !tbaa !9
  call void @_ZN11spirv_cross4joinIJRA13_KcjRA4_S1_EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 1 dereferenceable(13) @.str.1324, ptr noundef nonnull align 4 dereferenceable(4) %29, ptr noundef nonnull align 1 dereferenceable(4) @.str.1322)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #7
  br label %.critedge346

276:                                              ; preds = %270
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %30) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %31) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %32) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %33) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef nonnull @.str.1319, ptr noundef nonnull align 1 dereferenceable(1) %33)
          to label %277 unwind label %286

277:                                              ; preds = %276
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %34) #7
  %278 = load i32, ptr %5, align 4, !tbaa !5
  invoke void @_ZN11spirv_cross11CompilerMSL17builtin_qualifierB5cxx11EN3spv7BuiltInE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %34, ptr noundef nonnull align 8 dereferenceable(12482) %1, i32 noundef %278)
          to label %279 unwind label %288

279:                                              ; preds = %277
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %31, ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef nonnull align 8 dereferenceable(32) %34)
          to label %280 unwind label %290

280:                                              ; preds = %279
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %30, ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef nonnull @.str.1318)
          to label %281 unwind label %292

281:                                              ; preds = %280
  %282 = getelementptr inbounds i8, ptr %109, i64 32
  %283 = call noundef zeroext i1 @_ZNK11spirv_cross10VectorViewIjE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %282) #7
  %284 = select i1 %283, ptr @.str.35, ptr @.str.60
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef nonnull %284)
          to label %285 unwind label %294

285:                                              ; preds = %281
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %33) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #7
  br label %.critedge346

286:                                              ; preds = %276
  %287 = landingpad { ptr, i32 }
          cleanup
  br label %299

288:                                              ; preds = %277
  %289 = landingpad { ptr, i32 }
          cleanup
  br label %298

290:                                              ; preds = %279
  %291 = landingpad { ptr, i32 }
          cleanup
  br label %297

292:                                              ; preds = %280
  %293 = landingpad { ptr, i32 }
          cleanup
  br label %296

294:                                              ; preds = %281
  %295 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #7
  br label %296

296:                                              ; preds = %294, %292
  %.pn307 = phi { ptr, i32 } [ %295, %294 ], [ %293, %292 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #7
  br label %297

297:                                              ; preds = %296, %290
  %.pn307.pn = phi { ptr, i32 } [ %.pn307, %296 ], [ %291, %290 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #7
  br label %298

298:                                              ; preds = %297, %288
  %.pn307.pn.pn = phi { ptr, i32 } [ %.pn307.pn, %297 ], [ %289, %288 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #7
  br label %299

299:                                              ; preds = %298, %286
  %.pn307.pn.pn.pn = phi { ptr, i32 } [ %.pn307.pn.pn, %298 ], [ %287, %286 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %33) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #7
  br label %.critedge352

300:                                              ; preds = %215
  %301 = call i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvNS0_IXT_EEEILS1_1EEEv(ptr noundef nonnull align 4 dereferenceable(4) %111)
  %302 = call noundef zeroext i1 @_ZNK11spirv_cross8Compiler21has_member_decorationENS_7TypedIDILNS_5TypesE1EEEjN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %1, i32 %301, i32 noundef %3, i32 noundef 32)
  br i1 %302, label %303, label %306

303:                                              ; preds = %300
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %35) #7
  %304 = call i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvNS0_IXT_EEEILS1_1EEEv(ptr noundef nonnull align 4 dereferenceable(4) %111)
  %305 = call noundef i32 @_ZNK11spirv_cross8Compiler21get_member_decorationENS_7TypedIDILNS_5TypesE1EEEjN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %1, i32 %304, i32 noundef %3, i32 noundef 32)
  store i32 %305, ptr %35, align 4, !tbaa !9
  call void @_ZN11spirv_cross4joinIJRA13_KcjRA4_S1_EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 1 dereferenceable(13) @.str.1325, ptr noundef nonnull align 4 dereferenceable(4) %35, ptr noundef nonnull align 1 dereferenceable(4) @.str.1322)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %35) #7
  br label %.critedge346

306:                                              ; preds = %300
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %36) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %37) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %38) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %39) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef nonnull @.str.1319, ptr noundef nonnull align 1 dereferenceable(1) %39)
          to label %307 unwind label %316

307:                                              ; preds = %306
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %40) #7
  %308 = load i32, ptr %5, align 4, !tbaa !5
  invoke void @_ZN11spirv_cross11CompilerMSL17builtin_qualifierB5cxx11EN3spv7BuiltInE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %40, ptr noundef nonnull align 8 dereferenceable(12482) %1, i32 noundef %308)
          to label %309 unwind label %318

309:                                              ; preds = %307
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %37, ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef nonnull align 8 dereferenceable(32) %40)
          to label %310 unwind label %320

310:                                              ; preds = %309
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %36, ptr noundef nonnull align 8 dereferenceable(32) %37, ptr noundef nonnull @.str.1318)
          to label %311 unwind label %322

311:                                              ; preds = %310
  %312 = getelementptr inbounds i8, ptr %109, i64 32
  %313 = call noundef zeroext i1 @_ZNK11spirv_cross10VectorViewIjE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %312) #7
  %314 = select i1 %313, ptr @.str.35, ptr @.str.60
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(32) %36, ptr noundef nonnull %314)
          to label %315 unwind label %324

315:                                              ; preds = %311
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %40) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %39) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %38) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %37) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %36) #7
  br label %.critedge346

316:                                              ; preds = %306
  %317 = landingpad { ptr, i32 }
          cleanup
  br label %329

318:                                              ; preds = %307
  %319 = landingpad { ptr, i32 }
          cleanup
  br label %328

320:                                              ; preds = %309
  %321 = landingpad { ptr, i32 }
          cleanup
  br label %327

322:                                              ; preds = %310
  %323 = landingpad { ptr, i32 }
          cleanup
  br label %326

324:                                              ; preds = %311
  %325 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #7
  br label %326

326:                                              ; preds = %324, %322
  %.pn302 = phi { ptr, i32 } [ %325, %324 ], [ %323, %322 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #7
  br label %327

327:                                              ; preds = %326, %320
  %.pn302.pn = phi { ptr, i32 } [ %.pn302, %326 ], [ %321, %320 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #7
  br label %328

328:                                              ; preds = %327, %318
  %.pn302.pn.pn = phi { ptr, i32 } [ %.pn302.pn, %327 ], [ %319, %318 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %40) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #7
  br label %329

329:                                              ; preds = %328, %316
  %.pn302.pn.pn.pn = phi { ptr, i32 } [ %.pn302.pn.pn, %328 ], [ %317, %316 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %39) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %38) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %37) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %36) #7
  br label %.critedge352

330:                                              ; preds = %215
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %41) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.35, ptr noundef nonnull align 1 dereferenceable(1) %41)
          to label %331 unwind label %332

331:                                              ; preds = %330
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %41) #7
  br label %.critedge346

332:                                              ; preds = %330
  %333 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %41) #7
  br label %.critedge352

334:                                              ; preds = %214
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %42) #7
  call void @_ZN11spirv_cross11CompilerMSL35member_location_attribute_qualifierB5cxx11ERKNS_8SPIRTypeEj(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %42, ptr noundef nonnull align 8 dereferenceable(12482) %1, ptr noundef nonnull align 8 dereferenceable(336) %2, i32 noundef %3)
  %335 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %42) #7
  br i1 %335, label %.critedge354, label %336

336:                                              ; preds = %334
  invoke void @_ZN11spirv_cross4joinIJRA4_KcRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA3_S1_EEES9_DpOT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 1 dereferenceable(4) @.str.1319, ptr noundef nonnull align 8 dereferenceable(32) %42, ptr noundef nonnull align 1 dereferenceable(3) @.str.1318)
          to label %339 unwind label %337

337:                                              ; preds = %336
  %338 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %42) #7
  br label %.critedge352

339:                                              ; preds = %336
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %42) #7
  br label %.critedge346

.critedge354:                                     ; preds = %334
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %42) #7
  br label %.thread376

.thread376:                                       ; preds = %.thread412, %.critedge354, %210, %213
  %.pr403 = load i32, ptr %133, align 8, !tbaa !11
  %340 = icmp eq i32 %.pr403, 0
  br i1 %340, label %341, label %.thread376.thread

341:                                              ; preds = %.thread376
  %342 = getelementptr inbounds i8, ptr %1, i64 10151
  %343 = load i8, ptr %342, align 1, !tbaa !30, !range !182, !noundef !183
  %344 = trunc nuw i8 %343 to i1
  %345 = load i32, ptr %136, align 8
  %346 = icmp eq i32 %345, 3
  %or.cond356 = select i1 %344, i1 %346, i1 false
  br i1 %or.cond356, label %347, label %.thread376.thread

347:                                              ; preds = %341
  br i1 %110, label %348, label %352

348:                                              ; preds = %347
  %349 = load i32, ptr %5, align 4, !tbaa !5
  %350 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %111)
  %351 = call noundef i32 @_ZN11spirv_cross11CompilerMSL46get_or_allocate_builtin_output_member_locationEN3spv7BuiltInEjjPj(ptr noundef nonnull align 8 dereferenceable(12482) %1, i32 noundef %349, i32 noundef %350, i32 noundef %3, ptr noundef null)
  br label %352

352:                                              ; preds = %348, %347
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %43) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.35, ptr noundef nonnull align 1 dereferenceable(1) %43)
          to label %353 unwind label %354

353:                                              ; preds = %352
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %43) #7
  br label %.critedge346

354:                                              ; preds = %352
  %355 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %43) #7
  br label %.critedge352

.thread376.thread:                                ; preds = %.thread, %341, %.thread376
  %356 = call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL14is_tesc_shaderEv(ptr noundef nonnull align 8 dereferenceable(12482) %1)
  %357 = load i32, ptr %136, align 8
  %358 = icmp eq i32 %357, 1
  %or.cond358 = select i1 %356, i1 %358, i1 false
  br i1 %or.cond358, label %359, label %460

359:                                              ; preds = %.thread376.thread
  br i1 %110, label %360, label %.thread395

360:                                              ; preds = %359
  %361 = load i32, ptr %5, align 4, !tbaa !5
  switch i32 %361, label %430 [
    i32 8, label %362
    i32 7, label %362
    i32 41, label %394
    i32 36, label %394
    i32 14, label %426
  ]

362:                                              ; preds = %360, %360
  %363 = getelementptr inbounds i8, ptr %1, i64 10149
  %364 = load i8, ptr %363, align 1, !tbaa !198, !range !182, !noundef !183
  %365 = trunc nuw i8 %364 to i1
  br i1 %365, label %366, label %370

366:                                              ; preds = %362
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %44) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.35, ptr noundef nonnull align 1 dereferenceable(1) %44)
          to label %367 unwind label %368

367:                                              ; preds = %366
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %44) #7
  br label %.critedge346

368:                                              ; preds = %366
  %369 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %44) #7
  br label %.critedge352

370:                                              ; preds = %362
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %45) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %46) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %47) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %48) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef nonnull @.str.1319, ptr noundef nonnull align 1 dereferenceable(1) %48)
          to label %371 unwind label %380

371:                                              ; preds = %370
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %49) #7
  %372 = load i32, ptr %5, align 4, !tbaa !5
  invoke void @_ZN11spirv_cross11CompilerMSL17builtin_qualifierB5cxx11EN3spv7BuiltInE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %49, ptr noundef nonnull align 8 dereferenceable(12482) %1, i32 noundef %372)
          to label %373 unwind label %382

373:                                              ; preds = %371
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %46, ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef nonnull align 8 dereferenceable(32) %49)
          to label %374 unwind label %384

374:                                              ; preds = %373
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %45, ptr noundef nonnull align 8 dereferenceable(32) %46, ptr noundef nonnull @.str.1318)
          to label %375 unwind label %386

375:                                              ; preds = %374
  %376 = getelementptr inbounds i8, ptr %109, i64 32
  %377 = call noundef zeroext i1 @_ZNK11spirv_cross10VectorViewIjE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %376) #7
  %378 = select i1 %377, ptr @.str.35, ptr @.str.60
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(32) %45, ptr noundef nonnull %378)
          to label %379 unwind label %388

379:                                              ; preds = %375
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %49) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %48) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %47) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %46) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %45) #7
  br label %.critedge346

380:                                              ; preds = %370
  %381 = landingpad { ptr, i32 }
          cleanup
  br label %393

382:                                              ; preds = %371
  %383 = landingpad { ptr, i32 }
          cleanup
  br label %392

384:                                              ; preds = %373
  %385 = landingpad { ptr, i32 }
          cleanup
  br label %391

386:                                              ; preds = %374
  %387 = landingpad { ptr, i32 }
          cleanup
  br label %390

388:                                              ; preds = %375
  %389 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #7
  br label %390

390:                                              ; preds = %388, %386
  %.pn262 = phi { ptr, i32 } [ %389, %388 ], [ %387, %386 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #7
  br label %391

391:                                              ; preds = %390, %384
  %.pn262.pn = phi { ptr, i32 } [ %.pn262, %390 ], [ %385, %384 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #7
  br label %392

392:                                              ; preds = %391, %382
  %.pn262.pn.pn = phi { ptr, i32 } [ %.pn262.pn, %391 ], [ %383, %382 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %49) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #7
  br label %393

393:                                              ; preds = %392, %380
  %.pn262.pn.pn.pn = phi { ptr, i32 } [ %.pn262.pn.pn, %392 ], [ %381, %380 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %48) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %47) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %46) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %45) #7
  br label %.critedge352

394:                                              ; preds = %360, %360
  %395 = getelementptr inbounds i8, ptr %1, i64 10154
  %396 = load i8, ptr %395, align 2, !tbaa !199, !range !182, !noundef !183
  %397 = trunc nuw i8 %396 to i1
  br i1 %397, label %398, label %402

398:                                              ; preds = %394
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %50) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.35, ptr noundef nonnull align 1 dereferenceable(1) %50)
          to label %399 unwind label %400

399:                                              ; preds = %398
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %50) #7
  br label %.critedge346

400:                                              ; preds = %398
  %401 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %50) #7
  br label %.critedge352

402:                                              ; preds = %394
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %51) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %52) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %53) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %54) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %53, ptr noundef nonnull @.str.1319, ptr noundef nonnull align 1 dereferenceable(1) %54)
          to label %403 unwind label %412

403:                                              ; preds = %402
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %55) #7
  %404 = load i32, ptr %5, align 4, !tbaa !5
  invoke void @_ZN11spirv_cross11CompilerMSL17builtin_qualifierB5cxx11EN3spv7BuiltInE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %55, ptr noundef nonnull align 8 dereferenceable(12482) %1, i32 noundef %404)
          to label %405 unwind label %414

405:                                              ; preds = %403
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %52, ptr noundef nonnull align 8 dereferenceable(32) %53, ptr noundef nonnull align 8 dereferenceable(32) %55)
          to label %406 unwind label %416

406:                                              ; preds = %405
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %51, ptr noundef nonnull align 8 dereferenceable(32) %52, ptr noundef nonnull @.str.1318)
          to label %407 unwind label %418

407:                                              ; preds = %406
  %408 = getelementptr inbounds i8, ptr %109, i64 32
  %409 = call noundef zeroext i1 @_ZNK11spirv_cross10VectorViewIjE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %408) #7
  %410 = select i1 %409, ptr @.str.35, ptr @.str.60
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(32) %51, ptr noundef nonnull %410)
          to label %411 unwind label %420

411:                                              ; preds = %407
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %55) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %54) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %53) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %52) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %51) #7
  br label %.critedge346

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

414:                                              ; preds = %403
  %415 = landingpad { ptr, i32 }
          cleanup
  br label %424

416:                                              ; preds = %405
  %417 = landingpad { ptr, i32 }
          cleanup
  br label %423

418:                                              ; preds = %406
  %419 = landingpad { ptr, i32 }
          cleanup
  br label %422

420:                                              ; preds = %407
  %421 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #7
  br label %422

422:                                              ; preds = %420, %418
  %.pn257 = phi { ptr, i32 } [ %421, %420 ], [ %419, %418 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #7
  br label %423

423:                                              ; preds = %422, %416
  %.pn257.pn = phi { ptr, i32 } [ %.pn257, %422 ], [ %417, %416 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #7
  br label %424

424:                                              ; preds = %423, %414
  %.pn257.pn.pn = phi { ptr, i32 } [ %.pn257.pn, %423 ], [ %415, %414 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %55) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #7
  br label %425

425:                                              ; preds = %424, %412
  %.pn257.pn.pn.pn = phi { ptr, i32 } [ %.pn257.pn.pn, %424 ], [ %413, %412 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %54) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %53) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %52) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %51) #7
  br label %.critedge352

426:                                              ; preds = %360
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %56) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %56) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.35, ptr noundef nonnull align 1 dereferenceable(1) %56)
          to label %427 unwind label %428

427:                                              ; preds = %426
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %56) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %56) #7
  br label %.critedge346

428:                                              ; preds = %426
  %429 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %56) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %56) #7
  br label %.critedge352

430:                                              ; preds = %360
  %431 = getelementptr inbounds i8, ptr %1, i64 10149
  %432 = load i8, ptr %431, align 1, !tbaa !198, !range !182, !noundef !183
  %433 = trunc nuw i8 %432 to i1
  br i1 %433, label %437, label %441

.thread395:                                       ; preds = %359
  %434 = getelementptr inbounds i8, ptr %1, i64 10149
  %435 = load i8, ptr %434, align 1, !tbaa !198, !range !182, !noundef !183
  %436 = trunc nuw i8 %435 to i1
  br i1 %436, label %437, label %444

437:                                              ; preds = %.thread395, %430
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %57) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.35, ptr noundef nonnull align 1 dereferenceable(1) %57)
          to label %438 unwind label %439

438:                                              ; preds = %437
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %57) #7
  br label %.critedge346

439:                                              ; preds = %437
  %440 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %57) #7
  br label %.critedge352

441:                                              ; preds = %430
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %58) #7
  %442 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %111)
  %443 = call noundef i32 @_ZN11spirv_cross11CompilerMSL45get_or_allocate_builtin_input_member_locationEN3spv7BuiltInEjjPj(ptr noundef nonnull align 8 dereferenceable(12482) %1, i32 noundef %361, i32 noundef %442, i32 noundef %3, ptr noundef null)
  br label %447

444:                                              ; preds = %.thread395
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %58) #7
  %445 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %111)
  %446 = call noundef i32 @_ZNK11spirv_cross11CompilerMSL19get_member_locationEjjPj(ptr noundef nonnull align 8 dereferenceable(12482) %1, i32 noundef %445, i32 noundef %3, ptr noundef null)
  br label %447

447:                                              ; preds = %444, %441
  %storemerge = phi i32 [ %446, %444 ], [ %443, %441 ]
  store i32 %storemerge, ptr %58, align 4, !tbaa !9
  %.not267 = icmp eq i32 %storemerge, -1
  br i1 %.not267, label %.critedge360, label %448

448:                                              ; preds = %447
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %59) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %60) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %61) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %61) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %60, ptr noundef nonnull @.str.1321, ptr noundef nonnull align 1 dereferenceable(1) %61)
          to label %449 unwind label %452

449:                                              ; preds = %448
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %62) #7
  call void @_ZN11spirv_cross17convert_to_stringIjTnNSt9enable_ifIXntsr3std17is_floating_pointIT_EE5valueEiE4typeELi0EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS2_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %62, ptr noundef nonnull align 4 dereferenceable(4) %58)
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %59, ptr noundef nonnull align 8 dereferenceable(32) %60, ptr noundef nonnull align 8 dereferenceable(32) %62)
          to label %450 unwind label %454

450:                                              ; preds = %449
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(32) %59, ptr noundef nonnull @.str.1322)
          to label %451 unwind label %456

451:                                              ; preds = %450
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %62) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %61) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %61) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %60) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %59) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %58) #7
  br label %.critedge346

452:                                              ; preds = %448
  %453 = landingpad { ptr, i32 }
          cleanup
  br label %459

454:                                              ; preds = %449
  %455 = landingpad { ptr, i32 }
          cleanup
  br label %458

456:                                              ; preds = %450
  %457 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #7
  br label %458

458:                                              ; preds = %456, %454
  %.pn268 = phi { ptr, i32 } [ %457, %456 ], [ %455, %454 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %62) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #7
  br label %459

459:                                              ; preds = %458, %452
  %.pn268.pn = phi { ptr, i32 } [ %.pn268, %458 ], [ %453, %452 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %61) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %61) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %60) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %59) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %58) #7
  br label %.critedge352

.critedge360:                                     ; preds = %447
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %58) #7
  br label %460

460:                                              ; preds = %.critedge360, %.thread376.thread
  %461 = call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL14is_tesc_shaderEv(ptr noundef nonnull align 8 dereferenceable(12482) %1)
  %462 = load i32, ptr %136, align 8
  %463 = icmp eq i32 %462, 3
  %or.cond362 = select i1 %461, i1 %463, i1 false
  br i1 %or.cond362, label %464, label %473

464:                                              ; preds = %460
  br i1 %110, label %465, label %469

465:                                              ; preds = %464
  %466 = load i32, ptr %5, align 4, !tbaa !5
  %467 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %111)
  %468 = call noundef i32 @_ZN11spirv_cross11CompilerMSL46get_or_allocate_builtin_output_member_locationEN3spv7BuiltInEjjPj(ptr noundef nonnull align 8 dereferenceable(12482) %1, i32 noundef %466, i32 noundef %467, i32 noundef %3, ptr noundef null)
  br label %469

469:                                              ; preds = %465, %464
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %63) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %63) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.35, ptr noundef nonnull align 1 dereferenceable(1) %63)
          to label %470 unwind label %471

470:                                              ; preds = %469
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %63) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %63) #7
  br label %.critedge346

471:                                              ; preds = %469
  %472 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %63) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %63) #7
  br label %.critedge352

473:                                              ; preds = %460
  %474 = call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL14is_tese_shaderEv(ptr noundef nonnull align 8 dereferenceable(12482) %1)
  %475 = load i32, ptr %136, align 8
  %476 = icmp eq i32 %475, 1
  %or.cond364 = select i1 %474, i1 %476, i1 false
  br i1 %or.cond364, label %477, label %540

477:                                              ; preds = %473
  br i1 %110, label %478, label %501

478:                                              ; preds = %477
  %479 = load i32, ptr %5, align 4, !tbaa !5
  switch i32 %479, label %501 [
    i32 7, label %480
    i32 13, label %480
    i32 14, label %497
  ]

480:                                              ; preds = %478, %478
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %64) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %65) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %66) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %66) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %65, ptr noundef nonnull @.str.1319, ptr noundef nonnull align 1 dereferenceable(1) %66)
          to label %481 unwind label %486

481:                                              ; preds = %480
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %67) #7
  %482 = load i32, ptr %5, align 4, !tbaa !5
  invoke void @_ZN11spirv_cross11CompilerMSL17builtin_qualifierB5cxx11EN3spv7BuiltInE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %67, ptr noundef nonnull align 8 dereferenceable(12482) %1, i32 noundef %482)
          to label %483 unwind label %488

483:                                              ; preds = %481
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %64, ptr noundef nonnull align 8 dereferenceable(32) %65, ptr noundef nonnull align 8 dereferenceable(32) %67)
          to label %484 unwind label %490

484:                                              ; preds = %483
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(32) %64, ptr noundef nonnull @.str.1318)
          to label %485 unwind label %492

485:                                              ; preds = %484
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %67) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %66) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %66) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %65) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %64) #7
  br label %.critedge346

486:                                              ; preds = %480
  %487 = landingpad { ptr, i32 }
          cleanup
  br label %496

488:                                              ; preds = %481
  %489 = landingpad { ptr, i32 }
          cleanup
  br label %495

490:                                              ; preds = %483
  %491 = landingpad { ptr, i32 }
          cleanup
  br label %494

492:                                              ; preds = %484
  %493 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #7
  br label %494

494:                                              ; preds = %492, %490
  %.pn271 = phi { ptr, i32 } [ %493, %492 ], [ %491, %490 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #7
  br label %495

495:                                              ; preds = %494, %488
  %.pn271.pn = phi { ptr, i32 } [ %.pn271, %494 ], [ %489, %488 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %67) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #7
  br label %496

496:                                              ; preds = %495, %486
  %.pn271.pn.pn = phi { ptr, i32 } [ %.pn271.pn, %495 ], [ %487, %486 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %66) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %66) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %65) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %64) #7
  br label %.critedge352

497:                                              ; preds = %478
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %68) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.35, ptr noundef nonnull align 1 dereferenceable(1) %68)
          to label %498 unwind label %499

498:                                              ; preds = %497
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %68) #7
  br label %.critedge346

499:                                              ; preds = %497
  %500 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %68) #7
  br label %.critedge352

501:                                              ; preds = %478, %477
  %502 = getelementptr inbounds i8, ptr %1, i64 10150
  %503 = load i8, ptr %502, align 2, !tbaa !200, !range !182, !noundef !183
  %504 = trunc nuw i8 %503 to i1
  br i1 %504, label %505, label %509

505:                                              ; preds = %501
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %69) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %69) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.35, ptr noundef nonnull align 1 dereferenceable(1) %69)
          to label %506 unwind label %507

506:                                              ; preds = %505
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %69) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %69) #7
  br label %.critedge346

507:                                              ; preds = %505
  %508 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %69) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %69) #7
  br label %.critedge352

509:                                              ; preds = %501
  %510 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewINS_7TypedIDILNS_5TypesE1EEEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %105, i64 noundef %106) #7
  %.sroa.024.0.copyload = load i32, ptr %510, align 4, !tbaa !9
  %511 = call noundef nonnull align 8 dereferenceable(336) ptr @_ZNK11spirv_cross8Compiler8get_typeENS_7TypedIDILNS_5TypesE1EEE(ptr noundef nonnull align 8 dereferenceable(3176) %1, i32 %.sroa.024.0.copyload)
  %512 = getelementptr inbounds i8, ptr %511, i64 16
  %513 = load i32, ptr %512, align 8, !tbaa !201
  %514 = icmp eq i32 %513, 21
  br i1 %514, label %515, label %519

515:                                              ; preds = %509
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %70) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %70) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.35, ptr noundef nonnull align 1 dereferenceable(1) %70)
          to label %516 unwind label %517

516:                                              ; preds = %515
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %70) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %70) #7
  br label %.critedge346

517:                                              ; preds = %515
  %518 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %70) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %70) #7
  br label %.critedge352

519:                                              ; preds = %509
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %71) #7
  br i1 %110, label %520, label %524

520:                                              ; preds = %519
  %521 = load i32, ptr %5, align 4, !tbaa !5
  %522 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %111)
  %523 = call noundef i32 @_ZN11spirv_cross11CompilerMSL45get_or_allocate_builtin_input_member_locationEN3spv7BuiltInEjjPj(ptr noundef nonnull align 8 dereferenceable(12482) %1, i32 noundef %521, i32 noundef %522, i32 noundef %3, ptr noundef null)
  br label %527

524:                                              ; preds = %519
  %525 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %111)
  %526 = call noundef i32 @_ZNK11spirv_cross11CompilerMSL19get_member_locationEjjPj(ptr noundef nonnull align 8 dereferenceable(12482) %1, i32 noundef %525, i32 noundef %3, ptr noundef null)
  br label %527

527:                                              ; preds = %524, %520
  %storemerge275 = phi i32 [ %526, %524 ], [ %523, %520 ]
  store i32 %storemerge275, ptr %71, align 4, !tbaa !9
  %.not276 = icmp eq i32 %storemerge275, -1
  br i1 %.not276, label %.critedge366, label %528

528:                                              ; preds = %527
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %72) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %73) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %74) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %74) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %73, ptr noundef nonnull @.str.1321, ptr noundef nonnull align 1 dereferenceable(1) %74)
          to label %529 unwind label %532

529:                                              ; preds = %528
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %75) #7
  call void @_ZN11spirv_cross17convert_to_stringIjTnNSt9enable_ifIXntsr3std17is_floating_pointIT_EE5valueEiE4typeELi0EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS2_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %75, ptr noundef nonnull align 4 dereferenceable(4) %71)
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %72, ptr noundef nonnull align 8 dereferenceable(32) %73, ptr noundef nonnull align 8 dereferenceable(32) %75)
          to label %530 unwind label %534

530:                                              ; preds = %529
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(32) %72, ptr noundef nonnull @.str.1322)
          to label %531 unwind label %536

531:                                              ; preds = %530
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %75) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %73) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %74) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %74) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %73) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %72) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %71) #7
  br label %.critedge346

532:                                              ; preds = %528
  %533 = landingpad { ptr, i32 }
          cleanup
  br label %539

534:                                              ; preds = %529
  %535 = landingpad { ptr, i32 }
          cleanup
  br label %538

536:                                              ; preds = %530
  %537 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #7
  br label %538

538:                                              ; preds = %536, %534
  %.pn277 = phi { ptr, i32 } [ %537, %536 ], [ %535, %534 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %75) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %73) #7
  br label %539

539:                                              ; preds = %538, %532
  %.pn277.pn = phi { ptr, i32 } [ %.pn277, %538 ], [ %533, %532 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %74) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %74) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %73) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %72) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %71) #7
  br label %.critedge352

.critedge366:                                     ; preds = %527
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %71) #7
  %.pre = load i32, ptr %136, align 8
  br label %540

540:                                              ; preds = %.critedge366, %473
  %541 = phi i32 [ %.pre, %.critedge366 ], [ %475, %473 ]
  %542 = load i32, ptr %133, align 8, !tbaa !11
  %543 = icmp eq i32 %542, 4
  %544 = icmp eq i32 %541, 1
  %or.cond368 = select i1 %543, i1 %544, i1 false
  br i1 %or.cond368, label %545, label %683

545:                                              ; preds = %540
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %76) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #7
  br i1 %110, label %546, label %577

546:                                              ; preds = %545
  %547 = load i32, ptr %5, align 4, !tbaa !5
  switch i32 %547, label %582 [
    i32 4440, label %548
    i32 17, label %556
    i32 16, label %556
    i32 15, label %556
    i32 18, label %556
    i32 20, label %556
    i32 9, label %556
    i32 5286, label %556
    i32 5287, label %556
    i32 3, label %561
    i32 4, label %569
  ]

548:                                              ; preds = %546
  %549 = getelementptr inbounds i8, ptr %1, i64 10123
  %550 = load i8, ptr %549, align 1, !tbaa !202, !range !182, !noundef !183
  %551 = trunc nuw i8 %550 to i1
  br i1 %551, label %552, label %.thread397

552:                                              ; preds = %548
  %553 = getelementptr inbounds i8, ptr %1, i64 10124
  %554 = load i8, ptr %553, align 4, !tbaa !203, !range !182, !noundef !183
  %555 = trunc nuw i8 %554 to i1
  br i1 %555, label %556, label %thread-pre-split

556:                                              ; preds = %552, %546, %546, %546, %546, %546, %546, %546, %546
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %77) #7
  invoke void @_ZN11spirv_cross11CompilerMSL17builtin_qualifierB5cxx11EN3spv7BuiltInE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %77, ptr noundef nonnull align 8 dereferenceable(12482) %1, i32 noundef %547)
          to label %557 unwind label %559

557:                                              ; preds = %556
  %558 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %76, ptr noundef nonnull align 8 dereferenceable(32) %77) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %77) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %77) #7
  br label %thread-pre-split

559:                                              ; preds = %556
  %560 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %77) #7
  br label %682

561:                                              ; preds = %546
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %78) #7
  %562 = invoke i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvNS0_IXT_EEEILS1_1EEEv(ptr noundef nonnull align 4 dereferenceable(4) %111)
          to label %563 unwind label %567

563:                                              ; preds = %561
  %564 = invoke noundef i32 @_ZNK11spirv_cross8Compiler21get_member_decorationENS_7TypedIDILNS_5TypesE1EEEjN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %1, i32 %562, i32 noundef %3, i32 noundef 32)
          to label %565 unwind label %567

565:                                              ; preds = %563
  store i32 %564, ptr %78, align 4, !tbaa !9
  invoke void @_ZN11spirv_cross4joinIJRA13_KcjRA4_S1_EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 1 dereferenceable(13) @.str.1324, ptr noundef nonnull align 4 dereferenceable(4) %78, ptr noundef nonnull align 1 dereferenceable(4) @.str.1322)
          to label %566 unwind label %567

566:                                              ; preds = %565
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %78) #7
  br label %.critedge346.critedge

567:                                              ; preds = %565, %563, %561
  %568 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %78) #7
  br label %682

569:                                              ; preds = %546
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %79) #7
  %570 = invoke i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvNS0_IXT_EEEILS1_1EEEv(ptr noundef nonnull align 4 dereferenceable(4) %111)
          to label %571 unwind label %575

571:                                              ; preds = %569
  %572 = invoke noundef i32 @_ZNK11spirv_cross8Compiler21get_member_decorationENS_7TypedIDILNS_5TypesE1EEEjN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %1, i32 %570, i32 noundef %3, i32 noundef 32)
          to label %573 unwind label %575

573:                                              ; preds = %571
  store i32 %572, ptr %79, align 4, !tbaa !9
  invoke void @_ZN11spirv_cross4joinIJRA13_KcjRA4_S1_EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 1 dereferenceable(13) @.str.1325, ptr noundef nonnull align 4 dereferenceable(4) %79, ptr noundef nonnull align 1 dereferenceable(4) @.str.1322)
          to label %574 unwind label %575

574:                                              ; preds = %573
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %79) #7
  br label %.critedge346.critedge

575:                                              ; preds = %573, %571, %569
  %576 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %79) #7
  br label %682

577:                                              ; preds = %545
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %80) #7
  invoke void @_ZN11spirv_cross11CompilerMSL35member_location_attribute_qualifierB5cxx11ERKNS_8SPIRTypeEj(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %80, ptr noundef nonnull align 8 dereferenceable(12482) %1, ptr noundef nonnull align 8 dereferenceable(336) %2, i32 noundef %3)
          to label %578 unwind label %580

578:                                              ; preds = %577
  %579 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %76, ptr noundef nonnull align 8 dereferenceable(32) %80) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %80) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %80) #7
  br label %thread-pre-split

580:                                              ; preds = %577
  %581 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %80) #7
  br label %682

thread-pre-split:                                 ; preds = %578, %552, %557
  %.pr = load i32, ptr %5, align 4, !tbaa !5
  br label %582

582:                                              ; preds = %thread-pre-split, %546
  %583 = phi i32 [ %.pr, %thread-pre-split ], [ %547, %546 ]
  %584 = icmp eq i32 %583, 5286
  br i1 %584, label %585, label %.thread397

585:                                              ; preds = %582
  %586 = invoke i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvNS0_IXT_EEEILS1_1EEEv(ptr noundef nonnull align 4 dereferenceable(4) %111)
          to label %587 unwind label %592

587:                                              ; preds = %585
  %588 = invoke noundef zeroext i1 @_ZNK11spirv_cross8Compiler21has_member_decorationENS_7TypedIDILNS_5TypesE1EEEjN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %1, i32 %586, i32 noundef %3, i32 noundef 13)
          to label %589 unwind label %592

589:                                              ; preds = %587
  br i1 %588, label %590, label %.thread397

590:                                              ; preds = %589
  %591 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %591, ptr noundef nonnull @.str.1326)
          to label %.invoke413 unwind label %594

592:                                              ; preds = %.invoke413, %.invoke, %667, %661, %654, %652, %649, %647, %637, %632, %630, %627, %625, %616, %611, %609, %607, %602, %600, %587, %585
  %593 = landingpad { ptr, i32 }
          cleanup
  br label %682

594:                                              ; preds = %590
  %595 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %591) #7
  br label %682

.thread397:                                       ; preds = %548, %589, %582
  %596 = call noundef zeroext i1 @_ZN11spirv_crossL16type_is_integralERKNS_8SPIRTypeE(ptr noundef nonnull align 8 dereferenceable(336) %109)
  br i1 %596, label %671, label %597

597:                                              ; preds = %.thread397
  %598 = load i32, ptr %5, align 4
  %599 = icmp eq i32 %598, 15
  %or.cond.not = select i1 %110, i1 %599, i1 false
  br i1 %or.cond.not, label %671, label %600

600:                                              ; preds = %597
  %601 = invoke i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvNS0_IXT_EEEILS1_1EEEv(ptr noundef nonnull align 4 dereferenceable(4) %111)
          to label %602 unwind label %592

602:                                              ; preds = %600
  %603 = invoke noundef zeroext i1 @_ZNK11spirv_cross8Compiler21has_member_decorationENS_7TypedIDILNS_5TypesE1EEEjN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %1, i32 %601, i32 noundef %3, i32 noundef 14)
          to label %604 unwind label %592

604:                                              ; preds = %602
  br i1 %603, label %605, label %609

605:                                              ; preds = %604
  %606 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %76) #7
  br i1 %606, label %.invoke, label %607

607:                                              ; preds = %605
  %608 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %76, ptr noundef nonnull @.str.55)
          to label %.invoke unwind label %592

609:                                              ; preds = %604
  %610 = invoke i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvNS0_IXT_EEEILS1_1EEEv(ptr noundef nonnull align 4 dereferenceable(4) %111)
          to label %611 unwind label %592

611:                                              ; preds = %609
  %612 = invoke noundef zeroext i1 @_ZNK11spirv_cross8Compiler21has_member_decorationENS_7TypedIDILNS_5TypesE1EEEjN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %1, i32 %610, i32 noundef %3, i32 noundef 16)
          to label %613 unwind label %592

613:                                              ; preds = %611
  br i1 %612, label %614, label %630

614:                                              ; preds = %613
  %615 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %76) #7
  br i1 %615, label %618, label %616

616:                                              ; preds = %614
  %617 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %76, ptr noundef nonnull @.str.55)
          to label %618 unwind label %592

618:                                              ; preds = %616, %614
  %619 = load i32, ptr %5, align 4
  %620 = and i32 %619, -2
  %or.cond7 = icmp eq i32 %620, 5286
  br i1 %or.cond7, label %621, label %625

621:                                              ; preds = %618
  %622 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %622, ptr noundef nonnull @.str.1328)
          to label %.invoke413 unwind label %623

623:                                              ; preds = %621
  %624 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %622) #7
  br label %682

625:                                              ; preds = %618
  %626 = invoke i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvNS0_IXT_EEEILS1_1EEEv(ptr noundef nonnull align 4 dereferenceable(4) %111)
          to label %627 unwind label %592

627:                                              ; preds = %625
  %628 = invoke noundef zeroext i1 @_ZNK11spirv_cross8Compiler21has_member_decorationENS_7TypedIDILNS_5TypesE1EEEjN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %1, i32 %626, i32 noundef %3, i32 noundef 13)
          to label %629 unwind label %592

629:                                              ; preds = %627
  %.str.1329..str.1330 = select i1 %628, ptr @.str.1329, ptr @.str.1330
  br label %.invoke

630:                                              ; preds = %613
  %631 = invoke i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvNS0_IXT_EEEILS1_1EEEv(ptr noundef nonnull align 4 dereferenceable(4) %111)
          to label %632 unwind label %592

632:                                              ; preds = %630
  %633 = invoke noundef zeroext i1 @_ZNK11spirv_cross8Compiler21has_member_decorationENS_7TypedIDILNS_5TypesE1EEEjN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %1, i32 %631, i32 noundef %3, i32 noundef 17)
          to label %634 unwind label %592

634:                                              ; preds = %632
  br i1 %633, label %635, label %652

635:                                              ; preds = %634
  %636 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %76) #7
  br i1 %636, label %639, label %637

637:                                              ; preds = %635
  %638 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %76, ptr noundef nonnull @.str.55)
          to label %639 unwind label %592

639:                                              ; preds = %637, %635
  %640 = load i32, ptr %5, align 4
  %641 = and i32 %640, -2
  %or.cond9 = icmp eq i32 %641, 5286
  br i1 %or.cond9, label %642, label %647

642:                                              ; preds = %639
  %643 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %643, ptr noundef nonnull @.str.1331)
          to label %.invoke413 unwind label %645

.invoke413:                                       ; preds = %590, %642, %621
  %644 = phi ptr [ %622, %621 ], [ %643, %642 ], [ %591, %590 ]
  invoke void @__cxa_throw(ptr nonnull %644, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #8
          to label %.cont unwind label %592

.cont:                                            ; preds = %.invoke413
  unreachable

645:                                              ; preds = %642
  %646 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %643) #7
  br label %682

647:                                              ; preds = %639
  %648 = invoke i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvNS0_IXT_EEEILS1_1EEEv(ptr noundef nonnull align 4 dereferenceable(4) %111)
          to label %649 unwind label %592

649:                                              ; preds = %647
  %650 = invoke noundef zeroext i1 @_ZNK11spirv_cross8Compiler21has_member_decorationENS_7TypedIDILNS_5TypesE1EEEjN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %1, i32 %648, i32 noundef %3, i32 noundef 13)
          to label %651 unwind label %592

651:                                              ; preds = %649
  %.str.1332..str.1333 = select i1 %650, ptr @.str.1332, ptr @.str.1333
  br label %.invoke

652:                                              ; preds = %634
  %653 = invoke i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvNS0_IXT_EEEILS1_1EEEv(ptr noundef nonnull align 4 dereferenceable(4) %111)
          to label %654 unwind label %592

654:                                              ; preds = %652
  %655 = invoke noundef zeroext i1 @_ZNK11spirv_cross8Compiler21has_member_decorationENS_7TypedIDILNS_5TypesE1EEEjN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %1, i32 %653, i32 noundef %3, i32 noundef 13)
          to label %656 unwind label %592

656:                                              ; preds = %654
  %657 = load i32, ptr %5, align 4
  %658 = icmp eq i32 %657, 5287
  %or.cond11 = select i1 %655, i1 true, i1 %658
  br i1 %or.cond11, label %659, label %663

659:                                              ; preds = %656
  %660 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %76) #7
  br i1 %660, label %.invoke, label %661

661:                                              ; preds = %659
  %662 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %76, ptr noundef nonnull @.str.55)
          to label %.invoke unwind label %592

663:                                              ; preds = %656
  %664 = icmp eq i32 %657, 5286
  br i1 %664, label %665, label %671

665:                                              ; preds = %663
  %666 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %76) #7
  br i1 %666, label %.invoke, label %667

667:                                              ; preds = %665
  %668 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %76, ptr noundef nonnull @.str.55)
          to label %.invoke unwind label %592

.invoke:                                          ; preds = %665, %667, %659, %661, %651, %629, %605, %607
  %669 = phi ptr [ @.str.1327, %607 ], [ @.str.1327, %605 ], [ %.str.1329..str.1330, %629 ], [ %.str.1332..str.1333, %651 ], [ @.str.1334, %661 ], [ @.str.1334, %659 ], [ @.str.1335, %667 ], [ @.str.1335, %665 ]
  %670 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %76, ptr noundef nonnull %669)
          to label %671 unwind label %592

671:                                              ; preds = %.invoke, %663, %597, %.thread397
  %672 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %76) #7
  br i1 %672, label %681, label %673

673:                                              ; preds = %671
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %81) #7
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %81, ptr noundef nonnull @.str.1319, ptr noundef nonnull align 8 dereferenceable(32) %76)
          to label %674 unwind label %676

674:                                              ; preds = %673
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(32) %81, ptr noundef nonnull @.str.1318)
          to label %675 unwind label %678

675:                                              ; preds = %674
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %81) #7
  br label %.critedge346.critedge

676:                                              ; preds = %673
  %677 = landingpad { ptr, i32 }
          cleanup
  br label %680

678:                                              ; preds = %674
  %679 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #7
  br label %680

680:                                              ; preds = %678, %676
  %.pn281 = phi { ptr, i32 } [ %679, %678 ], [ %677, %676 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %81) #7
  br label %682

681:                                              ; preds = %671
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %76) #7
  %.pre410 = load i32, ptr %133, align 8, !tbaa !11
  %.pre411 = load i32, ptr %136, align 8
  br label %683

682:                                              ; preds = %680, %645, %623, %594, %592, %580, %575, %567, %559
  %.pn300 = phi { ptr, i32 } [ %593, %592 ], [ %595, %594 ], [ %.pn281, %680 ], [ %624, %623 ], [ %646, %645 ], [ %576, %575 ], [ %568, %567 ], [ %560, %559 ], [ %581, %580 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %76) #7
  br label %.critedge352

683:                                              ; preds = %681, %540
  %684 = phi i32 [ %.pre411, %681 ], [ %541, %540 ]
  %685 = phi i32 [ %.pre410, %681 ], [ %542, %540 ]
  %686 = icmp eq i32 %685, 4
  %687 = icmp eq i32 %684, 3
  %or.cond371 = select i1 %686, i1 %687, i1 false
  br i1 %or.cond371, label %688, label %783

688:                                              ; preds = %683
  br i1 %110, label %689, label %753

689:                                              ; preds = %688
  %690 = load i32, ptr %5, align 4, !tbaa !5
  switch i32 %690, label %749 [
    i32 5014, label %691
    i32 22, label %724
    i32 20, label %732
  ]

691:                                              ; preds = %689
  %692 = getelementptr inbounds i8, ptr %1, i64 10118
  %693 = load i8, ptr %692, align 2, !tbaa !204, !range !182, !noundef !183
  %694 = trunc nuw i8 %693 to i1
  br i1 %694, label %699, label %695

695:                                              ; preds = %691
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %82) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %82) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.35, ptr noundef nonnull align 1 dereferenceable(1) %82)
          to label %696 unwind label %697

696:                                              ; preds = %695
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %82) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %82) #7
  br label %.critedge346

697:                                              ; preds = %695
  %698 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %82) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %82) #7
  br label %.critedge352

699:                                              ; preds = %691
  %700 = getelementptr inbounds i8, ptr %1, i64 10036
  %701 = call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options20supports_msl_versionEjjj(ptr noundef nonnull align 4 dereferenceable(137) %700, i32 noundef 2, i32 noundef 1, i32 noundef 0)
  br i1 %701, label %707, label %702

702:                                              ; preds = %699
  %703 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %703, ptr noundef nonnull @.str.1336)
          to label %704 unwind label %705

704:                                              ; preds = %702
  call void @__cxa_throw(ptr nonnull %703, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #8
  unreachable

705:                                              ; preds = %702
  %706 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %703) #7
  br label %.critedge352

707:                                              ; preds = %699
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %83) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %84) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %85) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %85) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %84, ptr noundef nonnull @.str.1319, ptr noundef nonnull align 1 dereferenceable(1) %85)
          to label %708 unwind label %713

708:                                              ; preds = %707
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %86) #7
  %709 = load i32, ptr %5, align 4, !tbaa !5
  invoke void @_ZN11spirv_cross11CompilerMSL17builtin_qualifierB5cxx11EN3spv7BuiltInE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %86, ptr noundef nonnull align 8 dereferenceable(12482) %1, i32 noundef %709)
          to label %710 unwind label %715

710:                                              ; preds = %708
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %83, ptr noundef nonnull align 8 dereferenceable(32) %84, ptr noundef nonnull align 8 dereferenceable(32) %86)
          to label %711 unwind label %717

711:                                              ; preds = %710
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(32) %83, ptr noundef nonnull @.str.1318)
          to label %712 unwind label %719

712:                                              ; preds = %711
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %83) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %86) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %86) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %84) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %85) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %85) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %84) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %83) #7
  br label %.critedge346

713:                                              ; preds = %707
  %714 = landingpad { ptr, i32 }
          cleanup
  br label %723

715:                                              ; preds = %708
  %716 = landingpad { ptr, i32 }
          cleanup
  br label %722

717:                                              ; preds = %710
  %718 = landingpad { ptr, i32 }
          cleanup
  br label %721

719:                                              ; preds = %711
  %720 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %83) #7
  br label %721

721:                                              ; preds = %719, %717
  %.pn296 = phi { ptr, i32 } [ %720, %719 ], [ %718, %717 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %86) #7
  br label %722

722:                                              ; preds = %721, %715
  %.pn296.pn = phi { ptr, i32 } [ %.pn296, %721 ], [ %716, %715 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %86) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %84) #7
  br label %723

723:                                              ; preds = %722, %713
  %.pn296.pn.pn = phi { ptr, i32 } [ %.pn296.pn, %722 ], [ %714, %713 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %85) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %85) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %84) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %83) #7
  br label %.critedge352

724:                                              ; preds = %689
  %725 = getelementptr inbounds i8, ptr %1, i64 10117
  %726 = load i8, ptr %725, align 1, !tbaa !205, !range !182, !noundef !183
  %727 = trunc nuw i8 %726 to i1
  br i1 %727, label %732, label %728

728:                                              ; preds = %724
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %87) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %87) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.35, ptr noundef nonnull align 1 dereferenceable(1) %87)
          to label %729 unwind label %730

729:                                              ; preds = %728
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %87) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %87) #7
  br label %.critedge346

730:                                              ; preds = %728
  %731 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %87) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %87) #7
  br label %.critedge352

732:                                              ; preds = %724, %689
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %88) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %89) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %90) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %90) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %89, ptr noundef nonnull @.str.1319, ptr noundef nonnull align 1 dereferenceable(1) %90)
          to label %733 unwind label %738

733:                                              ; preds = %732
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %91) #7
  %734 = load i32, ptr %5, align 4, !tbaa !5
  invoke void @_ZN11spirv_cross11CompilerMSL17builtin_qualifierB5cxx11EN3spv7BuiltInE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %91, ptr noundef nonnull align 8 dereferenceable(12482) %1, i32 noundef %734)
          to label %735 unwind label %740

735:                                              ; preds = %733
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %88, ptr noundef nonnull align 8 dereferenceable(32) %89, ptr noundef nonnull align 8 dereferenceable(32) %91)
          to label %736 unwind label %742

736:                                              ; preds = %735
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(32) %88, ptr noundef nonnull @.str.1318)
          to label %737 unwind label %744

737:                                              ; preds = %736
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %88) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %91) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %91) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %89) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %90) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %90) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %89) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %88) #7
  br label %.critedge346

738:                                              ; preds = %732
  %739 = landingpad { ptr, i32 }
          cleanup
  br label %748

740:                                              ; preds = %733
  %741 = landingpad { ptr, i32 }
          cleanup
  br label %747

742:                                              ; preds = %735
  %743 = landingpad { ptr, i32 }
          cleanup
  br label %746

744:                                              ; preds = %736
  %745 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %88) #7
  br label %746

746:                                              ; preds = %744, %742
  %.pn292 = phi { ptr, i32 } [ %745, %744 ], [ %743, %742 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %91) #7
  br label %747

747:                                              ; preds = %746, %740
  %.pn292.pn = phi { ptr, i32 } [ %.pn292, %746 ], [ %741, %740 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %91) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %89) #7
  br label %748

748:                                              ; preds = %747, %738
  %.pn292.pn.pn = phi { ptr, i32 } [ %.pn292.pn, %747 ], [ %739, %738 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %90) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %90) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %89) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %88) #7
  br label %.critedge352

749:                                              ; preds = %689
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %92) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %92) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.35, ptr noundef nonnull align 1 dereferenceable(1) %92)
          to label %750 unwind label %751

750:                                              ; preds = %749
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %92) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %92) #7
  br label %.critedge346

751:                                              ; preds = %749
  %752 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %92) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %92) #7
  br label %.critedge352

753:                                              ; preds = %688
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %93) #7
  %754 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %111)
  %755 = call noundef i32 @_ZNK11spirv_cross11CompilerMSL19get_member_locationEjjPj(ptr noundef nonnull align 8 dereferenceable(12482) %1, i32 noundef %754, i32 noundef %3, ptr noundef null)
  store i32 %755, ptr %93, align 4, !tbaa !9
  %.not = icmp eq i32 %755, -1
  br i1 %.not, label %.thread401, label %756

756:                                              ; preds = %753
  %757 = getelementptr inbounds i8, ptr %1, i64 10108
  %758 = load i32, ptr %757, align 4, !tbaa !206
  %759 = shl nuw i32 1, %755
  %760 = and i32 %758, %759
  %.not287 = icmp eq i32 %760, 0
  br i1 %.not287, label %761, label %765

761:                                              ; preds = %756
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %94) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %94) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.35, ptr noundef nonnull align 1 dereferenceable(1) %94)
          to label %762 unwind label %763

762:                                              ; preds = %761
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %94) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %94) #7
  br label %781

763:                                              ; preds = %761
  %764 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %94) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %94) #7
  br label %782

765:                                              ; preds = %756
  %766 = call i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvNS0_IXT_EEEILS1_1EEEv(ptr noundef nonnull align 4 dereferenceable(4) %111)
  %767 = call noundef zeroext i1 @_ZNK11spirv_cross8Compiler21has_member_decorationENS_7TypedIDILNS_5TypesE1EEEjN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %1, i32 %766, i32 noundef %3, i32 noundef 32)
  br i1 %767, label %768, label %771

768:                                              ; preds = %765
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %95) #7
  %769 = call i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvNS0_IXT_EEEILS1_1EEEv(ptr noundef nonnull align 4 dereferenceable(4) %111)
  %770 = call noundef i32 @_ZNK11spirv_cross8Compiler21get_member_decorationENS_7TypedIDILNS_5TypesE1EEEjN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %1, i32 %769, i32 noundef %3, i32 noundef 32)
  store i32 %770, ptr %95, align 4, !tbaa !9
  call void @_ZN11spirv_cross4joinIJRA10_KcRjS3_jRA4_S1_EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 1 dereferenceable(10) @.str.1337, ptr noundef nonnull align 4 dereferenceable(4) %93, ptr noundef nonnull align 1 dereferenceable(10) @.str.1338, ptr noundef nonnull align 4 dereferenceable(4) %95, ptr noundef nonnull align 1 dereferenceable(4) @.str.1322)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %95) #7
  br label %781

771:                                              ; preds = %765
  call void @_ZN11spirv_cross4joinIJRA10_KcRjRA4_S1_EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 1 dereferenceable(10) @.str.1337, ptr noundef nonnull align 4 dereferenceable(4) %93, ptr noundef nonnull align 1 dereferenceable(4) @.str.1322)
  br label %781

.thread401:                                       ; preds = %753
  %772 = call i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvNS0_IXT_EEEILS1_1EEEv(ptr noundef nonnull align 4 dereferenceable(4) %111)
  %773 = call noundef zeroext i1 @_ZNK11spirv_cross8Compiler21has_member_decorationENS_7TypedIDILNS_5TypesE1EEEjN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %1, i32 %772, i32 noundef %3, i32 noundef 32)
  br i1 %773, label %774, label %777

774:                                              ; preds = %.thread401
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %96) #7
  %775 = call i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvNS0_IXT_EEEILS1_1EEEv(ptr noundef nonnull align 4 dereferenceable(4) %111)
  %776 = call noundef i32 @_ZNK11spirv_cross8Compiler21get_member_decorationENS_7TypedIDILNS_5TypesE1EEEjN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %1, i32 %775, i32 noundef %3, i32 noundef 32)
  store i32 %776, ptr %96, align 4, !tbaa !9
  call void @_ZN11spirv_cross4joinIJRA10_KcjRA4_S1_EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 1 dereferenceable(10) @.str.1339, ptr noundef nonnull align 4 dereferenceable(4) %96, ptr noundef nonnull align 1 dereferenceable(4) @.str.1322)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %96) #7
  br label %781

777:                                              ; preds = %.thread401
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %97) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %97) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.35, ptr noundef nonnull align 1 dereferenceable(1) %97)
          to label %778 unwind label %779

778:                                              ; preds = %777
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %97) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %97) #7
  br label %781

779:                                              ; preds = %777
  %780 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %97) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %97) #7
  br label %782

781:                                              ; preds = %778, %774, %771, %768, %762
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %93) #7
  br label %.critedge346

782:                                              ; preds = %779, %763
  %.pn290 = phi { ptr, i32 } [ %780, %779 ], [ %764, %763 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %93) #7
  br label %.critedge352

783:                                              ; preds = %683
  %784 = icmp eq i32 %685, 5
  %785 = icmp eq i32 %684, 1
  %or.cond373.not406.not409 = select i1 %784, i1 %785, i1 false
  %brmerge375.not = and i1 %110, %or.cond373.not406.not409
  br i1 %brmerge375.not, label %786, label %813

786:                                              ; preds = %783
  %787 = load i32, ptr %5, align 4, !tbaa !5
  switch i32 %787, label %809 [
    i32 38, label %788
    i32 40, label %788
    i32 41, label %788
    i32 36, label %788
    i32 28, label %792
    i32 26, label %792
    i32 24, label %792
    i32 27, label %792
    i32 29, label %792
  ]

788:                                              ; preds = %786, %786, %786, %786
  %789 = getelementptr inbounds i8, ptr %1, i64 10154
  %790 = load i8, ptr %789, align 2, !tbaa !199, !range !182, !noundef !183
  %791 = trunc nuw i8 %790 to i1
  br i1 %791, label %813, label %792

792:                                              ; preds = %788, %786, %786, %786, %786, %786
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %98) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %99) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %100) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %100) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %99, ptr noundef nonnull @.str.1319, ptr noundef nonnull align 1 dereferenceable(1) %100)
          to label %793 unwind label %798

793:                                              ; preds = %792
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %101) #7
  %794 = load i32, ptr %5, align 4, !tbaa !5
  invoke void @_ZN11spirv_cross11CompilerMSL17builtin_qualifierB5cxx11EN3spv7BuiltInE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %101, ptr noundef nonnull align 8 dereferenceable(12482) %1, i32 noundef %794)
          to label %795 unwind label %800

795:                                              ; preds = %793
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %98, ptr noundef nonnull align 8 dereferenceable(32) %99, ptr noundef nonnull align 8 dereferenceable(32) %101)
          to label %796 unwind label %802

796:                                              ; preds = %795
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(32) %98, ptr noundef nonnull @.str.1318)
          to label %797 unwind label %804

797:                                              ; preds = %796
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %98) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %101) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %101) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %99) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %100) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %100) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %99) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %98) #7
  br label %.critedge346

798:                                              ; preds = %792
  %799 = landingpad { ptr, i32 }
          cleanup
  br label %808

800:                                              ; preds = %793
  %801 = landingpad { ptr, i32 }
          cleanup
  br label %807

802:                                              ; preds = %795
  %803 = landingpad { ptr, i32 }
          cleanup
  br label %806

804:                                              ; preds = %796
  %805 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %98) #7
  br label %806

806:                                              ; preds = %804, %802
  %.pn283 = phi { ptr, i32 } [ %805, %804 ], [ %803, %802 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %101) #7
  br label %807

807:                                              ; preds = %806, %800
  %.pn283.pn = phi { ptr, i32 } [ %.pn283, %806 ], [ %801, %800 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %101) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %99) #7
  br label %808

808:                                              ; preds = %807, %798
  %.pn283.pn.pn = phi { ptr, i32 } [ %.pn283.pn, %807 ], [ %799, %798 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %100) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %100) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %99) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %98) #7
  br label %.critedge352

809:                                              ; preds = %786
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %102) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %102) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.35, ptr noundef nonnull align 1 dereferenceable(1) %102)
          to label %810 unwind label %811

810:                                              ; preds = %809
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %102) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %102) #7
  br label %.critedge346

811:                                              ; preds = %809
  %812 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %102) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %102) #7
  br label %.critedge352

813:                                              ; preds = %783, %788
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %103) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %103) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.35, ptr noundef nonnull align 1 dereferenceable(1) %103)
          to label %814 unwind label %815

814:                                              ; preds = %813
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %103) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %103) #7
  br label %.critedge346

815:                                              ; preds = %813
  %816 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %103) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %103) #7
  br label %.critedge352

.critedge346.critedge:                            ; preds = %566, %574, %675
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %76) #7
  br label %.critedge346

.critedge346:                                     ; preds = %531, %451, %339, %182, %.critedge337, %255, %273, %285, %303, %315, %331, %353, %367, %379, %399, %411, %427, %438, %470, %485, %498, %506, %516, %696, %712, %729, %737, %750, %781, %797, %810, %814, %.critedge340.critedge, %.critedge346.critedge, %129, %173, %155, %147
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #7
  ret void

.critedge352:                                     ; preds = %.critedge348, %244, %269, %299, %329, %332, %337, %354, %368, %393, %400, %425, %428, %439, %459, %471, %496, %499, %507, %517, %539, %682, %697, %705, %723, %730, %748, %751, %782, %808, %811, %815, %.critedge350, %190, %174, %170, %166, %148, %131
  %.pn329.pn = phi { ptr, i32 } [ %.pn329, %131 ], [ %175, %174 ], [ %171, %170 ], [ %149, %148 ], [ %.pn324.pn.pn, %166 ], [ %.pn.pn, %190 ], [ %333, %332 ], [ %.pn302.pn.pn.pn, %329 ], [ %.pn307.pn.pn.pn, %299 ], [ %.pn312.pn.pn.pn, %269 ], [ %245, %244 ], [ %.pn317.pn.pn.pn.ph, %.critedge350 ], [ %355, %354 ], [ %440, %439 ], [ %472, %471 ], [ %508, %507 ], [ %518, %517 ], [ %.pn300, %682 ], [ %752, %751 ], [ %.pn292.pn.pn, %748 ], [ %731, %730 ], [ %.pn296.pn.pn, %723 ], [ %706, %705 ], [ %698, %697 ], [ %.pn290, %782 ], [ %812, %811 ], [ %.pn283.pn.pn, %808 ], [ %816, %815 ], [ %.pn277.pn, %539 ], [ %500, %499 ], [ %.pn271.pn.pn, %496 ], [ %.pn268.pn, %459 ], [ %429, %428 ], [ %401, %400 ], [ %.pn257.pn.pn.pn, %425 ], [ %369, %368 ], [ %.pn262.pn.pn.pn, %393 ], [ %338, %337 ], [ %237, %.critedge348 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #7
  resume { ptr, i32 } %.pn329.pn
}

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11spirv_cross4joinIJRA7_KcjRA2_S1_EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 1 dereferenceable(7), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(2)) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11spirv_cross11CompilerMSL17builtin_qualifierB5cxx11EN3spv7BuiltInE(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(12482), i32 noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN11spirv_cross11CompilerMSL45get_or_allocate_builtin_input_member_locationEN3spv7BuiltInEjjPj(ptr noundef nonnull align 8 dereferenceable(12482), i32 noundef, i32 noundef, i32 noundef, ptr noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZNK11spirv_cross11CompilerMSL19get_member_locationEjjPj(ptr noundef nonnull align 8 dereferenceable(12482), i32 noundef, i32 noundef, ptr noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11spirv_cross4joinIJRA13_KcjRA4_S1_EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 1 dereferenceable(13), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(4)) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11spirv_cross11CompilerMSL35member_location_attribute_qualifierB5cxx11ERKNS_8SPIRTypeEj(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(12482), ptr noundef nonnull align 8 dereferenceable(336), i32 noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11spirv_cross4joinIJRA4_KcRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA3_S1_EEES9_DpOT_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 1 dereferenceable(4), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(3)) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN11spirv_cross11CompilerMSL46get_or_allocate_builtin_output_member_locationEN3spv7BuiltInEjjPj(ptr noundef nonnull align 8 dereferenceable(12482), i32 noundef, i32 noundef, i32 noundef, ptr noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11spirv_cross4joinIJRA10_KcRjS3_jRA4_S1_EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 1 dereferenceable(10), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(10), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(4)) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11spirv_cross4joinIJRA10_KcRjRA4_S1_EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 1 dereferenceable(10), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(4)) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11spirv_cross4joinIJRA10_KcjRA4_S1_EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 1 dereferenceable(10), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(4)) local_unnamed_addr #2

attributes #0 = { 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 #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { 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 #3 = { nounwind "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 = { "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 = { 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 #7 = { nounwind }
attributes #8 = { noreturn }

!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 = !{!"_ZTSN3spv7BuiltInE", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !28, i64 232}
!12 = !{!"_ZTSN11spirv_cross14SPIREntryPointE", !13, i64 0, !14, i64 8, !14, i64 40, !18, i64 72, !21, i64 128, !27, i64 192, !10, i64 220, !10, i64 224, !10, i64 228, !28, i64 232, !29, i64 236}
!13 = !{!"_ZTSN11spirv_cross7TypedIDILNS_5TypesE4EEE", !10, i64 0}
!14 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !15, i64 0, !17, i64 8, !7, i64 16}
!15 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !16, i64 0}
!16 = !{!"any pointer", !7, i64 0}
!17 = !{!"long", !7, i64 0}
!18 = !{!"_ZTSN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE2EEELm8EEE", !19, i64 0, !17, i64 16, !20, i64 24}
!19 = !{!"_ZTSN11spirv_cross10VectorViewINS_7TypedIDILNS_5TypesE2EEEEE", !16, i64 0, !17, i64 8}
!20 = !{!"_ZTSN11spirv_cross13AlignedBufferINS_7TypedIDILNS_5TypesE2EEELm8EEE", !7, i64 0}
!21 = !{!"_ZTSN11spirv_cross6BitsetE", !17, i64 0, !22, i64 8}
!22 = !{!"_ZTSSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEE", !23, i64 0}
!23 = !{!"_ZTSSt10_HashtableIjjSaIjENSt8__detail9_IdentityESt8equal_toIjESt4hashIjENS1_18_Mod_range_hashingENS1_20_Default_ranged_hashENS1_20_Prime_rehash_policyENS1_17_Hashtable_traitsILb0ELb1ELb1EEEE", !16, i64 0, !17, i64 8, !24, i64 16, !17, i64 24, !25, i64 32, !16, i64 48}
!24 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !16, i64 0}
!25 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !26, i64 0, !17, i64 8}
!26 = !{!"float", !7, i64 0}
!27 = !{!"_ZTSN11spirv_cross14SPIREntryPoint13WorkgroupSizeE", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24}
!28 = !{!"_ZTSN3spv14ExecutionModelE", !7, i64 0}
!29 = !{!"bool", !7, i64 0}
!30 = !{!31, !29, i64 10151}
!31 = !{!"_ZTSN11spirv_cross11CompilerMSLE", !32, i64 0, !129, i64 9848, !10, i64 9904, !10, i64 9908, !10, i64 9912, !10, i64 9916, !10, i64 9920, !10, i64 9924, !10, i64 9928, !10, i64 9932, !10, i64 9936, !10, i64 9940, !10, i64 9944, !10, i64 9948, !10, i64 9952, !10, i64 9956, !10, i64 9960, !10, i64 9964, !10, i64 9968, !10, i64 9972, !10, i64 9976, !10, i64 9980, !10, i64 9984, !10, i64 9988, !10, i64 9992, !10, i64 9996, !10, i64 10000, !10, i64 10004, !10, i64 10008, !10, i64 10012, !10, i64 10016, !10, i64 10020, !10, i64 10024, !10, i64 10028, !29, i64 10032, !29, i64 10033, !131, i64 10036, !135, i64 10176, !143, i64 10224, !148, i64 10272, !143, i64 10328, !148, i64 10376, !22, i64 10432, !22, i64 10488, !22, i64 10544, !22, i64 10600, !108, i64 10656, !108, i64 10712, !108, i64 10768, !150, i64 10824, !150, i64 10872, !71, i64 10920, !155, i64 10976, !157, i64 11032, !10, i64 11088, !10, i64 11092, !10, i64 11096, !7, i64 11100, !159, i64 11132, !159, i64 11136, !159, i64 11140, !159, i64 11144, !159, i64 11148, !159, i64 11152, !159, i64 11156, !159, i64 11160, !159, i64 11164, !159, i64 11168, !159, i64 11172, !160, i64 11176, !160, i64 11180, !29, i64 11184, !29, i64 11185, !29, i64 11186, !29, i64 11187, !29, i64 11188, !29, i64 11189, !29, i64 11190, !29, i64 11191, !29, i64 11192, !29, i64 11193, !29, i64 11194, !29, i64 11195, !29, i64 11196, !14, i64 11200, !14, i64 11232, !14, i64 11264, !14, i64 11296, !14, i64 11328, !14, i64 11360, !14, i64 11392, !14, i64 11424, !14, i64 11456, !14, i64 11488, !14, i64 11520, !14, i64 11552, !14, i64 11584, !14, i64 11616, !14, i64 11648, !14, i64 11680, !161, i64 11712, !162, i64 11720, !167, i64 11768, !22, i64 11824, !169, i64 11880, !71, i64 11968, !22, i64 12024, !22, i64 12080, !22, i64 12136, !172, i64 12192, !175, i64 12280, !71, i64 12328, !180, i64 12384, !7, i64 12440, !10, i64 12472, !10, i64 12476, !29, i64 12480, !29, i64 12481}
!32 = !{!"_ZTSN11spirv_cross12CompilerGLSLE", !33, i64 0, !16, i64 3176, !87, i64 3184, !29, i64 3272, !90, i64 3280, !16, i64 7616, !16, i64 7624, !29, i64 7632, !29, i64 7633, !95, i64 7636, !99, i64 7680, !99, i64 7736, !99, i64 7792, !99, i64 7848, !99, i64 7904, !99, i64 7960, !99, i64 8016, !101, i64 8072, !85, i64 8128, !29, i64 8184, !103, i64 8192, !10, i64 8416, !22, i64 8424, !22, i64 8480, !22, i64 8536, !105, i64 8592, !107, i64 8648, !108, i64 8656, !58, i64 8712, !58, i64 8992, !108, i64 9272, !110, i64 9328, !10, i64 9384, !10, i64 9388, !10, i64 9392, !29, i64 9396, !29, i64 9397, !113, i64 9400, !113, i64 9424, !117, i64 9448, !121, i64 9472, !108, i64 9496, !22, i64 9552, !22, i64 9608, !7, i64 9664, !125, i64 9672, !22, i64 9728, !16, i64 9784, !127, i64 9792}
!33 = !{!"_ZTSN11spirv_cross8CompilerE", !34, i64 8, !71, i64 1928, !71, i64 1984, !16, i64 2040, !16, i64 2048, !10, i64 2056, !74, i64 2064, !29, i64 2120, !22, i64 2128, !29, i64 2184, !29, i64 2185, !76, i64 2192, !71, i64 2312, !79, i64 2368, !22, i64 2400, !22, i64 2456, !22, i64 2512, !22, i64 2568, !22, i64 2624, !21, i64 2680, !21, i64 2744, !10, i64 2808, !10, i64 2812, !29, i64 2816, !22, i64 2824, !29, i64 2880, !29, i64 2881, !10, i64 2884, !81, i64 2888, !71, i64 2944, !83, i64 3000, !22, i64 3056, !29, i64 3112, !85, i64 3120}
!34 = !{!"_ZTSN11spirv_cross8ParsedIRE", !35, i64 0, !41, i64 8, !45, i64 32, !48, i64 248, !7, i64 304, !50, i64 1088, !50, i64 1144, !53, i64 1200, !55, i64 1256, !58, i64 1312, !61, i64 1592, !64, i64 1624, !66, i64 1680, !13, i64 1736, !68, i64 1740, !69, i64 1748, !70, i64 1752, !10, i64 1756, !10, i64 1760, !14, i64 1768, !21, i64 1800, !22, i64 1864}
!35 = !{!"_ZTSSt10unique_ptrIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EE", !36, i64 0}
!36 = !{!"_ZTSSt15__uniq_ptr_dataIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_ELb1ELb1EE", !37, i64 0}
!37 = !{!"_ZTSSt15__uniq_ptr_implIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EE", !38, i64 0}
!38 = !{!"_ZTSSt5tupleIJPN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EEE", !39, i64 0}
!39 = !{!"_ZTSSt11_Tuple_implILm0EJPN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EEE", !40, i64 0}
!40 = !{!"_ZTSSt10_Head_baseILm0EPN11spirv_cross15ObjectPoolGroupELb0EE", !16, i64 0}
!41 = !{!"_ZTSSt6vectorIjSaIjEE", !42, i64 0}
!42 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !43, i64 0}
!43 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !44, i64 0}
!44 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !16, i64 0, !16, i64 8, !16, i64 16}
!45 = !{!"_ZTSN11spirv_cross11SmallVectorINS_7VariantELm8EEE", !46, i64 0, !17, i64 16, !47, i64 24}
!46 = !{!"_ZTSN11spirv_cross10VectorViewINS_7VariantEEE", !16, i64 0, !17, i64 8}
!47 = !{!"_ZTSN11spirv_cross13AlignedBufferINS_7VariantELm8EEE", !7, i64 0}
!48 = !{!"_ZTSSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE0EEENS0_4MetaESt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S4_EEE", !49, i64 0}
!49 = !{!"_ZTSSt10_HashtableIN11spirv_cross7TypedIDILNS0_5TypesE0EEESt4pairIKS3_NS0_4MetaEESaIS7_ENSt8__detail10_Select1stESt8equal_toIS3_ESt4hashIS3_ENS9_18_Mod_range_hashingENS9_20_Default_ranged_hashENS9_20_Prime_rehash_policyENS9_17_Hashtable_traitsILb1ELb0ELb1EEEE", !16, i64 0, !17, i64 8, !24, i64 16, !17, i64 24, !25, i64 32, !16, i64 48}
!50 = !{!"_ZTSN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EEE", !51, i64 0, !17, i64 16, !52, i64 24}
!51 = !{!"_ZTSN11spirv_cross10VectorViewINS_7TypedIDILNS_5TypesE0EEEEE", !16, i64 0, !17, i64 8}
!52 = !{!"_ZTSN11spirv_cross13AlignedBufferINS_7TypedIDILNS_5TypesE0EEELm8EEE", !7, i64 0}
!53 = !{!"_ZTSSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE0EEEjSt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_jEEE", !54, i64 0}
!54 = !{!"_ZTSSt10_HashtableIN11spirv_cross7TypedIDILNS0_5TypesE0EEESt4pairIKS3_jESaIS6_ENSt8__detail10_Select1stESt8equal_toIS3_ESt4hashIS3_ENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb1ELb0ELb1EEEE", !16, i64 0, !17, i64 8, !24, i64 16, !17, i64 24, !25, i64 32, !16, i64 48}
!55 = !{!"_ZTSN11spirv_cross11SmallVectorIN3spv10CapabilityELm8EEE", !56, i64 0, !17, i64 16, !57, i64 24}
!56 = !{!"_ZTSN11spirv_cross10VectorViewIN3spv10CapabilityEEE", !16, i64 0, !17, i64 8}
!57 = !{!"_ZTSN11spirv_cross13AlignedBufferIN3spv10CapabilityELm8EEE", !7, i64 0}
!58 = !{!"_ZTSN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EEE", !59, i64 0, !17, i64 16, !60, i64 24}
!59 = !{!"_ZTSN11spirv_cross10VectorViewINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !16, i64 0, !17, i64 8}
!60 = !{!"_ZTSN11spirv_cross13AlignedBufferINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EEE", !7, i64 0}
!61 = !{!"_ZTSN11spirv_cross11SmallVectorIhLm8EEE", !62, i64 0, !17, i64 16, !63, i64 24}
!62 = !{!"_ZTSN11spirv_cross10VectorViewIhEE", !16, i64 0, !17, i64 8}
!63 = !{!"_ZTSN11spirv_cross13AlignedBufferIhLm8EEE", !7, i64 0}
!64 = !{!"_ZTSSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE6EEES3_St4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S3_EEE", !65, i64 0}
!65 = !{!"_ZTSSt10_HashtableIN11spirv_cross7TypedIDILNS0_5TypesE6EEESt4pairIKS3_S3_ESaIS6_ENSt8__detail10_Select1stESt8equal_toIS3_ESt4hashIS3_ENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb1ELb0ELb1EEEE", !16, i64 0, !17, i64 8, !24, i64 16, !17, i64 24, !25, i64 32, !16, i64 48}
!66 = !{!"_ZTSSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE4EEENS0_14SPIREntryPointESt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S4_EEE", !67, i64 0}
!67 = !{!"_ZTSSt10_HashtableIN11spirv_cross7TypedIDILNS0_5TypesE4EEESt4pairIKS3_NS0_14SPIREntryPointEESaIS7_ENSt8__detail10_Select1stESt8equal_toIS3_ESt4hashIS3_ENS9_18_Mod_range_hashingENS9_20_Default_ranged_hashENS9_20_Prime_rehash_policyENS9_17_Hashtable_traitsILb1ELb0ELb1EEEE", !16, i64 0, !17, i64 8, !24, i64 16, !17, i64 24, !25, i64 32, !16, i64 48}
!68 = !{!"_ZTSN11spirv_cross8ParsedIR6SourceE", !10, i64 0, !29, i64 4, !29, i64 5, !29, i64 6}
!69 = !{!"_ZTSN3spv15AddressingModelE", !7, i64 0}
!70 = !{!"_ZTSN3spv11MemoryModelE", !7, i64 0}
!71 = !{!"_ZTSN11spirv_cross11SmallVectorIjLm8EEE", !72, i64 0, !17, i64 16, !73, i64 24}
!72 = !{!"_ZTSN11spirv_cross10VectorViewIjEE", !16, i64 0, !17, i64 8}
!73 = !{!"_ZTSN11spirv_cross13AlignedBufferIjLm8EEE", !7, i64 0}
!74 = !{!"_ZTSSt13unordered_setIN11spirv_cross7TypedIDILNS0_5TypesE2EEESt4hashIS3_ESt8equal_toIS3_ESaIS3_EE", !75, i64 0}
!75 = !{!"_ZTSSt10_HashtableIN11spirv_cross7TypedIDILNS0_5TypesE2EEES3_SaIS3_ENSt8__detail9_IdentityESt8equal_toIS3_ESt4hashIS3_ENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb1ELb1ELb1EEEE", !16, i64 0, !17, i64 8, !24, i64 16, !17, i64 24, !25, i64 32, !16, i64 48}
!76 = !{!"_ZTSN11spirv_cross11SmallVectorINS_20CombinedImageSamplerELm8EEE", !77, i64 0, !17, i64 16, !78, i64 24}
!77 = !{!"_ZTSN11spirv_cross10VectorViewINS_20CombinedImageSamplerEEE", !16, i64 0, !17, i64 8}
!78 = !{!"_ZTSN11spirv_cross13AlignedBufferINS_20CombinedImageSamplerELm8EEE", !7, i64 0}
!79 = !{!"_ZTSSt8functionIFvRKN11spirv_cross8SPIRTypeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERS9_EE", !80, i64 0, !16, i64 24}
!80 = !{!"_ZTSSt14_Function_base", !7, i64 0, !16, i64 16}
!81 = !{!"_ZTSSt13unordered_mapIjSt10unique_ptrIN11spirv_cross3CFGESt14default_deleteIS2_EESt4hashIjESt8equal_toIjESaISt4pairIKjS5_EEE", !82, i64 0}
!82 = !{!"_ZTSSt10_HashtableIjSt4pairIKjSt10unique_ptrIN11spirv_cross3CFGESt14default_deleteIS4_EEESaIS8_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb0ELb0ELb1EEEE", !16, i64 0, !17, i64 8, !24, i64 16, !17, i64 24, !25, i64 32, !16, i64 48}
!83 = !{!"_ZTSSt13unordered_mapIjN11spirv_cross8Compiler17PhysicalBlockMetaESt4hashIjESt8equal_toIjESaISt4pairIKjS2_EEE", !84, i64 0}
!84 = !{!"_ZTSSt10_HashtableIjSt4pairIKjN11spirv_cross8Compiler17PhysicalBlockMetaEESaIS5_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE", !16, i64 0, !17, i64 8, !24, i64 16, !17, i64 24, !25, i64 32, !16, i64 48}
!85 = !{!"_ZTSSt13unordered_mapIjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4hashIjESt8equal_toIjESaISt4pairIKjS5_EEE", !86, i64 0}
!86 = !{!"_ZTSSt10_HashtableIjSt4pairIKjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEESaIS8_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb0ELb0ELb1EEEE", !16, i64 0, !17, i64 8, !24, i64 16, !17, i64 24, !25, i64 32, !16, i64 48}
!87 = !{!"_ZTSN11spirv_cross11SmallVectorIPNS_9SPIRBlockELm8EEE", !88, i64 0, !17, i64 16, !89, i64 24}
!88 = !{!"_ZTSN11spirv_cross10VectorViewIPNS_9SPIRBlockEEE", !16, i64 0, !17, i64 8}
!89 = !{!"_ZTSN11spirv_cross13AlignedBufferIPNS_9SPIRBlockELm8EEE", !7, i64 0}
!90 = !{!"_ZTSN11spirv_cross12StringStreamILm4096ELm4096EEE", !91, i64 0, !7, i64 24, !92, i64 4120}
!91 = !{!"_ZTSN11spirv_cross12StringStreamILm4096ELm4096EE6BufferE", !16, i64 0, !17, i64 8, !17, i64 16}
!92 = !{!"_ZTSN11spirv_cross11SmallVectorINS_12StringStreamILm4096ELm4096EE6BufferELm8EEE", !93, i64 0, !17, i64 16, !94, i64 24}
!93 = !{!"_ZTSN11spirv_cross10VectorViewINS_12StringStreamILm4096ELm4096EE6BufferEEE", !16, i64 0, !17, i64 8}
!94 = !{!"_ZTSN11spirv_cross13AlignedBufferINS_12StringStreamILm4096ELm4096EE6BufferELm8EEE", !7, i64 0}
!95 = !{!"_ZTSN11spirv_cross12CompilerGLSL7OptionsE", !10, i64 0, !29, i64 4, !29, i64 5, !10, i64 8, !29, i64 12, !29, i64 13, !29, i64 14, !29, i64 15, !29, i64 16, !29, i64 17, !29, i64 18, !29, i64 19, !29, i64 20, !29, i64 21, !29, i64 22, !29, i64 23, !10, i64 24, !96, i64 28, !97, i64 32}
!96 = !{!"_ZTSN11spirv_cross12CompilerGLSL7Options13VertexOptionsE", !29, i64 0, !29, i64 1, !29, i64 2}
!97 = !{!"_ZTSN11spirv_cross12CompilerGLSL7Options15FragmentOptionsE", !98, i64 0, !98, i64 4}
!98 = !{!"_ZTSN11spirv_cross12CompilerGLSL7Options9PrecisionE", !7, i64 0}
!99 = !{!"_ZTSSt13unordered_setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4hashIS5_ESt8equal_toIS5_ESaIS5_EE", !100, i64 0}
!100 = !{!"_ZTSSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_SaIS5_ENSt8__detail9_IdentityESt8equal_toIS5_ESt4hashIS5_ENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb1ELb1ELb1EEEE", !16, i64 0, !17, i64 8, !24, i64 16, !17, i64 24, !25, i64 32, !16, i64 48}
!101 = !{!"_ZTSSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt13unordered_setImSt4hashImESt8equal_toImESaImEES7_IS5_ES9_IS5_ESaISt4pairIKS5_SC_EEE", !102, i64 0}
!102 = !{!"_ZTSSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_St13unordered_setImSt4hashImESt8equal_toImESaImEEESaISF_ENSt8__detail10_Select1stESB_IS5_ES9_IS5_ENSH_18_Mod_range_hashingENSH_20_Default_ranged_hashENSH_20_Prime_rehash_policyENSH_17_Hashtable_traitsILb1ELb0ELb1EEEE", !16, i64 0, !17, i64 8, !24, i64 16, !17, i64 24, !25, i64 32, !16, i64 48}
!103 = !{!"_ZTSN11spirv_cross12CompilerGLSL17BackendVariationsE", !14, i64 0, !14, i64 32, !14, i64 64, !29, i64 96, !29, i64 97, !29, i64 98, !29, i64 99, !16, i64 104, !16, i64 112, !16, i64 120, !16, i64 128, !16, i64 136, !16, i64 144, !16, i64 152, !16, i64 160, !16, i64 168, !16, i64 176, !104, i64 184, !29, i64 188, !29, i64 189, !29, i64 190, !29, i64 191, !29, i64 192, !29, i64 193, !29, i64 194, !29, i64 195, !29, i64 196, !29, i64 197, !29, i64 198, !29, i64 199, !29, i64 200, !29, i64 201, !29, i64 202, !29, i64 203, !29, i64 204, !29, i64 205, !29, i64 206, !29, i64 207, !29, i64 208, !29, i64 209, !29, i64 210, !29, i64 211, !29, i64 212, !29, i64 213, !29, i64 214, !29, i64 215, !29, i64 216, !29, i64 217, !29, i64 218, !29, i64 219}
!104 = !{!"_ZTSN11spirv_cross8SPIRType8BaseTypeE", !7, i64 0}
!105 = !{!"_ZTSSt13unordered_mapIjbSt4hashIjESt8equal_toIjESaISt4pairIKjbEEE", !106, i64 0}
!106 = !{!"_ZTSSt10_HashtableIjSt4pairIKjbESaIS2_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb0ELb1EEEE", !16, i64 0, !17, i64 8, !24, i64 16, !17, i64 24, !25, i64 32, !16, i64 48}
!107 = !{!"_ZTSN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelperE", !10, i64 0}
!108 = !{!"_ZTSSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEE", !109, i64 0}
!109 = !{!"_ZTSSt10_HashtableIjSt4pairIKjjESaIS2_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb0ELb1EEEE", !16, i64 0, !17, i64 8, !24, i64 16, !17, i64 24, !25, i64 32, !16, i64 48}
!110 = !{!"_ZTSN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE1EEELm8EEE", !111, i64 0, !17, i64 16, !112, i64 24}
!111 = !{!"_ZTSN11spirv_cross10VectorViewINS_7TypedIDILNS_5TypesE1EEEEE", !16, i64 0, !17, i64 8}
!112 = !{!"_ZTSN11spirv_cross13AlignedBufferINS_7TypedIDILNS_5TypesE1EEELm8EEE", !7, i64 0}
!113 = !{!"_ZTSSt6vectorIN11spirv_cross8PlsRemapESaIS1_EE", !114, i64 0}
!114 = !{!"_ZTSSt12_Vector_baseIN11spirv_cross8PlsRemapESaIS1_EE", !115, i64 0}
!115 = !{!"_ZTSNSt12_Vector_baseIN11spirv_cross8PlsRemapESaIS1_EE12_Vector_implE", !116, i64 0}
!116 = !{!"_ZTSNSt12_Vector_baseIN11spirv_cross8PlsRemapESaIS1_EE17_Vector_impl_dataE", !16, i64 0, !16, i64 8, !16, i64 16}
!117 = !{!"_ZTSSt6vectorISt4pairIjjESaIS1_EE", !118, i64 0}
!118 = !{!"_ZTSSt12_Vector_baseISt4pairIjjESaIS1_EE", !119, i64 0}
!119 = !{!"_ZTSNSt12_Vector_baseISt4pairIjjESaIS1_EE12_Vector_implE", !120, i64 0}
!120 = !{!"_ZTSNSt12_Vector_baseISt4pairIjjESaIS1_EE17_Vector_impl_dataE", !16, i64 0, !16, i64 8, !16, i64 16}
!121 = !{!"_ZTSSt6vectorISt4pairIjbESaIS1_EE", !122, i64 0}
!122 = !{!"_ZTSSt12_Vector_baseISt4pairIjbESaIS1_EE", !123, i64 0}
!123 = !{!"_ZTSNSt12_Vector_baseISt4pairIjbESaIS1_EE12_Vector_implE", !124, i64 0}
!124 = !{!"_ZTSNSt12_Vector_baseISt4pairIjbESaIS1_EE17_Vector_impl_dataE", !16, i64 0, !16, i64 8, !16, i64 16}
!125 = !{!"_ZTSSt13unordered_setIN11spirv_cross21LocationComponentPairENS0_14InternalHasherESt8equal_toIS1_ESaIS1_EE", !126, i64 0}
!126 = !{!"_ZTSSt10_HashtableIN11spirv_cross21LocationComponentPairES1_SaIS1_ENSt8__detail9_IdentityESt8equal_toIS1_ENS0_14InternalHasherENS3_18_Mod_range_hashingENS3_20_Default_ranged_hashENS3_20_Prime_rehash_policyENS3_17_Hashtable_traitsILb1ELb1ELb1EEEE", !16, i64 0, !17, i64 8, !24, i64 16, !17, i64 24, !25, i64 32, !16, i64 48}
!127 = !{!"_ZTSSt13unordered_mapIjN11spirv_cross11SmallVectorINS0_7TypedIDILNS0_5TypesE3EEELm8EEESt4hashIjESt8equal_toIjESaISt4pairIKjS5_EEE", !128, i64 0}
!128 = !{!"_ZTSSt10_HashtableIjSt4pairIKjN11spirv_cross11SmallVectorINS2_7TypedIDILNS2_5TypesE3EEELm8EEEESaIS8_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb0ELb0ELb1EEEE", !16, i64 0, !17, i64 8, !24, i64 16, !17, i64 24, !25, i64 32, !16, i64 48}
!129 = !{!"_ZTSSt13unordered_mapIjSt3setIjSt4lessIjESaIjEESt4hashIjESt8equal_toIjESaISt4pairIKjS4_EEE", !130, i64 0}
!130 = !{!"_ZTSSt10_HashtableIjSt4pairIKjSt3setIjSt4lessIjESaIjEEESaIS7_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENS9_18_Mod_range_hashingENS9_20_Default_ranged_hashENS9_20_Prime_rehash_policyENS9_17_Hashtable_traitsILb0ELb0ELb1EEEE", !16, i64 0, !17, i64 8, !24, i64 16, !17, i64 24, !25, i64 32, !16, i64 48}
!131 = !{!"_ZTSN11spirv_cross11CompilerMSL7OptionsE", !132, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !29, i64 80, !29, i64 81, !29, i64 82, !29, i64 83, !29, i64 84, !29, i64 85, !29, i64 86, !29, i64 87, !29, i64 88, !29, i64 89, !29, i64 90, !29, i64 91, !29, i64 92, !133, i64 96, !29, i64 100, !29, i64 101, !29, i64 102, !29, i64 103, !29, i64 104, !29, i64 105, !29, i64 106, !29, i64 107, !29, i64 108, !29, i64 109, !29, i64 110, !29, i64 111, !29, i64 112, !29, i64 113, !29, i64 114, !29, i64 115, !29, i64 116, !29, i64 117, !29, i64 118, !10, i64 120, !134, i64 124, !29, i64 128, !29, i64 129, !29, i64 130, !29, i64 131, !29, i64 132, !29, i64 133, !29, i64 134, !29, i64 135, !29, i64 136}
!132 = !{!"_ZTSN11spirv_cross11CompilerMSL7Options8PlatformE", !7, i64 0}
!133 = !{!"_ZTSN11spirv_cross11CompilerMSL7Options19ArgumentBuffersTierE", !7, i64 0}
!134 = !{!"_ZTSN11spirv_cross11CompilerMSL7Options9IndexTypeE", !7, i64 0}
!135 = !{!"_ZTSSt3setIN11spirv_cross11CompilerMSL11SPVFuncImplESt4lessIS2_ESaIS2_EE", !136, i64 0}
!136 = !{!"_ZTSSt8_Rb_treeIN11spirv_cross11CompilerMSL11SPVFuncImplES2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE", !137, i64 0}
!137 = !{!"_ZTSNSt8_Rb_treeIN11spirv_cross11CompilerMSL11SPVFuncImplES2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE13_Rb_tree_implIS6_Lb1EEE", !138, i64 0, !140, i64 8}
!138 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN11spirv_cross11CompilerMSL11SPVFuncImplEEE", !139, i64 0}
!139 = !{!"_ZTSSt4lessIN11spirv_cross11CompilerMSL11SPVFuncImplEE"}
!140 = !{!"_ZTSSt15_Rb_tree_header", !141, i64 0, !17, i64 32}
!141 = !{!"_ZTSSt18_Rb_tree_node_base", !142, i64 0, !16, i64 8, !16, i64 16, !16, i64 24}
!142 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!143 = !{!"_ZTSSt3mapIN11spirv_cross21LocationComponentPairENS0_26MSLShaderInterfaceVariableESt4lessIS1_ESaISt4pairIKS1_S2_EEE", !144, i64 0}
!144 = !{!"_ZTSSt8_Rb_treeIN11spirv_cross21LocationComponentPairESt4pairIKS1_NS0_26MSLShaderInterfaceVariableEESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE", !145, i64 0}
!145 = !{!"_ZTSNSt8_Rb_treeIN11spirv_cross21LocationComponentPairESt4pairIKS1_NS0_26MSLShaderInterfaceVariableEESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE13_Rb_tree_implIS9_Lb1EEE", !146, i64 0, !140, i64 8}
!146 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN11spirv_cross21LocationComponentPairEEE", !147, i64 0}
!147 = !{!"_ZTSSt4lessIN11spirv_cross21LocationComponentPairEE"}
!148 = !{!"_ZTSSt13unordered_mapIjN11spirv_cross26MSLShaderInterfaceVariableESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE", !149, i64 0}
!149 = !{!"_ZTSSt10_HashtableIjSt4pairIKjN11spirv_cross26MSLShaderInterfaceVariableEESaIS4_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENS6_18_Mod_range_hashingENS6_20_Default_ranged_hashENS6_20_Prime_rehash_policyENS6_17_Hashtable_traitsILb0ELb0ELb1EEEE", !16, i64 0, !17, i64 8, !24, i64 16, !17, i64 24, !25, i64 32, !16, i64 48}
!150 = !{!"_ZTSSt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIS5_ESaIS5_EE", !151, i64 0}
!151 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St9_IdentityIS5_ESt4lessIS5_ESaIS5_EE", !152, i64 0}
!152 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St9_IdentityIS5_ESt4lessIS5_ESaIS5_EE13_Rb_tree_implIS9_Lb1EEE", !153, i64 0, !140, i64 8}
!153 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !154, i64 0}
!154 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!155 = !{!"_ZTSSt13unordered_mapIN11spirv_cross15StageSetBindingESt4pairINS0_18MSLResourceBindingEbENS0_14InternalHasherESt8equal_toIS1_ESaIS2_IKS1_S4_EEE", !156, i64 0}
!156 = !{!"_ZTSSt10_HashtableIN11spirv_cross15StageSetBindingESt4pairIKS1_S2_INS0_18MSLResourceBindingEbEESaIS6_ENSt8__detail10_Select1stESt8equal_toIS1_ENS0_14InternalHasherENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb1ELb0ELb1EEEE", !16, i64 0, !17, i64 8, !24, i64 16, !17, i64 24, !25, i64 32, !16, i64 48}
!157 = !{!"_ZTSSt13unordered_mapIN11spirv_cross15StageSetBindingEjNS0_14InternalHasherESt8equal_toIS1_ESaISt4pairIKS1_jEEE", !158, i64 0}
!158 = !{!"_ZTSSt10_HashtableIN11spirv_cross15StageSetBindingESt4pairIKS1_jESaIS4_ENSt8__detail10_Select1stESt8equal_toIS1_ENS0_14InternalHasherENS6_18_Mod_range_hashingENS6_20_Default_ranged_hashENS6_20_Prime_rehash_policyENS6_17_Hashtable_traitsILb1ELb0ELb1EEEE", !16, i64 0, !17, i64 8, !24, i64 16, !17, i64 24, !25, i64 32, !16, i64 48}
!159 = !{!"_ZTSN11spirv_cross7TypedIDILNS_5TypesE2EEE", !10, i64 0}
!160 = !{!"_ZTSN11spirv_cross11CompilerMSL8TriStateE", !7, i64 0}
!161 = !{!"_ZTSN3spv2OpE", !7, i64 0}
!162 = !{!"_ZTSSt3mapIjN11spirv_cross19MSLConstexprSamplerESt4lessIjESaISt4pairIKjS1_EEE", !163, i64 0}
!163 = !{!"_ZTSSt8_Rb_treeIjSt4pairIKjN11spirv_cross19MSLConstexprSamplerEESt10_Select1stIS4_ESt4lessIjESaIS4_EE", !164, i64 0}
!164 = !{!"_ZTSNSt8_Rb_treeIjSt4pairIKjN11spirv_cross19MSLConstexprSamplerEESt10_Select1stIS4_ESt4lessIjESaIS4_EE13_Rb_tree_implIS8_Lb1EEE", !165, i64 0, !140, i64 8}
!165 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIjEE", !166, i64 0}
!166 = !{!"_ZTSSt4lessIjE"}
!167 = !{!"_ZTSSt13unordered_mapIN11spirv_cross14SetBindingPairENS0_19MSLConstexprSamplerENS0_14InternalHasherESt8equal_toIS1_ESaISt4pairIKS1_S2_EEE", !168, i64 0}
!168 = !{!"_ZTSSt10_HashtableIN11spirv_cross14SetBindingPairESt4pairIKS1_NS0_19MSLConstexprSamplerEESaIS5_ENSt8__detail10_Select1stESt8equal_toIS1_ENS0_14InternalHasherENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb1ELb0ELb1EEEE", !16, i64 0, !17, i64 8, !24, i64 16, !17, i64 24, !25, i64 32, !16, i64 48}
!169 = !{!"_ZTSN11spirv_cross11SmallVectorISt4pairIjjELm8EEE", !170, i64 0, !17, i64 16, !171, i64 24}
!170 = !{!"_ZTSN11spirv_cross10VectorViewISt4pairIjjEEE", !16, i64 0, !17, i64 8}
!171 = !{!"_ZTSN11spirv_cross13AlignedBufferISt4pairIjjELm8EEE", !7, i64 0}
!172 = !{!"_ZTSN11spirv_cross11SmallVectorIPNS_12SPIRVariableELm8EEE", !173, i64 0, !17, i64 16, !174, i64 24}
!173 = !{!"_ZTSN11spirv_cross10VectorViewIPNS_12SPIRVariableEEE", !16, i64 0, !17, i64 8}
!174 = !{!"_ZTSN11spirv_cross13AlignedBufferIPNS_12SPIRVariableELm8EEE", !7, i64 0}
!175 = !{!"_ZTSSt3mapIN11spirv_cross14SetBindingPairESt4pairIjjESt4lessIS1_ESaIS2_IKS1_S3_EEE", !176, i64 0}
!176 = !{!"_ZTSSt8_Rb_treeIN11spirv_cross14SetBindingPairESt4pairIKS1_S2_IjjEESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE", !177, i64 0}
!177 = !{!"_ZTSNSt8_Rb_treeIN11spirv_cross14SetBindingPairESt4pairIKS1_S2_IjjEESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE13_Rb_tree_implIS9_Lb1EEE", !178, i64 0, !140, i64 8}
!178 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN11spirv_cross14SetBindingPairEEE", !179, i64 0}
!179 = !{!"_ZTSSt4lessIN11spirv_cross14SetBindingPairEE"}
!180 = !{!"_ZTSSt13unordered_setIN11spirv_cross14SetBindingPairENS0_14InternalHasherESt8equal_toIS1_ESaIS1_EE", !181, i64 0}
!181 = !{!"_ZTSSt10_HashtableIN11spirv_cross14SetBindingPairES1_SaIS1_ENSt8__detail9_IdentityESt8equal_toIS1_ENS0_14InternalHasherENS3_18_Mod_range_hashingENS3_20_Default_ranged_hashENS3_20_Prime_rehash_policyENS3_17_Hashtable_traitsILb1ELb1ELb1EEEE", !16, i64 0, !17, i64 8, !24, i64 16, !17, i64 24, !25, i64 32, !16, i64 48}
!182 = !{i8 0, i8 2}
!183 = !{}
!184 = !{!185, !191, i64 128}
!185 = !{!"_ZTSN11spirv_cross8SPIRTypeE", !186, i64 0, !161, i64 12, !104, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !71, i64 32, !188, i64 88, !10, i64 120, !29, i64 124, !29, i64 125, !191, i64 128, !110, i64 136, !71, i64 192, !192, i64 248, !193, i64 272, !193, i64 276, !99, i64 280}
!186 = !{!"_ZTSN11spirv_cross8IVariantE", !187, i64 8}
!187 = !{!"_ZTSN11spirv_cross7TypedIDILNS_5TypesE0EEE", !10, i64 0}
!188 = !{!"_ZTSN11spirv_cross11SmallVectorIbLm8EEE", !189, i64 0, !17, i64 16, !190, i64 24}
!189 = !{!"_ZTSN11spirv_cross10VectorViewIbEE", !16, i64 0, !17, i64 8}
!190 = !{!"_ZTSN11spirv_cross13AlignedBufferIbLm8EEE", !7, i64 0}
!191 = !{!"_ZTSN3spv12StorageClassE", !7, i64 0}
!192 = !{!"_ZTSN11spirv_cross8SPIRType9ImageTypeE", !193, i64 0, !194, i64 4, !29, i64 8, !29, i64 9, !29, i64 10, !10, i64 12, !195, i64 16, !196, i64 20}
!193 = !{!"_ZTSN11spirv_cross7TypedIDILNS_5TypesE1EEE", !10, i64 0}
!194 = !{!"_ZTSN3spv3DimE", !7, i64 0}
!195 = !{!"_ZTSN3spv11ImageFormatE", !7, i64 0}
!196 = !{!"_ZTSN3spv15AccessQualifierE", !7, i64 0}
!197 = !{!31, !29, i64 10116}
!198 = !{!31, !29, i64 10149}
!199 = !{!31, !29, i64 10154}
!200 = !{!31, !29, i64 10150}
!201 = !{!185, !104, i64 16}
!202 = !{!31, !29, i64 10123}
!203 = !{!31, !29, i64 10124}
!204 = !{!31, !29, i64 10118}
!205 = !{!31, !29, i64 10117}
!206 = !{!31, !10, i64 10108}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass