; 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::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 }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"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.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] }
%"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 }
%"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_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 }
%"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.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.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 }
%"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 }

@_ZTIN11spirv_cross13CompilerErrorE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.1320 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.1323 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.1679 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.1680 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.1681 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.1682 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.1683 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.1684 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.1685 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.1686 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.1687 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.1688 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.1689 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.1690 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.1691 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.1692 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.1693 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.1694 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.1695 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.1696 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.1697 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.1698 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.1699 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.1700 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.1701 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.1702 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.1703 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.1704 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.1705 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.1706 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.1707 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.1708 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.1709 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.1710 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.1711 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.1712 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.1713 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.1714 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.1715 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.1716 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.1717 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.1718 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.1719 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.1720 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.1721 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.1722 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.1723 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.1724 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.1725 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.1726 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.1727 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.1728 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.1729 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.1730 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.1731 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.1732 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.1733 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.1734 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.1735 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.1736 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.1737 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.1738 = external hidden unnamed_addr constant [21 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

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

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

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

declare void @__cxa_throw(ptr, ptr, ptr)

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64), i32 noundef) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options6is_iosEv(ptr noundef nonnull align 4 dereferenceable(137)) #1 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) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options23use_quadgroup_operationEv(ptr noundef nonnull align 4 dereferenceable(137)) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options8is_macosEv(ptr noundef nonnull align 4 dereferenceable(137)) #1 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11spirv_cross11CompilerMSL17builtin_qualifierB5cxx11EN3spv7BuiltInE(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(12482) %1, i32 noundef %2) #2 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca ptr, align 8
  %8 = alloca %"class.std::allocator.71", align 1
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca %"class.std::allocator.71", align 1
  %13 = alloca %"class.std::allocator.71", align 1
  %14 = alloca %"class.std::allocator.71", align 1
  %15 = alloca %"class.std::allocator.71", align 1
  %16 = alloca %"class.std::allocator.71", align 1
  %17 = alloca %"class.std::allocator.71", align 1
  %18 = alloca %"class.std::allocator.71", align 1
  %19 = alloca %"class.std::allocator.71", align 1
  %20 = alloca %"class.std::allocator.71", align 1
  %21 = alloca %"class.std::allocator.71", align 1
  %22 = alloca %"class.std::allocator.71", align 1
  %23 = alloca %"class.std::allocator.71", align 1
  %24 = alloca %"class.std::allocator.71", align 1
  %25 = alloca %"class.std::allocator.71", align 1
  %26 = alloca %"class.std::allocator.71", align 1
  %27 = alloca %"class.std::allocator.71", align 1
  %28 = alloca %"class.std::allocator.71", align 1
  %29 = alloca %"class.std::allocator.71", align 1
  %30 = alloca %"class.std::allocator.71", align 1
  %31 = alloca %"class.std::allocator.71", align 1
  %32 = alloca %"class.std::allocator.71", align 1
  %33 = alloca %"class.std::allocator.71", align 1
  %34 = alloca %"class.std::allocator.71", align 1
  %35 = alloca %"class.std::allocator.71", align 1
  %36 = alloca %"class.std::allocator.71", align 1
  %37 = alloca %"class.std::allocator.71", align 1
  %38 = alloca %"class.std::allocator.71", align 1
  %39 = alloca %"class.std::allocator.71", align 1
  %40 = alloca %"class.std::allocator.71", align 1
  %41 = alloca %"class.std::allocator.71", align 1
  %42 = alloca %"class.std::allocator.71", align 1
  %43 = alloca %"class.std::allocator.71", align 1
  %44 = alloca %"class.std::allocator.71", align 1
  %45 = alloca %"class.std::allocator.71", align 1
  %46 = alloca %"class.std::allocator.71", align 1
  %47 = alloca %"class.std::allocator.71", align 1
  %48 = alloca %"class.std::allocator.71", align 1
  %49 = alloca %"class.std::allocator.71", align 1
  %50 = alloca %"class.std::allocator.71", align 1
  %51 = alloca %"class.std::allocator.71", align 1
  %52 = alloca %"class.std::allocator.71", align 1
  %53 = alloca %"class.std::allocator.71", align 1
  store ptr %0, ptr %4, align 8
  store ptr %1, ptr %5, align 8, !tbaa !5
  store i32 %2, ptr %6, align 4, !tbaa !9
  %54 = load ptr, ptr %5, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #6
  %55 = call noundef nonnull align 8 dereferenceable(237) ptr @_ZN11spirv_cross8Compiler15get_entry_pointEv(ptr noundef nonnull align 8 dereferenceable(3176) %54)
  store ptr %55, ptr %7, align 8, !tbaa !5
  %56 = load i32, ptr %6, align 4, !tbaa !9
  switch i32 %56, label %645 [
    i32 5, label %57
    i32 42, label %63
    i32 4424, label %69
    i32 6, label %75
    i32 43, label %81
    i32 4425, label %87
    i32 4426, label %93
    i32 3, label %100
    i32 4, label %106
    i32 1, label %112
    i32 0, label %118
    i32 9, label %144
    i32 10, label %150
    i32 8, label %166
    i32 14, label %184
    i32 7, label %191
    i32 11, label %265
    i32 12, label %265
    i32 13, label %272
    i32 17, label %278
    i32 16, label %284
    i32 15, label %290
    i32 18, label %296
    i32 20, label %302
    i32 19, label %308
    i32 4440, label %315
    i32 22, label %338
    i32 5014, label %364
    i32 28, label %370
    i32 26, label %376
    i32 24, label %382
    i32 27, label %388
    i32 29, label %394
    i32 36, label %400
    i32 38, label %444
    i32 40, label %479
    i32 41, label %514
    i32 4416, label %602
    i32 4417, label %602
    i32 4418, label %602
    i32 4419, label %602
    i32 4420, label %602
    i32 5286, label %609
    i32 5287, label %609
    i32 5299, label %639
  ]

57:                                               ; preds = %3
  call void @llvm.lifetime.start.p0(i64 1, ptr %8) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1679, ptr noundef nonnull align 1 dereferenceable(1) %8)
          to label %58 unwind label %59

58:                                               ; preds = %57
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #6
  store i32 1, ptr %11, align 4
  br label %651

59:                                               ; preds = %57
  %60 = landingpad { ptr, i32 }
          cleanup
  %61 = extractvalue { ptr, i32 } %60, 0
  store ptr %61, ptr %9, align 8
  %62 = extractvalue { ptr, i32 } %60, 1
  store i32 %62, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #6
  br label %652

63:                                               ; preds = %3
  call void @llvm.lifetime.start.p0(i64 1, ptr %12) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1679, ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %64 unwind label %65

64:                                               ; preds = %63
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %12) #6
  store i32 1, ptr %11, align 4
  br label %651

65:                                               ; preds = %63
  %66 = landingpad { ptr, i32 }
          cleanup
  %67 = extractvalue { ptr, i32 } %66, 0
  store ptr %67, ptr %9, align 8
  %68 = extractvalue { ptr, i32 } %66, 1
  store i32 %68, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %12) #6
  br label %652

69:                                               ; preds = %3
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1680, ptr noundef nonnull align 1 dereferenceable(1) %13)
          to label %70 unwind label %71

70:                                               ; preds = %69
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #6
  store i32 1, ptr %11, align 4
  br label %651

71:                                               ; preds = %69
  %72 = landingpad { ptr, i32 }
          cleanup
  %73 = extractvalue { ptr, i32 } %72, 0
  store ptr %73, ptr %9, align 8
  %74 = extractvalue { ptr, i32 } %72, 1
  store i32 %74, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #6
  br label %652

75:                                               ; preds = %3
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1681, ptr noundef nonnull align 1 dereferenceable(1) %14)
          to label %76 unwind label %77

76:                                               ; preds = %75
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #6
  store i32 1, ptr %11, align 4
  br label %651

77:                                               ; preds = %75
  %78 = landingpad { ptr, i32 }
          cleanup
  %79 = extractvalue { ptr, i32 } %78, 0
  store ptr %79, ptr %9, align 8
  %80 = extractvalue { ptr, i32 } %78, 1
  store i32 %80, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #6
  br label %652

81:                                               ; preds = %3
  call void @llvm.lifetime.start.p0(i64 1, ptr %15) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1681, ptr noundef nonnull align 1 dereferenceable(1) %15)
          to label %82 unwind label %83

82:                                               ; preds = %81
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #6
  store i32 1, ptr %11, align 4
  br label %651

83:                                               ; preds = %81
  %84 = landingpad { ptr, i32 }
          cleanup
  %85 = extractvalue { ptr, i32 } %84, 0
  store ptr %85, ptr %9, align 8
  %86 = extractvalue { ptr, i32 } %84, 1
  store i32 %86, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #6
  br label %652

87:                                               ; preds = %3
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1682, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %88 unwind label %89

88:                                               ; preds = %87
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #6
  store i32 1, ptr %11, align 4
  br label %651

89:                                               ; preds = %87
  %90 = landingpad { ptr, i32 }
          cleanup
  %91 = extractvalue { ptr, i32 } %90, 0
  store ptr %91, ptr %9, align 8
  %92 = extractvalue { ptr, i32 } %90, 1
  store i32 %92, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #6
  br label %652

93:                                               ; preds = %3
  %94 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %94, ptr noundef @.str.1320)
          to label %95 unwind label %96

95:                                               ; preds = %93
  call void @__cxa_throw(ptr %94, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

96:                                               ; preds = %93
  %97 = landingpad { ptr, i32 }
          cleanup
  %98 = extractvalue { ptr, i32 } %97, 0
  store ptr %98, ptr %9, align 8
  %99 = extractvalue { ptr, i32 } %97, 1
  store i32 %99, ptr %10, align 4
  call void @__cxa_free_exception(ptr %94) #6
  br label %652

100:                                              ; preds = %3
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1683, ptr noundef nonnull align 1 dereferenceable(1) %17)
          to label %101 unwind label %102

101:                                              ; preds = %100
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #6
  store i32 1, ptr %11, align 4
  br label %651

102:                                              ; preds = %100
  %103 = landingpad { ptr, i32 }
          cleanup
  %104 = extractvalue { ptr, i32 } %103, 0
  store ptr %104, ptr %9, align 8
  %105 = extractvalue { ptr, i32 } %103, 1
  store i32 %105, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #6
  br label %652

106:                                              ; preds = %3
  call void @llvm.lifetime.start.p0(i64 1, ptr %18) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1684, ptr noundef nonnull align 1 dereferenceable(1) %18)
          to label %107 unwind label %108

107:                                              ; preds = %106
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #6
  store i32 1, ptr %11, align 4
  br label %651

108:                                              ; preds = %106
  %109 = landingpad { ptr, i32 }
          cleanup
  %110 = extractvalue { ptr, i32 } %109, 0
  store ptr %110, ptr %9, align 8
  %111 = extractvalue { ptr, i32 } %109, 1
  store i32 %111, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #6
  br label %652

112:                                              ; preds = %3
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1685, ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %113 unwind label %114

113:                                              ; preds = %112
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #6
  store i32 1, ptr %11, align 4
  br label %651

114:                                              ; preds = %112
  %115 = landingpad { ptr, i32 }
          cleanup
  %116 = extractvalue { ptr, i32 } %115, 0
  store ptr %116, ptr %9, align 8
  %117 = extractvalue { ptr, i32 } %115, 1
  store i32 %117, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #6
  br label %652

118:                                              ; preds = %3
  %119 = getelementptr inbounds %"class.spirv_cross::Compiler", ptr %54, i32 0, i32 24
  %120 = load i8, ptr %119, align 8, !tbaa !11, !range !78, !noundef !79
  %121 = trunc i8 %120 to i1
  br i1 %121, label %122, label %138

122:                                              ; preds = %118
  %123 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %54, i32 0, i32 37
  %124 = call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options20supports_msl_versionEjjj(ptr noundef nonnull align 4 dereferenceable(137) %123, i32 noundef 2, i32 noundef 1, i32 noundef 0)
  br i1 %124, label %132, label %125

125:                                              ; preds = %122
  %126 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %126, ptr noundef @.str.1686)
          to label %127 unwind label %128

127:                                              ; preds = %125
  call void @__cxa_throw(ptr %126, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

128:                                              ; preds = %125
  %129 = landingpad { ptr, i32 }
          cleanup
  %130 = extractvalue { ptr, i32 } %129, 0
  store ptr %130, ptr %9, align 8
  %131 = extractvalue { ptr, i32 } %129, 1
  store i32 %131, ptr %10, align 4
  call void @__cxa_free_exception(ptr %126) #6
  br label %652

132:                                              ; preds = %122
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1687, ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %133 unwind label %134

133:                                              ; preds = %132
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #6
  store i32 1, ptr %11, align 4
  br label %651

134:                                              ; preds = %132
  %135 = landingpad { ptr, i32 }
          cleanup
  %136 = extractvalue { ptr, i32 } %135, 0
  store ptr %136, ptr %9, align 8
  %137 = extractvalue { ptr, i32 } %135, 1
  store i32 %137, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #6
  br label %652

138:                                              ; preds = %118
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1688, ptr noundef nonnull align 1 dereferenceable(1) %21)
          to label %139 unwind label %140

139:                                              ; preds = %138
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #6
  store i32 1, ptr %11, align 4
  br label %651

140:                                              ; preds = %138
  %141 = landingpad { ptr, i32 }
          cleanup
  %142 = extractvalue { ptr, i32 } %141, 0
  store ptr %142, ptr %9, align 8
  %143 = extractvalue { ptr, i32 } %141, 1
  store i32 %143, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #6
  br label %652

144:                                              ; preds = %3
  call void @llvm.lifetime.start.p0(i64 1, ptr %22) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1689, ptr noundef nonnull align 1 dereferenceable(1) %22)
          to label %145 unwind label %146

145:                                              ; preds = %144
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #6
  store i32 1, ptr %11, align 4
  br label %651

146:                                              ; preds = %144
  %147 = landingpad { ptr, i32 }
          cleanup
  %148 = extractvalue { ptr, i32 } %147, 0
  store ptr %148, ptr %9, align 8
  %149 = extractvalue { ptr, i32 } %147, 1
  store i32 %149, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #6
  br label %652

150:                                              ; preds = %3
  %151 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %54, i32 0, i32 37
  %152 = call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options20supports_msl_versionEjjj(ptr noundef nonnull align 4 dereferenceable(137) %151, i32 noundef 2, i32 noundef 0, i32 noundef 0)
  br i1 %152, label %160, label %153

153:                                              ; preds = %150
  %154 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %154, ptr noundef @.str.1323)
          to label %155 unwind label %156

155:                                              ; preds = %153
  call void @__cxa_throw(ptr %154, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

156:                                              ; preds = %153
  %157 = landingpad { ptr, i32 }
          cleanup
  %158 = extractvalue { ptr, i32 } %157, 0
  store ptr %158, ptr %9, align 8
  %159 = extractvalue { ptr, i32 } %157, 1
  store i32 %159, ptr %10, align 4
  call void @__cxa_free_exception(ptr %154) #6
  br label %652

160:                                              ; preds = %150
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1690, ptr noundef nonnull align 1 dereferenceable(1) %23)
          to label %161 unwind label %162

161:                                              ; preds = %160
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #6
  store i32 1, ptr %11, align 4
  br label %651

162:                                              ; preds = %160
  %163 = landingpad { ptr, i32 }
          cleanup
  %164 = extractvalue { ptr, i32 } %163, 0
  store ptr %164, ptr %9, align 8
  %165 = extractvalue { ptr, i32 } %163, 1
  store i32 %165, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #6
  br label %652

166:                                              ; preds = %3
  %167 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %54, i32 0, i32 37
  %168 = getelementptr inbounds %"struct.spirv_cross::CompilerMSL::Options", ptr %167, i32 0, i32 48
  %169 = load i8, ptr %168, align 1, !tbaa !80, !range !78, !noundef !79
  %170 = trunc i8 %169 to i1
  br i1 %170, label %171, label %178

171:                                              ; preds = %166
  %172 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %172, ptr noundef @.str.1691)
          to label %173 unwind label %174

173:                                              ; preds = %171
  call void @__cxa_throw(ptr %172, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

174:                                              ; preds = %171
  %175 = landingpad { ptr, i32 }
          cleanup
  %176 = extractvalue { ptr, i32 } %175, 0
  store ptr %176, ptr %9, align 8
  %177 = extractvalue { ptr, i32 } %175, 1
  store i32 %177, ptr %10, align 4
  call void @__cxa_free_exception(ptr %172) #6
  br label %652

178:                                              ; preds = %166
  call void @llvm.lifetime.start.p0(i64 1, ptr %24) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1692, ptr noundef nonnull align 1 dereferenceable(1) %24)
          to label %179 unwind label %180

179:                                              ; preds = %178
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #6
  store i32 1, ptr %11, align 4
  br label %651

180:                                              ; preds = %178
  %181 = landingpad { ptr, i32 }
          cleanup
  %182 = extractvalue { ptr, i32 } %181, 0
  store ptr %182, ptr %9, align 8
  %183 = extractvalue { ptr, i32 } %181, 1
  store i32 %183, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #6
  br label %652

184:                                              ; preds = %3
  %185 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %185, ptr noundef @.str.1693)
          to label %186 unwind label %187

186:                                              ; preds = %184
  call void @__cxa_throw(ptr %185, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

187:                                              ; preds = %184
  %188 = landingpad { ptr, i32 }
          cleanup
  %189 = extractvalue { ptr, i32 } %188, 0
  store ptr %189, ptr %9, align 8
  %190 = extractvalue { ptr, i32 } %188, 1
  store i32 %190, ptr %10, align 4
  call void @__cxa_free_exception(ptr %185) #6
  br label %652

191:                                              ; preds = %3
  %192 = load ptr, ptr %7, align 8, !tbaa !5
  %193 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %192, i32 0, i32 10
  %194 = load i32, ptr %193, align 8, !tbaa !178
  switch i32 %194, label %258 [
    i32 1, label %195
    i32 2, label %213
    i32 4, label %219
    i32 5365, label %252
  ]

195:                                              ; preds = %191
  %196 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %54, i32 0, i32 37
  %197 = getelementptr inbounds %"struct.spirv_cross::CompilerMSL::Options", ptr %196, i32 0, i32 48
  %198 = load i8, ptr %197, align 1, !tbaa !80, !range !78, !noundef !79
  %199 = trunc i8 %198 to i1
  br i1 %199, label %200, label %207

200:                                              ; preds = %195
  %201 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %201, ptr noundef @.str.1694)
          to label %202 unwind label %203

202:                                              ; preds = %200
  call void @__cxa_throw(ptr %201, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

203:                                              ; preds = %200
  %204 = landingpad { ptr, i32 }
          cleanup
  %205 = extractvalue { ptr, i32 } %204, 0
  store ptr %205, ptr %9, align 8
  %206 = extractvalue { ptr, i32 } %204, 1
  store i32 %206, ptr %10, align 4
  call void @__cxa_free_exception(ptr %201) #6
  br label %652

207:                                              ; preds = %195
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1695, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %208 unwind label %209

208:                                              ; preds = %207
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #6
  store i32 1, ptr %11, align 4
  br label %651

209:                                              ; preds = %207
  %210 = landingpad { ptr, i32 }
          cleanup
  %211 = extractvalue { ptr, i32 } %210, 0
  store ptr %211, ptr %9, align 8
  %212 = extractvalue { ptr, i32 } %210, 1
  store i32 %212, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #6
  br label %652

213:                                              ; preds = %191
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1696, ptr noundef nonnull align 1 dereferenceable(1) %26)
          to label %214 unwind label %215

214:                                              ; preds = %213
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #6
  store i32 1, ptr %11, align 4
  br label %651

215:                                              ; preds = %213
  %216 = landingpad { ptr, i32 }
          cleanup
  %217 = extractvalue { ptr, i32 } %216, 0
  store ptr %217, ptr %9, align 8
  %218 = extractvalue { ptr, i32 } %216, 1
  store i32 %218, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #6
  br label %652

219:                                              ; preds = %191
  %220 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %54, i32 0, i32 37
  %221 = call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options6is_iosEv(ptr noundef nonnull align 4 dereferenceable(137) %220)
  br i1 %221, label %222, label %232

222:                                              ; preds = %219
  %223 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %54, i32 0, i32 37
  %224 = call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options20supports_msl_versionEjjj(ptr noundef nonnull align 4 dereferenceable(137) %223, i32 noundef 2, i32 noundef 3, i32 noundef 0)
  br i1 %224, label %232, label %225

225:                                              ; preds = %222
  %226 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %226, ptr noundef @.str.1697)
          to label %227 unwind label %228

227:                                              ; preds = %225
  call void @__cxa_throw(ptr %226, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

228:                                              ; preds = %225
  %229 = landingpad { ptr, i32 }
          cleanup
  %230 = extractvalue { ptr, i32 } %229, 0
  store ptr %230, ptr %9, align 8
  %231 = extractvalue { ptr, i32 } %229, 1
  store i32 %231, ptr %10, align 4
  call void @__cxa_free_exception(ptr %226) #6
  br label %652

232:                                              ; preds = %222, %219
  %233 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %54, i32 0, i32 37
  %234 = call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options8is_macosEv(ptr noundef nonnull align 4 dereferenceable(137) %233)
  br i1 %234, label %235, label %245

235:                                              ; preds = %232
  %236 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %54, i32 0, i32 37
  %237 = call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options20supports_msl_versionEjjj(ptr noundef nonnull align 4 dereferenceable(137) %236, i32 noundef 2, i32 noundef 2, i32 noundef 0)
  br i1 %237, label %245, label %238

238:                                              ; preds = %235
  %239 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %239, ptr noundef @.str.1698)
          to label %240 unwind label %241

240:                                              ; preds = %238
  call void @__cxa_throw(ptr %239, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

241:                                              ; preds = %238
  %242 = landingpad { ptr, i32 }
          cleanup
  %243 = extractvalue { ptr, i32 } %242, 0
  store ptr %243, ptr %9, align 8
  %244 = extractvalue { ptr, i32 } %242, 1
  store i32 %244, ptr %10, align 4
  call void @__cxa_free_exception(ptr %239) #6
  br label %652

245:                                              ; preds = %235, %232
  br label %246

246:                                              ; preds = %245
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1699, ptr noundef nonnull align 1 dereferenceable(1) %27)
          to label %247 unwind label %248

247:                                              ; preds = %246
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #6
  store i32 1, ptr %11, align 4
  br label %651

248:                                              ; preds = %246
  %249 = landingpad { ptr, i32 }
          cleanup
  %250 = extractvalue { ptr, i32 } %249, 0
  store ptr %250, ptr %9, align 8
  %251 = extractvalue { ptr, i32 } %249, 1
  store i32 %251, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #6
  br label %652

252:                                              ; preds = %191
  call void @llvm.lifetime.start.p0(i64 1, ptr %28) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1699, ptr noundef nonnull align 1 dereferenceable(1) %28)
          to label %253 unwind label %254

253:                                              ; preds = %252
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #6
  store i32 1, ptr %11, align 4
  br label %651

254:                                              ; preds = %252
  %255 = landingpad { ptr, i32 }
          cleanup
  %256 = extractvalue { ptr, i32 } %255, 0
  store ptr %256, ptr %9, align 8
  %257 = extractvalue { ptr, i32 } %255, 1
  store i32 %257, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #6
  br label %652

258:                                              ; preds = %191
  %259 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %259, ptr noundef @.str.1700)
          to label %260 unwind label %261

260:                                              ; preds = %258
  call void @__cxa_throw(ptr %259, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

261:                                              ; preds = %258
  %262 = landingpad { ptr, i32 }
          cleanup
  %263 = extractvalue { ptr, i32 } %262, 0
  store ptr %263, ptr %9, align 8
  %264 = extractvalue { ptr, i32 } %262, 1
  store i32 %264, ptr %10, align 4
  call void @__cxa_free_exception(ptr %259) #6
  br label %652

265:                                              ; preds = %3, %3
  %266 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %266, ptr noundef @.str.1701)
          to label %267 unwind label %268

267:                                              ; preds = %265
  call void @__cxa_throw(ptr %266, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

268:                                              ; preds = %265
  %269 = landingpad { ptr, i32 }
          cleanup
  %270 = extractvalue { ptr, i32 } %269, 0
  store ptr %270, ptr %9, align 8
  %271 = extractvalue { ptr, i32 } %269, 1
  store i32 %271, ptr %10, align 4
  call void @__cxa_free_exception(ptr %266) #6
  br label %652

272:                                              ; preds = %3
  call void @llvm.lifetime.start.p0(i64 1, ptr %29) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1702, ptr noundef nonnull align 1 dereferenceable(1) %29)
          to label %273 unwind label %274

273:                                              ; preds = %272
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #6
  store i32 1, ptr %11, align 4
  br label %651

274:                                              ; preds = %272
  %275 = landingpad { ptr, i32 }
          cleanup
  %276 = extractvalue { ptr, i32 } %275, 0
  store ptr %276, ptr %9, align 8
  %277 = extractvalue { ptr, i32 } %275, 1
  store i32 %277, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #6
  br label %652

278:                                              ; preds = %3
  call void @llvm.lifetime.start.p0(i64 1, ptr %30) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1703, ptr noundef nonnull align 1 dereferenceable(1) %30)
          to label %279 unwind label %280

279:                                              ; preds = %278
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #6
  store i32 1, ptr %11, align 4
  br label %651

280:                                              ; preds = %278
  %281 = landingpad { ptr, i32 }
          cleanup
  %282 = extractvalue { ptr, i32 } %281, 0
  store ptr %282, ptr %9, align 8
  %283 = extractvalue { ptr, i32 } %281, 1
  store i32 %283, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #6
  br label %652

284:                                              ; preds = %3
  call void @llvm.lifetime.start.p0(i64 1, ptr %31) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1704, ptr noundef nonnull align 1 dereferenceable(1) %31)
          to label %285 unwind label %286

285:                                              ; preds = %284
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #6
  store i32 1, ptr %11, align 4
  br label %651

286:                                              ; preds = %284
  %287 = landingpad { ptr, i32 }
          cleanup
  %288 = extractvalue { ptr, i32 } %287, 0
  store ptr %288, ptr %9, align 8
  %289 = extractvalue { ptr, i32 } %287, 1
  store i32 %289, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #6
  br label %652

290:                                              ; preds = %3
  call void @llvm.lifetime.start.p0(i64 1, ptr %32) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1688, ptr noundef nonnull align 1 dereferenceable(1) %32)
          to label %291 unwind label %292

291:                                              ; preds = %290
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #6
  store i32 1, ptr %11, align 4
  br label %651

292:                                              ; preds = %290
  %293 = landingpad { ptr, i32 }
          cleanup
  %294 = extractvalue { ptr, i32 } %293, 0
  store ptr %294, ptr %9, align 8
  %295 = extractvalue { ptr, i32 } %293, 1
  store i32 %295, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #6
  br label %652

296:                                              ; preds = %3
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1705, ptr noundef nonnull align 1 dereferenceable(1) %33)
          to label %297 unwind label %298

297:                                              ; preds = %296
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #6
  store i32 1, ptr %11, align 4
  br label %651

298:                                              ; preds = %296
  %299 = landingpad { ptr, i32 }
          cleanup
  %300 = extractvalue { ptr, i32 } %299, 0
  store ptr %300, ptr %9, align 8
  %301 = extractvalue { ptr, i32 } %299, 1
  store i32 %301, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #6
  br label %652

302:                                              ; preds = %3
  call void @llvm.lifetime.start.p0(i64 1, ptr %34) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1706, ptr noundef nonnull align 1 dereferenceable(1) %34)
          to label %303 unwind label %304

303:                                              ; preds = %302
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #6
  store i32 1, ptr %11, align 4
  br label %651

304:                                              ; preds = %302
  %305 = landingpad { ptr, i32 }
          cleanup
  %306 = extractvalue { ptr, i32 } %305, 0
  store ptr %306, ptr %9, align 8
  %307 = extractvalue { ptr, i32 } %305, 1
  store i32 %307, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #6
  br label %652

308:                                              ; preds = %3
  %309 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %309, ptr noundef @.str.1707)
          to label %310 unwind label %311

310:                                              ; preds = %308
  call void @__cxa_throw(ptr %309, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

311:                                              ; preds = %308
  %312 = landingpad { ptr, i32 }
          cleanup
  %313 = extractvalue { ptr, i32 } %312, 0
  store ptr %313, ptr %9, align 8
  %314 = extractvalue { ptr, i32 } %312, 1
  store i32 %314, ptr %10, align 4
  call void @__cxa_free_exception(ptr %309) #6
  br label %652

315:                                              ; preds = %3
  %316 = load ptr, ptr %7, align 8, !tbaa !5
  %317 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %316, i32 0, i32 10
  %318 = load i32, ptr %317, align 8, !tbaa !178
  %319 = icmp ne i32 %318, 4
  br i1 %319, label %320, label %332

320:                                              ; preds = %315
  %321 = load ptr, ptr %7, align 8, !tbaa !5
  %322 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %321, i32 0, i32 10
  %323 = load i32, ptr %322, align 8, !tbaa !178
  %324 = icmp ne i32 %323, 5365
  br i1 %324, label %325, label %332

325:                                              ; preds = %320
  %326 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %326, ptr noundef @.str.1708)
          to label %327 unwind label %328

327:                                              ; preds = %325
  call void @__cxa_throw(ptr %326, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

328:                                              ; preds = %325
  %329 = landingpad { ptr, i32 }
          cleanup
  %330 = extractvalue { ptr, i32 } %329, 0
  store ptr %330, ptr %9, align 8
  %331 = extractvalue { ptr, i32 } %329, 1
  store i32 %331, ptr %10, align 4
  call void @__cxa_free_exception(ptr %326) #6
  br label %652

332:                                              ; preds = %320, %315
  call void @llvm.lifetime.start.p0(i64 1, ptr %35) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1689, ptr noundef nonnull align 1 dereferenceable(1) %35)
          to label %333 unwind label %334

333:                                              ; preds = %332
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #6
  store i32 1, ptr %11, align 4
  br label %651

334:                                              ; preds = %332
  %335 = landingpad { ptr, i32 }
          cleanup
  %336 = extractvalue { ptr, i32 } %335, 0
  store ptr %336, ptr %9, align 8
  %337 = extractvalue { ptr, i32 } %335, 1
  store i32 %337, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #6
  br label %652

338:                                              ; preds = %3
  %339 = load ptr, ptr %7, align 8, !tbaa !5
  %340 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %339, i32 0, i32 5
  %341 = call noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %340, i32 noundef 14)
  br i1 %341, label %342, label %348

342:                                              ; preds = %338
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1709, ptr noundef nonnull align 1 dereferenceable(1) %36)
          to label %343 unwind label %344

343:                                              ; preds = %342
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #6
  store i32 1, ptr %11, align 4
  br label %651

344:                                              ; preds = %342
  %345 = landingpad { ptr, i32 }
          cleanup
  %346 = extractvalue { ptr, i32 } %345, 0
  store ptr %346, ptr %9, align 8
  %347 = extractvalue { ptr, i32 } %345, 1
  store i32 %347, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #6
  br label %652

348:                                              ; preds = %338
  %349 = load ptr, ptr %7, align 8, !tbaa !5
  %350 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %349, i32 0, i32 5
  %351 = call noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %350, i32 noundef 15)
  br i1 %351, label %352, label %358

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

353:                                              ; preds = %352
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #6
  store i32 1, ptr %11, align 4
  br label %651

354:                                              ; preds = %352
  %355 = landingpad { ptr, i32 }
          cleanup
  %356 = extractvalue { ptr, i32 } %355, 0
  store ptr %356, ptr %9, align 8
  %357 = extractvalue { ptr, i32 } %355, 1
  store i32 %357, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #6
  br label %652

358:                                              ; preds = %348
  call void @llvm.lifetime.start.p0(i64 1, ptr %38) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1711, ptr noundef nonnull align 1 dereferenceable(1) %38)
          to label %359 unwind label %360

359:                                              ; preds = %358
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #6
  store i32 1, ptr %11, align 4
  br label %651

360:                                              ; preds = %358
  %361 = landingpad { ptr, i32 }
          cleanup
  %362 = extractvalue { ptr, i32 } %361, 0
  store ptr %362, ptr %9, align 8
  %363 = extractvalue { ptr, i32 } %361, 1
  store i32 %363, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #6
  br label %652

364:                                              ; preds = %3
  call void @llvm.lifetime.start.p0(i64 1, ptr %39) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1712, ptr noundef nonnull align 1 dereferenceable(1) %39)
          to label %365 unwind label %366

365:                                              ; preds = %364
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #6
  store i32 1, ptr %11, align 4
  br label %651

366:                                              ; preds = %364
  %367 = landingpad { ptr, i32 }
          cleanup
  %368 = extractvalue { ptr, i32 } %367, 0
  store ptr %368, ptr %9, align 8
  %369 = extractvalue { ptr, i32 } %367, 1
  store i32 %369, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #6
  br label %652

370:                                              ; preds = %3
  call void @llvm.lifetime.start.p0(i64 1, ptr %40) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1713, ptr noundef nonnull align 1 dereferenceable(1) %40)
          to label %371 unwind label %372

371:                                              ; preds = %370
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #6
  store i32 1, ptr %11, align 4
  br label %651

372:                                              ; preds = %370
  %373 = landingpad { ptr, i32 }
          cleanup
  %374 = extractvalue { ptr, i32 } %373, 0
  store ptr %374, ptr %9, align 8
  %375 = extractvalue { ptr, i32 } %373, 1
  store i32 %375, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #6
  br label %652

376:                                              ; preds = %3
  call void @llvm.lifetime.start.p0(i64 1, ptr %41) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1695, ptr noundef nonnull align 1 dereferenceable(1) %41)
          to label %377 unwind label %378

377:                                              ; preds = %376
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #6
  store i32 1, ptr %11, align 4
  br label %651

378:                                              ; preds = %376
  %379 = landingpad { ptr, i32 }
          cleanup
  %380 = extractvalue { ptr, i32 } %379, 0
  store ptr %380, ptr %9, align 8
  %381 = extractvalue { ptr, i32 } %379, 1
  store i32 %381, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #6
  br label %652

382:                                              ; preds = %3
  call void @llvm.lifetime.start.p0(i64 1, ptr %42) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1714, ptr noundef nonnull align 1 dereferenceable(1) %42)
          to label %383 unwind label %384

383:                                              ; preds = %382
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #6
  store i32 1, ptr %11, align 4
  br label %651

384:                                              ; preds = %382
  %385 = landingpad { ptr, i32 }
          cleanup
  %386 = extractvalue { ptr, i32 } %385, 0
  store ptr %386, ptr %9, align 8
  %387 = extractvalue { ptr, i32 } %385, 1
  store i32 %387, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #6
  br label %652

388:                                              ; preds = %3
  call void @llvm.lifetime.start.p0(i64 1, ptr %43) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1715, ptr noundef nonnull align 1 dereferenceable(1) %43)
          to label %389 unwind label %390

389:                                              ; preds = %388
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #6
  store i32 1, ptr %11, align 4
  br label %651

390:                                              ; preds = %388
  %391 = landingpad { ptr, i32 }
          cleanup
  %392 = extractvalue { ptr, i32 } %391, 0
  store ptr %392, ptr %9, align 8
  %393 = extractvalue { ptr, i32 } %391, 1
  store i32 %393, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #6
  br label %652

394:                                              ; preds = %3
  call void @llvm.lifetime.start.p0(i64 1, ptr %44) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1692, ptr noundef nonnull align 1 dereferenceable(1) %44)
          to label %395 unwind label %396

395:                                              ; preds = %394
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #6
  store i32 1, ptr %11, align 4
  br label %651

396:                                              ; preds = %394
  %397 = landingpad { ptr, i32 }
          cleanup
  %398 = extractvalue { ptr, i32 } %397, 0
  store ptr %398, ptr %9, align 8
  %399 = extractvalue { ptr, i32 } %397, 1
  store i32 %399, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #6
  br label %652

400:                                              ; preds = %3
  %401 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %54, i32 0, i32 37
  %402 = getelementptr inbounds %"struct.spirv_cross::CompilerMSL::Options", ptr %401, i32 0, i32 53
  %403 = load i8, ptr %402, align 2, !tbaa !185, !range !78, !noundef !79
  %404 = trunc i8 %403 to i1
  br i1 %404, label %410, label %405

405:                                              ; preds = %400
  %406 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %54, i32 0, i32 37
  %407 = getelementptr inbounds %"struct.spirv_cross::CompilerMSL::Options", ptr %406, i32 0, i32 55
  %408 = load i32, ptr %407, align 4, !tbaa !186
  %409 = icmp ne i32 %408, 0
  br i1 %409, label %410, label %417

410:                                              ; preds = %405, %400
  %411 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %411, ptr noundef @.str.1716)
          to label %412 unwind label %413

412:                                              ; preds = %410
  call void @__cxa_throw(ptr %411, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

413:                                              ; preds = %410
  %414 = landingpad { ptr, i32 }
          cleanup
  %415 = extractvalue { ptr, i32 } %414, 0
  store ptr %415, ptr %9, align 8
  %416 = extractvalue { ptr, i32 } %414, 1
  store i32 %416, ptr %10, align 4
  call void @__cxa_free_exception(ptr %411) #6
  br label %652

417:                                              ; preds = %405
  %418 = load ptr, ptr %7, align 8, !tbaa !5
  %419 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %418, i32 0, i32 10
  %420 = load i32, ptr %419, align 8, !tbaa !178
  %421 = icmp eq i32 %420, 4
  br i1 %421, label %422, label %438

422:                                              ; preds = %417
  %423 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %54, i32 0, i32 37
  %424 = call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options20supports_msl_versionEjjj(ptr noundef nonnull align 4 dereferenceable(137) %423, i32 noundef 2, i32 noundef 2, i32 noundef 0)
  br i1 %424, label %432, label %425

425:                                              ; preds = %422
  %426 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %426, ptr noundef @.str.1717)
          to label %427 unwind label %428

427:                                              ; preds = %425
  call void @__cxa_throw(ptr %426, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

428:                                              ; preds = %425
  %429 = landingpad { ptr, i32 }
          cleanup
  %430 = extractvalue { ptr, i32 } %429, 0
  store ptr %430, ptr %9, align 8
  %431 = extractvalue { ptr, i32 } %429, 1
  store i32 %431, ptr %10, align 4
  call void @__cxa_free_exception(ptr %426) #6
  br label %652

432:                                              ; preds = %422
  call void @llvm.lifetime.start.p0(i64 1, ptr %45) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1718, ptr noundef nonnull align 1 dereferenceable(1) %45)
          to label %433 unwind label %434

433:                                              ; preds = %432
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #6
  store i32 1, ptr %11, align 4
  br label %651

434:                                              ; preds = %432
  %435 = landingpad { ptr, i32 }
          cleanup
  %436 = extractvalue { ptr, i32 } %435, 0
  store ptr %436, ptr %9, align 8
  %437 = extractvalue { ptr, i32 } %435, 1
  store i32 %437, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #6
  br label %652

438:                                              ; preds = %417
  call void @llvm.lifetime.start.p0(i64 1, ptr %46) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1719, ptr noundef nonnull align 1 dereferenceable(1) %46)
          to label %439 unwind label %440

439:                                              ; preds = %438
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #6
  store i32 1, ptr %11, align 4
  br label %651

440:                                              ; preds = %438
  %441 = landingpad { ptr, i32 }
          cleanup
  %442 = extractvalue { ptr, i32 } %441, 0
  store ptr %442, ptr %9, align 8
  %443 = extractvalue { ptr, i32 } %441, 1
  store i32 %443, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #6
  br label %652

444:                                              ; preds = %3
  %445 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %54, i32 0, i32 37
  %446 = getelementptr inbounds %"struct.spirv_cross::CompilerMSL::Options", ptr %445, i32 0, i32 53
  %447 = load i8, ptr %446, align 2, !tbaa !185, !range !78, !noundef !79
  %448 = trunc i8 %447 to i1
  br i1 %448, label %449, label %456

449:                                              ; preds = %444
  %450 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %450, ptr noundef @.str.1720)
          to label %451 unwind label %452

451:                                              ; preds = %449
  call void @__cxa_throw(ptr %450, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

452:                                              ; preds = %449
  %453 = landingpad { ptr, i32 }
          cleanup
  %454 = extractvalue { ptr, i32 } %453, 0
  store ptr %454, ptr %9, align 8
  %455 = extractvalue { ptr, i32 } %453, 1
  store i32 %455, ptr %10, align 4
  call void @__cxa_free_exception(ptr %450) #6
  br label %652

456:                                              ; preds = %444
  %457 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %54, i32 0, i32 37
  %458 = call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options20supports_msl_versionEjjj(ptr noundef nonnull align 4 dereferenceable(137) %457, i32 noundef 2, i32 noundef 0, i32 noundef 0)
  br i1 %458, label %466, label %459

459:                                              ; preds = %456
  %460 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %460, ptr noundef @.str.1721)
          to label %461 unwind label %462

461:                                              ; preds = %459
  call void @__cxa_throw(ptr %460, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

462:                                              ; preds = %459
  %463 = landingpad { ptr, i32 }
          cleanup
  %464 = extractvalue { ptr, i32 } %463, 0
  store ptr %464, ptr %9, align 8
  %465 = extractvalue { ptr, i32 } %463, 1
  store i32 %465, ptr %10, align 4
  call void @__cxa_free_exception(ptr %460) #6
  br label %652

466:                                              ; preds = %456
  %467 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %54, i32 0, i32 37
  %468 = call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options23use_quadgroup_operationEv(ptr noundef nonnull align 4 dereferenceable(137) %467)
  br i1 %468, label %469, label %470

469:                                              ; preds = %466
  br label %471

470:                                              ; preds = %466
  br label %471

471:                                              ; preds = %470, %469
  %472 = phi ptr [ @.str.1722, %469 ], [ @.str.1723, %470 ]
  %473 = getelementptr inbounds [27 x i8], ptr %472, i64 0, i64 0
  call void @llvm.lifetime.start.p0(i64 1, ptr %47) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %473, ptr noundef nonnull align 1 dereferenceable(1) %47)
          to label %474 unwind label %475

474:                                              ; preds = %471
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #6
  store i32 1, ptr %11, align 4
  br label %651

475:                                              ; preds = %471
  %476 = landingpad { ptr, i32 }
          cleanup
  %477 = extractvalue { ptr, i32 } %476, 0
  store ptr %477, ptr %9, align 8
  %478 = extractvalue { ptr, i32 } %476, 1
  store i32 %478, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #6
  br label %652

479:                                              ; preds = %3
  %480 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %54, i32 0, i32 37
  %481 = getelementptr inbounds %"struct.spirv_cross::CompilerMSL::Options", ptr %480, i32 0, i32 53
  %482 = load i8, ptr %481, align 2, !tbaa !185, !range !78, !noundef !79
  %483 = trunc i8 %482 to i1
  br i1 %483, label %484, label %491

484:                                              ; preds = %479
  %485 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %485, ptr noundef @.str.1724)
          to label %486 unwind label %487

486:                                              ; preds = %484
  call void @__cxa_throw(ptr %485, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

487:                                              ; preds = %484
  %488 = landingpad { ptr, i32 }
          cleanup
  %489 = extractvalue { ptr, i32 } %488, 0
  store ptr %489, ptr %9, align 8
  %490 = extractvalue { ptr, i32 } %488, 1
  store i32 %490, ptr %10, align 4
  call void @__cxa_free_exception(ptr %485) #6
  br label %652

491:                                              ; preds = %479
  %492 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %54, i32 0, i32 37
  %493 = call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options20supports_msl_versionEjjj(ptr noundef nonnull align 4 dereferenceable(137) %492, i32 noundef 2, i32 noundef 0, i32 noundef 0)
  br i1 %493, label %501, label %494

494:                                              ; preds = %491
  %495 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %495, ptr noundef @.str.1721)
          to label %496 unwind label %497

496:                                              ; preds = %494
  call void @__cxa_throw(ptr %495, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

497:                                              ; preds = %494
  %498 = landingpad { ptr, i32 }
          cleanup
  %499 = extractvalue { ptr, i32 } %498, 0
  store ptr %499, ptr %9, align 8
  %500 = extractvalue { ptr, i32 } %498, 1
  store i32 %500, ptr %10, align 4
  call void @__cxa_free_exception(ptr %495) #6
  br label %652

501:                                              ; preds = %491
  %502 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %54, i32 0, i32 37
  %503 = call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options23use_quadgroup_operationEv(ptr noundef nonnull align 4 dereferenceable(137) %502)
  br i1 %503, label %504, label %505

504:                                              ; preds = %501
  br label %506

505:                                              ; preds = %501
  br label %506

506:                                              ; preds = %505, %504
  %507 = phi ptr [ @.str.1725, %504 ], [ @.str.1726, %505 ]
  %508 = getelementptr inbounds [31 x i8], ptr %507, i64 0, i64 0
  call void @llvm.lifetime.start.p0(i64 1, ptr %48) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %508, ptr noundef nonnull align 1 dereferenceable(1) %48)
          to label %509 unwind label %510

509:                                              ; preds = %506
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #6
  store i32 1, ptr %11, align 4
  br label %651

510:                                              ; preds = %506
  %511 = landingpad { ptr, i32 }
          cleanup
  %512 = extractvalue { ptr, i32 } %511, 0
  store ptr %512, ptr %9, align 8
  %513 = extractvalue { ptr, i32 } %511, 1
  store i32 %513, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #6
  br label %652

514:                                              ; preds = %3
  %515 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %54, i32 0, i32 37
  %516 = getelementptr inbounds %"struct.spirv_cross::CompilerMSL::Options", ptr %515, i32 0, i32 53
  %517 = load i8, ptr %516, align 2, !tbaa !185, !range !78, !noundef !79
  %518 = trunc i8 %517 to i1
  br i1 %518, label %519, label %526

519:                                              ; preds = %514
  %520 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %520, ptr noundef @.str.1727)
          to label %521 unwind label %522

521:                                              ; preds = %519
  call void @__cxa_throw(ptr %520, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

522:                                              ; preds = %519
  %523 = landingpad { ptr, i32 }
          cleanup
  %524 = extractvalue { ptr, i32 } %523, 0
  store ptr %524, ptr %9, align 8
  %525 = extractvalue { ptr, i32 } %523, 1
  store i32 %525, ptr %10, align 4
  call void @__cxa_free_exception(ptr %520) #6
  br label %652

526:                                              ; preds = %514
  %527 = load ptr, ptr %7, align 8, !tbaa !5
  %528 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %527, i32 0, i32 10
  %529 = load i32, ptr %528, align 8, !tbaa !178
  %530 = icmp eq i32 %529, 4
  br i1 %530, label %531, label %547

531:                                              ; preds = %526
  %532 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %54, i32 0, i32 37
  %533 = call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options20supports_msl_versionEjjj(ptr noundef nonnull align 4 dereferenceable(137) %532, i32 noundef 2, i32 noundef 2, i32 noundef 0)
  br i1 %533, label %541, label %534

534:                                              ; preds = %531
  %535 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %535, ptr noundef @.str.1728)
          to label %536 unwind label %537

536:                                              ; preds = %534
  call void @__cxa_throw(ptr %535, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

537:                                              ; preds = %534
  %538 = landingpad { ptr, i32 }
          cleanup
  %539 = extractvalue { ptr, i32 } %538, 0
  store ptr %539, ptr %9, align 8
  %540 = extractvalue { ptr, i32 } %538, 1
  store i32 %540, ptr %10, align 4
  call void @__cxa_free_exception(ptr %535) #6
  br label %652

541:                                              ; preds = %531
  call void @llvm.lifetime.start.p0(i64 1, ptr %49) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1729, ptr noundef nonnull align 1 dereferenceable(1) %49)
          to label %542 unwind label %543

542:                                              ; preds = %541
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #6
  store i32 1, ptr %11, align 4
  br label %651

543:                                              ; preds = %541
  %544 = landingpad { ptr, i32 }
          cleanup
  %545 = extractvalue { ptr, i32 } %544, 0
  store ptr %545, ptr %9, align 8
  %546 = extractvalue { ptr, i32 } %544, 1
  store i32 %546, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #6
  br label %652

547:                                              ; preds = %526
  %548 = load ptr, ptr %7, align 8, !tbaa !5
  %549 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %548, i32 0, i32 10
  %550 = load i32, ptr %549, align 8, !tbaa !178
  %551 = icmp eq i32 %550, 6
  br i1 %551, label %572, label %552

552:                                              ; preds = %547
  %553 = load ptr, ptr %7, align 8, !tbaa !5
  %554 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %553, i32 0, i32 10
  %555 = load i32, ptr %554, align 8, !tbaa !178
  %556 = icmp eq i32 %555, 5
  br i1 %556, label %572, label %557

557:                                              ; preds = %552
  %558 = load ptr, ptr %7, align 8, !tbaa !5
  %559 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %558, i32 0, i32 10
  %560 = load i32, ptr %559, align 8, !tbaa !178
  %561 = icmp eq i32 %560, 1
  br i1 %561, label %572, label %562

562:                                              ; preds = %557
  %563 = load ptr, ptr %7, align 8, !tbaa !5
  %564 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %563, i32 0, i32 10
  %565 = load i32, ptr %564, align 8, !tbaa !178
  %566 = icmp eq i32 %565, 0
  br i1 %566, label %567, label %595

567:                                              ; preds = %562
  %568 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %54, i32 0, i32 37
  %569 = getelementptr inbounds %"struct.spirv_cross::CompilerMSL::Options", ptr %568, i32 0, i32 50
  %570 = load i8, ptr %569, align 1, !tbaa !187, !range !78, !noundef !79
  %571 = trunc i8 %570 to i1
  br i1 %571, label %572, label %595

572:                                              ; preds = %567, %557, %552, %547
  %573 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %54, i32 0, i32 37
  %574 = call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options20supports_msl_versionEjjj(ptr noundef nonnull align 4 dereferenceable(137) %573, i32 noundef 2, i32 noundef 0, i32 noundef 0)
  br i1 %574, label %582, label %575

575:                                              ; preds = %572
  %576 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %576, ptr noundef @.str.1730)
          to label %577 unwind label %578

577:                                              ; preds = %575
  call void @__cxa_throw(ptr %576, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

578:                                              ; preds = %575
  %579 = landingpad { ptr, i32 }
          cleanup
  %580 = extractvalue { ptr, i32 } %579, 0
  store ptr %580, ptr %9, align 8
  %581 = extractvalue { ptr, i32 } %579, 1
  store i32 %581, ptr %10, align 4
  call void @__cxa_free_exception(ptr %576) #6
  br label %652

582:                                              ; preds = %572
  %583 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %54, i32 0, i32 37
  %584 = call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options23use_quadgroup_operationEv(ptr noundef nonnull align 4 dereferenceable(137) %583)
  br i1 %584, label %585, label %586

585:                                              ; preds = %582
  br label %587

586:                                              ; preds = %582
  br label %587

587:                                              ; preds = %586, %585
  %588 = phi ptr [ @.str.1731, %585 ], [ @.str.1729, %586 ]
  %589 = getelementptr inbounds [26 x i8], ptr %588, i64 0, i64 0
  call void @llvm.lifetime.start.p0(i64 1, ptr %50) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %589, ptr noundef nonnull align 1 dereferenceable(1) %50)
          to label %590 unwind label %591

590:                                              ; preds = %587
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %50) #6
  store i32 1, ptr %11, align 4
  br label %651

591:                                              ; preds = %587
  %592 = landingpad { ptr, i32 }
          cleanup
  %593 = extractvalue { ptr, i32 } %592, 0
  store ptr %593, ptr %9, align 8
  %594 = extractvalue { ptr, i32 } %592, 1
  store i32 %594, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %50) #6
  br label %652

595:                                              ; preds = %567, %562
  %596 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %596, ptr noundef @.str.1732)
          to label %597 unwind label %598

597:                                              ; preds = %595
  call void @__cxa_throw(ptr %596, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

598:                                              ; preds = %595
  %599 = landingpad { ptr, i32 }
          cleanup
  %600 = extractvalue { ptr, i32 } %599, 0
  store ptr %600, ptr %9, align 8
  %601 = extractvalue { ptr, i32 } %599, 1
  store i32 %601, ptr %10, align 4
  call void @__cxa_free_exception(ptr %596) #6
  br label %652

602:                                              ; preds = %3, %3, %3, %3, %3
  %603 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %603, ptr noundef @.str.1733)
          to label %604 unwind label %605

604:                                              ; preds = %602
  call void @__cxa_throw(ptr %603, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

605:                                              ; preds = %602
  %606 = landingpad { ptr, i32 }
          cleanup
  %607 = extractvalue { ptr, i32 } %606, 0
  store ptr %607, ptr %9, align 8
  %608 = extractvalue { ptr, i32 } %606, 1
  store i32 %608, ptr %10, align 4
  call void @__cxa_free_exception(ptr %603) #6
  br label %652

609:                                              ; preds = %3, %3
  %610 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %54, i32 0, i32 37
  %611 = call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options6is_iosEv(ptr noundef nonnull align 4 dereferenceable(137) %610)
  br i1 %611, label %612, label %622

612:                                              ; preds = %609
  %613 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %54, i32 0, i32 37
  %614 = call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options20supports_msl_versionEjjj(ptr noundef nonnull align 4 dereferenceable(137) %613, i32 noundef 2, i32 noundef 3, i32 noundef 0)
  br i1 %614, label %622, label %615

615:                                              ; preds = %612
  %616 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %616, ptr noundef @.str.1734)
          to label %617 unwind label %618

617:                                              ; preds = %615
  call void @__cxa_throw(ptr %616, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

618:                                              ; preds = %615
  %619 = landingpad { ptr, i32 }
          cleanup
  %620 = extractvalue { ptr, i32 } %619, 0
  store ptr %620, ptr %9, align 8
  %621 = extractvalue { ptr, i32 } %619, 1
  store i32 %621, ptr %10, align 4
  call void @__cxa_free_exception(ptr %616) #6
  br label %652

622:                                              ; preds = %612, %609
  %623 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %54, i32 0, i32 37
  %624 = call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options20supports_msl_versionEjjj(ptr noundef nonnull align 4 dereferenceable(137) %623, i32 noundef 2, i32 noundef 2, i32 noundef 0)
  br i1 %624, label %632, label %625

625:                                              ; preds = %622
  %626 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %626, ptr noundef @.str.1735)
          to label %627 unwind label %628

627:                                              ; preds = %625
  call void @__cxa_throw(ptr %626, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

628:                                              ; preds = %625
  %629 = landingpad { ptr, i32 }
          cleanup
  %630 = extractvalue { ptr, i32 } %629, 0
  store ptr %630, ptr %9, align 8
  %631 = extractvalue { ptr, i32 } %629, 1
  store i32 %631, ptr %10, align 4
  call void @__cxa_free_exception(ptr %626) #6
  br label %652

632:                                              ; preds = %622
  br label %633

633:                                              ; preds = %632
  call void @llvm.lifetime.start.p0(i64 1, ptr %51) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1736, ptr noundef nonnull align 1 dereferenceable(1) %51)
          to label %634 unwind label %635

634:                                              ; preds = %633
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #6
  store i32 1, ptr %11, align 4
  br label %651

635:                                              ; preds = %633
  %636 = landingpad { ptr, i32 }
          cleanup
  %637 = extractvalue { ptr, i32 } %636, 0
  store ptr %637, ptr %9, align 8
  %638 = extractvalue { ptr, i32 } %636, 1
  store i32 %638, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #6
  br label %652

639:                                              ; preds = %3
  call void @llvm.lifetime.start.p0(i64 1, ptr %52) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1737, ptr noundef nonnull align 1 dereferenceable(1) %52)
          to label %640 unwind label %641

640:                                              ; preds = %639
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #6
  store i32 1, ptr %11, align 4
  br label %651

641:                                              ; preds = %639
  %642 = landingpad { ptr, i32 }
          cleanup
  %643 = extractvalue { ptr, i32 } %642, 0
  store ptr %643, ptr %9, align 8
  %644 = extractvalue { ptr, i32 } %642, 1
  store i32 %644, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #6
  br label %652

645:                                              ; preds = %3
  call void @llvm.lifetime.start.p0(i64 1, ptr %53) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1738, ptr noundef nonnull align 1 dereferenceable(1) %53)
          to label %646 unwind label %647

646:                                              ; preds = %645
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #6
  store i32 1, ptr %11, align 4
  br label %651

647:                                              ; preds = %645
  %648 = landingpad { ptr, i32 }
          cleanup
  %649 = extractvalue { ptr, i32 } %648, 0
  store ptr %649, ptr %9, align 8
  %650 = extractvalue { ptr, i32 } %648, 1
  store i32 %650, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #6
  br label %652

651:                                              ; preds = %646, %640, %634, %590, %542, %509, %474, %439, %433, %395, %389, %383, %377, %371, %365, %359, %353, %343, %333, %303, %297, %291, %285, %279, %273, %253, %247, %214, %208, %179, %161, %145, %139, %133, %113, %107, %101, %88, %82, %76, %70, %64, %58
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #6
  ret void

652:                                              ; preds = %647, %641, %635, %628, %618, %605, %598, %591, %578, %543, %537, %522, %510, %497, %487, %475, %462, %452, %440, %434, %428, %413, %396, %390, %384, %378, %372, %366, %360, %354, %344, %334, %328, %311, %304, %298, %292, %286, %280, %274, %268, %261, %254, %248, %241, %228, %215, %209, %203, %187, %180, %174, %162, %156, %146, %140, %134, %128, %114, %108, %102, %96, %89, %83, %77, %71, %65, %59
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #6
  br label %653

653:                                              ; preds = %652
  %654 = load ptr, ptr %9, align 8
  %655 = load i32, ptr %10, align 4
  %656 = insertvalue { ptr, i32 } poison, ptr %654, 0
  %657 = insertvalue { ptr, i32 } %656, i32 %655, 1
  resume { ptr, i32 } %657
}

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


; 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.1320 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.1323 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.1679 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.1680 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.1681 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.1682 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.1683 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.1684 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.1685 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.1686 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.1687 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.1688 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.1689 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.1690 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.1691 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.1692 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.1693 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.1694 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.1695 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.1696 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.1697 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.1698 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.1699 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.1700 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.1701 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.1702 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.1703 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.1704 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.1705 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.1706 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.1707 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.1708 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.1709 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.1710 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.1711 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.1712 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.1713 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.1714 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.1715 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.1716 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.1717 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.1718 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.1719 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.1720 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.1721 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.1722 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.1723 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.1724 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.1725 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.1726 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.1727 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.1728 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.1729 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.1730 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.1731 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.1732 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.1733 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.1734 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.1735 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.1736 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.1737 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.1738 = external hidden unnamed_addr constant [21 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

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

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

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: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64), i32 noundef) local_unnamed_addr #4 align 2

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

declare noundef nonnull align 8 dereferenceable(237) ptr @_ZN11spirv_cross8Compiler15get_entry_pointEv(ptr noundef nonnull align 8 dereferenceable(3176)) local_unnamed_addr #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) local_unnamed_addr #1 align 2

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11spirv_cross11CompilerMSL17builtin_qualifierB5cxx11EN3spv7BuiltInE(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(12482) %1, i32 noundef %2) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca %"class.std::allocator.71", align 1
  %5 = alloca %"class.std::allocator.71", align 1
  %6 = alloca %"class.std::allocator.71", align 1
  %7 = alloca %"class.std::allocator.71", align 1
  %8 = alloca %"class.std::allocator.71", align 1
  %9 = alloca %"class.std::allocator.71", align 1
  %10 = alloca %"class.std::allocator.71", align 1
  %11 = alloca %"class.std::allocator.71", align 1
  %12 = alloca %"class.std::allocator.71", align 1
  %13 = alloca %"class.std::allocator.71", align 1
  %14 = alloca %"class.std::allocator.71", align 1
  %15 = alloca %"class.std::allocator.71", align 1
  %16 = alloca %"class.std::allocator.71", align 1
  %17 = alloca %"class.std::allocator.71", align 1
  %18 = alloca %"class.std::allocator.71", align 1
  %19 = alloca %"class.std::allocator.71", align 1
  %20 = alloca %"class.std::allocator.71", align 1
  %21 = alloca %"class.std::allocator.71", align 1
  %22 = alloca %"class.std::allocator.71", align 1
  %23 = alloca %"class.std::allocator.71", align 1
  %24 = alloca %"class.std::allocator.71", align 1
  %25 = alloca %"class.std::allocator.71", align 1
  %26 = alloca %"class.std::allocator.71", align 1
  %27 = alloca %"class.std::allocator.71", align 1
  %28 = alloca %"class.std::allocator.71", align 1
  %29 = alloca %"class.std::allocator.71", align 1
  %30 = alloca %"class.std::allocator.71", align 1
  %31 = alloca %"class.std::allocator.71", align 1
  %32 = alloca %"class.std::allocator.71", align 1
  %33 = alloca %"class.std::allocator.71", align 1
  %34 = alloca %"class.std::allocator.71", align 1
  %35 = alloca %"class.std::allocator.71", align 1
  %36 = alloca %"class.std::allocator.71", align 1
  %37 = alloca %"class.std::allocator.71", align 1
  %38 = alloca %"class.std::allocator.71", align 1
  %39 = alloca %"class.std::allocator.71", align 1
  %40 = alloca %"class.std::allocator.71", align 1
  %41 = alloca %"class.std::allocator.71", align 1
  %42 = alloca %"class.std::allocator.71", align 1
  %43 = alloca %"class.std::allocator.71", align 1
  %44 = alloca %"class.std::allocator.71", align 1
  %45 = alloca %"class.std::allocator.71", align 1
  %46 = alloca %"class.std::allocator.71", align 1
  %47 = tail call noundef nonnull align 8 dereferenceable(237) ptr @_ZN11spirv_cross8Compiler15get_entry_pointEv(ptr noundef nonnull align 8 dereferenceable(3176) %1)
  switch i32 %2, label %432 [
    i32 5, label %48
    i32 42, label %52
    i32 4424, label %56
    i32 6, label %60
    i32 43, label %64
    i32 4425, label %68
    i32 4426, label %72
    i32 3, label %77
    i32 4, label %81
    i32 1, label %85
    i32 0, label %89
    i32 9, label %109
    i32 10, label %113
    i32 8, label %125
    i32 14, label %138
    i32 7, label %143
    i32 11, label %195
    i32 12, label %195
    i32 13, label %200
    i32 17, label %204
    i32 16, label %208
    i32 15, label %212
    i32 18, label %216
    i32 20, label %220
    i32 19, label %224
    i32 4440, label %229
    i32 22, label %241
    i32 5014, label %258
    i32 28, label %262
    i32 26, label %266
    i32 24, label %270
    i32 27, label %274
    i32 29, label %278
    i32 36, label %282
    i32 38, label %313
    i32 40, label %335
    i32 41, label %357
    i32 4416, label %402
    i32 4417, label %402
    i32 4418, label %402
    i32 4419, label %402
    i32 4420, label %402
    i32 5286, label %407
    i32 5287, label %407
    i32 5299, label %428
  ]

48:                                               ; preds = %3
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %4) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1679, ptr noundef nonnull align 1 dereferenceable(1) %4)
          to label %49 unwind label %50

49:                                               ; preds = %48
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #6
  br label %436

50:                                               ; preds = %48
  %51 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #6
  br label %437

52:                                               ; preds = %3
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %5) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1679, ptr noundef nonnull align 1 dereferenceable(1) %5)
          to label %53 unwind label %54

53:                                               ; preds = %52
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #6
  br label %436

54:                                               ; preds = %52
  %55 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #6
  br label %437

56:                                               ; preds = %3
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %6) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1680, ptr noundef nonnull align 1 dereferenceable(1) %6)
          to label %57 unwind label %58

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

58:                                               ; preds = %56
  %59 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #6
  br label %437

60:                                               ; preds = %3
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %7) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1681, ptr noundef nonnull align 1 dereferenceable(1) %7)
          to label %61 unwind label %62

61:                                               ; preds = %60
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) #6
  br label %436

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

64:                                               ; preds = %3
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %8) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1681, ptr noundef nonnull align 1 dereferenceable(1) %8)
          to label %65 unwind label %66

65:                                               ; preds = %64
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #6
  br label %436

66:                                               ; preds = %64
  %67 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #6
  br label %437

68:                                               ; preds = %3
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %9) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1682, ptr noundef nonnull align 1 dereferenceable(1) %9)
          to label %69 unwind label %70

69:                                               ; preds = %68
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #6
  br label %436

70:                                               ; preds = %68
  %71 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #6
  br label %437

72:                                               ; preds = %3
  %73 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %73, ptr noundef nonnull @.str.1320)
          to label %74 unwind label %75

74:                                               ; preds = %72
  tail call void @__cxa_throw(ptr nonnull %73, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

75:                                               ; preds = %72
  %76 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %73) #6
  br label %437

77:                                               ; preds = %3
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1683, ptr noundef nonnull align 1 dereferenceable(1) %10)
          to label %78 unwind label %79

78:                                               ; preds = %77
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #6
  br label %436

79:                                               ; preds = %77
  %80 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #6
  br label %437

81:                                               ; preds = %3
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %11) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1684, ptr noundef nonnull align 1 dereferenceable(1) %11)
          to label %82 unwind label %83

82:                                               ; preds = %81
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #6
  br label %436

83:                                               ; preds = %81
  %84 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #6
  br label %437

85:                                               ; preds = %3
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %12) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1685, ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %86 unwind label %87

86:                                               ; preds = %85
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #6
  br label %436

87:                                               ; preds = %85
  %88 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #6
  br label %437

89:                                               ; preds = %3
  %90 = getelementptr inbounds i8, ptr %1, i64 2816
  %91 = load i8, ptr %90, align 8, !tbaa !5, !range !75, !noundef !76
  %92 = trunc nuw i8 %91 to i1
  br i1 %92, label %93, label %105

93:                                               ; preds = %89
  %94 = getelementptr inbounds i8, ptr %1, i64 10036
  %95 = tail call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options20supports_msl_versionEjjj(ptr noundef nonnull align 4 dereferenceable(137) %94, i32 noundef 2, i32 noundef 1, i32 noundef 0)
  br i1 %95, label %101, label %96

96:                                               ; preds = %93
  %97 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %97, ptr noundef nonnull @.str.1686)
          to label %98 unwind label %99

98:                                               ; preds = %96
  tail call void @__cxa_throw(ptr nonnull %97, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

99:                                               ; preds = %96
  %100 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %97) #6
  br label %437

101:                                              ; preds = %93
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %13) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1687, ptr noundef nonnull align 1 dereferenceable(1) %13)
          to label %102 unwind label %103

102:                                              ; preds = %101
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #6
  br label %436

103:                                              ; preds = %101
  %104 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #6
  br label %437

105:                                              ; preds = %89
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %14) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1688, ptr noundef nonnull align 1 dereferenceable(1) %14)
          to label %106 unwind label %107

106:                                              ; preds = %105
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #6
  br label %436

107:                                              ; preds = %105
  %108 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #6
  br label %437

109:                                              ; preds = %3
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %15) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1689, ptr noundef nonnull align 1 dereferenceable(1) %15)
          to label %110 unwind label %111

110:                                              ; preds = %109
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #6
  br label %436

111:                                              ; preds = %109
  %112 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #6
  br label %437

113:                                              ; preds = %3
  %114 = getelementptr inbounds i8, ptr %1, i64 10036
  %115 = tail call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options20supports_msl_versionEjjj(ptr noundef nonnull align 4 dereferenceable(137) %114, i32 noundef 2, i32 noundef 0, i32 noundef 0)
  br i1 %115, label %121, label %116

116:                                              ; preds = %113
  %117 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %117, ptr noundef nonnull @.str.1323)
          to label %118 unwind label %119

118:                                              ; preds = %116
  tail call void @__cxa_throw(ptr nonnull %117, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

119:                                              ; preds = %116
  %120 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %117) #6
  br label %437

121:                                              ; preds = %113
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %16) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1690, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %122 unwind label %123

122:                                              ; preds = %121
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #6
  br label %436

123:                                              ; preds = %121
  %124 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #6
  br label %437

125:                                              ; preds = %3
  %126 = getelementptr inbounds i8, ptr %1, i64 10149
  %127 = load i8, ptr %126, align 1, !tbaa !77, !range !75, !noundef !76
  %128 = trunc nuw i8 %127 to i1
  br i1 %128, label %129, label %134

129:                                              ; preds = %125
  %130 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %130, ptr noundef nonnull @.str.1691)
          to label %131 unwind label %132

131:                                              ; preds = %129
  tail call void @__cxa_throw(ptr nonnull %130, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

132:                                              ; preds = %129
  %133 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %130) #6
  br label %437

134:                                              ; preds = %125
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %17) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1692, ptr noundef nonnull align 1 dereferenceable(1) %17)
          to label %135 unwind label %136

135:                                              ; preds = %134
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %17) #6
  br label %436

136:                                              ; preds = %134
  %137 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %17) #6
  br label %437

138:                                              ; preds = %3
  %139 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %139, ptr noundef nonnull @.str.1693)
          to label %140 unwind label %141

140:                                              ; preds = %138
  tail call void @__cxa_throw(ptr nonnull %139, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

141:                                              ; preds = %138
  %142 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %139) #6
  br label %437

143:                                              ; preds = %3
  %144 = getelementptr inbounds i8, ptr %47, i64 232
  %145 = load i32, ptr %144, align 8, !tbaa !175
  switch i32 %145, label %190 [
    i32 1, label %146
    i32 2, label %159
    i32 4, label %163
    i32 5365, label %186
  ]

146:                                              ; preds = %143
  %147 = getelementptr inbounds i8, ptr %1, i64 10149
  %148 = load i8, ptr %147, align 1, !tbaa !77, !range !75, !noundef !76
  %149 = trunc nuw i8 %148 to i1
  br i1 %149, label %150, label %155

150:                                              ; preds = %146
  %151 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %151, ptr noundef nonnull @.str.1694)
          to label %152 unwind label %153

152:                                              ; preds = %150
  tail call void @__cxa_throw(ptr nonnull %151, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

153:                                              ; preds = %150
  %154 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %151) #6
  br label %437

155:                                              ; preds = %146
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %18) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1695, ptr noundef nonnull align 1 dereferenceable(1) %18)
          to label %156 unwind label %157

156:                                              ; preds = %155
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #6
  br label %436

157:                                              ; preds = %155
  %158 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #6
  br label %437

159:                                              ; preds = %143
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %19) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1696, ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %160 unwind label %161

160:                                              ; preds = %159
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #6
  br label %436

161:                                              ; preds = %159
  %162 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #6
  br label %437

163:                                              ; preds = %143
  %164 = getelementptr inbounds i8, ptr %1, i64 10036
  %165 = tail call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options6is_iosEv(ptr noundef nonnull align 4 dereferenceable(137) %164)
  br i1 %165, label %166, label %173

166:                                              ; preds = %163
  %167 = tail call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options20supports_msl_versionEjjj(ptr noundef nonnull align 4 dereferenceable(137) %164, i32 noundef 2, i32 noundef 3, i32 noundef 0)
  br i1 %167, label %173, label %168

168:                                              ; preds = %166
  %169 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %169, ptr noundef nonnull @.str.1697)
          to label %170 unwind label %171

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

171:                                              ; preds = %168
  %172 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %169) #6
  br label %437

173:                                              ; preds = %166, %163
  %174 = tail call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options8is_macosEv(ptr noundef nonnull align 4 dereferenceable(137) %164)
  br i1 %174, label %175, label %182

175:                                              ; preds = %173
  %176 = tail call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options20supports_msl_versionEjjj(ptr noundef nonnull align 4 dereferenceable(137) %164, i32 noundef 2, i32 noundef 2, i32 noundef 0)
  br i1 %176, label %182, label %177

177:                                              ; preds = %175
  %178 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %178, ptr noundef nonnull @.str.1698)
          to label %179 unwind label %180

179:                                              ; preds = %177
  tail call void @__cxa_throw(ptr nonnull %178, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

180:                                              ; preds = %177
  %181 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %178) #6
  br label %437

182:                                              ; preds = %173, %175
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %20) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1699, ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %183 unwind label %184

183:                                              ; preds = %182
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #6
  br label %436

184:                                              ; preds = %182
  %185 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #6
  br label %437

186:                                              ; preds = %143
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %21) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1699, ptr noundef nonnull align 1 dereferenceable(1) %21)
          to label %187 unwind label %188

187:                                              ; preds = %186
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %21) #6
  br label %436

188:                                              ; preds = %186
  %189 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %21) #6
  br label %437

190:                                              ; preds = %143
  %191 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %191, ptr noundef nonnull @.str.1700)
          to label %192 unwind label %193

192:                                              ; preds = %190
  tail call void @__cxa_throw(ptr nonnull %191, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

193:                                              ; preds = %190
  %194 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %191) #6
  br label %437

195:                                              ; preds = %3, %3
  %196 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %196, ptr noundef nonnull @.str.1701)
          to label %197 unwind label %198

197:                                              ; preds = %195
  tail call void @__cxa_throw(ptr nonnull %196, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

198:                                              ; preds = %195
  %199 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %196) #6
  br label %437

200:                                              ; preds = %3
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %22) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1702, ptr noundef nonnull align 1 dereferenceable(1) %22)
          to label %201 unwind label %202

201:                                              ; preds = %200
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %22) #6
  br label %436

202:                                              ; preds = %200
  %203 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %22) #6
  br label %437

204:                                              ; preds = %3
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %23) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1703, ptr noundef nonnull align 1 dereferenceable(1) %23)
          to label %205 unwind label %206

205:                                              ; preds = %204
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %23) #6
  br label %436

206:                                              ; preds = %204
  %207 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %23) #6
  br label %437

208:                                              ; preds = %3
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %24) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1704, ptr noundef nonnull align 1 dereferenceable(1) %24)
          to label %209 unwind label %210

209:                                              ; preds = %208
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %24) #6
  br label %436

210:                                              ; preds = %208
  %211 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %24) #6
  br label %437

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

213:                                              ; preds = %212
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #6
  br label %436

214:                                              ; preds = %212
  %215 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #6
  br label %437

216:                                              ; preds = %3
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %26) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1705, ptr noundef nonnull align 1 dereferenceable(1) %26)
          to label %217 unwind label %218

217:                                              ; preds = %216
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %26) #6
  br label %436

218:                                              ; preds = %216
  %219 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %26) #6
  br label %437

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

221:                                              ; preds = %220
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #6
  br label %436

222:                                              ; preds = %220
  %223 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #6
  br label %437

224:                                              ; preds = %3
  %225 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %225, ptr noundef nonnull @.str.1707)
          to label %226 unwind label %227

226:                                              ; preds = %224
  tail call void @__cxa_throw(ptr nonnull %225, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

227:                                              ; preds = %224
  %228 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %225) #6
  br label %437

229:                                              ; preds = %3
  %230 = getelementptr inbounds i8, ptr %47, i64 232
  %231 = load i32, ptr %230, align 8, !tbaa !175
  switch i32 %231, label %232 [
    i32 4, label %237
    i32 5365, label %237
  ]

232:                                              ; preds = %229
  %233 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %233, ptr noundef nonnull @.str.1708)
          to label %234 unwind label %235

234:                                              ; preds = %232
  tail call void @__cxa_throw(ptr nonnull %233, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

235:                                              ; preds = %232
  %236 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %233) #6
  br label %437

237:                                              ; preds = %229, %229
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %28) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1689, ptr noundef nonnull align 1 dereferenceable(1) %28)
          to label %238 unwind label %239

238:                                              ; preds = %237
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #6
  br label %436

239:                                              ; preds = %237
  %240 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #6
  br label %437

241:                                              ; preds = %3
  %242 = getelementptr inbounds i8, ptr %47, i64 128
  %243 = tail call noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %242, i32 noundef 14)
  br i1 %243, label %244, label %248

244:                                              ; preds = %241
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %29) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1709, ptr noundef nonnull align 1 dereferenceable(1) %29)
          to label %245 unwind label %246

245:                                              ; preds = %244
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %29) #6
  br label %436

246:                                              ; preds = %244
  %247 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %29) #6
  br label %437

248:                                              ; preds = %241
  %249 = tail call noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %242, i32 noundef 15)
  br i1 %249, label %250, label %254

250:                                              ; preds = %248
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %30) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1710, ptr noundef nonnull align 1 dereferenceable(1) %30)
          to label %251 unwind label %252

251:                                              ; preds = %250
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %30) #6
  br label %436

252:                                              ; preds = %250
  %253 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %30) #6
  br label %437

254:                                              ; preds = %248
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %31) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1711, ptr noundef nonnull align 1 dereferenceable(1) %31)
          to label %255 unwind label %256

255:                                              ; preds = %254
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %31) #6
  br label %436

256:                                              ; preds = %254
  %257 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %31) #6
  br label %437

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

259:                                              ; preds = %258
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %32) #6
  br label %436

260:                                              ; preds = %258
  %261 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %32) #6
  br label %437

262:                                              ; preds = %3
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %33) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1713, ptr noundef nonnull align 1 dereferenceable(1) %33)
          to label %263 unwind label %264

263:                                              ; preds = %262
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %33) #6
  br label %436

264:                                              ; preds = %262
  %265 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %33) #6
  br label %437

266:                                              ; preds = %3
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %34) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1695, ptr noundef nonnull align 1 dereferenceable(1) %34)
          to label %267 unwind label %268

267:                                              ; preds = %266
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %34) #6
  br label %436

268:                                              ; preds = %266
  %269 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %34) #6
  br label %437

270:                                              ; preds = %3
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %35) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1714, ptr noundef nonnull align 1 dereferenceable(1) %35)
          to label %271 unwind label %272

271:                                              ; preds = %270
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %35) #6
  br label %436

272:                                              ; preds = %270
  %273 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %35) #6
  br label %437

274:                                              ; preds = %3
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %36) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1715, ptr noundef nonnull align 1 dereferenceable(1) %36)
          to label %275 unwind label %276

275:                                              ; preds = %274
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %36) #6
  br label %436

276:                                              ; preds = %274
  %277 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %36) #6
  br label %437

278:                                              ; preds = %3
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %37) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1692, ptr noundef nonnull align 1 dereferenceable(1) %37)
          to label %279 unwind label %280

279:                                              ; preds = %278
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %37) #6
  br label %436

280:                                              ; preds = %278
  %281 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %37) #6
  br label %437

282:                                              ; preds = %3
  %283 = getelementptr inbounds i8, ptr %1, i64 10036
  %284 = getelementptr inbounds i8, ptr %1, i64 10154
  %285 = load i8, ptr %284, align 2, !tbaa !182, !range !75, !noundef !76
  %286 = trunc nuw i8 %285 to i1
  %287 = getelementptr inbounds i8, ptr %1, i64 10156
  %288 = load i32, ptr %287, align 4
  %.not = icmp ne i32 %288, 0
  %or.cond.not = select i1 %286, i1 true, i1 %.not
  br i1 %or.cond.not, label %289, label %294

289:                                              ; preds = %282
  %290 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %290, ptr noundef nonnull @.str.1716)
          to label %291 unwind label %292

291:                                              ; preds = %289
  tail call void @__cxa_throw(ptr nonnull %290, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

292:                                              ; preds = %289
  %293 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %290) #6
  br label %437

294:                                              ; preds = %282
  %295 = getelementptr inbounds i8, ptr %47, i64 232
  %296 = load i32, ptr %295, align 8, !tbaa !175
  %297 = icmp eq i32 %296, 4
  br i1 %297, label %298, label %309

298:                                              ; preds = %294
  %299 = tail call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options20supports_msl_versionEjjj(ptr noundef nonnull align 4 dereferenceable(137) %283, i32 noundef 2, i32 noundef 2, i32 noundef 0)
  br i1 %299, label %305, label %300

300:                                              ; preds = %298
  %301 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %301, ptr noundef nonnull @.str.1717)
          to label %302 unwind label %303

302:                                              ; preds = %300
  tail call void @__cxa_throw(ptr nonnull %301, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

303:                                              ; preds = %300
  %304 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %301) #6
  br label %437

305:                                              ; preds = %298
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %38) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1718, ptr noundef nonnull align 1 dereferenceable(1) %38)
          to label %306 unwind label %307

306:                                              ; preds = %305
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %38) #6
  br label %436

307:                                              ; preds = %305
  %308 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %38) #6
  br label %437

309:                                              ; preds = %294
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %39) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1719, ptr noundef nonnull align 1 dereferenceable(1) %39)
          to label %310 unwind label %311

310:                                              ; preds = %309
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %39) #6
  br label %436

311:                                              ; preds = %309
  %312 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %39) #6
  br label %437

313:                                              ; preds = %3
  %314 = getelementptr inbounds i8, ptr %1, i64 10036
  %315 = getelementptr inbounds i8, ptr %1, i64 10154
  %316 = load i8, ptr %315, align 2, !tbaa !182, !range !75, !noundef !76
  %317 = trunc nuw i8 %316 to i1
  br i1 %317, label %318, label %323

318:                                              ; preds = %313
  %319 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %319, ptr noundef nonnull @.str.1720)
          to label %320 unwind label %321

320:                                              ; preds = %318
  tail call void @__cxa_throw(ptr nonnull %319, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

321:                                              ; preds = %318
  %322 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %319) #6
  br label %437

323:                                              ; preds = %313
  %324 = tail call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options20supports_msl_versionEjjj(ptr noundef nonnull align 4 dereferenceable(137) %314, i32 noundef 2, i32 noundef 0, i32 noundef 0)
  br i1 %324, label %330, label %325

325:                                              ; preds = %323
  %326 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %326, ptr noundef nonnull @.str.1721)
          to label %327 unwind label %328

327:                                              ; preds = %325
  tail call void @__cxa_throw(ptr nonnull %326, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

328:                                              ; preds = %325
  %329 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %326) #6
  br label %437

330:                                              ; preds = %323
  %331 = tail call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options23use_quadgroup_operationEv(ptr noundef nonnull align 4 dereferenceable(137) %314)
  %.str.1722..str.1723 = select i1 %331, ptr @.str.1722, ptr @.str.1723
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %40) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull %.str.1722..str.1723, ptr noundef nonnull align 1 dereferenceable(1) %40)
          to label %332 unwind label %333

332:                                              ; preds = %330
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %40) #6
  br label %436

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

335:                                              ; preds = %3
  %336 = getelementptr inbounds i8, ptr %1, i64 10036
  %337 = getelementptr inbounds i8, ptr %1, i64 10154
  %338 = load i8, ptr %337, align 2, !tbaa !182, !range !75, !noundef !76
  %339 = trunc nuw i8 %338 to i1
  br i1 %339, label %340, label %345

340:                                              ; preds = %335
  %341 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %341, ptr noundef nonnull @.str.1724)
          to label %342 unwind label %343

342:                                              ; preds = %340
  tail call void @__cxa_throw(ptr nonnull %341, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

343:                                              ; preds = %340
  %344 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %341) #6
  br label %437

345:                                              ; preds = %335
  %346 = tail call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options20supports_msl_versionEjjj(ptr noundef nonnull align 4 dereferenceable(137) %336, i32 noundef 2, i32 noundef 0, i32 noundef 0)
  br i1 %346, label %352, label %347

347:                                              ; preds = %345
  %348 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %348, ptr noundef nonnull @.str.1721)
          to label %349 unwind label %350

349:                                              ; preds = %347
  tail call void @__cxa_throw(ptr nonnull %348, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

350:                                              ; preds = %347
  %351 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %348) #6
  br label %437

352:                                              ; preds = %345
  %353 = tail call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options23use_quadgroup_operationEv(ptr noundef nonnull align 4 dereferenceable(137) %336)
  %.str.1725..str.1726 = select i1 %353, ptr @.str.1725, ptr @.str.1726
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %41) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull %.str.1725..str.1726, ptr noundef nonnull align 1 dereferenceable(1) %41)
          to label %354 unwind label %355

354:                                              ; preds = %352
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %41) #6
  br label %436

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

357:                                              ; preds = %3
  %358 = getelementptr inbounds i8, ptr %1, i64 10036
  %359 = getelementptr inbounds i8, ptr %1, i64 10154
  %360 = load i8, ptr %359, align 2, !tbaa !182, !range !75, !noundef !76
  %361 = trunc nuw i8 %360 to i1
  br i1 %361, label %362, label %367

362:                                              ; preds = %357
  %363 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %363, ptr noundef nonnull @.str.1727)
          to label %364 unwind label %365

364:                                              ; preds = %362
  tail call void @__cxa_throw(ptr nonnull %363, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

365:                                              ; preds = %362
  %366 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %363) #6
  br label %437

367:                                              ; preds = %357
  %368 = getelementptr inbounds i8, ptr %47, i64 232
  %369 = load i32, ptr %368, align 8, !tbaa !175
  switch i32 %369, label %397 [
    i32 4, label %370
    i32 6, label %385
    i32 5, label %385
    i32 1, label %385
    i32 0, label %381
  ]

370:                                              ; preds = %367
  %371 = tail call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options20supports_msl_versionEjjj(ptr noundef nonnull align 4 dereferenceable(137) %358, i32 noundef 2, i32 noundef 2, i32 noundef 0)
  br i1 %371, label %377, label %372

372:                                              ; preds = %370
  %373 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %373, ptr noundef nonnull @.str.1728)
          to label %374 unwind label %375

374:                                              ; preds = %372
  tail call void @__cxa_throw(ptr nonnull %373, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

375:                                              ; preds = %372
  %376 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %373) #6
  br label %437

377:                                              ; preds = %370
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %42) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1729, ptr noundef nonnull align 1 dereferenceable(1) %42)
          to label %378 unwind label %379

378:                                              ; preds = %377
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %42) #6
  br label %436

379:                                              ; preds = %377
  %380 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %42) #6
  br label %437

381:                                              ; preds = %367
  %382 = getelementptr inbounds i8, ptr %1, i64 10151
  %383 = load i8, ptr %382, align 1, !tbaa !183, !range !75, !noundef !76
  %384 = trunc nuw i8 %383 to i1
  br i1 %384, label %385, label %397

385:                                              ; preds = %367, %367, %367, %381
  %386 = tail call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options20supports_msl_versionEjjj(ptr noundef nonnull align 4 dereferenceable(137) %358, i32 noundef 2, i32 noundef 0, i32 noundef 0)
  br i1 %386, label %392, label %387

387:                                              ; preds = %385
  %388 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %388, ptr noundef nonnull @.str.1730)
          to label %389 unwind label %390

389:                                              ; preds = %387
  tail call void @__cxa_throw(ptr nonnull %388, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

390:                                              ; preds = %387
  %391 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %388) #6
  br label %437

392:                                              ; preds = %385
  %393 = tail call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options23use_quadgroup_operationEv(ptr noundef nonnull align 4 dereferenceable(137) %358)
  %.str.1731..str.1729 = select i1 %393, ptr @.str.1731, ptr @.str.1729
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %43) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull %.str.1731..str.1729, ptr noundef nonnull align 1 dereferenceable(1) %43)
          to label %394 unwind label %395

394:                                              ; preds = %392
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %43) #6
  br label %436

395:                                              ; preds = %392
  %396 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %43) #6
  br label %437

397:                                              ; preds = %367, %381
  %398 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %398, ptr noundef nonnull @.str.1732)
          to label %399 unwind label %400

399:                                              ; preds = %397
  tail call void @__cxa_throw(ptr nonnull %398, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

400:                                              ; preds = %397
  %401 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %398) #6
  br label %437

402:                                              ; preds = %3, %3, %3, %3, %3
  %403 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %403, ptr noundef nonnull @.str.1733)
          to label %404 unwind label %405

404:                                              ; preds = %402
  tail call void @__cxa_throw(ptr nonnull %403, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

405:                                              ; preds = %402
  %406 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %403) #6
  br label %437

407:                                              ; preds = %3, %3
  %408 = getelementptr inbounds i8, ptr %1, i64 10036
  %409 = tail call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options6is_iosEv(ptr noundef nonnull align 4 dereferenceable(137) %408)
  br i1 %409, label %410, label %417

410:                                              ; preds = %407
  %411 = tail call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options20supports_msl_versionEjjj(ptr noundef nonnull align 4 dereferenceable(137) %408, i32 noundef 2, i32 noundef 3, i32 noundef 0)
  br i1 %411, label %417, label %412

412:                                              ; preds = %410
  %413 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %413, ptr noundef nonnull @.str.1734)
          to label %414 unwind label %415

414:                                              ; preds = %412
  tail call void @__cxa_throw(ptr nonnull %413, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

415:                                              ; preds = %412
  %416 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %413) #6
  br label %437

417:                                              ; preds = %410, %407
  %418 = tail call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options20supports_msl_versionEjjj(ptr noundef nonnull align 4 dereferenceable(137) %408, i32 noundef 2, i32 noundef 2, i32 noundef 0)
  br i1 %418, label %424, label %419

419:                                              ; preds = %417
  %420 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %420, ptr noundef nonnull @.str.1735)
          to label %421 unwind label %422

421:                                              ; preds = %419
  tail call void @__cxa_throw(ptr nonnull %420, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

422:                                              ; preds = %419
  %423 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %420) #6
  br label %437

424:                                              ; preds = %417
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %44) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1736, ptr noundef nonnull align 1 dereferenceable(1) %44)
          to label %425 unwind label %426

425:                                              ; preds = %424
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %44) #6
  br label %436

426:                                              ; preds = %424
  %427 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %44) #6
  br label %437

428:                                              ; preds = %3
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %45) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1737, ptr noundef nonnull align 1 dereferenceable(1) %45)
          to label %429 unwind label %430

429:                                              ; preds = %428
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %45) #6
  br label %436

430:                                              ; preds = %428
  %431 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %45) #6
  br label %437

432:                                              ; preds = %3
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %46) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1738, ptr noundef nonnull align 1 dereferenceable(1) %46)
          to label %433 unwind label %434

433:                                              ; preds = %432
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %46) #6
  br label %436

434:                                              ; preds = %432
  %435 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %46) #6
  br label %437

436:                                              ; preds = %433, %429, %425, %394, %378, %354, %332, %310, %306, %279, %275, %271, %267, %263, %259, %255, %251, %245, %238, %221, %217, %213, %209, %205, %201, %187, %183, %160, %156, %135, %122, %110, %106, %102, %86, %82, %78, %69, %65, %61, %57, %53, %49
  ret void

437:                                              ; preds = %434, %430, %426, %422, %415, %405, %400, %395, %390, %379, %375, %365, %355, %350, %343, %333, %328, %321, %311, %307, %303, %292, %280, %276, %272, %268, %264, %260, %256, %252, %246, %239, %235, %227, %222, %218, %214, %210, %206, %202, %198, %193, %188, %184, %180, %171, %161, %157, %153, %141, %136, %132, %123, %119, %111, %107, %103, %99, %87, %83, %79, %75, %70, %66, %62, %58, %54, %50
  %.pn = phi { ptr, i32 } [ %435, %434 ], [ %431, %430 ], [ %427, %426 ], [ %423, %422 ], [ %416, %415 ], [ %406, %405 ], [ %366, %365 ], [ %380, %379 ], [ %376, %375 ], [ %396, %395 ], [ %391, %390 ], [ %401, %400 ], [ %344, %343 ], [ %356, %355 ], [ %351, %350 ], [ %322, %321 ], [ %334, %333 ], [ %329, %328 ], [ %293, %292 ], [ %308, %307 ], [ %304, %303 ], [ %312, %311 ], [ %281, %280 ], [ %277, %276 ], [ %273, %272 ], [ %269, %268 ], [ %265, %264 ], [ %261, %260 ], [ %247, %246 ], [ %253, %252 ], [ %257, %256 ], [ %236, %235 ], [ %240, %239 ], [ %228, %227 ], [ %223, %222 ], [ %219, %218 ], [ %215, %214 ], [ %211, %210 ], [ %207, %206 ], [ %203, %202 ], [ %199, %198 ], [ %194, %193 ], [ %189, %188 ], [ %185, %184 ], [ %181, %180 ], [ %172, %171 ], [ %162, %161 ], [ %154, %153 ], [ %158, %157 ], [ %142, %141 ], [ %133, %132 ], [ %137, %136 ], [ %124, %123 ], [ %120, %119 ], [ %112, %111 ], [ %104, %103 ], [ %100, %99 ], [ %108, %107 ], [ %88, %87 ], [ %84, %83 ], [ %80, %79 ], [ %76, %75 ], [ %71, %70 ], [ %67, %66 ], [ %63, %62 ], [ %59, %58 ], [ %55, %54 ], [ %51, %50 ]
  resume { ptr, i32 } %.pn
}

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


; Effective O3 passes: EarlyCSEPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,SROAPass,SimplifyCFGPass,TailCallElimPass