; 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"

%"struct.std::_Rb_tree_iterator" = type { ptr }
%"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.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 }
%"struct.std::_Rb_tree_iterator.425" = type { ptr }
%"class.spirv_cross::TypedID.413" = type { i32 }
%"class.spirv_cross::CompilerMSL" = type <{ %"class.spirv_cross::CompilerGLSL", %"class.std::unordered_map.277", i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i8, [2 x i8], %"struct.spirv_cross::CompilerMSL::Options", %"class.std::set", %"class.std::map", %"class.std::unordered_map.299", %"class.std::map", %"class.std::unordered_map.299", %"class.std::unordered_set", %"class.std::unordered_set", %"class.std::unordered_set", %"class.std::unordered_set", %"class.std::unordered_map.213", %"class.std::unordered_map.213", %"class.std::unordered_map.213", %"class.std::set.313", %"class.std::set.313", %"class.spirv_cross::SmallVector.92", %"class.std::unordered_map.319", %"class.std::unordered_map.336", i32, i32, i32, [8 x i32], %"class.spirv_cross::TypedID.350", %"class.spirv_cross::TypedID.350", %"class.spirv_cross::TypedID.350", %"class.spirv_cross::TypedID.350", %"class.spirv_cross::TypedID.350", %"class.spirv_cross::TypedID.350", %"class.spirv_cross::TypedID.350", %"class.spirv_cross::TypedID.350", %"class.spirv_cross::TypedID.350", %"class.spirv_cross::TypedID.350", %"class.spirv_cross::TypedID.350", i32, i32, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, [3 x i8], %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", i32, [4 x i8], %"class.std::map.351", %"class.std::unordered_map.357", %"class.std::unordered_set", %"class.spirv_cross::SmallVector.374", %"class.spirv_cross::SmallVector.92", %"class.std::unordered_set", %"class.std::unordered_set", %"class.std::unordered_set", %"class.spirv_cross::SmallVector.377", %"class.std::map.380", %"class.spirv_cross::SmallVector.92", %"class.std::unordered_set.386", [8 x i32], i32, i32, i8, i8, [6 x i8] }>
%"class.spirv_cross::CompilerGLSL" = type { %"class.spirv_cross::Compiler", ptr, %"class.spirv_cross::SmallVector.159", i8, %"class.spirv_cross::StringStream", ptr, ptr, i8, i8, %"struct.spirv_cross::CompilerGLSL::Options", %"class.std::unordered_set.165", %"class.std::unordered_set.165", %"class.std::unordered_set.165", %"class.std::unordered_set.165", %"class.std::unordered_set.165", %"class.std::unordered_set.165", %"class.std::unordered_set.165", %"class.std::unordered_map.185", %"class.std::unordered_map.145", i8, [7 x i8], %"struct.spirv_cross::CompilerGLSL::BackendVariations", i32, %"class.std::unordered_set", %"class.std::unordered_set", %"class.std::unordered_set", %"class.std::unordered_map.199", %"struct.spirv_cross::CompilerGLSL::ShaderSubgroupSupportHelper", %"class.std::unordered_map.213", %"class.spirv_cross::SmallVector.27", %"class.spirv_cross::SmallVector.27", %"class.std::unordered_map.213", %"class.spirv_cross::SmallVector.227", i32, i32, i32, i8, i8, %"class.std::vector.230", %"class.std::vector.230", %"class.std::vector.235", %"class.std::vector.240", %"class.std::unordered_map.213", %"class.std::unordered_set", %"class.std::unordered_set", i8, %"class.std::unordered_set.245", %"class.std::unordered_set", ptr, %"class.std::unordered_map.263" }
%"class.spirv_cross::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.30" = type { %"class.spirv_cross::VectorView.31", i64, %"class.spirv_cross::AlignedBuffer.32" }
%"class.spirv_cross::VectorView.31" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.32" = type { [8 x i8] }
%"class.std::unordered_map.33" = type { %"class.std::_Hashtable.34" }
%"class.std::_Hashtable.34" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.52" = type { %"class.std::_Hashtable.53" }
%"class.std::_Hashtable.53" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.spirv_cross::TypedID" = type { i32 }
%"struct.spirv_cross::ParsedIR::Source" = type <{ i32, i8, i8, i8, i8 }>
%"class.std::unordered_set.95" = type { %"class.std::_Hashtable.96" }
%"class.std::_Hashtable.96" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.spirv_cross::SmallVector.114" = type { %"class.spirv_cross::VectorView.115", i64, %"class.spirv_cross::AlignedBuffer.116" }
%"class.spirv_cross::VectorView.115" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.116" = type { [96 x i8] }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%"class.spirv_cross::Bitset" = type { i64, %"class.std::unordered_set" }
%"class.std::unordered_map.117" = type { %"class.std::_Hashtable.118" }
%"class.std::_Hashtable.118" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.131" = type { %"class.std::_Hashtable.132" }
%"class.std::_Hashtable.132" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.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 }
%"class.std::unordered_map.145" = type { %"class.std::_Hashtable.146" }
%"class.std::_Hashtable.146" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.spirv_cross::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.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.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.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_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.std::pair.423" = type { i32, %"struct.spirv_cross::MSLConstexprSampler" }
%"struct.spirv_cross::MSLConstexprSampler" = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, i32, i32, i32, i32, i32, i32, [4 x i32], i32, i32, i32, i8, i8, i8, i8 }
%"struct.spirv_cross::SPIRVariable" = type { %"struct.spirv_cross::IVariant.base", %"class.spirv_cross::TypedID.414", i32, i32, %"class.spirv_cross::TypedID.413", %"class.spirv_cross::TypedID.350", %"class.spirv_cross::SmallVector.92", i8, i8, %"class.spirv_cross::TypedID.413", %"class.spirv_cross::SmallVector.7", i8, i8, i8, i8, i32, %"class.spirv_cross::TypedID.415", i8, i8, i8, ptr }
%"struct.spirv_cross::IVariant.base" = type <{ ptr, %"class.spirv_cross::TypedID.413" }>
%"class.spirv_cross::TypedID.414" = type { i32 }
%"class.spirv_cross::TypedID.415" = type { i32 }
%"struct.spirv_cross::SPIRType" = type { %"struct.spirv_cross::IVariant.base", i32, i32, i32, i32, i32, %"class.spirv_cross::SmallVector.92", %"class.spirv_cross::SmallVector.416", i32, i8, i8, i32, %"class.spirv_cross::SmallVector.227", %"class.spirv_cross::SmallVector.92", %"struct.spirv_cross::SPIRType::ImageType", %"class.spirv_cross::TypedID.414", %"class.spirv_cross::TypedID.414", %"class.std::unordered_set.165" }
%"class.spirv_cross::SmallVector.416" = type { %"class.spirv_cross::VectorView.417", i64, %"class.spirv_cross::AlignedBuffer.418" }
%"class.spirv_cross::VectorView.417" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.418" = type { [8 x i8] }
%"struct.spirv_cross::SPIRType::ImageType" = type { %"class.spirv_cross::TypedID.414", i32, i8, i8, i8, i32, i32, i32 }
%"struct.std::pair.426" = type { %"struct.spirv_cross::SetBindingPair", %"struct.std::pair.401" }
%"struct.spirv_cross::SetBindingPair" = type { i32, i32 }
%"struct.std::pair.401" = type { i32, i32 }
%"struct.spirv_cross::IVariant" = type <{ ptr, %"class.spirv_cross::TypedID.413", [4 x i8] }>
%"struct.spirv_cross::Meta" = type { %"struct.spirv_cross::Meta::Decoration", %"class.spirv_cross::SmallVector.428", %"class.std::unordered_map.213", i8, i32 }
%"struct.spirv_cross::Meta::Decoration" = type { %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.spirv_cross::Bitset", i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i8, %"struct.spirv_cross::Meta::Decoration::Extended" }
%"struct.spirv_cross::Meta::Decoration::Extended" = type { %"class.spirv_cross::Bitset", [18 x i32] }
%"class.spirv_cross::SmallVector.428" = type <{ %"class.spirv_cross::VectorView.429", i64, [8 x i8] }>
%"class.spirv_cross::VectorView.429" = type { ptr, i64 }

@_ZTIN11spirv_cross13CompilerErrorE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.28 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.86 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.89 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.90 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.91 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.92 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.93 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.94 = external hidden unnamed_addr constant [32 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

declare ptr @__cxa_allocate_exception(i64)

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

declare void @__cxa_free_exception(ptr)

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

declare void @__cxa_throw(ptr, ptr, ptr)

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

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

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

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

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

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

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

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

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

declare noundef nonnull align 8 dereferenceable(336) ptr @_ZN11spirv_cross8Compiler22get_variable_data_typeERKNS_12SPIRVariableE(ptr noundef nonnull align 8 dereferenceable(3176), ptr noundef nonnull align 8 dereferenceable(176)) #5

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

171:                                              ; preds = %568, %1
  %172 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKjN11spirv_cross19MSLConstexprSamplerEEES7_(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %5) #7
  br i1 %172, label %174, label %173

173:                                              ; preds = %171
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #7
  br label %571

174:                                              ; preds = %171
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #7
  %175 = call noundef nonnull align 4 dereferenceable(104) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKjN11spirv_cross19MSLConstexprSamplerEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %4) #7
  store ptr %175, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #7
  %176 = load ptr, ptr %6, align 8, !tbaa !5
  %177 = getelementptr inbounds %"struct.std::pair.423", ptr %176, i32 0, i32 0
  %178 = load i32, ptr %177, align 4, !tbaa !9
  %179 = call noundef nonnull align 8 dereferenceable(176) ptr @_ZN11spirv_cross8Compiler3getINS_12SPIRVariableEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %163, i32 noundef %178)
  store ptr %179, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #7
  %180 = load ptr, ptr %7, align 8, !tbaa !5
  %181 = getelementptr inbounds %"struct.spirv_cross::SPIRVariable", ptr %180, i32 0, i32 1
  %182 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE1EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %181)
  %183 = call noundef nonnull align 8 dereferenceable(336) ptr @_ZN11spirv_cross8Compiler3getINS_8SPIRTypeEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %163, i32 noundef %182)
  store ptr %183, ptr %8, align 8, !tbaa !5
  %184 = load ptr, ptr %8, align 8, !tbaa !5
  %185 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %184, i32 0, i32 2
  %186 = load i32, ptr %185, align 8, !tbaa !25
  %187 = icmp eq i32 %186, 18
  br i1 %187, label %188, label %192

188:                                              ; preds = %174
  %189 = load ptr, ptr %6, align 8, !tbaa !5
  %190 = getelementptr inbounds %"struct.std::pair.423", ptr %189, i32 0, i32 0
  %191 = load i32, ptr %190, align 4, !tbaa !9
  call void @_ZN11spirv_cross12CompilerGLSL17add_resource_nameEj(ptr noundef nonnull align 8 dereferenceable(9848) %163, i32 noundef %191)
  br label %192

192:                                              ; preds = %188, %174
  call void @llvm.lifetime.start.p0(i64 280, ptr %9) #7
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(280) %9) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #7
  %193 = load ptr, ptr %6, align 8, !tbaa !5
  %194 = getelementptr inbounds %"struct.std::pair.423", ptr %193, i32 0, i32 1
  store ptr %194, ptr %10, align 8, !tbaa !5
  %195 = load ptr, ptr %10, align 8, !tbaa !5
  %196 = getelementptr inbounds %"struct.spirv_cross::MSLConstexprSampler", ptr %195, i32 0, i32 0
  %197 = load i32, ptr %196, align 4, !tbaa !51
  %198 = icmp ne i32 %197, 0
  br i1 %198, label %199, label %205

199:                                              ; preds = %192
  call void @llvm.lifetime.start.p0(i64 32, ptr %11) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %12) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef @.str.28, ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %200 unwind label %201

200:                                              ; preds = %199
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %9, ptr noundef nonnull align 8 dereferenceable(32) %11) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %11) #7
  br label %205

201:                                              ; preds = %199
  %202 = landingpad { ptr, i32 }
          cleanup
  %203 = extractvalue { ptr, i32 } %202, 0
  store ptr %203, ptr %13, align 8
  %204 = extractvalue { ptr, i32 } %202, 1
  store i32 %204, ptr %14, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %11) #7
  br label %570

205:                                              ; preds = %200, %192
  %206 = load ptr, ptr %10, align 8, !tbaa !5
  %207 = getelementptr inbounds %"struct.spirv_cross::MSLConstexprSampler", ptr %206, i32 0, i32 1
  %208 = load i32, ptr %207, align 4, !tbaa !52
  %209 = load ptr, ptr %10, align 8, !tbaa !5
  %210 = getelementptr inbounds %"struct.spirv_cross::MSLConstexprSampler", ptr %209, i32 0, i32 2
  %211 = load i32, ptr %210, align 4, !tbaa !53
  %212 = icmp eq i32 %208, %211
  br i1 %212, label %213, label %225

213:                                              ; preds = %205
  %214 = load ptr, ptr %10, align 8, !tbaa !5
  %215 = getelementptr inbounds %"struct.spirv_cross::MSLConstexprSampler", ptr %214, i32 0, i32 1
  %216 = load i32, ptr %215, align 4, !tbaa !52
  %217 = icmp ne i32 %216, 0
  br i1 %217, label %218, label %224

218:                                              ; preds = %213
  call void @llvm.lifetime.start.p0(i64 32, ptr %15) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef @.str.29, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %219 unwind label %220

219:                                              ; preds = %218
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %9, ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %15) #7
  br label %224

220:                                              ; preds = %218
  %221 = landingpad { ptr, i32 }
          cleanup
  %222 = extractvalue { ptr, i32 } %221, 0
  store ptr %222, ptr %13, align 8
  %223 = extractvalue { ptr, i32 } %221, 1
  store i32 %223, ptr %14, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %15) #7
  br label %570

224:                                              ; preds = %219, %213
  br label %248

225:                                              ; preds = %205
  %226 = load ptr, ptr %10, align 8, !tbaa !5
  %227 = getelementptr inbounds %"struct.spirv_cross::MSLConstexprSampler", ptr %226, i32 0, i32 1
  %228 = load i32, ptr %227, align 4, !tbaa !52
  %229 = icmp ne i32 %228, 0
  br i1 %229, label %230, label %236

230:                                              ; preds = %225
  call void @llvm.lifetime.start.p0(i64 32, ptr %17) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %18) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef @.str.30, ptr noundef nonnull align 1 dereferenceable(1) %18)
          to label %231 unwind label %232

231:                                              ; preds = %230
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %9, ptr noundef nonnull align 8 dereferenceable(32) %17) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #7
  br label %236

232:                                              ; preds = %230
  %233 = landingpad { ptr, i32 }
          cleanup
  %234 = extractvalue { ptr, i32 } %233, 0
  store ptr %234, ptr %13, align 8
  %235 = extractvalue { ptr, i32 } %233, 1
  store i32 %235, ptr %14, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #7
  br label %570

236:                                              ; preds = %231, %225
  %237 = load ptr, ptr %10, align 8, !tbaa !5
  %238 = getelementptr inbounds %"struct.spirv_cross::MSLConstexprSampler", ptr %237, i32 0, i32 2
  %239 = load i32, ptr %238, align 4, !tbaa !53
  %240 = icmp ne i32 %239, 0
  br i1 %240, label %241, label %247

241:                                              ; preds = %236
  call void @llvm.lifetime.start.p0(i64 32, ptr %19) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef @.str.31, ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %242 unwind label %243

242:                                              ; preds = %241
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %9, ptr noundef nonnull align 8 dereferenceable(32) %19) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #7
  br label %247

243:                                              ; preds = %241
  %244 = landingpad { ptr, i32 }
          cleanup
  %245 = extractvalue { ptr, i32 } %244, 0
  store ptr %245, ptr %13, align 8
  %246 = extractvalue { ptr, i32 } %244, 1
  store i32 %246, ptr %14, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #7
  br label %570

247:                                              ; preds = %242, %236
  br label %248

248:                                              ; preds = %247, %224
  %249 = load ptr, ptr %10, align 8, !tbaa !5
  %250 = getelementptr inbounds %"struct.spirv_cross::MSLConstexprSampler", ptr %249, i32 0, i32 3
  %251 = load i32, ptr %250, align 4, !tbaa !54
  switch i32 %251, label %264 [
    i32 0, label %275
    i32 1, label %252
    i32 2, label %258
  ]

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

253:                                              ; preds = %252
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %9, ptr noundef nonnull align 8 dereferenceable(32) %21) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #7
  br label %275

254:                                              ; preds = %252
  %255 = landingpad { ptr, i32 }
          cleanup
  %256 = extractvalue { ptr, i32 } %255, 0
  store ptr %256, ptr %13, align 8
  %257 = extractvalue { ptr, i32 } %255, 1
  store i32 %257, ptr %14, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #7
  br label %570

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

259:                                              ; preds = %258
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %9, ptr noundef nonnull align 8 dereferenceable(32) %23) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #7
  br label %275

260:                                              ; preds = %258
  %261 = landingpad { ptr, i32 }
          cleanup
  %262 = extractvalue { ptr, i32 } %261, 0
  store ptr %262, ptr %13, align 8
  %263 = extractvalue { ptr, i32 } %261, 1
  store i32 %263, ptr %14, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #7
  br label %570

264:                                              ; preds = %248
  %265 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %265, ptr noundef @.str.34)
          to label %266 unwind label %267

266:                                              ; preds = %264
  invoke void @__cxa_throw(ptr %265, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #8
          to label %1402 unwind label %271

267:                                              ; preds = %264
  %268 = landingpad { ptr, i32 }
          cleanup
  %269 = extractvalue { ptr, i32 } %268, 0
  store ptr %269, ptr %13, align 8
  %270 = extractvalue { ptr, i32 } %268, 1
  store i32 %270, ptr %14, align 4
  call void @__cxa_free_exception(ptr %265) #7
  br label %570

271:                                              ; preds = %453, %408, %266
  %272 = landingpad { ptr, i32 }
          cleanup
  %273 = extractvalue { ptr, i32 } %272, 0
  store ptr %273, ptr %13, align 8
  %274 = extractvalue { ptr, i32 } %272, 1
  store i32 %274, ptr %14, align 4
  br label %570

275:                                              ; preds = %259, %253, %248
  %276 = load ptr, ptr %10, align 8, !tbaa !5
  %277 = getelementptr inbounds %"struct.spirv_cross::MSLConstexprSampler", ptr %276, i32 0, i32 4
  %278 = load i32, ptr %277, align 4, !tbaa !55
  %279 = load ptr, ptr %10, align 8, !tbaa !5
  %280 = getelementptr inbounds %"struct.spirv_cross::MSLConstexprSampler", ptr %279, i32 0, i32 5
  %281 = load i32, ptr %280, align 4, !tbaa !56
  %282 = icmp eq i32 %278, %281
  br i1 %282, label %283, label %306

283:                                              ; preds = %275
  %284 = load ptr, ptr %10, align 8, !tbaa !5
  %285 = getelementptr inbounds %"struct.spirv_cross::MSLConstexprSampler", ptr %284, i32 0, i32 4
  %286 = load i32, ptr %285, align 4, !tbaa !55
  %287 = load ptr, ptr %10, align 8, !tbaa !5
  %288 = getelementptr inbounds %"struct.spirv_cross::MSLConstexprSampler", ptr %287, i32 0, i32 6
  %289 = load i32, ptr %288, align 4, !tbaa !57
  %290 = icmp eq i32 %286, %289
  br i1 %290, label %291, label %306

291:                                              ; preds = %283
  %292 = load ptr, ptr %10, align 8, !tbaa !5
  %293 = getelementptr inbounds %"struct.spirv_cross::MSLConstexprSampler", ptr %292, i32 0, i32 4
  %294 = load i32, ptr %293, align 4, !tbaa !55
  %295 = icmp ne i32 %294, 1
  br i1 %295, label %296, label %305

296:                                              ; preds = %291
  call void @llvm.lifetime.start.p0(i64 32, ptr %25) #7
  %297 = load ptr, ptr %10, align 8, !tbaa !5
  %298 = getelementptr inbounds %"struct.spirv_cross::MSLConstexprSampler", ptr %297, i32 0, i32 4
  %299 = load i32, ptr %298, align 4, !tbaa !55
  invoke void @_ZL22create_sampler_addressB5cxx11PKcN11spirv_cross17MSLSamplerAddressE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %25, ptr noundef @.str.35, i32 noundef %299)
          to label %300 unwind label %301

300:                                              ; preds = %296
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %9, ptr noundef nonnull align 8 dereferenceable(32) %25) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #7
  br label %305

301:                                              ; preds = %296
  %302 = landingpad { ptr, i32 }
          cleanup
  %303 = extractvalue { ptr, i32 } %302, 0
  store ptr %303, ptr %13, align 8
  %304 = extractvalue { ptr, i32 } %302, 1
  store i32 %304, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #7
  br label %570

305:                                              ; preds = %300, %291
  br label %349

306:                                              ; preds = %283, %275
  %307 = load ptr, ptr %10, align 8, !tbaa !5
  %308 = getelementptr inbounds %"struct.spirv_cross::MSLConstexprSampler", ptr %307, i32 0, i32 4
  %309 = load i32, ptr %308, align 4, !tbaa !55
  %310 = icmp ne i32 %309, 1
  br i1 %310, label %311, label %320

311:                                              ; preds = %306
  call void @llvm.lifetime.start.p0(i64 32, ptr %26) #7
  %312 = load ptr, ptr %10, align 8, !tbaa !5
  %313 = getelementptr inbounds %"struct.spirv_cross::MSLConstexprSampler", ptr %312, i32 0, i32 4
  %314 = load i32, ptr %313, align 4, !tbaa !55
  invoke void @_ZL22create_sampler_addressB5cxx11PKcN11spirv_cross17MSLSamplerAddressE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %26, ptr noundef @.str.36, i32 noundef %314)
          to label %315 unwind label %316

315:                                              ; preds = %311
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %9, ptr noundef nonnull align 8 dereferenceable(32) %26) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #7
  br label %320

316:                                              ; preds = %311
  %317 = landingpad { ptr, i32 }
          cleanup
  %318 = extractvalue { ptr, i32 } %317, 0
  store ptr %318, ptr %13, align 8
  %319 = extractvalue { ptr, i32 } %317, 1
  store i32 %319, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #7
  br label %570

320:                                              ; preds = %315, %306
  %321 = load ptr, ptr %10, align 8, !tbaa !5
  %322 = getelementptr inbounds %"struct.spirv_cross::MSLConstexprSampler", ptr %321, i32 0, i32 5
  %323 = load i32, ptr %322, align 4, !tbaa !56
  %324 = icmp ne i32 %323, 1
  br i1 %324, label %325, label %334

325:                                              ; preds = %320
  call void @llvm.lifetime.start.p0(i64 32, ptr %27) #7
  %326 = load ptr, ptr %10, align 8, !tbaa !5
  %327 = getelementptr inbounds %"struct.spirv_cross::MSLConstexprSampler", ptr %326, i32 0, i32 5
  %328 = load i32, ptr %327, align 4, !tbaa !56
  invoke void @_ZL22create_sampler_addressB5cxx11PKcN11spirv_cross17MSLSamplerAddressE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %27, ptr noundef @.str.37, i32 noundef %328)
          to label %329 unwind label %330

329:                                              ; preds = %325
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %9, ptr noundef nonnull align 8 dereferenceable(32) %27) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #7
  br label %334

330:                                              ; preds = %325
  %331 = landingpad { ptr, i32 }
          cleanup
  %332 = extractvalue { ptr, i32 } %331, 0
  store ptr %332, ptr %13, align 8
  %333 = extractvalue { ptr, i32 } %331, 1
  store i32 %333, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #7
  br label %570

334:                                              ; preds = %329, %320
  %335 = load ptr, ptr %10, align 8, !tbaa !5
  %336 = getelementptr inbounds %"struct.spirv_cross::MSLConstexprSampler", ptr %335, i32 0, i32 6
  %337 = load i32, ptr %336, align 4, !tbaa !57
  %338 = icmp ne i32 %337, 1
  br i1 %338, label %339, label %348

339:                                              ; preds = %334
  call void @llvm.lifetime.start.p0(i64 32, ptr %28) #7
  %340 = load ptr, ptr %10, align 8, !tbaa !5
  %341 = getelementptr inbounds %"struct.spirv_cross::MSLConstexprSampler", ptr %340, i32 0, i32 6
  %342 = load i32, ptr %341, align 4, !tbaa !57
  invoke void @_ZL22create_sampler_addressB5cxx11PKcN11spirv_cross17MSLSamplerAddressE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %28, ptr noundef @.str.38, i32 noundef %342)
          to label %343 unwind label %344

343:                                              ; preds = %339
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %9, ptr noundef nonnull align 8 dereferenceable(32) %28) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #7
  br label %348

344:                                              ; preds = %339
  %345 = landingpad { ptr, i32 }
          cleanup
  %346 = extractvalue { ptr, i32 } %345, 0
  store ptr %346, ptr %13, align 8
  %347 = extractvalue { ptr, i32 } %345, 1
  store i32 %347, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #7
  br label %570

348:                                              ; preds = %343, %334
  br label %349

349:                                              ; preds = %348, %305
  %350 = load ptr, ptr %10, align 8, !tbaa !5
  %351 = getelementptr inbounds %"struct.spirv_cross::MSLConstexprSampler", ptr %350, i32 0, i32 21
  %352 = load i8, ptr %351, align 4, !tbaa !58, !range !59, !noundef !60
  %353 = trunc i8 %352 to i1
  br i1 %353, label %354, label %414

354:                                              ; preds = %349
  %355 = load ptr, ptr %10, align 8, !tbaa !5
  %356 = getelementptr inbounds %"struct.spirv_cross::MSLConstexprSampler", ptr %355, i32 0, i32 7
  %357 = load i32, ptr %356, align 4, !tbaa !61
  switch i32 %357, label %406 [
    i32 7, label %358
    i32 0, label %364
    i32 5, label %370
    i32 6, label %376
    i32 1, label %382
    i32 2, label %388
    i32 3, label %394
    i32 4, label %400
  ]

358:                                              ; preds = %354
  call void @llvm.lifetime.start.p0(i64 32, ptr %29) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %30) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef @.str.39, ptr noundef nonnull align 1 dereferenceable(1) %30)
          to label %359 unwind label %360

359:                                              ; preds = %358
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %9, ptr noundef nonnull align 8 dereferenceable(32) %29) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #7
  br label %413

360:                                              ; preds = %358
  %361 = landingpad { ptr, i32 }
          cleanup
  %362 = extractvalue { ptr, i32 } %361, 0
  store ptr %362, ptr %13, align 8
  %363 = extractvalue { ptr, i32 } %361, 1
  store i32 %363, ptr %14, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #7
  br label %570

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

365:                                              ; preds = %364
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %9, ptr noundef nonnull align 8 dereferenceable(32) %31) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #7
  br label %413

366:                                              ; preds = %364
  %367 = landingpad { ptr, i32 }
          cleanup
  %368 = extractvalue { ptr, i32 } %367, 0
  store ptr %368, ptr %13, align 8
  %369 = extractvalue { ptr, i32 } %367, 1
  store i32 %369, ptr %14, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #7
  br label %570

370:                                              ; preds = %354
  call void @llvm.lifetime.start.p0(i64 32, ptr %33) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %34) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef @.str.41, ptr noundef nonnull align 1 dereferenceable(1) %34)
          to label %371 unwind label %372

371:                                              ; preds = %370
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %9, ptr noundef nonnull align 8 dereferenceable(32) %33) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %33) #7
  br label %413

372:                                              ; preds = %370
  %373 = landingpad { ptr, i32 }
          cleanup
  %374 = extractvalue { ptr, i32 } %373, 0
  store ptr %374, ptr %13, align 8
  %375 = extractvalue { ptr, i32 } %373, 1
  store i32 %375, ptr %14, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %33) #7
  br label %570

376:                                              ; preds = %354
  call void @llvm.lifetime.start.p0(i64 32, ptr %35) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef @.str.42, ptr noundef nonnull align 1 dereferenceable(1) %36)
          to label %377 unwind label %378

377:                                              ; preds = %376
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %9, ptr noundef nonnull align 8 dereferenceable(32) %35) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #7
  br label %413

378:                                              ; preds = %376
  %379 = landingpad { ptr, i32 }
          cleanup
  %380 = extractvalue { ptr, i32 } %379, 0
  store ptr %380, ptr %13, align 8
  %381 = extractvalue { ptr, i32 } %379, 1
  store i32 %381, ptr %14, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #7
  br label %570

382:                                              ; preds = %354
  call void @llvm.lifetime.start.p0(i64 32, ptr %37) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %38) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %37, ptr noundef @.str.43, ptr noundef nonnull align 1 dereferenceable(1) %38)
          to label %383 unwind label %384

383:                                              ; preds = %382
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %9, ptr noundef nonnull align 8 dereferenceable(32) %37) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %37) #7
  br label %413

384:                                              ; preds = %382
  %385 = landingpad { ptr, i32 }
          cleanup
  %386 = extractvalue { ptr, i32 } %385, 0
  store ptr %386, ptr %13, align 8
  %387 = extractvalue { ptr, i32 } %385, 1
  store i32 %387, ptr %14, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %37) #7
  br label %570

388:                                              ; preds = %354
  call void @llvm.lifetime.start.p0(i64 32, ptr %39) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %40) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %39, ptr noundef @.str.44, ptr noundef nonnull align 1 dereferenceable(1) %40)
          to label %389 unwind label %390

389:                                              ; preds = %388
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %9, ptr noundef nonnull align 8 dereferenceable(32) %39) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %39) #7
  br label %413

390:                                              ; preds = %388
  %391 = landingpad { ptr, i32 }
          cleanup
  %392 = extractvalue { ptr, i32 } %391, 0
  store ptr %392, ptr %13, align 8
  %393 = extractvalue { ptr, i32 } %391, 1
  store i32 %393, ptr %14, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %39) #7
  br label %570

394:                                              ; preds = %354
  call void @llvm.lifetime.start.p0(i64 32, ptr %41) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %42) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %41, ptr noundef @.str.45, ptr noundef nonnull align 1 dereferenceable(1) %42)
          to label %395 unwind label %396

395:                                              ; preds = %394
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %9, ptr noundef nonnull align 8 dereferenceable(32) %41) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %41) #7
  br label %413

396:                                              ; preds = %394
  %397 = landingpad { ptr, i32 }
          cleanup
  %398 = extractvalue { ptr, i32 } %397, 0
  store ptr %398, ptr %13, align 8
  %399 = extractvalue { ptr, i32 } %397, 1
  store i32 %399, ptr %14, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %41) #7
  br label %570

400:                                              ; preds = %354
  call void @llvm.lifetime.start.p0(i64 32, ptr %43) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %44) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %43, ptr noundef @.str.46, ptr noundef nonnull align 1 dereferenceable(1) %44)
          to label %401 unwind label %402

401:                                              ; preds = %400
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %9, ptr noundef nonnull align 8 dereferenceable(32) %43) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %43) #7
  br label %413

402:                                              ; preds = %400
  %403 = landingpad { ptr, i32 }
          cleanup
  %404 = extractvalue { ptr, i32 } %403, 0
  store ptr %404, ptr %13, align 8
  %405 = extractvalue { ptr, i32 } %403, 1
  store i32 %405, ptr %14, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %43) #7
  br label %570

406:                                              ; preds = %354
  %407 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %407, ptr noundef @.str.47)
          to label %408 unwind label %409

408:                                              ; preds = %406
  invoke void @__cxa_throw(ptr %407, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #8
          to label %1402 unwind label %271

409:                                              ; preds = %406
  %410 = landingpad { ptr, i32 }
          cleanup
  %411 = extractvalue { ptr, i32 } %410, 0
  store ptr %411, ptr %13, align 8
  %412 = extractvalue { ptr, i32 } %410, 1
  store i32 %412, ptr %14, align 4
  call void @__cxa_free_exception(ptr %407) #7
  br label %570

413:                                              ; preds = %401, %395, %389, %383, %377, %371, %365, %359
  br label %414

414:                                              ; preds = %413, %349
  %415 = load ptr, ptr %10, align 8, !tbaa !5
  %416 = getelementptr inbounds %"struct.spirv_cross::MSLConstexprSampler", ptr %415, i32 0, i32 4
  %417 = load i32, ptr %416, align 4, !tbaa !55
  %418 = icmp eq i32 %417, 2
  br i1 %418, label %429, label %419

419:                                              ; preds = %414
  %420 = load ptr, ptr %10, align 8, !tbaa !5
  %421 = getelementptr inbounds %"struct.spirv_cross::MSLConstexprSampler", ptr %420, i32 0, i32 5
  %422 = load i32, ptr %421, align 4, !tbaa !56
  %423 = icmp eq i32 %422, 2
  br i1 %423, label %429, label %424

424:                                              ; preds = %419
  %425 = load ptr, ptr %10, align 8, !tbaa !5
  %426 = getelementptr inbounds %"struct.spirv_cross::MSLConstexprSampler", ptr %425, i32 0, i32 6
  %427 = load i32, ptr %426, align 4, !tbaa !57
  %428 = icmp eq i32 %427, 2
  br i1 %428, label %429, label %459

429:                                              ; preds = %424, %419, %414
  %430 = load ptr, ptr %10, align 8, !tbaa !5
  %431 = getelementptr inbounds %"struct.spirv_cross::MSLConstexprSampler", ptr %430, i32 0, i32 8
  %432 = load i32, ptr %431, align 4, !tbaa !62
  switch i32 %432, label %451 [
    i32 1, label %433
    i32 2, label %439
    i32 0, label %445
  ]

433:                                              ; preds = %429
  call void @llvm.lifetime.start.p0(i64 32, ptr %45) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %46) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %45, ptr noundef @.str.48, ptr noundef nonnull align 1 dereferenceable(1) %46)
          to label %434 unwind label %435

434:                                              ; preds = %433
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %9, ptr noundef nonnull align 8 dereferenceable(32) %45) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %45) #7
  br label %458

435:                                              ; preds = %433
  %436 = landingpad { ptr, i32 }
          cleanup
  %437 = extractvalue { ptr, i32 } %436, 0
  store ptr %437, ptr %13, align 8
  %438 = extractvalue { ptr, i32 } %436, 1
  store i32 %438, ptr %14, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %45) #7
  br label %570

439:                                              ; preds = %429
  call void @llvm.lifetime.start.p0(i64 32, ptr %47) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %48) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef @.str.49, ptr noundef nonnull align 1 dereferenceable(1) %48)
          to label %440 unwind label %441

440:                                              ; preds = %439
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %9, ptr noundef nonnull align 8 dereferenceable(32) %47) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %47) #7
  br label %458

441:                                              ; preds = %439
  %442 = landingpad { ptr, i32 }
          cleanup
  %443 = extractvalue { ptr, i32 } %442, 0
  store ptr %443, ptr %13, align 8
  %444 = extractvalue { ptr, i32 } %442, 1
  store i32 %444, ptr %14, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %47) #7
  br label %570

445:                                              ; preds = %429
  call void @llvm.lifetime.start.p0(i64 32, ptr %49) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %50) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %49, ptr noundef @.str.50, ptr noundef nonnull align 1 dereferenceable(1) %50)
          to label %446 unwind label %447

446:                                              ; preds = %445
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %9, ptr noundef nonnull align 8 dereferenceable(32) %49) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %50) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %49) #7
  br label %458

447:                                              ; preds = %445
  %448 = landingpad { ptr, i32 }
          cleanup
  %449 = extractvalue { ptr, i32 } %448, 0
  store ptr %449, ptr %13, align 8
  %450 = extractvalue { ptr, i32 } %448, 1
  store i32 %450, ptr %14, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %50) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %49) #7
  br label %570

451:                                              ; preds = %429
  %452 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %452, ptr noundef @.str.51)
          to label %453 unwind label %454

453:                                              ; preds = %451
  invoke void @__cxa_throw(ptr %452, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #8
          to label %1402 unwind label %271

454:                                              ; preds = %451
  %455 = landingpad { ptr, i32 }
          cleanup
  %456 = extractvalue { ptr, i32 } %455, 0
  store ptr %456, ptr %13, align 8
  %457 = extractvalue { ptr, i32 } %455, 1
  store i32 %457, ptr %14, align 4
  call void @__cxa_free_exception(ptr %452) #7
  br label %570

458:                                              ; preds = %446, %440, %434
  br label %459

459:                                              ; preds = %458, %424
  %460 = load ptr, ptr %10, align 8, !tbaa !5
  %461 = getelementptr inbounds %"struct.spirv_cross::MSLConstexprSampler", ptr %460, i32 0, i32 23
  %462 = load i8, ptr %461, align 2, !tbaa !63, !range !59, !noundef !60
  %463 = trunc i8 %462 to i1
  br i1 %463, label %464, label %472

464:                                              ; preds = %459
  call void @llvm.lifetime.start.p0(i64 32, ptr %51) #7
  %465 = load ptr, ptr %10, align 8, !tbaa !5
  %466 = getelementptr inbounds %"struct.spirv_cross::MSLConstexprSampler", ptr %465, i32 0, i32 11
  invoke void @_ZN11spirv_cross4joinIJRA16_KcRiRA2_S1_EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %51, ptr noundef nonnull align 1 dereferenceable(16) @.str.52, ptr noundef nonnull align 4 dereferenceable(4) %466, ptr noundef nonnull align 1 dereferenceable(2) @.str.53)
          to label %467 unwind label %468

467:                                              ; preds = %464
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %9, ptr noundef nonnull align 8 dereferenceable(32) %51) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %51) #7
  br label %472

468:                                              ; preds = %464
  %469 = landingpad { ptr, i32 }
          cleanup
  %470 = extractvalue { ptr, i32 } %469, 0
  store ptr %470, ptr %13, align 8
  %471 = extractvalue { ptr, i32 } %469, 1
  store i32 %471, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %51) #7
  br label %570

472:                                              ; preds = %467, %459
  %473 = load ptr, ptr %10, align 8, !tbaa !5
  %474 = getelementptr inbounds %"struct.spirv_cross::MSLConstexprSampler", ptr %473, i32 0, i32 22
  %475 = load i8, ptr %474, align 1, !tbaa !64, !range !59, !noundef !60
  %476 = trunc i8 %475 to i1
  br i1 %476, label %477, label %501

477:                                              ; preds = %472
  call void @llvm.lifetime.start.p0(i64 32, ptr %52) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %53) #7
  %478 = load ptr, ptr %10, align 8, !tbaa !5
  %479 = getelementptr inbounds %"struct.spirv_cross::MSLConstexprSampler", ptr %478, i32 0, i32 9
  %480 = load float, ptr %479, align 4, !tbaa !65
  invoke void @_ZNK11spirv_cross12CompilerGLSL12format_floatB5cxx11Ef(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %53, ptr noundef nonnull align 8 dereferenceable(9848) %163, float noundef %480)
          to label %481 unwind label %487

481:                                              ; preds = %477
  call void @llvm.lifetime.start.p0(i64 32, ptr %54) #7
  %482 = load ptr, ptr %10, align 8, !tbaa !5
  %483 = getelementptr inbounds %"struct.spirv_cross::MSLConstexprSampler", ptr %482, i32 0, i32 10
  %484 = load float, ptr %483, align 4, !tbaa !66
  invoke void @_ZNK11spirv_cross12CompilerGLSL12format_floatB5cxx11Ef(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %54, ptr noundef nonnull align 8 dereferenceable(9848) %163, float noundef %484)
          to label %485 unwind label %491

485:                                              ; preds = %481
  invoke void @_ZN11spirv_cross4joinIJRA11_KcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA3_S1_S9_RA2_S1_EEES9_DpOT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %52, ptr noundef nonnull align 1 dereferenceable(11) @.str.54, ptr noundef nonnull align 8 dereferenceable(32) %53, ptr noundef nonnull align 1 dereferenceable(3) @.str.55, ptr noundef nonnull align 8 dereferenceable(32) %54, ptr noundef nonnull align 1 dereferenceable(2) @.str.53)
          to label %486 unwind label %495

486:                                              ; preds = %485
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %9, ptr noundef nonnull align 8 dereferenceable(32) %52) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %54) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %53) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %52) #7
  br label %501

487:                                              ; preds = %477
  %488 = landingpad { ptr, i32 }
          cleanup
  %489 = extractvalue { ptr, i32 } %488, 0
  store ptr %489, ptr %13, align 8
  %490 = extractvalue { ptr, i32 } %488, 1
  store i32 %490, ptr %14, align 4
  br label %500

491:                                              ; preds = %481
  %492 = landingpad { ptr, i32 }
          cleanup
  %493 = extractvalue { ptr, i32 } %492, 0
  store ptr %493, ptr %13, align 8
  %494 = extractvalue { ptr, i32 } %492, 1
  store i32 %494, ptr %14, align 4
  br label %499

495:                                              ; preds = %485
  %496 = landingpad { ptr, i32 }
          cleanup
  %497 = extractvalue { ptr, i32 } %496, 0
  store ptr %497, ptr %13, align 8
  %498 = extractvalue { ptr, i32 } %496, 1
  store i32 %498, ptr %14, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #7
  br label %499

499:                                              ; preds = %495, %491
  call void @llvm.lifetime.end.p0(i64 32, ptr %54) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #7
  br label %500

500:                                              ; preds = %499, %487
  call void @llvm.lifetime.end.p0(i64 32, ptr %53) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %52) #7
  br label %570

501:                                              ; preds = %486, %472
  %502 = call noundef zeroext i1 @_ZNK11spirv_cross10VectorViewINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %9) #7
  br i1 %502, label %503, label %532

503:                                              ; preds = %501
  call void @llvm.lifetime.start.p0(i64 32, ptr %55) #7
  %504 = load ptr, ptr %8, align 8, !tbaa !5
  %505 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %504, i32 0, i32 2
  %506 = load i32, ptr %505, align 8, !tbaa !25
  %507 = icmp eq i32 %506, 17
  br i1 %507, label %508, label %513

508:                                              ; preds = %503
  %509 = load ptr, ptr %6, align 8, !tbaa !5
  %510 = getelementptr inbounds %"struct.std::pair.423", ptr %509, i32 0, i32 0
  %511 = load i32, ptr %510, align 4, !tbaa !9
  invoke void @_ZN11spirv_cross11CompilerMSL21to_sampler_expressionB5cxx11Ej(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %55, ptr noundef nonnull align 8 dereferenceable(12482) %163, i32 noundef %511)
          to label %512 unwind label %523

512:                                              ; preds = %508
  br label %521

513:                                              ; preds = %503
  %514 = load ptr, ptr %6, align 8, !tbaa !5
  %515 = getelementptr inbounds %"struct.std::pair.423", ptr %514, i32 0, i32 0
  %516 = load i32, ptr %515, align 4, !tbaa !9
  %517 = load ptr, ptr %163, align 8, !tbaa !67
  %518 = getelementptr inbounds ptr, ptr %517, i64 6
  %519 = load ptr, ptr %518, align 8
  invoke void %519(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %55, ptr noundef nonnull align 8 dereferenceable(12482) %163, i32 noundef %516, i1 noundef zeroext true)
          to label %520 unwind label %523

520:                                              ; preds = %513
  br label %521

521:                                              ; preds = %520, %512
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA19_KcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %163, ptr noundef nonnull align 1 dereferenceable(19) @.str.56, ptr noundef nonnull align 8 dereferenceable(32) %55, ptr noundef nonnull align 1 dereferenceable(2) @.str.57)
          to label %522 unwind label %527

522:                                              ; preds = %521
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %55) #7
  br label %567

523:                                              ; preds = %513, %508
  %524 = landingpad { ptr, i32 }
          cleanup
  %525 = extractvalue { ptr, i32 } %524, 0
  store ptr %525, ptr %13, align 8
  %526 = extractvalue { ptr, i32 } %524, 1
  store i32 %526, ptr %14, align 4
  br label %531

527:                                              ; preds = %521
  %528 = landingpad { ptr, i32 }
          cleanup
  %529 = extractvalue { ptr, i32 } %528, 0
  store ptr %529, ptr %13, align 8
  %530 = extractvalue { ptr, i32 } %528, 1
  store i32 %530, ptr %14, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #7
  br label %531

531:                                              ; preds = %527, %523
  call void @llvm.lifetime.end.p0(i64 32, ptr %55) #7
  br label %570

532:                                              ; preds = %501
  call void @llvm.lifetime.start.p0(i64 32, ptr %56) #7
  %533 = load ptr, ptr %8, align 8, !tbaa !5
  %534 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %533, i32 0, i32 2
  %535 = load i32, ptr %534, align 8, !tbaa !25
  %536 = icmp eq i32 %535, 17
  br i1 %536, label %537, label %542

537:                                              ; preds = %532
  %538 = load ptr, ptr %6, align 8, !tbaa !5
  %539 = getelementptr inbounds %"struct.std::pair.423", ptr %538, i32 0, i32 0
  %540 = load i32, ptr %539, align 4, !tbaa !9
  invoke void @_ZN11spirv_cross11CompilerMSL21to_sampler_expressionB5cxx11Ej(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %56, ptr noundef nonnull align 8 dereferenceable(12482) %163, i32 noundef %540)
          to label %541 unwind label %553

541:                                              ; preds = %537
  br label %550

542:                                              ; preds = %532
  %543 = load ptr, ptr %6, align 8, !tbaa !5
  %544 = getelementptr inbounds %"struct.std::pair.423", ptr %543, i32 0, i32 0
  %545 = load i32, ptr %544, align 4, !tbaa !9
  %546 = load ptr, ptr %163, align 8, !tbaa !67
  %547 = getelementptr inbounds ptr, ptr %546, i64 6
  %548 = load ptr, ptr %547, align 8
  invoke void %548(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %56, ptr noundef nonnull align 8 dereferenceable(12482) %163, i32 noundef %545, i1 noundef zeroext true)
          to label %549 unwind label %553

549:                                              ; preds = %542
  br label %550

550:                                              ; preds = %549, %541
  call void @llvm.lifetime.start.p0(i64 32, ptr %57) #7
  invoke void @_ZN11spirv_cross5mergeERKNS_11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EEEPKc(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %57, ptr noundef nonnull align 8 dereferenceable(280) %9, ptr noundef @.str.55)
          to label %551 unwind label %557

551:                                              ; preds = %550
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA19_KcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_S2_SA_RA3_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %163, ptr noundef nonnull align 1 dereferenceable(19) @.str.56, ptr noundef nonnull align 8 dereferenceable(32) %56, ptr noundef nonnull align 1 dereferenceable(2) @.str.58, ptr noundef nonnull align 8 dereferenceable(32) %57, ptr noundef nonnull align 1 dereferenceable(3) @.str.59)
          to label %552 unwind label %561

552:                                              ; preds = %551
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %57) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %56) #7
  br label %567

553:                                              ; preds = %542, %537
  %554 = landingpad { ptr, i32 }
          cleanup
  %555 = extractvalue { ptr, i32 } %554, 0
  store ptr %555, ptr %13, align 8
  %556 = extractvalue { ptr, i32 } %554, 1
  store i32 %556, ptr %14, align 4
  br label %566

557:                                              ; preds = %550
  %558 = landingpad { ptr, i32 }
          cleanup
  %559 = extractvalue { ptr, i32 } %558, 0
  store ptr %559, ptr %13, align 8
  %560 = extractvalue { ptr, i32 } %558, 1
  store i32 %560, ptr %14, align 4
  br label %565

561:                                              ; preds = %551
  %562 = landingpad { ptr, i32 }
          cleanup
  %563 = extractvalue { ptr, i32 } %562, 0
  store ptr %563, ptr %13, align 8
  %564 = extractvalue { ptr, i32 } %562, 1
  store i32 %564, ptr %14, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #7
  br label %565

565:                                              ; preds = %561, %557
  call void @llvm.lifetime.end.p0(i64 32, ptr %57) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #7
  br label %566

566:                                              ; preds = %565, %553
  call void @llvm.lifetime.end.p0(i64 32, ptr %56) #7
  br label %570

567:                                              ; preds = %552, %522
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #7
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(280) %9) #7
  call void @llvm.lifetime.end.p0(i64 280, ptr %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #7
  br label %568

568:                                              ; preds = %567
  %569 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIKjN11spirv_cross19MSLConstexprSamplerEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %4) #7
  br label %171

570:                                              ; preds = %566, %531, %500, %468, %454, %447, %441, %435, %409, %402, %396, %390, %384, %378, %372, %366, %360, %344, %330, %316, %301, %271, %267, %260, %254, %243, %232, %220, %201
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #7
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(280) %9) #7
  call void @llvm.lifetime.end.p0(i64 280, ptr %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #7
  br label %1397

571:                                              ; preds = %173
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #7
  %572 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %163, i32 0, i32 113
  store ptr %572, ptr %58, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #7
  %573 = load ptr, ptr %58, align 8, !tbaa !5
  %574 = call ptr @_ZNSt3mapIN11spirv_cross14SetBindingPairESt4pairIjjESt4lessIS1_ESaIS2_IKS1_S3_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %573) #7
  %575 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.425", ptr %59, i32 0, i32 0
  store ptr %574, ptr %575, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #7
  %576 = load ptr, ptr %58, align 8, !tbaa !5
  %577 = call ptr @_ZNSt3mapIN11spirv_cross14SetBindingPairESt4pairIjjESt4lessIS1_ESaIS2_IKS1_S3_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %576) #7
  %578 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.425", ptr %60, i32 0, i32 0
  store ptr %577, ptr %578, align 8
  br label %579

579:                                              ; preds = %900, %571
  %580 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKN11spirv_cross14SetBindingPairES0_IjjEEES8_(ptr noundef nonnull align 8 dereferenceable(8) %59, ptr noundef nonnull align 8 dereferenceable(8) %60) #7
  br i1 %580, label %582, label %581

581:                                              ; preds = %579
  store i32 7, ptr %61, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #7
  br label %904

582:                                              ; preds = %579
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #7
  %583 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKN11spirv_cross14SetBindingPairES0_IjjEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %59) #7
  store ptr %583, ptr %62, align 8, !tbaa !5
  %584 = load ptr, ptr %62, align 8, !tbaa !5
  %585 = getelementptr inbounds %"struct.std::pair.426", ptr %584, i32 0, i32 1
  %586 = getelementptr inbounds %"struct.std::pair.401", ptr %585, i32 0, i32 1
  %587 = load i32, ptr %586, align 4, !tbaa !69
  %588 = icmp ne i32 %587, 0
  br i1 %588, label %590, label %589

589:                                              ; preds = %582
  store i32 8, ptr %61, align 4
  br label %897

590:                                              ; preds = %582
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #7
  %591 = load ptr, ptr %62, align 8, !tbaa !5
  %592 = getelementptr inbounds %"struct.std::pair.426", ptr %591, i32 0, i32 1
  %593 = getelementptr inbounds %"struct.std::pair.401", ptr %592, i32 0, i32 1
  %594 = load i32, ptr %593, align 4, !tbaa !69
  %595 = call noundef nonnull align 8 dereferenceable(176) ptr @_ZN11spirv_cross8Compiler3getINS_12SPIRVariableEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %163, i32 noundef %594)
  store ptr %595, ptr %63, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #7
  %596 = load ptr, ptr %63, align 8, !tbaa !5
  %597 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %596, i32 0, i32 1
  %598 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %597)
  store i32 %598, ptr %64, align 4, !tbaa !73
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #7
  %599 = load ptr, ptr %63, align 8, !tbaa !5
  %600 = call noundef nonnull align 8 dereferenceable(336) ptr @_ZN11spirv_cross8Compiler22get_variable_data_typeERKNS_12SPIRVariableE(ptr noundef nonnull align 8 dereferenceable(3176) %163, ptr noundef nonnull align 8 dereferenceable(176) %599)
  store ptr %600, ptr %65, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %66) #7
  %601 = load ptr, ptr %63, align 8, !tbaa !5
  %602 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %601, i32 0, i32 1
  %603 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %602)
  %604 = load ptr, ptr %163, align 8, !tbaa !67
  %605 = getelementptr inbounds ptr, ptr %604, i64 6
  %606 = load ptr, ptr %605, align 8
  call void %606(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %66, ptr noundef nonnull align 8 dereferenceable(12482) %163, i32 noundef %603, i1 noundef zeroext true)
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #7
  %607 = load ptr, ptr %63, align 8, !tbaa !5
  %608 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %607, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %68, ptr align 8 %608, i64 4, i1 false), !tbaa.struct !74
  %609 = getelementptr inbounds %"class.spirv_cross::TypedID.413", ptr %68, i32 0, i32 0
  %610 = load i32, ptr %609, align 4
  %611 = invoke noundef i32 @_ZNK11spirv_cross8Compiler14get_decorationENS_7TypedIDILNS_5TypesE0EEEN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %163, i32 %610, i32 noundef 34)
          to label %612 unwind label %653

612:                                              ; preds = %590
  store i32 %611, ptr %67, align 4, !tbaa !73
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #7
  %613 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %163, i32 0, i32 116
  %614 = load i32, ptr %67, align 4, !tbaa !73
  %615 = zext i32 %614 to i64
  %616 = getelementptr inbounds [8 x i32], ptr %613, i64 0, i64 %615
  %617 = load i32, ptr %616, align 4, !tbaa !73
  store i32 %617, ptr %69, align 4, !tbaa !73
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #7
  %618 = load ptr, ptr %62, align 8, !tbaa !5
  %619 = getelementptr inbounds %"struct.std::pair.426", ptr %618, i32 0, i32 1
  %620 = getelementptr inbounds %"struct.std::pair.401", ptr %619, i32 0, i32 0
  %621 = load i32, ptr %620, align 4, !tbaa !75
  store i32 %621, ptr %70, align 4, !tbaa !73
  %622 = load ptr, ptr %65, align 8, !tbaa !5
  %623 = invoke noundef zeroext i1 @_ZNK11spirv_cross8Compiler8is_arrayERKNS_8SPIRTypeE(ptr noundef nonnull align 8 dereferenceable(3176) %163, ptr noundef nonnull align 8 dereferenceable(336) %622)
          to label %624 unwind label %657

624:                                              ; preds = %612
  br i1 %623, label %625, label %796

625:                                              ; preds = %624
  %626 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %163, i32 0, i32 74
  store i8 1, ptr %626, align 2, !tbaa !76
  call void @llvm.lifetime.start.p0(i64 32, ptr %71) #7
  %627 = load ptr, ptr %63, align 8, !tbaa !5
  invoke void @_ZN11spirv_cross11CompilerMSL26get_argument_address_spaceB5cxx11ERKNS_12SPIRVariableE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %71, ptr noundef nonnull align 8 dereferenceable(12482) %163, ptr noundef nonnull align 8 dereferenceable(176) %627)
          to label %628 unwind label %661

628:                                              ; preds = %625
  call void @llvm.lifetime.start.p0(i64 32, ptr %72) #7
  %629 = load ptr, ptr %65, align 8, !tbaa !5
  %630 = load ptr, ptr %163, align 8, !tbaa !67
  %631 = getelementptr inbounds ptr, ptr %630, i64 19
  %632 = load ptr, ptr %631, align 8
  invoke void %632(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %72, ptr noundef nonnull align 8 dereferenceable(12482) %163, ptr noundef nonnull align 8 dereferenceable(336) %629, i32 noundef 0)
          to label %633 unwind label %665

633:                                              ; preds = %628
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #7
  %634 = load i32, ptr %64, align 4, !tbaa !73
  %635 = invoke noundef ptr @_ZN11spirv_cross11CompilerMSL11to_restrictEjb(ptr noundef nonnull align 8 dereferenceable(12482) %163, i32 noundef %634, i1 noundef zeroext true)
          to label %636 unwind label %669

636:                                              ; preds = %633
  store ptr %635, ptr %73, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %74) #7
  %637 = load ptr, ptr %65, align 8, !tbaa !5
  %638 = load i32, ptr %64, align 4, !tbaa !73
  %639 = load ptr, ptr %163, align 8, !tbaa !67
  %640 = getelementptr inbounds ptr, ptr %639, i64 38
  %641 = load ptr, ptr %640, align 8
  invoke void %641(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %74, ptr noundef nonnull align 8 dereferenceable(12482) %163, ptr noundef nonnull align 8 dereferenceable(336) %637, i32 noundef %638)
          to label %642 unwind label %673

642:                                              ; preds = %636
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_KcS7_RA3_S8_PS8_RS7_S7_SC_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %163, ptr noundef nonnull align 8 dereferenceable(32) %71, ptr noundef nonnull align 1 dereferenceable(2) @.str.60, ptr noundef nonnull align 8 dereferenceable(32) %72, ptr noundef nonnull align 1 dereferenceable(3) @.str.61, ptr noundef nonnull align 8 dereferenceable(8) %73, ptr noundef nonnull align 8 dereferenceable(32) %66, ptr noundef nonnull align 8 dereferenceable(32) %74, ptr noundef nonnull align 1 dereferenceable(3) @.str.62)
          to label %643 unwind label %677

643:                                              ; preds = %642
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %74) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %74) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %72) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %71) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #7
  %644 = load ptr, ptr %65, align 8, !tbaa !5
  %645 = load i32, ptr %64, align 4, !tbaa !73
  %646 = invoke noundef i32 @_ZNK11spirv_cross11CompilerMSL23get_resource_array_sizeERKNS_8SPIRTypeEj(ptr noundef nonnull align 8 dereferenceable(12482) %163, ptr noundef nonnull align 8 dereferenceable(336) %644, i32 noundef %645)
          to label %647 unwind label %685

647:                                              ; preds = %643
  store i32 %646, ptr %75, align 4, !tbaa !73
  %648 = load i32, ptr %75, align 4, !tbaa !73
  %649 = icmp eq i32 %648, 0
  br i1 %649, label %650, label %693

650:                                              ; preds = %647
  %651 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %651, ptr noundef @.str.63)
          to label %652 unwind label %689

652:                                              ; preds = %650
  invoke void @__cxa_throw(ptr %651, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #8
          to label %1402 unwind label %685

653:                                              ; preds = %590
  %654 = landingpad { ptr, i32 }
          cleanup
  %655 = extractvalue { ptr, i32 } %654, 0
  store ptr %655, ptr %13, align 8
  %656 = extractvalue { ptr, i32 } %654, 1
  store i32 %656, ptr %14, align 4
  br label %903

657:                                              ; preds = %612
  %658 = landingpad { ptr, i32 }
          cleanup
  %659 = extractvalue { ptr, i32 } %658, 0
  store ptr %659, ptr %13, align 8
  %660 = extractvalue { ptr, i32 } %658, 1
  store i32 %660, ptr %14, align 4
  br label %902

661:                                              ; preds = %625
  %662 = landingpad { ptr, i32 }
          cleanup
  %663 = extractvalue { ptr, i32 } %662, 0
  store ptr %663, ptr %13, align 8
  %664 = extractvalue { ptr, i32 } %662, 1
  store i32 %664, ptr %14, align 4
  br label %684

665:                                              ; preds = %628
  %666 = landingpad { ptr, i32 }
          cleanup
  %667 = extractvalue { ptr, i32 } %666, 0
  store ptr %667, ptr %13, align 8
  %668 = extractvalue { ptr, i32 } %666, 1
  store i32 %668, ptr %14, align 4
  br label %683

669:                                              ; preds = %633
  %670 = landingpad { ptr, i32 }
          cleanup
  %671 = extractvalue { ptr, i32 } %670, 0
  store ptr %671, ptr %13, align 8
  %672 = extractvalue { ptr, i32 } %670, 1
  store i32 %672, ptr %14, align 4
  br label %682

673:                                              ; preds = %636
  %674 = landingpad { ptr, i32 }
          cleanup
  %675 = extractvalue { ptr, i32 } %674, 0
  store ptr %675, ptr %13, align 8
  %676 = extractvalue { ptr, i32 } %674, 1
  store i32 %676, ptr %14, align 4
  br label %681

677:                                              ; preds = %642
  %678 = landingpad { ptr, i32 }
          cleanup
  %679 = extractvalue { ptr, i32 } %678, 0
  store ptr %679, ptr %13, align 8
  %680 = extractvalue { ptr, i32 } %678, 1
  store i32 %680, ptr %14, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %74) #7
  br label %681

681:                                              ; preds = %677, %673
  call void @llvm.lifetime.end.p0(i64 32, ptr %74) #7
  br label %682

682:                                              ; preds = %681, %669
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #7
  br label %683

683:                                              ; preds = %682, %665
  call void @llvm.lifetime.end.p0(i64 32, ptr %72) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #7
  br label %684

684:                                              ; preds = %683, %661
  call void @llvm.lifetime.end.p0(i64 32, ptr %71) #7
  br label %902

685:                                              ; preds = %792, %791, %693, %652, %643
  %686 = landingpad { ptr, i32 }
          cleanup
  %687 = extractvalue { ptr, i32 } %686, 0
  store ptr %687, ptr %13, align 8
  %688 = extractvalue { ptr, i32 } %686, 1
  store i32 %688, ptr %14, align 4
  br label %795

689:                                              ; preds = %650
  %690 = landingpad { ptr, i32 }
          cleanup
  %691 = extractvalue { ptr, i32 } %690, 0
  store ptr %691, ptr %13, align 8
  %692 = extractvalue { ptr, i32 } %690, 1
  store i32 %692, ptr %14, align 4
  call void @__cxa_free_exception(ptr %651) #7
  br label %795

693:                                              ; preds = %647
  invoke void @_ZN11spirv_cross12CompilerGLSL11begin_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848) %163)
          to label %694 unwind label %685

694:                                              ; preds = %693
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #7
  store i32 0, ptr %76, align 4, !tbaa !73
  br label %695

695:                                              ; preds = %734, %694
  %696 = load i32, ptr %76, align 4, !tbaa !73
  %697 = load i32, ptr %75, align 4, !tbaa !73
  %698 = icmp ult i32 %696, %697
  br i1 %698, label %700, label %699

699:                                              ; preds = %695
  store i32 9, ptr %61, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #7
  br label %791

700:                                              ; preds = %695
  call void @llvm.lifetime.start.p0(i64 32, ptr %77) #7
  %701 = load ptr, ptr %63, align 8, !tbaa !5
  invoke void @_ZN11spirv_cross11CompilerMSL26get_argument_address_spaceB5cxx11ERKNS_12SPIRVariableE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %77, ptr noundef nonnull align 8 dereferenceable(12482) %163, ptr noundef nonnull align 8 dereferenceable(176) %701)
          to label %702 unwind label %737

702:                                              ; preds = %700
  call void @llvm.lifetime.start.p0(i64 32, ptr %78) #7
  %703 = load ptr, ptr %65, align 8, !tbaa !5
  %704 = load ptr, ptr %163, align 8, !tbaa !67
  %705 = getelementptr inbounds ptr, ptr %704, i64 19
  %706 = load ptr, ptr %705, align 8
  invoke void %706(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %78, ptr noundef nonnull align 8 dereferenceable(12482) %163, ptr noundef nonnull align 8 dereferenceable(336) %703, i32 noundef 0)
          to label %707 unwind label %741

707:                                              ; preds = %702
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #7
  %708 = load i32, ptr %64, align 4, !tbaa !73
  %709 = invoke noundef ptr @_ZN11spirv_cross11CompilerMSL11to_restrictEjb(ptr noundef nonnull align 8 dereferenceable(12482) %163, i32 noundef %708, i1 noundef zeroext false)
          to label %710 unwind label %745

710:                                              ; preds = %707
  store ptr %709, ptr %79, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %80) #7
  %711 = load ptr, ptr %63, align 8, !tbaa !5
  invoke void @_ZN11spirv_cross11CompilerMSL26get_argument_address_spaceB5cxx11ERKNS_12SPIRVariableE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %80, ptr noundef nonnull align 8 dereferenceable(12482) %163, ptr noundef nonnull align 8 dereferenceable(176) %711)
          to label %712 unwind label %749

712:                                              ; preds = %710
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #7
  %713 = load i32, ptr %64, align 4, !tbaa !73
  %714 = invoke noundef ptr @_ZN11spirv_cross11CompilerMSL11to_restrictEjb(ptr noundef nonnull align 8 dereferenceable(12482) %163, i32 noundef %713, i1 noundef zeroext false)
          to label %715 unwind label %753

715:                                              ; preds = %712
  store ptr %714, ptr %81, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %82) #7
  %716 = load i32, ptr %69, align 4, !tbaa !73
  %717 = load ptr, ptr %163, align 8, !tbaa !67
  %718 = getelementptr inbounds ptr, ptr %717, i64 6
  %719 = load ptr, ptr %718, align 8
  invoke void %719(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %82, ptr noundef nonnull align 8 dereferenceable(12482) %163, i32 noundef %716, i1 noundef zeroext true)
          to label %720 unwind label %757

720:                                              ; preds = %715
  call void @llvm.lifetime.start.p0(i64 32, ptr %83) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %84, ptr noundef nonnull align 8 dereferenceable(32) %66)
          to label %721 unwind label %761

721:                                              ; preds = %720
  call void @llvm.lifetime.start.p0(i64 1, ptr %86) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %86) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %85, ptr noundef @.str.67, ptr noundef nonnull align 1 dereferenceable(1) %86)
          to label %722 unwind label %765

722:                                              ; preds = %721
  invoke void @_ZN11spirv_cross11CompilerMSL17ensure_valid_nameENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %83, ptr noundef nonnull align 8 dereferenceable(12482) %163, ptr noundef %84, ptr noundef %85)
          to label %723 unwind label %769

723:                                              ; preds = %722
  call void @llvm.lifetime.start.p0(i64 32, ptr %87) #7
  %724 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %163, i32 0, i32 27
  %725 = load i32, ptr %724, align 4, !tbaa !224
  %726 = load ptr, ptr %163, align 8, !tbaa !67
  %727 = getelementptr inbounds ptr, ptr %726, i64 6
  %728 = load ptr, ptr %727, align 8
  invoke void %728(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %87, ptr noundef nonnull align 8 dereferenceable(12482) %163, i32 noundef %725, i1 noundef zeroext true)
          to label %729 unwind label %773

729:                                              ; preds = %723
  call void @llvm.lifetime.start.p0(i64 4, ptr %88) #7
  %730 = load i32, ptr %70, align 4, !tbaa !73
  %731 = load i32, ptr %76, align 4, !tbaa !73
  %732 = add i32 %730, %731
  store i32 %732, ptr %88, align 4, !tbaa !73
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA2_KcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES4_SA_RA3_S2_PS2_RA4_S2_SA_RA8_S2_SD_S4_SA_S4_SA_S4_RjS4_SF_SA_S4_jSF_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %163, ptr noundef nonnull align 1 dereferenceable(2) @.str.58, ptr noundef nonnull align 8 dereferenceable(32) %77, ptr noundef nonnull align 1 dereferenceable(2) @.str.60, ptr noundef nonnull align 8 dereferenceable(32) %78, ptr noundef nonnull align 1 dereferenceable(3) @.str.61, ptr noundef nonnull align 8 dereferenceable(8) %79, ptr noundef nonnull align 1 dereferenceable(4) @.str.64, ptr noundef nonnull align 8 dereferenceable(32) %80, ptr noundef nonnull align 1 dereferenceable(8) @.str.65, ptr noundef nonnull align 8 dereferenceable(8) %81, ptr noundef nonnull align 1 dereferenceable(2) @.str.53, ptr noundef nonnull align 8 dereferenceable(32) %82, ptr noundef nonnull align 1 dereferenceable(2) @.str.66, ptr noundef nonnull align 8 dereferenceable(32) %83, ptr noundef nonnull align 1 dereferenceable(2) @.str.68, ptr noundef nonnull align 4 dereferenceable(4) %76, ptr noundef nonnull align 1 dereferenceable(2) @.str.69, ptr noundef nonnull align 1 dereferenceable(4) @.str.70, ptr noundef nonnull align 8 dereferenceable(32) %87, ptr noundef nonnull align 1 dereferenceable(2) @.str.68, ptr noundef nonnull align 4 dereferenceable(4) %88, ptr noundef nonnull align 1 dereferenceable(4) @.str.71)
          to label %733 unwind label %777

733:                                              ; preds = %729
  call void @llvm.lifetime.end.p0(i64 4, ptr %88) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %87) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %83) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %85) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %86) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %86) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %84) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %83) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %82) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %82) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %80) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %80) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %78) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %78) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %77) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %77) #7
  br label %734

734:                                              ; preds = %733
  %735 = load i32, ptr %76, align 4, !tbaa !73
  %736 = add i32 %735, 1
  store i32 %736, ptr %76, align 4, !tbaa !73
  br label %695, !llvm.loop !225

737:                                              ; preds = %700
  %738 = landingpad { ptr, i32 }
          cleanup
  %739 = extractvalue { ptr, i32 } %738, 0
  store ptr %739, ptr %13, align 8
  %740 = extractvalue { ptr, i32 } %738, 1
  store i32 %740, ptr %14, align 4
  br label %790

741:                                              ; preds = %702
  %742 = landingpad { ptr, i32 }
          cleanup
  %743 = extractvalue { ptr, i32 } %742, 0
  store ptr %743, ptr %13, align 8
  %744 = extractvalue { ptr, i32 } %742, 1
  store i32 %744, ptr %14, align 4
  br label %789

745:                                              ; preds = %707
  %746 = landingpad { ptr, i32 }
          cleanup
  %747 = extractvalue { ptr, i32 } %746, 0
  store ptr %747, ptr %13, align 8
  %748 = extractvalue { ptr, i32 } %746, 1
  store i32 %748, ptr %14, align 4
  br label %788

749:                                              ; preds = %710
  %750 = landingpad { ptr, i32 }
          cleanup
  %751 = extractvalue { ptr, i32 } %750, 0
  store ptr %751, ptr %13, align 8
  %752 = extractvalue { ptr, i32 } %750, 1
  store i32 %752, ptr %14, align 4
  br label %787

753:                                              ; preds = %712
  %754 = landingpad { ptr, i32 }
          cleanup
  %755 = extractvalue { ptr, i32 } %754, 0
  store ptr %755, ptr %13, align 8
  %756 = extractvalue { ptr, i32 } %754, 1
  store i32 %756, ptr %14, align 4
  br label %786

757:                                              ; preds = %715
  %758 = landingpad { ptr, i32 }
          cleanup
  %759 = extractvalue { ptr, i32 } %758, 0
  store ptr %759, ptr %13, align 8
  %760 = extractvalue { ptr, i32 } %758, 1
  store i32 %760, ptr %14, align 4
  br label %785

761:                                              ; preds = %720
  %762 = landingpad { ptr, i32 }
          cleanup
  %763 = extractvalue { ptr, i32 } %762, 0
  store ptr %763, ptr %13, align 8
  %764 = extractvalue { ptr, i32 } %762, 1
  store i32 %764, ptr %14, align 4
  br label %784

765:                                              ; preds = %721
  %766 = landingpad { ptr, i32 }
          cleanup
  %767 = extractvalue { ptr, i32 } %766, 0
  store ptr %767, ptr %13, align 8
  %768 = extractvalue { ptr, i32 } %766, 1
  store i32 %768, ptr %14, align 4
  br label %783

769:                                              ; preds = %722
  %770 = landingpad { ptr, i32 }
          cleanup
  %771 = extractvalue { ptr, i32 } %770, 0
  store ptr %771, ptr %13, align 8
  %772 = extractvalue { ptr, i32 } %770, 1
  store i32 %772, ptr %14, align 4
  br label %782

773:                                              ; preds = %723
  %774 = landingpad { ptr, i32 }
          cleanup
  %775 = extractvalue { ptr, i32 } %774, 0
  store ptr %775, ptr %13, align 8
  %776 = extractvalue { ptr, i32 } %774, 1
  store i32 %776, ptr %14, align 4
  br label %781

777:                                              ; preds = %729
  %778 = landingpad { ptr, i32 }
          cleanup
  %779 = extractvalue { ptr, i32 } %778, 0
  store ptr %779, ptr %13, align 8
  %780 = extractvalue { ptr, i32 } %778, 1
  store i32 %780, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %88) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #7
  br label %781

781:                                              ; preds = %777, %773
  call void @llvm.lifetime.end.p0(i64 32, ptr %87) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %83) #7
  br label %782

782:                                              ; preds = %781, %769
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %85) #7
  br label %783

783:                                              ; preds = %782, %765
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %86) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %86) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %84) #7
  br label %784

784:                                              ; preds = %783, %761
  call void @llvm.lifetime.end.p0(i64 32, ptr %83) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %82) #7
  br label %785

785:                                              ; preds = %784, %757
  call void @llvm.lifetime.end.p0(i64 32, ptr %82) #7
  br label %786

786:                                              ; preds = %785, %753
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %80) #7
  br label %787

787:                                              ; preds = %786, %749
  call void @llvm.lifetime.end.p0(i64 32, ptr %80) #7
  br label %788

788:                                              ; preds = %787, %745
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %78) #7
  br label %789

789:                                              ; preds = %788, %741
  call void @llvm.lifetime.end.p0(i64 32, ptr %78) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %77) #7
  br label %790

790:                                              ; preds = %789, %737
  call void @llvm.lifetime.end.p0(i64 32, ptr %77) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #7
  br label %795

791:                                              ; preds = %699
  invoke void @_ZN11spirv_cross12CompilerGLSL14end_scope_declEv(ptr noundef nonnull align 8 dereferenceable(9848) %163)
          to label %792 unwind label %685

792:                                              ; preds = %791
  invoke void @_ZN11spirv_cross12CompilerGLSL19statement_no_indentIJRA1_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %163, ptr noundef nonnull align 1 dereferenceable(1) @.str.35)
          to label %793 unwind label %685

793:                                              ; preds = %792
  %794 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %163, i32 0, i32 74
  store i8 0, ptr %794, align 2, !tbaa !76
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #7
  br label %896

795:                                              ; preds = %790, %689, %685
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #7
  br label %902

796:                                              ; preds = %624
  call void @llvm.lifetime.start.p0(i64 32, ptr %89) #7
  %797 = load ptr, ptr %63, align 8, !tbaa !5
  invoke void @_ZN11spirv_cross11CompilerMSL26get_argument_address_spaceB5cxx11ERKNS_12SPIRVariableE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %89, ptr noundef nonnull align 8 dereferenceable(12482) %163, ptr noundef nonnull align 8 dereferenceable(176) %797)
          to label %798 unwind label %832

798:                                              ; preds = %796
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #7
  %799 = load i32, ptr %64, align 4, !tbaa !73
  %800 = invoke noundef ptr @_ZN11spirv_cross11CompilerMSL11to_restrictEjb(ptr noundef nonnull align 8 dereferenceable(12482) %163, i32 noundef %799, i1 noundef zeroext true)
          to label %801 unwind label %836

801:                                              ; preds = %798
  store ptr %800, ptr %90, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %91) #7
  %802 = load ptr, ptr %63, align 8, !tbaa !5
  invoke void @_ZN11spirv_cross11CompilerMSL26get_argument_address_spaceB5cxx11ERKNS_12SPIRVariableE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %91, ptr noundef nonnull align 8 dereferenceable(12482) %163, ptr noundef nonnull align 8 dereferenceable(176) %802)
          to label %803 unwind label %840

803:                                              ; preds = %801
  call void @llvm.lifetime.start.p0(i64 32, ptr %92) #7
  %804 = load ptr, ptr %65, align 8, !tbaa !5
  %805 = load ptr, ptr %163, align 8, !tbaa !67
  %806 = getelementptr inbounds ptr, ptr %805, i64 19
  %807 = load ptr, ptr %806, align 8
  invoke void %807(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %92, ptr noundef nonnull align 8 dereferenceable(12482) %163, ptr noundef nonnull align 8 dereferenceable(336) %804, i32 noundef 0)
          to label %808 unwind label %844

808:                                              ; preds = %803
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #7
  %809 = load i32, ptr %64, align 4, !tbaa !73
  %810 = invoke noundef ptr @_ZN11spirv_cross11CompilerMSL11to_restrictEjb(ptr noundef nonnull align 8 dereferenceable(12482) %163, i32 noundef %809, i1 noundef zeroext false)
          to label %811 unwind label %848

811:                                              ; preds = %808
  store ptr %810, ptr %93, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %94) #7
  %812 = load ptr, ptr %63, align 8, !tbaa !5
  invoke void @_ZN11spirv_cross11CompilerMSL26get_argument_address_spaceB5cxx11ERKNS_12SPIRVariableE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %94, ptr noundef nonnull align 8 dereferenceable(12482) %163, ptr noundef nonnull align 8 dereferenceable(176) %812)
          to label %813 unwind label %852

813:                                              ; preds = %811
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #7
  %814 = load i32, ptr %64, align 4, !tbaa !73
  %815 = invoke noundef ptr @_ZN11spirv_cross11CompilerMSL11to_restrictEjb(ptr noundef nonnull align 8 dereferenceable(12482) %163, i32 noundef %814, i1 noundef zeroext false)
          to label %816 unwind label %856

816:                                              ; preds = %813
  store ptr %815, ptr %95, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %96) #7
  %817 = load i32, ptr %69, align 4, !tbaa !73
  %818 = load ptr, ptr %163, align 8, !tbaa !67
  %819 = getelementptr inbounds ptr, ptr %818, i64 6
  %820 = load ptr, ptr %819, align 8
  invoke void %820(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %96, ptr noundef nonnull align 8 dereferenceable(12482) %163, i32 noundef %817, i1 noundef zeroext true)
          to label %821 unwind label %860

821:                                              ; preds = %816
  call void @llvm.lifetime.start.p0(i64 32, ptr %97) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %98, ptr noundef nonnull align 8 dereferenceable(32) %66)
          to label %822 unwind label %864

822:                                              ; preds = %821
  call void @llvm.lifetime.start.p0(i64 1, ptr %100) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %100) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %99, ptr noundef @.str.67, ptr noundef nonnull align 1 dereferenceable(1) %100)
          to label %823 unwind label %868

823:                                              ; preds = %822
  invoke void @_ZN11spirv_cross11CompilerMSL17ensure_valid_nameENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %97, ptr noundef nonnull align 8 dereferenceable(12482) %163, ptr noundef %98, ptr noundef %99)
          to label %824 unwind label %872

824:                                              ; preds = %823
  call void @llvm.lifetime.start.p0(i64 32, ptr %101) #7
  %825 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %163, i32 0, i32 27
  %826 = load i32, ptr %825, align 4, !tbaa !224
  %827 = load ptr, ptr %163, align 8, !tbaa !67
  %828 = getelementptr inbounds ptr, ptr %827, i64 6
  %829 = load ptr, ptr %828, align 8
  invoke void %829(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %101, ptr noundef nonnull align 8 dereferenceable(12482) %163, i32 noundef %826, i1 noundef zeroext true)
          to label %830 unwind label %876

830:                                              ; preds = %824
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA8_KcPS8_RS7_RA6_S8_S7_RA2_S8_S7_RA3_S8_SB_RA4_S8_S7_SA_SB_SG_S7_SG_S7_SK_S7_SG_RjSK_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %163, ptr noundef nonnull align 8 dereferenceable(32) %89, ptr noundef nonnull align 1 dereferenceable(8) @.str.72, ptr noundef nonnull align 8 dereferenceable(8) %90, ptr noundef nonnull align 8 dereferenceable(32) %66, ptr noundef nonnull align 1 dereferenceable(6) @.str.73, ptr noundef nonnull align 8 dereferenceable(32) %91, ptr noundef nonnull align 1 dereferenceable(2) @.str.60, ptr noundef nonnull align 8 dereferenceable(32) %92, ptr noundef nonnull align 1 dereferenceable(3) @.str.61, ptr noundef nonnull align 8 dereferenceable(8) %93, ptr noundef nonnull align 1 dereferenceable(4) @.str.64, ptr noundef nonnull align 8 dereferenceable(32) %94, ptr noundef nonnull align 1 dereferenceable(8) @.str.65, ptr noundef nonnull align 8 dereferenceable(8) %95, ptr noundef nonnull align 1 dereferenceable(2) @.str.53, ptr noundef nonnull align 8 dereferenceable(32) %96, ptr noundef nonnull align 1 dereferenceable(2) @.str.66, ptr noundef nonnull align 8 dereferenceable(32) %97, ptr noundef nonnull align 1 dereferenceable(4) @.str.70, ptr noundef nonnull align 8 dereferenceable(32) %101, ptr noundef nonnull align 1 dereferenceable(2) @.str.68, ptr noundef nonnull align 4 dereferenceable(4) %70, ptr noundef nonnull align 1 dereferenceable(4) @.str.74)
          to label %831 unwind label %880

831:                                              ; preds = %830
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %101) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %101) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %97) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %99) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %100) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %100) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %98) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %97) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %96) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %96) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %94) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %94) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %92) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %91) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %91) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %89) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %89) #7
  br label %896

832:                                              ; preds = %796
  %833 = landingpad { ptr, i32 }
          cleanup
  %834 = extractvalue { ptr, i32 } %833, 0
  store ptr %834, ptr %13, align 8
  %835 = extractvalue { ptr, i32 } %833, 1
  store i32 %835, ptr %14, align 4
  br label %895

836:                                              ; preds = %798
  %837 = landingpad { ptr, i32 }
          cleanup
  %838 = extractvalue { ptr, i32 } %837, 0
  store ptr %838, ptr %13, align 8
  %839 = extractvalue { ptr, i32 } %837, 1
  store i32 %839, ptr %14, align 4
  br label %894

840:                                              ; preds = %801
  %841 = landingpad { ptr, i32 }
          cleanup
  %842 = extractvalue { ptr, i32 } %841, 0
  store ptr %842, ptr %13, align 8
  %843 = extractvalue { ptr, i32 } %841, 1
  store i32 %843, ptr %14, align 4
  br label %893

844:                                              ; preds = %803
  %845 = landingpad { ptr, i32 }
          cleanup
  %846 = extractvalue { ptr, i32 } %845, 0
  store ptr %846, ptr %13, align 8
  %847 = extractvalue { ptr, i32 } %845, 1
  store i32 %847, ptr %14, align 4
  br label %892

848:                                              ; preds = %808
  %849 = landingpad { ptr, i32 }
          cleanup
  %850 = extractvalue { ptr, i32 } %849, 0
  store ptr %850, ptr %13, align 8
  %851 = extractvalue { ptr, i32 } %849, 1
  store i32 %851, ptr %14, align 4
  br label %891

852:                                              ; preds = %811
  %853 = landingpad { ptr, i32 }
          cleanup
  %854 = extractvalue { ptr, i32 } %853, 0
  store ptr %854, ptr %13, align 8
  %855 = extractvalue { ptr, i32 } %853, 1
  store i32 %855, ptr %14, align 4
  br label %890

856:                                              ; preds = %813
  %857 = landingpad { ptr, i32 }
          cleanup
  %858 = extractvalue { ptr, i32 } %857, 0
  store ptr %858, ptr %13, align 8
  %859 = extractvalue { ptr, i32 } %857, 1
  store i32 %859, ptr %14, align 4
  br label %889

860:                                              ; preds = %816
  %861 = landingpad { ptr, i32 }
          cleanup
  %862 = extractvalue { ptr, i32 } %861, 0
  store ptr %862, ptr %13, align 8
  %863 = extractvalue { ptr, i32 } %861, 1
  store i32 %863, ptr %14, align 4
  br label %888

864:                                              ; preds = %821
  %865 = landingpad { ptr, i32 }
          cleanup
  %866 = extractvalue { ptr, i32 } %865, 0
  store ptr %866, ptr %13, align 8
  %867 = extractvalue { ptr, i32 } %865, 1
  store i32 %867, ptr %14, align 4
  br label %887

868:                                              ; preds = %822
  %869 = landingpad { ptr, i32 }
          cleanup
  %870 = extractvalue { ptr, i32 } %869, 0
  store ptr %870, ptr %13, align 8
  %871 = extractvalue { ptr, i32 } %869, 1
  store i32 %871, ptr %14, align 4
  br label %886

872:                                              ; preds = %823
  %873 = landingpad { ptr, i32 }
          cleanup
  %874 = extractvalue { ptr, i32 } %873, 0
  store ptr %874, ptr %13, align 8
  %875 = extractvalue { ptr, i32 } %873, 1
  store i32 %875, ptr %14, align 4
  br label %885

876:                                              ; preds = %824
  %877 = landingpad { ptr, i32 }
          cleanup
  %878 = extractvalue { ptr, i32 } %877, 0
  store ptr %878, ptr %13, align 8
  %879 = extractvalue { ptr, i32 } %877, 1
  store i32 %879, ptr %14, align 4
  br label %884

880:                                              ; preds = %830
  %881 = landingpad { ptr, i32 }
          cleanup
  %882 = extractvalue { ptr, i32 } %881, 0
  store ptr %882, ptr %13, align 8
  %883 = extractvalue { ptr, i32 } %881, 1
  store i32 %883, ptr %14, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %101) #7
  br label %884

884:                                              ; preds = %880, %876
  call void @llvm.lifetime.end.p0(i64 32, ptr %101) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %97) #7
  br label %885

885:                                              ; preds = %884, %872
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %99) #7
  br label %886

886:                                              ; preds = %885, %868
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %100) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %100) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %98) #7
  br label %887

887:                                              ; preds = %886, %864
  call void @llvm.lifetime.end.p0(i64 32, ptr %97) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %96) #7
  br label %888

888:                                              ; preds = %887, %860
  call void @llvm.lifetime.end.p0(i64 32, ptr %96) #7
  br label %889

889:                                              ; preds = %888, %856
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %94) #7
  br label %890

890:                                              ; preds = %889, %852
  call void @llvm.lifetime.end.p0(i64 32, ptr %94) #7
  br label %891

891:                                              ; preds = %890, %848
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #7
  br label %892

892:                                              ; preds = %891, %844
  call void @llvm.lifetime.end.p0(i64 32, ptr %92) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %91) #7
  br label %893

893:                                              ; preds = %892, %840
  call void @llvm.lifetime.end.p0(i64 32, ptr %91) #7
  br label %894

894:                                              ; preds = %893, %836
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %89) #7
  br label %895

895:                                              ; preds = %894, %832
  call void @llvm.lifetime.end.p0(i64 32, ptr %89) #7
  br label %902

896:                                              ; preds = %831, %793
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %66) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #7
  store i32 0, ptr %61, align 4
  br label %897

897:                                              ; preds = %896, %589
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #7
  %898 = load i32, ptr %61, align 4
  switch i32 %898, label %1402 [
    i32 0, label %899
    i32 8, label %900
  ]

899:                                              ; preds = %897
  br label %900

900:                                              ; preds = %899, %897
  %901 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIKN11spirv_cross14SetBindingPairES0_IjjEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %59) #7
  br label %579

902:                                              ; preds = %895, %795, %684, %657
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #7
  br label %903

903:                                              ; preds = %902, %653
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %66) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #7
  br label %1397

904:                                              ; preds = %581
  call void @llvm.lifetime.start.p0(i64 1, ptr %102) #7
  store i8 0, ptr %102, align 1, !tbaa !227
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #7
  %905 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %163, i32 0, i32 112
  store ptr %905, ptr %103, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #7
  %906 = load ptr, ptr %103, align 8, !tbaa !5
  %907 = call noundef ptr @_ZN11spirv_cross10VectorViewIPNS_12SPIRVariableEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %906) #7
  store ptr %907, ptr %104, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #7
  %908 = load ptr, ptr %103, align 8, !tbaa !5
  %909 = call noundef ptr @_ZN11spirv_cross10VectorViewIPNS_12SPIRVariableEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %908) #7
  store ptr %909, ptr %105, align 8, !tbaa !5
  br label %910

910:                                              ; preds = %1120, %904
  %911 = load ptr, ptr %104, align 8, !tbaa !5
  %912 = load ptr, ptr %105, align 8, !tbaa !5
  %913 = icmp ne ptr %911, %912
  br i1 %913, label %915, label %914

914:                                              ; preds = %910
  store i32 12, ptr %61, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #7
  br label %1124

915:                                              ; preds = %910
  call void @llvm.lifetime.start.p0(i64 8, ptr %106) #7
  %916 = load ptr, ptr %104, align 8, !tbaa !5
  %917 = load ptr, ptr %916, align 8, !tbaa !5
  store ptr %917, ptr %106, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #7
  %918 = load ptr, ptr %106, align 8, !tbaa !5
  store ptr %918, ptr %107, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %108) #7
  %919 = load ptr, ptr %107, align 8, !tbaa !5
  %920 = call noundef nonnull align 8 dereferenceable(336) ptr @_ZN11spirv_cross8Compiler22get_variable_data_typeERKNS_12SPIRVariableE(ptr noundef nonnull align 8 dereferenceable(3176) %163, ptr noundef nonnull align 8 dereferenceable(176) %919)
  store ptr %920, ptr %108, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %109) #7
  %921 = load ptr, ptr %107, align 8, !tbaa !5
  %922 = call noundef nonnull align 8 dereferenceable(336) ptr @_ZN11spirv_cross8Compiler25get_variable_element_typeERKNS_12SPIRVariableE(ptr noundef nonnull align 8 dereferenceable(3176) %163, ptr noundef nonnull align 8 dereferenceable(176) %921)
  store ptr %922, ptr %109, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %110) #7
  %923 = load ptr, ptr %107, align 8, !tbaa !5
  %924 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %923, i32 0, i32 1
  %925 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %924)
  %926 = load ptr, ptr %163, align 8, !tbaa !67
  %927 = getelementptr inbounds ptr, ptr %926, i64 6
  %928 = load ptr, ptr %927, align 8
  call void %928(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %110, ptr noundef nonnull align 8 dereferenceable(12482) %163, i32 noundef %925, i1 noundef zeroext true)
  %929 = load ptr, ptr %107, align 8, !tbaa !5
  %930 = invoke noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL25is_var_runtime_size_arrayERKNS_12SPIRVariableE(ptr noundef nonnull align 8 dereferenceable(12482) %163, ptr noundef nonnull align 8 dereferenceable(176) %929)
          to label %931 unwind label %940

931:                                              ; preds = %915
  br i1 %930, label %932, label %1050

932:                                              ; preds = %931
  %933 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %163, i32 0, i32 37
  %934 = getelementptr inbounds %"struct.spirv_cross::CompilerMSL::Options", ptr %933, i32 0, i32 34
  %935 = load i32, ptr %934, align 4, !tbaa !228
  %936 = icmp slt i32 %935, 1
  br i1 %936, label %937, label %948

937:                                              ; preds = %932
  %938 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %938, ptr noundef @.str.75)
          to label %939 unwind label %944

939:                                              ; preds = %937
  invoke void @__cxa_throw(ptr %938, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #8
          to label %1402 unwind label %940

940:                                              ; preds = %1073, %939, %915
  %941 = landingpad { ptr, i32 }
          cleanup
  %942 = extractvalue { ptr, i32 } %941, 0
  store ptr %942, ptr %13, align 8
  %943 = extractvalue { ptr, i32 } %941, 1
  store i32 %943, ptr %14, align 4
  br label %1123

944:                                              ; preds = %937
  %945 = landingpad { ptr, i32 }
          cleanup
  %946 = extractvalue { ptr, i32 } %945, 0
  store ptr %946, ptr %13, align 8
  %947 = extractvalue { ptr, i32 } %945, 1
  store i32 %947, ptr %14, align 4
  call void @__cxa_free_exception(ptr %938) #7
  br label %1123

948:                                              ; preds = %932
  call void @llvm.lifetime.start.p0(i64 32, ptr %111) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %111) #7
  %949 = load ptr, ptr %107, align 8, !tbaa !5
  %950 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %949, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %112, ptr align 8 %950, i64 4, i1 false), !tbaa.struct !74
  %951 = getelementptr inbounds %"class.spirv_cross::TypedID.413", ptr %112, i32 0, i32 0
  %952 = load i32, ptr %951, align 4
  %953 = invoke noundef i32 @_ZNK11spirv_cross8Compiler14get_decorationENS_7TypedIDILNS_5TypesE0EEEN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %163, i32 %952, i32 noundef 34)
          to label %954 unwind label %968

954:                                              ; preds = %948
  %955 = invoke noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL33descriptor_set_is_argument_bufferEj(ptr noundef nonnull align 8 dereferenceable(12482) %163, i32 noundef %953)
          to label %956 unwind label %968

956:                                              ; preds = %954
  br i1 %955, label %957, label %972

957:                                              ; preds = %956
  %958 = getelementptr inbounds %"class.spirv_cross::Compiler", ptr %163, i32 0, i32 1
  %959 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %958, i32 0, i32 3
  %960 = load ptr, ptr %107, align 8, !tbaa !5
  %961 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %960, i32 0, i32 1
  %962 = invoke noundef nonnull align 8 dereferenceable(488) ptr @_ZNSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE0EEENS0_4MetaESt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S4_EEEixERSA_(ptr noundef nonnull align 8 dereferenceable(56) %959, ptr noundef nonnull align 4 dereferenceable(4) %961)
          to label %963 unwind label %968

963:                                              ; preds = %957
  %964 = getelementptr inbounds %"struct.spirv_cross::Meta", ptr %962, i32 0, i32 0
  %965 = getelementptr inbounds %"struct.spirv_cross::Meta::Decoration", ptr %964, i32 0, i32 1
  %966 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %111, ptr noundef nonnull align 8 dereferenceable(32) %965)
          to label %967 unwind label %968

967:                                              ; preds = %963
  br label %979

968:                                              ; preds = %1013, %963, %957, %954, %948
  %969 = landingpad { ptr, i32 }
          cleanup
  %970 = extractvalue { ptr, i32 } %969, 0
  store ptr %970, ptr %13, align 8
  %971 = extractvalue { ptr, i32 } %969, 1
  store i32 %971, ptr %14, align 4
  br label %1049

972:                                              ; preds = %956
  call void @llvm.lifetime.start.p0(i64 32, ptr %113) #7
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %113, ptr noundef nonnull align 8 dereferenceable(32) %110, ptr noundef @.str.76)
          to label %973 unwind label %975

973:                                              ; preds = %972
  %974 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %111, ptr noundef nonnull align 8 dereferenceable(32) %113) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %113) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %113) #7
  br label %979

975:                                              ; preds = %972
  %976 = landingpad { ptr, i32 }
          cleanup
  %977 = extractvalue { ptr, i32 } %976, 0
  store ptr %977, ptr %13, align 8
  %978 = extractvalue { ptr, i32 } %976, 1
  store i32 %978, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %113) #7
  br label %1049

979:                                              ; preds = %973, %967
  %980 = load ptr, ptr %108, align 8, !tbaa !5
  %981 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %980, i32 0, i32 2
  %982 = load i32, ptr %981, align 8, !tbaa !25
  switch i32 %982, label %1047 [
    i32 16, label %983
    i32 18, label %983
    i32 19, label %983
    i32 17, label %1003
    i32 15, label %1024
  ]

983:                                              ; preds = %979, %979, %979
  call void @llvm.lifetime.start.p0(i64 32, ptr %114) #7
  %984 = load ptr, ptr %109, align 8, !tbaa !5
  %985 = load ptr, ptr %107, align 8, !tbaa !5
  %986 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %985, i32 0, i32 1
  %987 = invoke noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %986)
          to label %988 unwind label %994

988:                                              ; preds = %983
  %989 = load ptr, ptr %163, align 8, !tbaa !67
  %990 = getelementptr inbounds ptr, ptr %989, i64 19
  %991 = load ptr, ptr %990, align 8
  invoke void %991(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %114, ptr noundef nonnull align 8 dereferenceable(12482) %163, ptr noundef nonnull align 8 dereferenceable(336) %984, i32 noundef %987)
          to label %992 unwind label %994

992:                                              ; preds = %988
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA20_KcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA3_S2_RKSA_SC_RSA_SC_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %163, ptr noundef nonnull align 1 dereferenceable(20) @.str.77, ptr noundef nonnull align 8 dereferenceable(32) %114, ptr noundef nonnull align 1 dereferenceable(3) @.str.78, ptr noundef nonnull align 8 dereferenceable(32) %110, ptr noundef nonnull align 1 dereferenceable(3) @.str.79, ptr noundef nonnull align 8 dereferenceable(32) %111, ptr noundef nonnull align 1 dereferenceable(3) @.str.80)
          to label %993 unwind label %998

993:                                              ; preds = %992
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %114) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %114) #7
  br label %1048

994:                                              ; preds = %988, %983
  %995 = landingpad { ptr, i32 }
          cleanup
  %996 = extractvalue { ptr, i32 } %995, 0
  store ptr %996, ptr %13, align 8
  %997 = extractvalue { ptr, i32 } %995, 1
  store i32 %997, ptr %14, align 4
  br label %1002

998:                                              ; preds = %992
  %999 = landingpad { ptr, i32 }
          cleanup
  %1000 = extractvalue { ptr, i32 } %999, 0
  store ptr %1000, ptr %13, align 8
  %1001 = extractvalue { ptr, i32 } %999, 1
  store i32 %1001, ptr %14, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %114) #7
  br label %1002

1002:                                             ; preds = %998, %994
  call void @llvm.lifetime.end.p0(i64 32, ptr %114) #7
  br label %1049

1003:                                             ; preds = %979
  call void @llvm.lifetime.start.p0(i64 32, ptr %115) #7
  %1004 = load ptr, ptr %109, align 8, !tbaa !5
  %1005 = load ptr, ptr %107, align 8, !tbaa !5
  %1006 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %1005, i32 0, i32 1
  %1007 = invoke noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %1006)
          to label %1008 unwind label %1015

1008:                                             ; preds = %1003
  %1009 = load ptr, ptr %163, align 8, !tbaa !67
  %1010 = getelementptr inbounds ptr, ptr %1009, i64 19
  %1011 = load ptr, ptr %1010, align 8
  invoke void %1011(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %115, ptr noundef nonnull align 8 dereferenceable(12482) %163, ptr noundef nonnull align 8 dereferenceable(336) %1004, i32 noundef %1007)
          to label %1012 unwind label %1015

1012:                                             ; preds = %1008
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA20_KcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA3_S2_RKSA_SC_RSA_SC_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %163, ptr noundef nonnull align 1 dereferenceable(20) @.str.77, ptr noundef nonnull align 8 dereferenceable(32) %115, ptr noundef nonnull align 1 dereferenceable(3) @.str.78, ptr noundef nonnull align 8 dereferenceable(32) %110, ptr noundef nonnull align 1 dereferenceable(3) @.str.79, ptr noundef nonnull align 8 dereferenceable(32) %111, ptr noundef nonnull align 1 dereferenceable(3) @.str.80)
          to label %1013 unwind label %1019

1013:                                             ; preds = %1012
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %115) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %115) #7
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA29_KcRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA8_S2_SC_RA9_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %163, ptr noundef nonnull align 1 dereferenceable(29) @.str.81, ptr noundef nonnull align 8 dereferenceable(32) %110, ptr noundef nonnull align 1 dereferenceable(8) @.str.82, ptr noundef nonnull align 8 dereferenceable(32) %110, ptr noundef nonnull align 1 dereferenceable(9) @.str.83)
          to label %1014 unwind label %968

1014:                                             ; preds = %1013
  br label %1048

1015:                                             ; preds = %1008, %1003
  %1016 = landingpad { ptr, i32 }
          cleanup
  %1017 = extractvalue { ptr, i32 } %1016, 0
  store ptr %1017, ptr %13, align 8
  %1018 = extractvalue { ptr, i32 } %1016, 1
  store i32 %1018, ptr %14, align 4
  br label %1023

1019:                                             ; preds = %1012
  %1020 = landingpad { ptr, i32 }
          cleanup
  %1021 = extractvalue { ptr, i32 } %1020, 0
  store ptr %1021, ptr %13, align 8
  %1022 = extractvalue { ptr, i32 } %1020, 1
  store i32 %1022, ptr %14, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %115) #7
  br label %1023

1023:                                             ; preds = %1019, %1015
  call void @llvm.lifetime.end.p0(i64 32, ptr %115) #7
  br label %1049

1024:                                             ; preds = %979
  call void @llvm.lifetime.start.p0(i64 32, ptr %116) #7
  %1025 = load ptr, ptr %107, align 8, !tbaa !5
  invoke void @_ZN11spirv_cross11CompilerMSL26get_argument_address_spaceB5cxx11ERKNS_12SPIRVariableE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %116, ptr noundef nonnull align 8 dereferenceable(12482) %163, ptr noundef nonnull align 8 dereferenceable(176) %1025)
          to label %1026 unwind label %1033

1026:                                             ; preds = %1024
  call void @llvm.lifetime.start.p0(i64 32, ptr %117) #7
  %1027 = load ptr, ptr %109, align 8, !tbaa !5
  %1028 = load ptr, ptr %163, align 8, !tbaa !67
  %1029 = getelementptr inbounds ptr, ptr %1028, i64 19
  %1030 = load ptr, ptr %1029, align 8
  invoke void %1030(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %117, ptr noundef nonnull align 8 dereferenceable(12482) %163, ptr noundef nonnull align 8 dereferenceable(336) %1027, i32 noundef 0)
          to label %1031 unwind label %1037

1031:                                             ; preds = %1026
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA20_KcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_S2_SA_RA4_S2_RKSA_RA3_S2_RSA_SI_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %163, ptr noundef nonnull align 1 dereferenceable(20) @.str.77, ptr noundef nonnull align 8 dereferenceable(32) %116, ptr noundef nonnull align 1 dereferenceable(2) @.str.60, ptr noundef nonnull align 8 dereferenceable(32) %117, ptr noundef nonnull align 1 dereferenceable(4) @.str.84, ptr noundef nonnull align 8 dereferenceable(32) %110, ptr noundef nonnull align 1 dereferenceable(3) @.str.79, ptr noundef nonnull align 8 dereferenceable(32) %111, ptr noundef nonnull align 1 dereferenceable(3) @.str.80)
          to label %1032 unwind label %1041

1032:                                             ; preds = %1031
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %117) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %117) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %116) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %116) #7
  br label %1048

1033:                                             ; preds = %1024
  %1034 = landingpad { ptr, i32 }
          cleanup
  %1035 = extractvalue { ptr, i32 } %1034, 0
  store ptr %1035, ptr %13, align 8
  %1036 = extractvalue { ptr, i32 } %1034, 1
  store i32 %1036, ptr %14, align 4
  br label %1046

1037:                                             ; preds = %1026
  %1038 = landingpad { ptr, i32 }
          cleanup
  %1039 = extractvalue { ptr, i32 } %1038, 0
  store ptr %1039, ptr %13, align 8
  %1040 = extractvalue { ptr, i32 } %1038, 1
  store i32 %1040, ptr %14, align 4
  br label %1045

1041:                                             ; preds = %1031
  %1042 = landingpad { ptr, i32 }
          cleanup
  %1043 = extractvalue { ptr, i32 } %1042, 0
  store ptr %1043, ptr %13, align 8
  %1044 = extractvalue { ptr, i32 } %1042, 1
  store i32 %1044, ptr %14, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %117) #7
  br label %1045

1045:                                             ; preds = %1041, %1037
  call void @llvm.lifetime.end.p0(i64 32, ptr %117) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %116) #7
  br label %1046

1046:                                             ; preds = %1045, %1033
  call void @llvm.lifetime.end.p0(i64 32, ptr %116) #7
  br label %1049

1047:                                             ; preds = %979
  br label %1048

1048:                                             ; preds = %1047, %1032, %1014, %993
  store i8 1, ptr %102, align 1, !tbaa !227
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %111) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %111) #7
  br label %1119

1049:                                             ; preds = %1046, %1023, %1002, %975, %968
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %111) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %111) #7
  br label %1123

1050:                                             ; preds = %931
  %1051 = load ptr, ptr %108, align 8, !tbaa !5
  %1052 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %1051, i32 0, i32 6
  %1053 = call noundef zeroext i1 @_ZNK11spirv_cross10VectorViewIjE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %1052) #7
  br i1 %1053, label %1118, label %1054

1054:                                             ; preds = %1050
  %1055 = load ptr, ptr %108, align 8, !tbaa !5
  %1056 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %1055, i32 0, i32 2
  %1057 = load i32, ptr %1056, align 8, !tbaa !25
  %1058 = icmp eq i32 %1057, 15
  br i1 %1058, label %1059, label %1118

1059:                                             ; preds = %1054
  call void @llvm.lifetime.start.p0(i64 32, ptr %118) #7
  %1060 = load ptr, ptr %107, align 8, !tbaa !5
  invoke void @_ZN11spirv_cross11CompilerMSL26get_argument_address_spaceB5cxx11ERKNS_12SPIRVariableE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %118, ptr noundef nonnull align 8 dereferenceable(12482) %163, ptr noundef nonnull align 8 dereferenceable(176) %1060)
          to label %1061 unwind label %1087

1061:                                             ; preds = %1059
  call void @llvm.lifetime.start.p0(i64 32, ptr %119) #7
  %1062 = load ptr, ptr %109, align 8, !tbaa !5
  %1063 = load ptr, ptr %163, align 8, !tbaa !67
  %1064 = getelementptr inbounds ptr, ptr %1063, i64 19
  %1065 = load ptr, ptr %1064, align 8
  invoke void %1065(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %119, ptr noundef nonnull align 8 dereferenceable(12482) %163, ptr noundef nonnull align 8 dereferenceable(336) %1062, i32 noundef 0)
          to label %1066 unwind label %1091

1066:                                             ; preds = %1061
  call void @llvm.lifetime.start.p0(i64 8, ptr %120) #7
  %1067 = load ptr, ptr %107, align 8, !tbaa !5
  %1068 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %1067, i32 0, i32 1
  %1069 = invoke noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %1068)
          to label %1070 unwind label %1095

1070:                                             ; preds = %1066
  %1071 = invoke noundef ptr @_ZN11spirv_cross11CompilerMSL11to_restrictEjb(ptr noundef nonnull align 8 dereferenceable(12482) %163, i32 noundef %1069, i1 noundef zeroext true)
          to label %1072 unwind label %1095

1072:                                             ; preds = %1070
  store ptr %1071, ptr %120, align 8, !tbaa !5
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_KcS7_RA3_S8_PS8_RKS7_RA5_S8_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %163, ptr noundef nonnull align 8 dereferenceable(32) %118, ptr noundef nonnull align 1 dereferenceable(2) @.str.60, ptr noundef nonnull align 8 dereferenceable(32) %119, ptr noundef nonnull align 1 dereferenceable(3) @.str.61, ptr noundef nonnull align 8 dereferenceable(8) %120, ptr noundef nonnull align 8 dereferenceable(32) %110, ptr noundef nonnull align 1 dereferenceable(5) @.str.85)
          to label %1073 unwind label %1095

1073:                                             ; preds = %1072
  call void @llvm.lifetime.end.p0(i64 8, ptr %120) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %119) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %119) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %118) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %118) #7
  invoke void @_ZN11spirv_cross12CompilerGLSL11begin_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848) %163)
          to label %1074 unwind label %940

1074:                                             ; preds = %1073
  call void @llvm.lifetime.start.p0(i64 4, ptr %121) #7
  %1075 = load ptr, ptr %108, align 8, !tbaa !5
  %1076 = load ptr, ptr %107, align 8, !tbaa !5
  %1077 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %1076, i32 0, i32 1
  %1078 = invoke noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %1077)
          to label %1079 unwind label %1101

1079:                                             ; preds = %1074
  %1080 = invoke noundef i32 @_ZNK11spirv_cross11CompilerMSL23get_resource_array_sizeERKNS_8SPIRTypeEj(ptr noundef nonnull align 8 dereferenceable(12482) %163, ptr noundef nonnull align 8 dereferenceable(336) %1075, i32 noundef %1078)
          to label %1081 unwind label %1101

1081:                                             ; preds = %1079
  store i32 %1080, ptr %121, align 4, !tbaa !73
  call void @llvm.lifetime.start.p0(i64 4, ptr %122) #7
  store i32 0, ptr %122, align 4, !tbaa !73
  br label %1082

1082:                                             ; preds = %1107, %1081
  %1083 = load i32, ptr %122, align 4, !tbaa !73
  %1084 = load i32, ptr %121, align 4, !tbaa !73
  %1085 = icmp ult i32 %1083, %1084
  br i1 %1085, label %1105, label %1086

1086:                                             ; preds = %1082
  store i32 15, ptr %61, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %122) #7
  br label %1114

1087:                                             ; preds = %1059
  %1088 = landingpad { ptr, i32 }
          cleanup
  %1089 = extractvalue { ptr, i32 } %1088, 0
  store ptr %1089, ptr %13, align 8
  %1090 = extractvalue { ptr, i32 } %1088, 1
  store i32 %1090, ptr %14, align 4
  br label %1100

1091:                                             ; preds = %1061
  %1092 = landingpad { ptr, i32 }
          cleanup
  %1093 = extractvalue { ptr, i32 } %1092, 0
  store ptr %1093, ptr %13, align 8
  %1094 = extractvalue { ptr, i32 } %1092, 1
  store i32 %1094, ptr %14, align 4
  br label %1099

1095:                                             ; preds = %1072, %1070, %1066
  %1096 = landingpad { ptr, i32 }
          cleanup
  %1097 = extractvalue { ptr, i32 } %1096, 0
  store ptr %1097, ptr %13, align 8
  %1098 = extractvalue { ptr, i32 } %1096, 1
  store i32 %1098, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %120) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %119) #7
  br label %1099

1099:                                             ; preds = %1095, %1091
  call void @llvm.lifetime.end.p0(i64 32, ptr %119) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %118) #7
  br label %1100

1100:                                             ; preds = %1099, %1087
  call void @llvm.lifetime.end.p0(i64 32, ptr %118) #7
  br label %1123

1101:                                             ; preds = %1115, %1114, %1079, %1074
  %1102 = landingpad { ptr, i32 }
          cleanup
  %1103 = extractvalue { ptr, i32 } %1102, 0
  store ptr %1103, ptr %13, align 8
  %1104 = extractvalue { ptr, i32 } %1102, 1
  store i32 %1104, ptr %14, align 4
  br label %1117

1105:                                             ; preds = %1082
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_KcRjSC_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %163, ptr noundef nonnull align 8 dereferenceable(32) %110, ptr noundef nonnull align 1 dereferenceable(2) @.str.76, ptr noundef nonnull align 4 dereferenceable(4) %122, ptr noundef nonnull align 1 dereferenceable(2) @.str.86)
          to label %1106 unwind label %1110

1106:                                             ; preds = %1105
  br label %1107

1107:                                             ; preds = %1106
  %1108 = load i32, ptr %122, align 4, !tbaa !73
  %1109 = add i32 %1108, 1
  store i32 %1109, ptr %122, align 4, !tbaa !73
  br label %1082, !llvm.loop !229

1110:                                             ; preds = %1105
  %1111 = landingpad { ptr, i32 }
          cleanup
  %1112 = extractvalue { ptr, i32 } %1111, 0
  store ptr %1112, ptr %13, align 8
  %1113 = extractvalue { ptr, i32 } %1111, 1
  store i32 %1113, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %122) #7
  br label %1117

1114:                                             ; preds = %1086
  invoke void @_ZN11spirv_cross12CompilerGLSL14end_scope_declEv(ptr noundef nonnull align 8 dereferenceable(9848) %163)
          to label %1115 unwind label %1101

1115:                                             ; preds = %1114
  invoke void @_ZN11spirv_cross12CompilerGLSL19statement_no_indentIJRA1_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %163, ptr noundef nonnull align 1 dereferenceable(1) @.str.35)
          to label %1116 unwind label %1101

1116:                                             ; preds = %1115
  call void @llvm.lifetime.end.p0(i64 4, ptr %121) #7
  br label %1118

1117:                                             ; preds = %1110, %1101
  call void @llvm.lifetime.end.p0(i64 4, ptr %121) #7
  br label %1123

1118:                                             ; preds = %1116, %1054, %1050
  br label %1119

1119:                                             ; preds = %1118, %1048
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %110) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %110) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #7
  br label %1120

1120:                                             ; preds = %1119
  %1121 = load ptr, ptr %104, align 8, !tbaa !5
  %1122 = getelementptr inbounds ptr, ptr %1121, i32 1
  store ptr %1122, ptr %104, align 8, !tbaa !5
  br label %910

1123:                                             ; preds = %1117, %1100, %1049, %944, %940
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %110) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %110) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #7
  br label %1396

1124:                                             ; preds = %914
  %1125 = load i8, ptr %102, align 1, !tbaa !227, !range !59, !noundef !60
  %1126 = trunc i8 %1125 to i1
  br i1 %1126, label %1127, label %1128

1127:                                             ; preds = %1124
  call void @_ZN11spirv_cross12CompilerGLSL19statement_no_indentIJRA1_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %163, ptr noundef nonnull align 1 dereferenceable(1) @.str.35)
  br label %1128

1128:                                             ; preds = %1127, %1124
  call void @llvm.lifetime.start.p0(i64 8, ptr %123) #7
  %1129 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %163, i32 0, i32 108
  store ptr %1129, ptr %123, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %124) #7
  %1130 = load ptr, ptr %123, align 8, !tbaa !5
  %1131 = call noundef ptr @_ZN11spirv_cross10VectorViewIjE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %1130) #7
  store ptr %1131, ptr %124, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %125) #7
  %1132 = load ptr, ptr %123, align 8, !tbaa !5
  %1133 = call noundef ptr @_ZN11spirv_cross10VectorViewIjE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %1132) #7
  store ptr %1133, ptr %125, align 8, !tbaa !5
  br label %1134

1134:                                             ; preds = %1178, %1128
  %1135 = load ptr, ptr %124, align 8, !tbaa !5
  %1136 = load ptr, ptr %125, align 8, !tbaa !5
  %1137 = icmp ne ptr %1135, %1136
  br i1 %1137, label %1139, label %1138

1138:                                             ; preds = %1134
  store i32 18, ptr %61, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %125) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %124) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %123) #7
  br label %1215

1139:                                             ; preds = %1134
  call void @llvm.lifetime.start.p0(i64 8, ptr %126) #7
  %1140 = load ptr, ptr %124, align 8, !tbaa !5
  store ptr %1140, ptr %126, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %127) #7
  %1141 = load ptr, ptr %126, align 8, !tbaa !5
  %1142 = load i32, ptr %1141, align 4, !tbaa !73
  %1143 = call noundef nonnull align 8 dereferenceable(176) ptr @_ZN11spirv_cross8Compiler3getINS_12SPIRVariableEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %163, i32 noundef %1142)
  store ptr %1143, ptr %127, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %128) #7
  %1144 = load ptr, ptr %127, align 8, !tbaa !5
  %1145 = call noundef nonnull align 8 dereferenceable(336) ptr @_ZN11spirv_cross8Compiler22get_variable_data_typeERKNS_12SPIRVariableE(ptr noundef nonnull align 8 dereferenceable(3176) %163, ptr noundef nonnull align 8 dereferenceable(176) %1144)
  store ptr %1145, ptr %128, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %129) #7
  %1146 = load ptr, ptr %127, align 8, !tbaa !5
  call void @_ZN11spirv_cross11CompilerMSL26get_argument_address_spaceB5cxx11ERKNS_12SPIRVariableE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %129, ptr noundef nonnull align 8 dereferenceable(12482) %163, ptr noundef nonnull align 8 dereferenceable(176) %1146)
  call void @llvm.lifetime.start.p0(i64 32, ptr %130) #7
  %1147 = load ptr, ptr %126, align 8, !tbaa !5
  %1148 = load i32, ptr %1147, align 4, !tbaa !73
  %1149 = load ptr, ptr %163, align 8, !tbaa !67
  %1150 = getelementptr inbounds ptr, ptr %1149, i64 6
  %1151 = load ptr, ptr %1150, align 8
  invoke void %1151(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %130, ptr noundef nonnull align 8 dereferenceable(12482) %163, i32 noundef %1148, i1 noundef zeroext true)
          to label %1152 unwind label %1181

1152:                                             ; preds = %1139
  call void @llvm.lifetime.start.p0(i64 4, ptr %131) #7
  %1153 = load ptr, ptr %126, align 8, !tbaa !5
  %1154 = load i32, ptr %1153, align 4, !tbaa !73
  invoke void @_ZN11spirv_cross7TypedIDILNS_5TypesE0EEC2Ej(ptr noundef nonnull align 4 dereferenceable(4) %132, i32 noundef %1154)
          to label %1155 unwind label %1185

1155:                                             ; preds = %1152
  %1156 = getelementptr inbounds %"class.spirv_cross::TypedID.413", ptr %132, i32 0, i32 0
  %1157 = load i32, ptr %1156, align 4
  %1158 = invoke noundef i32 @_ZNK11spirv_cross8Compiler14get_decorationENS_7TypedIDILNS_5TypesE0EEEN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %163, i32 %1157, i32 noundef 34)
          to label %1159 unwind label %1185

1159:                                             ; preds = %1155
  store i32 %1158, ptr %131, align 4, !tbaa !73
  call void @llvm.lifetime.start.p0(i64 4, ptr %133) #7
  %1160 = load ptr, ptr %126, align 8, !tbaa !5
  %1161 = load i32, ptr %1160, align 4, !tbaa !73
  invoke void @_ZN11spirv_cross7TypedIDILNS_5TypesE0EEC2Ej(ptr noundef nonnull align 4 dereferenceable(4) %134, i32 noundef %1161)
          to label %1162 unwind label %1189

1162:                                             ; preds = %1159
  %1163 = getelementptr inbounds %"class.spirv_cross::TypedID.413", ptr %134, i32 0, i32 0
  %1164 = load i32, ptr %1163, align 4
  %1165 = invoke noundef i32 @_ZNK11spirv_cross8Compiler14get_decorationENS_7TypedIDILNS_5TypesE0EEEN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %163, i32 %1164, i32 noundef 33)
          to label %1166 unwind label %1189

1166:                                             ; preds = %1162
  store i32 %1165, ptr %133, align 4, !tbaa !73
  call void @llvm.lifetime.start.p0(i64 32, ptr %135) #7
  invoke void @_ZN11spirv_cross4joinIJRA18_KcRjRA8_S1_S4_EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %135, ptr noundef nonnull align 1 dereferenceable(18) @.str.87, ptr noundef nonnull align 4 dereferenceable(4) %131, ptr noundef nonnull align 1 dereferenceable(8) @.str.88, ptr noundef nonnull align 4 dereferenceable(4) %133)
          to label %1167 unwind label %1193

1167:                                             ; preds = %1166
  call void @llvm.lifetime.start.p0(i64 8, ptr %136) #7
  %1168 = load ptr, ptr %126, align 8, !tbaa !5
  %1169 = load i32, ptr %1168, align 4, !tbaa !73
  %1170 = invoke noundef ptr @_ZN11spirv_cross11CompilerMSL11to_restrictEjb(ptr noundef nonnull align 8 dereferenceable(12482) %163, i32 noundef %1169, i1 noundef zeroext true)
          to label %1171 unwind label %1197

1171:                                             ; preds = %1167
  store ptr %1170, ptr %136, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %137) #7
  %1172 = load ptr, ptr %128, align 8, !tbaa !5
  %1173 = load ptr, ptr %163, align 8, !tbaa !67
  %1174 = getelementptr inbounds ptr, ptr %1173, i64 19
  %1175 = load ptr, ptr %1174, align 8
  invoke void %1175(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %137, ptr noundef nonnull align 8 dereferenceable(12482) %163, ptr noundef nonnull align 8 dereferenceable(336) %1172, i32 noundef 0)
          to label %1176 unwind label %1201

1176:                                             ; preds = %1171
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA8_KcPS9_S8_RA6_S9_S8_RA2_S9_S7_RA3_S9_S8_SG_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %163, ptr noundef nonnull align 8 dereferenceable(32) %129, ptr noundef nonnull align 1 dereferenceable(8) @.str.72, ptr noundef nonnull align 8 dereferenceable(8) %136, ptr noundef nonnull align 8 dereferenceable(32) %130, ptr noundef nonnull align 1 dereferenceable(6) @.str.73, ptr noundef nonnull align 8 dereferenceable(32) %129, ptr noundef nonnull align 1 dereferenceable(2) @.str.60, ptr noundef nonnull align 8 dereferenceable(32) %137, ptr noundef nonnull align 1 dereferenceable(3) @.str.89, ptr noundef nonnull align 8 dereferenceable(32) %135, ptr noundef nonnull align 1 dereferenceable(2) @.str.57)
          to label %1177 unwind label %1205

1177:                                             ; preds = %1176
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %137) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %137) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %136) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %135) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %135) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %133) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %131) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %130) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %130) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %129) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %129) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %127) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %126) #7
  br label %1178

1178:                                             ; preds = %1177
  %1179 = load ptr, ptr %124, align 8, !tbaa !5
  %1180 = getelementptr inbounds i32, ptr %1179, i32 1
  store ptr %1180, ptr %124, align 8, !tbaa !5
  br label %1134

1181:                                             ; preds = %1139
  %1182 = landingpad { ptr, i32 }
          cleanup
  %1183 = extractvalue { ptr, i32 } %1182, 0
  store ptr %1183, ptr %13, align 8
  %1184 = extractvalue { ptr, i32 } %1182, 1
  store i32 %1184, ptr %14, align 4
  br label %1214

1185:                                             ; preds = %1155, %1152
  %1186 = landingpad { ptr, i32 }
          cleanup
  %1187 = extractvalue { ptr, i32 } %1186, 0
  store ptr %1187, ptr %13, align 8
  %1188 = extractvalue { ptr, i32 } %1186, 1
  store i32 %1188, ptr %14, align 4
  br label %1213

1189:                                             ; preds = %1162, %1159
  %1190 = landingpad { ptr, i32 }
          cleanup
  %1191 = extractvalue { ptr, i32 } %1190, 0
  store ptr %1191, ptr %13, align 8
  %1192 = extractvalue { ptr, i32 } %1190, 1
  store i32 %1192, ptr %14, align 4
  br label %1212

1193:                                             ; preds = %1166
  %1194 = landingpad { ptr, i32 }
          cleanup
  %1195 = extractvalue { ptr, i32 } %1194, 0
  store ptr %1195, ptr %13, align 8
  %1196 = extractvalue { ptr, i32 } %1194, 1
  store i32 %1196, ptr %14, align 4
  br label %1211

1197:                                             ; preds = %1167
  %1198 = landingpad { ptr, i32 }
          cleanup
  %1199 = extractvalue { ptr, i32 } %1198, 0
  store ptr %1199, ptr %13, align 8
  %1200 = extractvalue { ptr, i32 } %1198, 1
  store i32 %1200, ptr %14, align 4
  br label %1210

1201:                                             ; preds = %1171
  %1202 = landingpad { ptr, i32 }
          cleanup
  %1203 = extractvalue { ptr, i32 } %1202, 0
  store ptr %1203, ptr %13, align 8
  %1204 = extractvalue { ptr, i32 } %1202, 1
  store i32 %1204, ptr %14, align 4
  br label %1209

1205:                                             ; preds = %1176
  %1206 = landingpad { ptr, i32 }
          cleanup
  %1207 = extractvalue { ptr, i32 } %1206, 0
  store ptr %1207, ptr %13, align 8
  %1208 = extractvalue { ptr, i32 } %1206, 1
  store i32 %1208, ptr %14, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %137) #7
  br label %1209

1209:                                             ; preds = %1205, %1201
  call void @llvm.lifetime.end.p0(i64 32, ptr %137) #7
  br label %1210

1210:                                             ; preds = %1209, %1197
  call void @llvm.lifetime.end.p0(i64 8, ptr %136) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %135) #7
  br label %1211

1211:                                             ; preds = %1210, %1193
  call void @llvm.lifetime.end.p0(i64 32, ptr %135) #7
  br label %1212

1212:                                             ; preds = %1211, %1189
  call void @llvm.lifetime.end.p0(i64 4, ptr %133) #7
  br label %1213

1213:                                             ; preds = %1212, %1185
  call void @llvm.lifetime.end.p0(i64 4, ptr %131) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %130) #7
  br label %1214

1214:                                             ; preds = %1213, %1181
  call void @llvm.lifetime.end.p0(i64 32, ptr %130) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %129) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %129) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %127) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %126) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %125) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %124) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %123) #7
  br label %1396

1215:                                             ; preds = %1138
  %1216 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %163, i32 0, i32 108
  call void @_ZN11spirv_cross11SmallVectorIjLm8EE5clearEv(ptr noundef nonnull align 8 dereferenceable(56) %1216) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %138) #7
  %1217 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %163, i32 0, i32 107
  store ptr %1217, ptr %138, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %139) #7
  %1218 = load ptr, ptr %138, align 8, !tbaa !5
  %1219 = call noundef ptr @_ZN11spirv_cross10VectorViewISt4pairIjjEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %1218) #7
  store ptr %1219, ptr %139, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %140) #7
  %1220 = load ptr, ptr %138, align 8, !tbaa !5
  %1221 = call noundef ptr @_ZN11spirv_cross10VectorViewISt4pairIjjEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %1220) #7
  store ptr %1221, ptr %140, align 8, !tbaa !5
  br label %1222

1222:                                             ; preds = %1352, %1215
  %1223 = load ptr, ptr %139, align 8, !tbaa !5
  %1224 = load ptr, ptr %140, align 8, !tbaa !5
  %1225 = icmp ne ptr %1223, %1224
  br i1 %1225, label %1227, label %1226

1226:                                             ; preds = %1222
  store i32 20, ptr %61, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %140) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %139) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %138) #7
  br label %1356

1227:                                             ; preds = %1222
  call void @llvm.lifetime.start.p0(i64 8, ptr %141) #7
  %1228 = load ptr, ptr %139, align 8, !tbaa !5
  store ptr %1228, ptr %141, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %142) #7
  %1229 = load ptr, ptr %141, align 8, !tbaa !5
  %1230 = getelementptr inbounds %"struct.std::pair.401", ptr %1229, i32 0, i32 0
  %1231 = load i32, ptr %1230, align 4, !tbaa !230
  store i32 %1231, ptr %142, align 4, !tbaa !73
  call void @llvm.lifetime.start.p0(i64 4, ptr %143) #7
  %1232 = load ptr, ptr %141, align 8, !tbaa !5
  %1233 = getelementptr inbounds %"struct.std::pair.401", ptr %1232, i32 0, i32 1
  %1234 = load i32, ptr %1233, align 4, !tbaa !231
  store i32 %1234, ptr %143, align 4, !tbaa !73
  call void @llvm.lifetime.start.p0(i64 8, ptr %144) #7
  %1235 = load i32, ptr %142, align 4, !tbaa !73
  %1236 = call noundef nonnull align 8 dereferenceable(176) ptr @_ZN11spirv_cross8Compiler3getINS_12SPIRVariableEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %163, i32 noundef %1235)
  store ptr %1236, ptr %144, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %145) #7
  %1237 = load ptr, ptr %144, align 8, !tbaa !5
  %1238 = call noundef nonnull align 8 dereferenceable(336) ptr @_ZN11spirv_cross8Compiler22get_variable_data_typeERKNS_12SPIRVariableE(ptr noundef nonnull align 8 dereferenceable(3176) %163, ptr noundef nonnull align 8 dereferenceable(176) %1237)
  store ptr %1238, ptr %145, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %146) #7
  %1239 = load ptr, ptr %144, align 8, !tbaa !5
  call void @_ZN11spirv_cross11CompilerMSL26get_argument_address_spaceB5cxx11ERKNS_12SPIRVariableE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %146, ptr noundef nonnull align 8 dereferenceable(12482) %163, ptr noundef nonnull align 8 dereferenceable(176) %1239)
  %1240 = load ptr, ptr %145, align 8, !tbaa !5
  %1241 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %1240, i32 0, i32 6
  %1242 = call noundef zeroext i1 @_ZNK11spirv_cross10VectorViewIjE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %1241) #7
  br i1 %1242, label %1243, label %1285

1243:                                             ; preds = %1227
  call void @llvm.lifetime.start.p0(i64 8, ptr %147) #7
  %1244 = load i32, ptr %142, align 4, !tbaa !73
  %1245 = invoke noundef ptr @_ZN11spirv_cross11CompilerMSL11to_restrictEjb(ptr noundef nonnull align 8 dereferenceable(12482) %163, i32 noundef %1244, i1 noundef zeroext true)
          to label %1246 unwind label %1266

1246:                                             ; preds = %1243
  store ptr %1245, ptr %147, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %148) #7
  %1247 = load i32, ptr %142, align 4, !tbaa !73
  %1248 = load ptr, ptr %163, align 8, !tbaa !67
  %1249 = getelementptr inbounds ptr, ptr %1248, i64 6
  %1250 = load ptr, ptr %1249, align 8
  invoke void %1250(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %148, ptr noundef nonnull align 8 dereferenceable(12482) %163, i32 noundef %1247, i1 noundef zeroext true)
          to label %1251 unwind label %1270

1251:                                             ; preds = %1246
  call void @llvm.lifetime.start.p0(i64 32, ptr %149) #7
  %1252 = load ptr, ptr %145, align 8, !tbaa !5
  %1253 = load ptr, ptr %163, align 8, !tbaa !67
  %1254 = getelementptr inbounds ptr, ptr %1253, i64 19
  %1255 = load ptr, ptr %1254, align 8
  invoke void %1255(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %149, ptr noundef nonnull align 8 dereferenceable(12482) %163, ptr noundef nonnull align 8 dereferenceable(336) %1252, i32 noundef 0)
          to label %1256 unwind label %1274

1256:                                             ; preds = %1251
  %1257 = getelementptr inbounds %"class.spirv_cross::Compiler", ptr %163, i32 0, i32 1
  %1258 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %1257, i32 0, i32 3
  call void @llvm.lifetime.start.p0(i64 4, ptr %150) #7
  %1259 = load i32, ptr %143, align 4, !tbaa !73
  invoke void @_ZN11spirv_cross7TypedIDILNS_5TypesE0EEC2Ej(ptr noundef nonnull align 4 dereferenceable(4) %150, i32 noundef %1259)
          to label %1260 unwind label %1278

1260:                                             ; preds = %1256
  %1261 = invoke noundef nonnull align 8 dereferenceable(488) ptr @_ZNSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE0EEENS0_4MetaESt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S4_EEEixEOS3_(ptr noundef nonnull align 8 dereferenceable(56) %1258, ptr noundef nonnull align 4 dereferenceable(4) %150)
          to label %1262 unwind label %1278

1262:                                             ; preds = %1260
  %1263 = getelementptr inbounds %"struct.spirv_cross::Meta", ptr %1261, i32 0, i32 0
  %1264 = getelementptr inbounds %"struct.spirv_cross::Meta::Decoration", ptr %1263, i32 0, i32 1
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA8_KcPS9_S7_RA5_S9_S8_RA2_S9_S7_RA3_S9_S8_SG_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %163, ptr noundef nonnull align 8 dereferenceable(32) %146, ptr noundef nonnull align 1 dereferenceable(8) @.str.72, ptr noundef nonnull align 8 dereferenceable(8) %147, ptr noundef nonnull align 8 dereferenceable(32) %148, ptr noundef nonnull align 1 dereferenceable(5) @.str.90, ptr noundef nonnull align 8 dereferenceable(32) %146, ptr noundef nonnull align 1 dereferenceable(2) @.str.60, ptr noundef nonnull align 8 dereferenceable(32) %149, ptr noundef nonnull align 1 dereferenceable(3) @.str.91, ptr noundef nonnull align 8 dereferenceable(32) %1264, ptr noundef nonnull align 1 dereferenceable(2) @.str.57)
          to label %1265 unwind label %1278

1265:                                             ; preds = %1262
  call void @llvm.lifetime.end.p0(i64 4, ptr %150) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %149) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %149) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %148) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %148) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %147) #7
  br label %1351

1266:                                             ; preds = %1243
  %1267 = landingpad { ptr, i32 }
          cleanup
  %1268 = extractvalue { ptr, i32 } %1267, 0
  store ptr %1268, ptr %13, align 8
  %1269 = extractvalue { ptr, i32 } %1267, 1
  store i32 %1269, ptr %14, align 4
  br label %1284

1270:                                             ; preds = %1246
  %1271 = landingpad { ptr, i32 }
          cleanup
  %1272 = extractvalue { ptr, i32 } %1271, 0
  store ptr %1272, ptr %13, align 8
  %1273 = extractvalue { ptr, i32 } %1271, 1
  store i32 %1273, ptr %14, align 4
  br label %1283

1274:                                             ; preds = %1251
  %1275 = landingpad { ptr, i32 }
          cleanup
  %1276 = extractvalue { ptr, i32 } %1275, 0
  store ptr %1276, ptr %13, align 8
  %1277 = extractvalue { ptr, i32 } %1275, 1
  store i32 %1277, ptr %14, align 4
  br label %1282

1278:                                             ; preds = %1262, %1260, %1256
  %1279 = landingpad { ptr, i32 }
          cleanup
  %1280 = extractvalue { ptr, i32 } %1279, 0
  store ptr %1280, ptr %13, align 8
  %1281 = extractvalue { ptr, i32 } %1279, 1
  store i32 %1281, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %150) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %149) #7
  br label %1282

1282:                                             ; preds = %1278, %1274
  call void @llvm.lifetime.end.p0(i64 32, ptr %149) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %148) #7
  br label %1283

1283:                                             ; preds = %1282, %1270
  call void @llvm.lifetime.end.p0(i64 32, ptr %148) #7
  br label %1284

1284:                                             ; preds = %1283, %1266
  call void @llvm.lifetime.end.p0(i64 8, ptr %147) #7
  br label %1355

1285:                                             ; preds = %1227
  call void @llvm.lifetime.start.p0(i64 8, ptr %151) #7
  %1286 = load i32, ptr %142, align 4, !tbaa !73
  %1287 = load ptr, ptr %144, align 8, !tbaa !5
  %1288 = getelementptr inbounds %"struct.spirv_cross::SPIRVariable", ptr %1287, i32 0, i32 2
  %1289 = load i32, ptr %1288, align 8, !tbaa !232
  %1290 = invoke noundef ptr @_ZNK11spirv_cross11CompilerMSL24descriptor_address_spaceEjN3spv12StorageClassEPKc(ptr noundef nonnull align 8 dereferenceable(12482) %163, i32 noundef %1286, i32 noundef %1289, ptr noundef @.str.92)
          to label %1291 unwind label %1322

1291:                                             ; preds = %1285
  store ptr %1290, ptr %151, align 8, !tbaa !5
  %1292 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %163, i32 0, i32 74
  store i8 1, ptr %1292, align 2, !tbaa !76
  call void @llvm.lifetime.start.p0(i64 8, ptr %152) #7
  %1293 = load i32, ptr %142, align 4, !tbaa !73
  %1294 = invoke noundef ptr @_ZN11spirv_cross11CompilerMSL11to_restrictEjb(ptr noundef nonnull align 8 dereferenceable(12482) %163, i32 noundef %1293, i1 noundef zeroext true)
          to label %1295 unwind label %1326

1295:                                             ; preds = %1291
  store ptr %1294, ptr %152, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %153) #7
  %1296 = load i32, ptr %142, align 4, !tbaa !73
  %1297 = load ptr, ptr %163, align 8, !tbaa !67
  %1298 = getelementptr inbounds ptr, ptr %1297, i64 6
  %1299 = load ptr, ptr %1298, align 8
  invoke void %1299(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %153, ptr noundef nonnull align 8 dereferenceable(12482) %163, i32 noundef %1296, i1 noundef zeroext true)
          to label %1300 unwind label %1330

1300:                                             ; preds = %1295
  call void @llvm.lifetime.start.p0(i64 32, ptr %154) #7
  %1301 = load ptr, ptr %145, align 8, !tbaa !5
  %1302 = load ptr, ptr %163, align 8, !tbaa !67
  %1303 = getelementptr inbounds ptr, ptr %1302, i64 19
  %1304 = load ptr, ptr %1303, align 8
  invoke void %1304(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %154, ptr noundef nonnull align 8 dereferenceable(12482) %163, ptr noundef nonnull align 8 dereferenceable(336) %1301, i32 noundef 0)
          to label %1305 unwind label %1334

1305:                                             ; preds = %1300
  call void @llvm.lifetime.start.p0(i64 32, ptr %155) #7
  %1306 = load ptr, ptr %145, align 8, !tbaa !5
  %1307 = load i32, ptr %142, align 4, !tbaa !73
  %1308 = load ptr, ptr %163, align 8, !tbaa !67
  %1309 = getelementptr inbounds ptr, ptr %1308, i64 38
  %1310 = load ptr, ptr %1309, align 8
  invoke void %1310(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %155, ptr noundef nonnull align 8 dereferenceable(12482) %163, ptr noundef nonnull align 8 dereferenceable(336) %1306, i32 noundef %1307)
          to label %1311 unwind label %1338

1311:                                             ; preds = %1305
  %1312 = getelementptr inbounds %"class.spirv_cross::Compiler", ptr %163, i32 0, i32 1
  %1313 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %1312, i32 0, i32 3
  call void @llvm.lifetime.start.p0(i64 4, ptr %156) #7
  %1314 = load i32, ptr %143, align 4, !tbaa !73
  invoke void @_ZN11spirv_cross7TypedIDILNS_5TypesE0EEC2Ej(ptr noundef nonnull align 4 dereferenceable(4) %156, i32 noundef %1314)
          to label %1315 unwind label %1342

1315:                                             ; preds = %1311
  %1316 = invoke noundef nonnull align 8 dereferenceable(488) ptr @_ZNSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE0EEENS0_4MetaESt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S4_EEEixEOS3_(ptr noundef nonnull align 8 dereferenceable(56) %1313, ptr noundef nonnull align 4 dereferenceable(4) %156)
          to label %1317 unwind label %1342

1317:                                             ; preds = %1315
  %1318 = getelementptr inbounds %"struct.spirv_cross::Meta", ptr %1316, i32 0, i32 0
  %1319 = getelementptr inbounds %"struct.spirv_cross::Meta::Decoration", ptr %1318, i32 0, i32 1
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA8_S2_S3_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA5_S2_RSC_RA2_S2_SC_RA3_S2_S4_SE_SC_SH_SF_SH_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %163, ptr noundef nonnull align 8 dereferenceable(8) %151, ptr noundef nonnull align 1 dereferenceable(8) @.str.72, ptr noundef nonnull align 8 dereferenceable(8) %152, ptr noundef nonnull align 8 dereferenceable(32) %153, ptr noundef nonnull align 1 dereferenceable(5) @.str.90, ptr noundef nonnull align 8 dereferenceable(32) %146, ptr noundef nonnull align 1 dereferenceable(2) @.str.60, ptr noundef nonnull align 8 dereferenceable(32) %154, ptr noundef nonnull align 1 dereferenceable(3) @.str.61, ptr noundef nonnull align 8 dereferenceable(8) %151, ptr noundef nonnull align 1 dereferenceable(5) @.str.93, ptr noundef nonnull align 8 dereferenceable(32) %155, ptr noundef nonnull align 1 dereferenceable(2) @.str.53, ptr noundef nonnull align 8 dereferenceable(32) %1319, ptr noundef nonnull align 1 dereferenceable(2) @.str.57)
          to label %1320 unwind label %1342

1320:                                             ; preds = %1317
  call void @llvm.lifetime.end.p0(i64 4, ptr %156) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %155) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %155) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %154) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %154) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %153) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %153) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %152) #7
  %1321 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %163, i32 0, i32 74
  store i8 0, ptr %1321, align 2, !tbaa !76
  call void @llvm.lifetime.end.p0(i64 8, ptr %151) #7
  br label %1351

1322:                                             ; preds = %1285
  %1323 = landingpad { ptr, i32 }
          cleanup
  %1324 = extractvalue { ptr, i32 } %1323, 0
  store ptr %1324, ptr %13, align 8
  %1325 = extractvalue { ptr, i32 } %1323, 1
  store i32 %1325, ptr %14, align 4
  br label %1350

1326:                                             ; preds = %1291
  %1327 = landingpad { ptr, i32 }
          cleanup
  %1328 = extractvalue { ptr, i32 } %1327, 0
  store ptr %1328, ptr %13, align 8
  %1329 = extractvalue { ptr, i32 } %1327, 1
  store i32 %1329, ptr %14, align 4
  br label %1349

1330:                                             ; preds = %1295
  %1331 = landingpad { ptr, i32 }
          cleanup
  %1332 = extractvalue { ptr, i32 } %1331, 0
  store ptr %1332, ptr %13, align 8
  %1333 = extractvalue { ptr, i32 } %1331, 1
  store i32 %1333, ptr %14, align 4
  br label %1348

1334:                                             ; preds = %1300
  %1335 = landingpad { ptr, i32 }
          cleanup
  %1336 = extractvalue { ptr, i32 } %1335, 0
  store ptr %1336, ptr %13, align 8
  %1337 = extractvalue { ptr, i32 } %1335, 1
  store i32 %1337, ptr %14, align 4
  br label %1347

1338:                                             ; preds = %1305
  %1339 = landingpad { ptr, i32 }
          cleanup
  %1340 = extractvalue { ptr, i32 } %1339, 0
  store ptr %1340, ptr %13, align 8
  %1341 = extractvalue { ptr, i32 } %1339, 1
  store i32 %1341, ptr %14, align 4
  br label %1346

1342:                                             ; preds = %1317, %1315, %1311
  %1343 = landingpad { ptr, i32 }
          cleanup
  %1344 = extractvalue { ptr, i32 } %1343, 0
  store ptr %1344, ptr %13, align 8
  %1345 = extractvalue { ptr, i32 } %1343, 1
  store i32 %1345, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %156) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %155) #7
  br label %1346

1346:                                             ; preds = %1342, %1338
  call void @llvm.lifetime.end.p0(i64 32, ptr %155) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %154) #7
  br label %1347

1347:                                             ; preds = %1346, %1334
  call void @llvm.lifetime.end.p0(i64 32, ptr %154) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %153) #7
  br label %1348

1348:                                             ; preds = %1347, %1330
  call void @llvm.lifetime.end.p0(i64 32, ptr %153) #7
  br label %1349

1349:                                             ; preds = %1348, %1326
  call void @llvm.lifetime.end.p0(i64 8, ptr %152) #7
  br label %1350

1350:                                             ; preds = %1349, %1322
  call void @llvm.lifetime.end.p0(i64 8, ptr %151) #7
  br label %1355

1351:                                             ; preds = %1320, %1265
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %146) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %146) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %145) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %144) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %143) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %142) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %141) #7
  br label %1352

1352:                                             ; preds = %1351
  %1353 = load ptr, ptr %139, align 8, !tbaa !5
  %1354 = getelementptr inbounds %"struct.std::pair.401", ptr %1353, i32 1
  store ptr %1354, ptr %139, align 8, !tbaa !5
  br label %1222

1355:                                             ; preds = %1350, %1284
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %146) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %146) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %145) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %144) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %143) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %142) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %141) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %140) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %139) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %138) #7
  br label %1396

1356:                                             ; preds = %1226
  %1357 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %163, i32 0, i32 114
  %1358 = call noundef ptr @_ZN11spirv_cross10VectorViewIjE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %1357) #7
  %1359 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %163, i32 0, i32 114
  %1360 = call noundef ptr @_ZN11spirv_cross10VectorViewIjE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %1359) #7
  call void @_ZSt4sortIPjEvT_S1_(ptr noundef %1358, ptr noundef %1360)
  call void @llvm.lifetime.start.p0(i64 8, ptr %157) #7
  %1361 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %163, i32 0, i32 114
  store ptr %1361, ptr %157, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %158) #7
  %1362 = load ptr, ptr %157, align 8, !tbaa !5
  %1363 = call noundef ptr @_ZN11spirv_cross10VectorViewIjE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %1362) #7
  store ptr %1363, ptr %158, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %159) #7
  %1364 = load ptr, ptr %157, align 8, !tbaa !5
  %1365 = call noundef ptr @_ZN11spirv_cross10VectorViewIjE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %1364) #7
  store ptr %1365, ptr %159, align 8, !tbaa !5
  br label %1366

1366:                                             ; preds = %1381, %1356
  %1367 = load ptr, ptr %158, align 8, !tbaa !5
  %1368 = load ptr, ptr %159, align 8, !tbaa !5
  %1369 = icmp ne ptr %1367, %1368
  br i1 %1369, label %1371, label %1370

1370:                                             ; preds = %1366
  store i32 22, ptr %61, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %159) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %158) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %157) #7
  br label %1388

1371:                                             ; preds = %1366
  call void @llvm.lifetime.start.p0(i64 4, ptr %160) #7
  %1372 = load ptr, ptr %158, align 8, !tbaa !5
  %1373 = load i32, ptr %1372, align 4, !tbaa !73
  store i32 %1373, ptr %160, align 4, !tbaa !73
  call void @llvm.lifetime.start.p0(i64 8, ptr %161) #7
  %1374 = load i32, ptr %160, align 4, !tbaa !73
  %1375 = call noundef nonnull align 8 dereferenceable(176) ptr @_ZN11spirv_cross8Compiler3getINS_12SPIRVariableEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %163, i32 noundef %1374)
  store ptr %1375, ptr %161, align 8, !tbaa !5
  %1376 = load i32, ptr %160, align 4, !tbaa !73
  call void @_ZN11spirv_cross12CompilerGLSL23add_local_variable_nameEj(ptr noundef nonnull align 8 dereferenceable(9848) %163, i32 noundef %1376)
  call void @llvm.lifetime.start.p0(i64 32, ptr %162) #7
  %1377 = load ptr, ptr %161, align 8, !tbaa !5
  call void @_ZN11spirv_cross12CompilerGLSL13variable_declB5cxx11ERKNS_12SPIRVariableE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %162, ptr noundef nonnull align 8 dereferenceable(9848) %163, ptr noundef nonnull align 8 dereferenceable(176) %1377)
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %163, ptr noundef nonnull align 8 dereferenceable(32) %162, ptr noundef nonnull align 1 dereferenceable(2) @.str.57)
          to label %1378 unwind label %1384

1378:                                             ; preds = %1371
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %162) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %162) #7
  %1379 = load ptr, ptr %161, align 8, !tbaa !5
  %1380 = getelementptr inbounds %"struct.spirv_cross::SPIRVariable", ptr %1379, i32 0, i32 11
  store i8 0, ptr %1380, align 8, !tbaa !235
  call void @llvm.lifetime.end.p0(i64 8, ptr %161) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %160) #7
  br label %1381

1381:                                             ; preds = %1378
  %1382 = load ptr, ptr %158, align 8, !tbaa !5
  %1383 = getelementptr inbounds i32, ptr %1382, i32 1
  store ptr %1383, ptr %158, align 8, !tbaa !5
  br label %1366

1384:                                             ; preds = %1371
  %1385 = landingpad { ptr, i32 }
          cleanup
  %1386 = extractvalue { ptr, i32 } %1385, 0
  store ptr %1386, ptr %13, align 8
  %1387 = extractvalue { ptr, i32 } %1385, 1
  store i32 %1387, ptr %14, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %162) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %162) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %161) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %160) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %159) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %158) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %157) #7
  br label %1396

1388:                                             ; preds = %1370
  %1389 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %163, i32 0, i32 19
  %1390 = load i8, ptr %1389, align 8, !tbaa !236, !range !59, !noundef !60
  %1391 = trunc i8 %1390 to i1
  br i1 %1391, label %1392, label %1395

1392:                                             ; preds = %1388
  %1393 = call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL14is_mesh_shaderEv(ptr noundef nonnull align 8 dereferenceable(12482) %163)
  br i1 %1393, label %1394, label %1395

1394:                                             ; preds = %1392
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA32_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %163, ptr noundef nonnull align 1 dereferenceable(32) @.str.94)
  br label %1395

1395:                                             ; preds = %1394, %1392, %1388
  call void @llvm.lifetime.end.p0(i64 1, ptr %102) #7
  ret void

1396:                                             ; preds = %1384, %1355, %1214, %1123
  call void @llvm.lifetime.end.p0(i64 1, ptr %102) #7
  br label %1397

1397:                                             ; preds = %1396, %903, %570
  %1398 = load ptr, ptr %13, align 8
  %1399 = load i32, ptr %14, align 4
  %1400 = insertvalue { ptr, i32 } poison, ptr %1398, 0
  %1401 = insertvalue { ptr, i32 } %1400, i32 %1399, 1
  resume { ptr, i32 } %1401

1402:                                             ; preds = %939, %897, %652, %453, %408, %266
  unreachable
}

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

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

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

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

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

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

declare void @_ZN11spirv_cross12CompilerGLSL17add_resource_nameEj(ptr noundef nonnull align 8 dereferenceable(9848), i32 noundef) #5

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

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

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

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

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

declare void @_ZNK11spirv_cross12CompilerGLSL12format_floatB5cxx11Ef(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(9848), float noundef) #5

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJRA19_KcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 1 dereferenceable(19), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(2)) #6 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJRA19_KcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_S2_SA_RA3_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 1 dereferenceable(19), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(2), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(3)) #6 align 2

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_KcS7_RA3_S8_PS8_RS7_S7_SC_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(2), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(3), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(3)) #6 align 2

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

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

declare void @_ZN11spirv_cross12CompilerGLSL11begin_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848)) #5

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJRA2_KcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES4_SA_RA3_S2_PS2_RA4_S2_SA_RA8_S2_SD_S4_SA_S4_SA_S4_RjS4_SF_SA_S4_jSF_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 1 dereferenceable(2), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(2), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(3), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 1 dereferenceable(4), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 1 dereferenceable(2), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(2), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(2), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(2), ptr noundef nonnull align 1 dereferenceable(4), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(2), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(4)) #6 align 2

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

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

declare void @_ZN11spirv_cross12CompilerGLSL14end_scope_declEv(ptr noundef nonnull align 8 dereferenceable(9848)) #5

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL19statement_no_indentIJRA1_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 1 dereferenceable(1)) #6 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA8_KcPS8_RS7_RA6_S8_S7_RA2_S8_S7_RA3_S8_SB_RA4_S8_S7_SA_SB_SG_S7_SG_S7_SK_S7_SG_RjSK_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(6), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(2), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(3), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 1 dereferenceable(4), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 1 dereferenceable(2), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(2), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(4), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(2), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(4)) #6 align 2

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

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

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

declare noundef nonnull align 8 dereferenceable(336) ptr @_ZN11spirv_cross8Compiler25get_variable_element_typeERKNS_12SPIRVariableE(ptr noundef nonnull align 8 dereferenceable(3176), ptr noundef nonnull align 8 dereferenceable(176)) #5

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJRA20_KcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA3_S2_RKSA_SC_RSA_SC_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 1 dereferenceable(20), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(3), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(3), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(3)) #6 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJRA29_KcRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA8_S2_SC_RA9_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 1 dereferenceable(29), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(9)) #6 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJRA20_KcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_S2_SA_RA4_S2_RKSA_RA3_S2_RSA_SI_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 1 dereferenceable(20), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(2), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(4), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(3), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(3)) #6 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_KcS7_RA3_S8_PS8_RKS7_RA5_S8_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(2), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(3), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(5)) #6 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_KcRjSC_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(2), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(2)) #6 align 2

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA8_KcPS9_S8_RA6_S9_S8_RA2_S9_S7_RA3_S9_S8_SG_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(6), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(2), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(3), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(2)) #6 align 2

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA8_KcPS9_S7_RA5_S9_S8_RA2_S9_S7_RA3_S9_S8_SG_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(5), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(2), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(3), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(2)) #6 align 2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA8_S2_S3_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA5_S2_RSC_RA2_S2_SC_RA3_S2_S4_SE_SC_SH_SF_SH_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 1 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(5), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(2), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(3), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 1 dereferenceable(5), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(2), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(2)) #6 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt4sortIPjEvT_S1_(ptr noundef, ptr noundef) #6

declare void @_ZN11spirv_cross12CompilerGLSL23add_local_variable_nameEj(ptr noundef nonnull align 8 dereferenceable(9848), i32 noundef) #5

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(2)) #6 align 2

declare void @_ZN11spirv_cross12CompilerGLSL13variable_declB5cxx11ERKNS_12SPIRVariableE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 8 dereferenceable(176)) unnamed_addr #5

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJRA32_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 1 dereferenceable(32)) #6 align 2

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

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

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


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

%"struct.std::_Rb_tree_iterator" = type { ptr }
%"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.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 }
%"struct.std::_Rb_tree_iterator.425" = type { ptr }
%"class.spirv_cross::TypedID.413" = type { i32 }

@_ZTIN11spirv_cross13CompilerErrorE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.28 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.86 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.89 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.90 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.91 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.92 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.93 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.94 = external hidden unnamed_addr constant [32 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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

declare void @__cxa_free_exception(ptr) local_unnamed_addr

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11spirv_cross11CompilerMSL29emit_entry_point_declarationsEv(ptr noundef nonnull align 8 dereferenceable(12482) %0) unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %3 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %4 = alloca %"class.spirv_cross::SmallVector.27", align 8
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca %"class.std::allocator.71", align 1
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.std::allocator.71", align 1
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca %"class.std::allocator.71", align 1
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::allocator.71", align 1
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca %"class.std::allocator.71", align 1
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca %"class.std::allocator.71", align 1
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca %"class.std::allocator.71", align 1
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.std::allocator.71", align 1
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca %"class.std::allocator.71", align 1
  %27 = alloca %"class.std::__cxx11::basic_string", align 8
  %28 = alloca %"class.std::allocator.71", align 1
  %29 = alloca %"class.std::__cxx11::basic_string", align 8
  %30 = alloca %"class.std::allocator.71", align 1
  %31 = alloca %"class.std::__cxx11::basic_string", align 8
  %32 = alloca %"class.std::allocator.71", align 1
  %33 = alloca %"class.std::__cxx11::basic_string", align 8
  %34 = alloca %"class.std::allocator.71", align 1
  %35 = alloca %"class.std::__cxx11::basic_string", align 8
  %36 = alloca %"class.std::allocator.71", align 1
  %37 = alloca %"class.std::__cxx11::basic_string", align 8
  %38 = alloca %"class.std::allocator.71", align 1
  %39 = alloca %"class.std::__cxx11::basic_string", align 8
  %40 = alloca %"class.std::allocator.71", align 1
  %41 = alloca %"class.std::__cxx11::basic_string", align 8
  %42 = alloca %"class.std::allocator.71", align 1
  %43 = alloca %"class.std::__cxx11::basic_string", align 8
  %44 = alloca %"class.std::__cxx11::basic_string", align 8
  %45 = alloca %"class.std::__cxx11::basic_string", align 8
  %46 = alloca %"class.std::__cxx11::basic_string", align 8
  %47 = alloca %"class.std::__cxx11::basic_string", align 8
  %48 = alloca %"class.std::__cxx11::basic_string", align 8
  %49 = alloca %"class.std::__cxx11::basic_string", align 8
  %50 = alloca %"struct.std::_Rb_tree_iterator.425", align 8
  %51 = alloca %"struct.std::_Rb_tree_iterator.425", align 8
  %52 = alloca %"class.std::__cxx11::basic_string", align 8
  %53 = alloca i32, align 4
  %54 = alloca %"class.std::__cxx11::basic_string", align 8
  %55 = alloca %"class.std::__cxx11::basic_string", align 8
  %56 = alloca ptr, align 8
  %57 = alloca %"class.std::__cxx11::basic_string", align 8
  %58 = alloca i32, align 4
  %59 = alloca %"class.std::__cxx11::basic_string", align 8
  %60 = alloca %"class.std::__cxx11::basic_string", align 8
  %61 = alloca ptr, align 8
  %62 = alloca %"class.std::__cxx11::basic_string", align 8
  %63 = alloca ptr, align 8
  %64 = alloca %"class.std::__cxx11::basic_string", align 8
  %65 = alloca %"class.std::__cxx11::basic_string", align 8
  %66 = alloca %"class.std::__cxx11::basic_string", align 8
  %67 = alloca %"class.std::__cxx11::basic_string", align 8
  %68 = alloca %"class.std::allocator.71", align 1
  %69 = alloca %"class.std::__cxx11::basic_string", align 8
  %70 = alloca i32, align 4
  %71 = alloca %"class.std::__cxx11::basic_string", align 8
  %72 = alloca ptr, align 8
  %73 = alloca %"class.std::__cxx11::basic_string", align 8
  %74 = alloca %"class.std::__cxx11::basic_string", align 8
  %75 = alloca ptr, align 8
  %76 = alloca %"class.std::__cxx11::basic_string", align 8
  %77 = alloca ptr, align 8
  %78 = alloca %"class.std::__cxx11::basic_string", align 8
  %79 = alloca %"class.std::__cxx11::basic_string", align 8
  %80 = alloca %"class.std::__cxx11::basic_string", align 8
  %81 = alloca %"class.std::__cxx11::basic_string", align 8
  %82 = alloca %"class.std::allocator.71", align 1
  %83 = alloca %"class.std::__cxx11::basic_string", align 8
  %84 = alloca %"class.std::__cxx11::basic_string", align 8
  %85 = alloca %"class.std::__cxx11::basic_string", align 8
  %86 = alloca %"class.std::__cxx11::basic_string", align 8
  %87 = alloca %"class.std::__cxx11::basic_string", align 8
  %88 = alloca %"class.std::__cxx11::basic_string", align 8
  %89 = alloca %"class.std::__cxx11::basic_string", align 8
  %90 = alloca %"class.std::__cxx11::basic_string", align 8
  %91 = alloca %"class.std::__cxx11::basic_string", align 8
  %92 = alloca %"class.std::__cxx11::basic_string", align 8
  %93 = alloca ptr, align 8
  %94 = alloca i32, align 4
  %95 = alloca %"class.std::__cxx11::basic_string", align 8
  %96 = alloca %"class.std::__cxx11::basic_string", align 8
  %97 = alloca i32, align 4
  %98 = alloca %"class.spirv_cross::TypedID.413", align 4
  %99 = alloca i32, align 4
  %100 = alloca %"class.spirv_cross::TypedID.413", align 4
  %101 = alloca %"class.std::__cxx11::basic_string", align 8
  %102 = alloca ptr, align 8
  %103 = alloca %"class.std::__cxx11::basic_string", align 8
  %104 = alloca %"class.std::__cxx11::basic_string", align 8
  %105 = alloca ptr, align 8
  %106 = alloca %"class.std::__cxx11::basic_string", align 8
  %107 = alloca %"class.std::__cxx11::basic_string", align 8
  %108 = alloca %"class.spirv_cross::TypedID.413", align 4
  %109 = alloca ptr, align 8
  %110 = alloca ptr, align 8
  %111 = alloca %"class.std::__cxx11::basic_string", align 8
  %112 = alloca %"class.std::__cxx11::basic_string", align 8
  %113 = alloca %"class.std::__cxx11::basic_string", align 8
  %114 = alloca %"class.spirv_cross::TypedID.413", align 4
  %115 = alloca %"class.std::__cxx11::basic_string", align 8
  tail call void @_ZN11spirv_cross11CompilerMSL31declare_complex_constant_arraysEv(ptr noundef nonnull align 8 dereferenceable(12482) %0)
  %116 = getelementptr inbounds i8, ptr %0, i64 11720
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) #6
  %117 = tail call ptr @_ZNSt3mapIjN11spirv_cross19MSLConstexprSamplerESt4lessIjESaISt4pairIKjS1_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %116) #6
  store ptr %117, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #6
  %118 = tail call ptr @_ZNSt3mapIjN11spirv_cross19MSLConstexprSamplerESt4lessIjESaISt4pairIKjS1_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %116) #6
  store ptr %118, ptr %3, align 8
  %119 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKjN11spirv_cross19MSLConstexprSamplerEEES7_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %3) #6
  br i1 %119, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %352, %1
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #6
  %120 = getelementptr inbounds i8, ptr %0, i64 12280
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %50) #6
  %121 = call ptr @_ZNSt3mapIN11spirv_cross14SetBindingPairESt4pairIjjESt4lessIS1_ESaIS2_IKS1_S3_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %120) #6
  store ptr %121, ptr %50, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %51) #6
  %122 = call ptr @_ZNSt3mapIN11spirv_cross14SetBindingPairESt4pairIjjESt4lessIS1_ESaIS2_IKS1_S3_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %120) #6
  store ptr %122, ptr %51, align 8
  %123 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKN11spirv_cross14SetBindingPairES0_IjjEEES8_(ptr noundef nonnull align 8 dereferenceable(8) %50, ptr noundef nonnull align 8 dereferenceable(8) %51) #6
  br i1 %123, label %.lr.ph353, label %._crit_edge354

.lr.ph353:                                        ; preds = %._crit_edge
  %124 = getelementptr inbounds i8, ptr %0, i64 12440
  %125 = getelementptr inbounds i8, ptr %0, i64 10004
  %126 = getelementptr inbounds i8, ptr %0, i64 11186
  br label %361

.lr.ph:                                           ; preds = %1, %352
  %127 = call noundef nonnull align 4 dereferenceable(104) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKjN11spirv_cross19MSLConstexprSamplerEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %2) #6
  %128 = load i32, ptr %127, align 4, !tbaa !5
  %129 = call noundef nonnull align 8 dereferenceable(176) ptr @_ZN11spirv_cross8Compiler3getINS_12SPIRVariableEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %128)
  %130 = getelementptr inbounds i8, ptr %129, i64 12
  %131 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE1EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %130)
  %132 = call noundef nonnull align 8 dereferenceable(336) ptr @_ZN11spirv_cross8Compiler3getINS_8SPIRTypeEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %131)
  %133 = getelementptr inbounds i8, ptr %132, i64 16
  %134 = load i32, ptr %133, align 8, !tbaa !23
  %135 = icmp eq i32 %134, 18
  br i1 %135, label %136, label %138

136:                                              ; preds = %.lr.ph
  %137 = load i32, ptr %127, align 4, !tbaa !5
  call void @_ZN11spirv_cross12CompilerGLSL17add_resource_nameEj(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %137)
  br label %138

138:                                              ; preds = %136, %.lr.ph
  call void @llvm.lifetime.start.p0(i64 280, ptr nonnull %4) #6
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(280) %4) #6
  %139 = getelementptr inbounds i8, ptr %127, i64 4
  %140 = load i32, ptr %139, align 4, !tbaa !50
  %.not300 = icmp eq i32 %140, 0
  br i1 %.not300, label %145, label %141

141:                                              ; preds = %138
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #6
  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) %5, ptr noundef nonnull @.str.28, ptr noundef nonnull align 1 dereferenceable(1) %6)
          to label %142 unwind label %143

142:                                              ; preds = %141
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %4, ptr noundef nonnull align 8 dereferenceable(32) %5) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #6
  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
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #6
  br label %145

143:                                              ; preds = %141
  %144 = 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
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #6
  br label %355

145:                                              ; preds = %142, %138
  %146 = getelementptr inbounds i8, ptr %127, i64 8
  %147 = load i32, ptr %146, align 4, !tbaa !51
  %148 = getelementptr inbounds i8, ptr %127, i64 12
  %149 = load i32, ptr %148, align 4, !tbaa !52
  %150 = icmp eq i32 %147, %149
  %.not303 = icmp eq i32 %147, 0
  br i1 %150, label %151, label %156

151:                                              ; preds = %145
  br i1 %.not303, label %167, label %152

152:                                              ; preds = %151
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #6
  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) %7, ptr noundef nonnull @.str.29, ptr noundef nonnull align 1 dereferenceable(1) %8)
          to label %153 unwind label %154

153:                                              ; preds = %152
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %4, ptr noundef nonnull align 8 dereferenceable(32) %7) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #6
  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
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #6
  br label %167

154:                                              ; preds = %152
  %155 = 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
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #6
  br label %355

156:                                              ; preds = %145
  br i1 %.not303, label %161, label %157

157:                                              ; preds = %156
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #6
  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) %9, ptr noundef nonnull @.str.30, ptr noundef nonnull align 1 dereferenceable(1) %10)
          to label %158 unwind label %159

158:                                              ; preds = %157
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %4, ptr noundef nonnull align 8 dereferenceable(32) %9) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #6
  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
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #6
  %.pr = load i32, ptr %148, align 4, !tbaa !52
  br label %161

159:                                              ; preds = %157
  %160 = 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
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #6
  br label %355

161:                                              ; preds = %158, %156
  %162 = phi i32 [ %.pr, %158 ], [ %149, %156 ]
  %.not302 = icmp eq i32 %162, 0
  br i1 %.not302, label %167, label %163

163:                                              ; preds = %161
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #6
  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) %11, ptr noundef nonnull @.str.31, ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %164 unwind label %165

164:                                              ; preds = %163
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %4, ptr noundef nonnull align 8 dereferenceable(32) %11) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #6
  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
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #6
  br label %167

165:                                              ; preds = %163
  %166 = 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
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #6
  br label %355

167:                                              ; preds = %161, %164, %151, %153
  %168 = getelementptr inbounds i8, ptr %127, i64 16
  %169 = load i32, ptr %168, align 4, !tbaa !53
  switch i32 %169, label %178 [
    i32 0, label %184
    i32 1, label %170
    i32 2, label %174
  ]

170:                                              ; preds = %167
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #6
  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) %13, ptr noundef nonnull @.str.32, ptr noundef nonnull align 1 dereferenceable(1) %14)
          to label %171 unwind label %172

171:                                              ; preds = %170
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %4, ptr noundef nonnull align 8 dereferenceable(32) %13) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #6
  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
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #6
  br label %184

172:                                              ; preds = %170
  %173 = 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
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #6
  br label %355

174:                                              ; preds = %167
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #6
  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) %15, ptr noundef nonnull @.str.33, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %175 unwind label %176

175:                                              ; preds = %174
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %4, ptr noundef nonnull align 8 dereferenceable(32) %15) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #6
  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
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #6
  br label %184

176:                                              ; preds = %174
  %177 = 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
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #6
  br label %355

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

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

182:                                              ; preds = %.invoke
  %183 = landingpad { ptr, i32 }
          cleanup
  br label %355

184:                                              ; preds = %175, %171, %167
  %185 = getelementptr inbounds i8, ptr %127, i64 20
  %186 = load i32, ptr %185, align 4, !tbaa !54
  %187 = getelementptr inbounds i8, ptr %127, i64 24
  %188 = load i32, ptr %187, align 4, !tbaa !55
  %189 = icmp eq i32 %186, %188
  %190 = getelementptr inbounds i8, ptr %127, i64 28
  %191 = load i32, ptr %190, align 4
  %192 = icmp eq i32 %186, %191
  %or.cond = select i1 %189, i1 %192, i1 false
  %.not307 = icmp eq i32 %186, 1
  br i1 %or.cond, label %193, label %198

193:                                              ; preds = %184
  br i1 %.not307, label %215, label %194

194:                                              ; preds = %193
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #6
  invoke void @_ZL22create_sampler_addressB5cxx11PKcN11spirv_cross17MSLSamplerAddressE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %17, ptr noundef nonnull @.str.35, i32 noundef %186)
          to label %195 unwind label %196

195:                                              ; preds = %194
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %4, ptr noundef nonnull align 8 dereferenceable(32) %17) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #6
  br label %215

196:                                              ; preds = %194
  %197 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #6
  br label %355

198:                                              ; preds = %184
  br i1 %.not307, label %203, label %199

199:                                              ; preds = %198
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %18) #6
  invoke void @_ZL22create_sampler_addressB5cxx11PKcN11spirv_cross17MSLSamplerAddressE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %18, ptr noundef nonnull @.str.36, i32 noundef %186)
          to label %200 unwind label %201

200:                                              ; preds = %199
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %4, ptr noundef nonnull align 8 dereferenceable(32) %18) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #6
  %.pre = load i32, ptr %187, align 4, !tbaa !55
  br label %203

201:                                              ; preds = %199
  %202 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #6
  br label %355

203:                                              ; preds = %200, %198
  %204 = phi i32 [ %.pre, %200 ], [ %188, %198 ]
  %.not305 = icmp eq i32 %204, 1
  br i1 %.not305, label %209, label %205

205:                                              ; preds = %203
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #6
  invoke void @_ZL22create_sampler_addressB5cxx11PKcN11spirv_cross17MSLSamplerAddressE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %19, ptr noundef nonnull @.str.37, i32 noundef %204)
          to label %206 unwind label %207

206:                                              ; preds = %205
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %4, ptr noundef nonnull align 8 dereferenceable(32) %19) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #6
  br label %209

207:                                              ; preds = %205
  %208 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #6
  br label %355

209:                                              ; preds = %206, %203
  %210 = load i32, ptr %190, align 4, !tbaa !56
  %.not306 = icmp eq i32 %210, 1
  br i1 %.not306, label %215, label %211

211:                                              ; preds = %209
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %20) #6
  invoke void @_ZL22create_sampler_addressB5cxx11PKcN11spirv_cross17MSLSamplerAddressE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %20, ptr noundef nonnull @.str.38, i32 noundef %210)
          to label %212 unwind label %213

212:                                              ; preds = %211
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %4, ptr noundef nonnull align 8 dereferenceable(32) %20) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #6
  br label %215

213:                                              ; preds = %211
  %214 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #6
  br label %355

215:                                              ; preds = %209, %212, %193, %195
  %216 = getelementptr inbounds i8, ptr %127, i64 100
  %217 = load i8, ptr %216, align 4, !tbaa !57, !range !58, !noundef !59
  %218 = trunc nuw i8 %217 to i1
  br i1 %218, label %219, label %258

219:                                              ; preds = %215
  %220 = getelementptr inbounds i8, ptr %127, i64 32
  %221 = load i32, ptr %220, align 4, !tbaa !60
  switch i32 %221, label %254 [
    i32 7, label %222
    i32 0, label %226
    i32 5, label %230
    i32 6, label %234
    i32 1, label %238
    i32 2, label %242
    i32 3, label %246
    i32 4, label %250
  ]

222:                                              ; preds = %219
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %21) #6
  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) %21, ptr noundef nonnull @.str.39, ptr noundef nonnull align 1 dereferenceable(1) %22)
          to label %223 unwind label %224

223:                                              ; preds = %222
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %4, ptr noundef nonnull align 8 dereferenceable(32) %21) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #6
  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
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #6
  br label %258

224:                                              ; preds = %222
  %225 = 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
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #6
  br label %355

226:                                              ; preds = %219
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %23) #6
  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) %23, ptr noundef nonnull @.str.40, ptr noundef nonnull align 1 dereferenceable(1) %24)
          to label %227 unwind label %228

227:                                              ; preds = %226
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %4, ptr noundef nonnull align 8 dereferenceable(32) %23) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #6
  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
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #6
  br label %258

228:                                              ; preds = %226
  %229 = 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
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #6
  br label %355

230:                                              ; preds = %219
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %25) #6
  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) %25, ptr noundef nonnull @.str.41, ptr noundef nonnull align 1 dereferenceable(1) %26)
          to label %231 unwind label %232

231:                                              ; preds = %230
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %4, ptr noundef nonnull align 8 dereferenceable(32) %25) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #6
  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
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #6
  br label %258

232:                                              ; preds = %230
  %233 = 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
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #6
  br label %355

234:                                              ; preds = %219
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %27) #6
  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) %27, ptr noundef nonnull @.str.42, ptr noundef nonnull align 1 dereferenceable(1) %28)
          to label %235 unwind label %236

235:                                              ; preds = %234
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %4, ptr noundef nonnull align 8 dereferenceable(32) %27) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #6
  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
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #6
  br label %258

236:                                              ; preds = %234
  %237 = 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
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #6
  br label %355

238:                                              ; preds = %219
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %29) #6
  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) %29, ptr noundef nonnull @.str.43, ptr noundef nonnull align 1 dereferenceable(1) %30)
          to label %239 unwind label %240

239:                                              ; preds = %238
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %4, ptr noundef nonnull align 8 dereferenceable(32) %29) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #6
  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
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %29) #6
  br label %258

240:                                              ; preds = %238
  %241 = 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
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %29) #6
  br label %355

242:                                              ; preds = %219
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %31) #6
  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) %31, ptr noundef nonnull @.str.44, ptr noundef nonnull align 1 dereferenceable(1) %32)
          to label %243 unwind label %244

243:                                              ; preds = %242
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %4, ptr noundef nonnull align 8 dereferenceable(32) %31) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #6
  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
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #6
  br label %258

244:                                              ; preds = %242
  %245 = 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
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #6
  br label %355

246:                                              ; preds = %219
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %33) #6
  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) %33, ptr noundef nonnull @.str.45, ptr noundef nonnull align 1 dereferenceable(1) %34)
          to label %247 unwind label %248

247:                                              ; preds = %246
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %4, ptr noundef nonnull align 8 dereferenceable(32) %33) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #6
  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
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %33) #6
  br label %258

248:                                              ; preds = %246
  %249 = 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
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %33) #6
  br label %355

250:                                              ; preds = %219
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %35) #6
  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) %35, ptr noundef nonnull @.str.46, ptr noundef nonnull align 1 dereferenceable(1) %36)
          to label %251 unwind label %252

251:                                              ; preds = %250
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %4, ptr noundef nonnull align 8 dereferenceable(32) %35) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #6
  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
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %35) #6
  br label %258

252:                                              ; preds = %250
  %253 = 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
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %35) #6
  br label %355

254:                                              ; preds = %219
  %255 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %255, ptr noundef nonnull @.str.47)
          to label %.invoke unwind label %256

256:                                              ; preds = %254
  %257 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %255) #6
  br label %355

258:                                              ; preds = %223, %227, %231, %235, %239, %243, %247, %251, %215
  %259 = load i32, ptr %185, align 4, !tbaa !54
  %260 = icmp eq i32 %259, 2
  %261 = load i32, ptr %187, align 4
  %262 = icmp eq i32 %261, 2
  %or.cond322 = select i1 %260, i1 true, i1 %262
  %263 = load i32, ptr %190, align 4
  %264 = icmp eq i32 %263, 2
  %or.cond325 = select i1 %or.cond322, i1 true, i1 %264
  br i1 %or.cond325, label %265, label %285

265:                                              ; preds = %258
  %266 = getelementptr inbounds i8, ptr %127, i64 36
  %267 = load i32, ptr %266, align 4, !tbaa !61
  switch i32 %267, label %280 [
    i32 1, label %268
    i32 2, label %272
    i32 0, label %276
  ]

268:                                              ; preds = %265
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %37) #6
  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) %37, ptr noundef nonnull @.str.48, ptr noundef nonnull align 1 dereferenceable(1) %38)
          to label %269 unwind label %270

269:                                              ; preds = %268
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %4, ptr noundef nonnull align 8 dereferenceable(32) %37) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #6
  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
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %37) #6
  br label %285

270:                                              ; preds = %268
  %271 = 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
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %37) #6
  br label %355

272:                                              ; preds = %265
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %39) #6
  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) %39, ptr noundef nonnull @.str.49, ptr noundef nonnull align 1 dereferenceable(1) %40)
          to label %273 unwind label %274

273:                                              ; preds = %272
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %4, ptr noundef nonnull align 8 dereferenceable(32) %39) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #6
  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
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %39) #6
  br label %285

274:                                              ; preds = %272
  %275 = 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
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %39) #6
  br label %355

276:                                              ; preds = %265
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %41) #6
  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) %41, ptr noundef nonnull @.str.50, ptr noundef nonnull align 1 dereferenceable(1) %42)
          to label %277 unwind label %278

277:                                              ; preds = %276
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %4, ptr noundef nonnull align 8 dereferenceable(32) %41) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #6
  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
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %41) #6
  br label %285

278:                                              ; preds = %276
  %279 = 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
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %41) #6
  br label %355

280:                                              ; preds = %265
  %281 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %281, ptr noundef nonnull @.str.51)
          to label %.invoke unwind label %283

.invoke:                                          ; preds = %178, %280, %254
  %282 = phi ptr [ %255, %254 ], [ %281, %280 ], [ %179, %178 ]
  invoke void @__cxa_throw(ptr nonnull %282, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
          to label %.cont unwind label %182

.cont:                                            ; preds = %.invoke
  unreachable

283:                                              ; preds = %280
  %284 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %281) #6
  br label %355

285:                                              ; preds = %258, %269, %273, %277
  %286 = getelementptr inbounds i8, ptr %127, i64 102
  %287 = load i8, ptr %286, align 2, !tbaa !62, !range !58, !noundef !59
  %288 = trunc nuw i8 %287 to i1
  br i1 %288, label %289, label %294

289:                                              ; preds = %285
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %43) #6
  %290 = getelementptr inbounds i8, ptr %127, i64 48
  invoke void @_ZN11spirv_cross4joinIJRA16_KcRiRA2_S1_EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %43, ptr noundef nonnull align 1 dereferenceable(16) @.str.52, ptr noundef nonnull align 4 dereferenceable(4) %290, ptr noundef nonnull align 1 dereferenceable(2) @.str.53)
          to label %291 unwind label %292

291:                                              ; preds = %289
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %4, ptr noundef nonnull align 8 dereferenceable(32) %43) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %43) #6
  br label %294

292:                                              ; preds = %289
  %293 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %43) #6
  br label %355

294:                                              ; preds = %291, %285
  %295 = getelementptr inbounds i8, ptr %127, i64 101
  %296 = load i8, ptr %295, align 1, !tbaa !63, !range !58, !noundef !59
  %297 = trunc nuw i8 %296 to i1
  br i1 %297, label %298, label %314

298:                                              ; preds = %294
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %44) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %45) #6
  %299 = getelementptr inbounds i8, ptr %127, i64 40
  %300 = load float, ptr %299, align 4, !tbaa !64
  invoke void @_ZNK11spirv_cross12CompilerGLSL12format_floatB5cxx11Ef(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %45, ptr noundef nonnull align 8 dereferenceable(9848) %0, float noundef %300)
          to label %301 unwind label %306

301:                                              ; preds = %298
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %46) #6
  %302 = getelementptr inbounds i8, ptr %127, i64 44
  %303 = load float, ptr %302, align 4, !tbaa !65
  invoke void @_ZNK11spirv_cross12CompilerGLSL12format_floatB5cxx11Ef(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %46, ptr noundef nonnull align 8 dereferenceable(9848) %0, float noundef %303)
          to label %304 unwind label %308

304:                                              ; preds = %301
  invoke void @_ZN11spirv_cross4joinIJRA11_KcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA3_S1_S9_RA2_S1_EEES9_DpOT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %44, ptr noundef nonnull align 1 dereferenceable(11) @.str.54, ptr noundef nonnull align 8 dereferenceable(32) %45, ptr noundef nonnull align 1 dereferenceable(3) @.str.55, ptr noundef nonnull align 8 dereferenceable(32) %46, ptr noundef nonnull align 1 dereferenceable(2) @.str.53)
          to label %305 unwind label %310

305:                                              ; preds = %304
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %4, ptr noundef nonnull align 8 dereferenceable(32) %44) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %46) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %45) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %44) #6
  br label %314

306:                                              ; preds = %298
  %307 = landingpad { ptr, i32 }
          cleanup
  br label %313

308:                                              ; preds = %301
  %309 = landingpad { ptr, i32 }
          cleanup
  br label %312

310:                                              ; preds = %304
  %311 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #6
  br label %312

312:                                              ; preds = %310, %308
  %.pn308 = phi { ptr, i32 } [ %311, %310 ], [ %309, %308 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %46) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #6
  br label %313

313:                                              ; preds = %312, %306
  %.pn308.pn = phi { ptr, i32 } [ %.pn308, %312 ], [ %307, %306 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %45) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %44) #6
  br label %355

314:                                              ; preds = %305, %294
  %315 = call noundef zeroext i1 @_ZNK11spirv_cross10VectorViewINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %4) #6
  br i1 %315, label %316, label %332

316:                                              ; preds = %314
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %47) #6
  %317 = load i32, ptr %133, align 8, !tbaa !23
  %318 = icmp eq i32 %317, 17
  %319 = load i32, ptr %127, align 4, !tbaa !5
  br i1 %318, label %320, label %321

320:                                              ; preds = %316
  invoke void @_ZN11spirv_cross11CompilerMSL21to_sampler_expressionB5cxx11Ej(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %47, ptr noundef nonnull align 8 dereferenceable(12482) %0, i32 noundef %319)
          to label %325 unwind label %327

321:                                              ; preds = %316
  %322 = load ptr, ptr %0, align 8, !tbaa !66
  %323 = getelementptr inbounds i8, ptr %322, i64 48
  %324 = load ptr, ptr %323, align 8
  invoke void %324(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %47, ptr noundef nonnull align 8 dereferenceable(12482) %0, i32 noundef %319, i1 noundef zeroext true)
          to label %325 unwind label %327

325:                                              ; preds = %321, %320
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA19_KcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(19) @.str.56, ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef nonnull align 1 dereferenceable(2) @.str.57)
          to label %326 unwind label %329

326:                                              ; preds = %325
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %47) #6
  br label %352

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

329:                                              ; preds = %325
  %330 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #6
  br label %331

331:                                              ; preds = %329, %327
  %.pn314 = phi { ptr, i32 } [ %330, %329 ], [ %328, %327 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %47) #6
  br label %355

332:                                              ; preds = %314
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %48) #6
  %333 = load i32, ptr %133, align 8, !tbaa !23
  %334 = icmp eq i32 %333, 17
  %335 = load i32, ptr %127, align 4, !tbaa !5
  br i1 %334, label %336, label %337

336:                                              ; preds = %332
  invoke void @_ZN11spirv_cross11CompilerMSL21to_sampler_expressionB5cxx11Ej(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %48, ptr noundef nonnull align 8 dereferenceable(12482) %0, i32 noundef %335)
          to label %341 unwind label %344

337:                                              ; preds = %332
  %338 = load ptr, ptr %0, align 8, !tbaa !66
  %339 = getelementptr inbounds i8, ptr %338, i64 48
  %340 = load ptr, ptr %339, align 8
  invoke void %340(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %48, ptr noundef nonnull align 8 dereferenceable(12482) %0, i32 noundef %335, i1 noundef zeroext true)
          to label %341 unwind label %344

341:                                              ; preds = %337, %336
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %49) #6
  invoke void @_ZN11spirv_cross5mergeERKNS_11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EEEPKc(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %49, ptr noundef nonnull align 8 dereferenceable(280) %4, ptr noundef nonnull @.str.55)
          to label %342 unwind label %346

342:                                              ; preds = %341
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA19_KcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_S2_SA_RA3_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(19) @.str.56, ptr noundef nonnull align 8 dereferenceable(32) %48, ptr noundef nonnull align 1 dereferenceable(2) @.str.58, ptr noundef nonnull align 8 dereferenceable(32) %49, ptr noundef nonnull align 1 dereferenceable(3) @.str.59)
          to label %343 unwind label %348

343:                                              ; preds = %342
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %49) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %48) #6
  br label %352

344:                                              ; preds = %337, %336
  %345 = landingpad { ptr, i32 }
          cleanup
  br label %351

346:                                              ; preds = %341
  %347 = landingpad { ptr, i32 }
          cleanup
  br label %350

348:                                              ; preds = %342
  %349 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #6
  br label %350

350:                                              ; preds = %348, %346
  %.pn311 = phi { ptr, i32 } [ %349, %348 ], [ %347, %346 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %49) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #6
  br label %351

351:                                              ; preds = %350, %344
  %.pn311.pn = phi { ptr, i32 } [ %.pn311, %350 ], [ %345, %344 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %48) #6
  br label %355

352:                                              ; preds = %343, %326
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(280) %4) #6
  call void @llvm.lifetime.end.p0(i64 280, ptr nonnull %4) #6
  %353 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIKjN11spirv_cross19MSLConstexprSamplerEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %2) #6
  %354 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKjN11spirv_cross19MSLConstexprSamplerEEES7_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %3) #6
  br i1 %354, label %.lr.ph, label %._crit_edge

355:                                              ; preds = %351, %331, %313, %292, %283, %278, %274, %270, %256, %252, %248, %244, %240, %236, %232, %228, %224, %213, %207, %201, %196, %182, %180, %176, %172, %165, %159, %154, %143
  %.pn316 = phi { ptr, i32 } [ %183, %182 ], [ %181, %180 ], [ %257, %256 ], [ %284, %283 ], [ %.pn314, %331 ], [ %.pn311.pn, %351 ], [ %.pn308.pn, %313 ], [ %293, %292 ], [ %279, %278 ], [ %275, %274 ], [ %271, %270 ], [ %253, %252 ], [ %249, %248 ], [ %245, %244 ], [ %241, %240 ], [ %237, %236 ], [ %233, %232 ], [ %229, %228 ], [ %225, %224 ], [ %197, %196 ], [ %214, %213 ], [ %208, %207 ], [ %202, %201 ], [ %177, %176 ], [ %173, %172 ], [ %155, %154 ], [ %166, %165 ], [ %160, %159 ], [ %144, %143 ]
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(280) %4) #6
  call void @llvm.lifetime.end.p0(i64 280, ptr nonnull %4) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #6
  br label %829

._crit_edge354:                                   ; preds = %555, %._crit_edge
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %50) #6
  %356 = getelementptr inbounds i8, ptr %0, i64 12192
  %357 = call noundef ptr @_ZN11spirv_cross10VectorViewIPNS_12SPIRVariableEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %356) #6
  %358 = call noundef ptr @_ZN11spirv_cross10VectorViewIPNS_12SPIRVariableEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %356) #6
  %.not358 = icmp eq ptr %357, %358
  br i1 %.not358, label %.critedge, label %.lr.ph362

.lr.ph362:                                        ; preds = %._crit_edge354
  %359 = getelementptr inbounds i8, ptr %0, i64 10132
  %360 = getelementptr inbounds i8, ptr %0, i64 256
  br label %.outer

.outer:                                           ; preds = %.thread, %.lr.ph362
  %.0219360.ph = phi i1 [ true, %.thread ], [ false, %.lr.ph362 ]
  %.0221359.ph = phi ptr [ %677, %.thread ], [ %357, %.lr.ph362 ]
  br label %560

361:                                              ; preds = %.lr.ph353, %555
  %362 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKN11spirv_cross14SetBindingPairES0_IjjEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %50) #6
  %363 = getelementptr inbounds i8, ptr %362, i64 8
  %364 = getelementptr inbounds i8, ptr %362, i64 12
  %365 = load i32, ptr %364, align 4, !tbaa !68
  %.not265 = icmp eq i32 %365, 0
  br i1 %.not265, label %555, label %366

366:                                              ; preds = %361
  %367 = call noundef nonnull align 8 dereferenceable(176) ptr @_ZN11spirv_cross8Compiler3getINS_12SPIRVariableEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %365)
  %368 = getelementptr inbounds i8, ptr %367, i64 8
  %369 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %368)
  %370 = call noundef nonnull align 8 dereferenceable(336) ptr @_ZN11spirv_cross8Compiler22get_variable_data_typeERKNS_12SPIRVariableE(ptr noundef nonnull align 8 dereferenceable(3176) %0, ptr noundef nonnull align 8 dereferenceable(176) %367)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %52) #6
  %371 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %368)
  %372 = load ptr, ptr %0, align 8, !tbaa !66
  %373 = getelementptr inbounds i8, ptr %372, i64 48
  %374 = load ptr, ptr %373, align 8
  call void %374(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %52, ptr noundef nonnull align 8 dereferenceable(12482) %0, i32 noundef %371, i1 noundef zeroext true)
  %.sroa.080.0.copyload = load i32, ptr %368, align 8, !tbaa !72
  %375 = invoke noundef i32 @_ZNK11spirv_cross8Compiler14get_decorationENS_7TypedIDILNS_5TypesE0EEEN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 %.sroa.080.0.copyload, i32 noundef 34)
          to label %376 unwind label %402

376:                                              ; preds = %366
  %377 = zext i32 %375 to i64
  %378 = getelementptr inbounds [8 x i32], ptr %124, i64 0, i64 %377
  %379 = load i32, ptr %378, align 4, !tbaa !72
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %53) #6
  %380 = load i32, ptr %363, align 4, !tbaa !73
  store i32 %380, ptr %53, align 4, !tbaa !72
  %381 = invoke noundef zeroext i1 @_ZNK11spirv_cross8Compiler8is_arrayERKNS_8SPIRTypeE(ptr noundef nonnull align 8 dereferenceable(3176) %0, ptr noundef nonnull align 8 dereferenceable(336) %370)
          to label %382 unwind label %404

382:                                              ; preds = %376
  br i1 %381, label %383, label %489

383:                                              ; preds = %382
  store i8 1, ptr %126, align 2, !tbaa !74
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %54) #6
  invoke void @_ZN11spirv_cross11CompilerMSL26get_argument_address_spaceB5cxx11ERKNS_12SPIRVariableE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %54, ptr noundef nonnull align 8 dereferenceable(12482) %0, ptr noundef nonnull align 8 dereferenceable(176) %367)
          to label %384 unwind label %406

384:                                              ; preds = %383
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %55) #6
  %385 = load ptr, ptr %0, align 8, !tbaa !66
  %386 = getelementptr inbounds i8, ptr %385, i64 152
  %387 = load ptr, ptr %386, align 8
  invoke void %387(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %55, ptr noundef nonnull align 8 dereferenceable(12482) %0, ptr noundef nonnull align 8 dereferenceable(336) %370, i32 noundef 0)
          to label %388 unwind label %408

388:                                              ; preds = %384
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %56) #6
  %389 = invoke noundef ptr @_ZN11spirv_cross11CompilerMSL11to_restrictEjb(ptr noundef nonnull align 8 dereferenceable(12482) %0, i32 noundef %369, i1 noundef zeroext true)
          to label %390 unwind label %410

390:                                              ; preds = %388
  store ptr %389, ptr %56, align 8, !tbaa !222
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %57) #6
  %391 = load ptr, ptr %0, align 8, !tbaa !66
  %392 = getelementptr inbounds i8, ptr %391, i64 304
  %393 = load ptr, ptr %392, align 8
  invoke void %393(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %57, ptr noundef nonnull align 8 dereferenceable(12482) %0, ptr noundef nonnull align 8 dereferenceable(336) %370, i32 noundef %369)
          to label %394 unwind label %412

394:                                              ; preds = %390
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_KcS7_RA3_S8_PS8_RS7_S7_SC_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(32) %54, ptr noundef nonnull align 1 dereferenceable(2) @.str.60, ptr noundef nonnull align 8 dereferenceable(32) %55, ptr noundef nonnull align 1 dereferenceable(3) @.str.61, ptr noundef nonnull align 8 dereferenceable(8) %56, ptr noundef nonnull align 8 dereferenceable(32) %52, ptr noundef nonnull align 8 dereferenceable(32) %57, ptr noundef nonnull align 1 dereferenceable(3) @.str.62)
          to label %395 unwind label %414

395:                                              ; preds = %394
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %57) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %56) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %55) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %54) #6
  %396 = invoke noundef i32 @_ZNK11spirv_cross11CompilerMSL23get_resource_array_sizeERKNS_8SPIRTypeEj(ptr noundef nonnull align 8 dereferenceable(12482) %0, ptr noundef nonnull align 8 dereferenceable(336) %370, i32 noundef %369)
          to label %397 unwind label %.loopexit331

397:                                              ; preds = %395
  %398 = icmp eq i32 %396, 0
  br i1 %398, label %399, label %422

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

401:                                              ; preds = %399
  invoke void @__cxa_throw(ptr nonnull %400, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
          to label %830 unwind label %.loopexit.split-lp332

402:                                              ; preds = %366
  %403 = landingpad { ptr, i32 }
          cleanup
  br label %559

404:                                              ; preds = %376
  %405 = landingpad { ptr, i32 }
          cleanup
  br label %558

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

408:                                              ; preds = %384
  %409 = landingpad { ptr, i32 }
          cleanup
  br label %418

410:                                              ; preds = %388
  %411 = landingpad { ptr, i32 }
          cleanup
  br label %417

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

414:                                              ; preds = %394
  %415 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #6
  br label %416

416:                                              ; preds = %414, %412
  %.pn279 = phi { ptr, i32 } [ %415, %414 ], [ %413, %412 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %57) #6
  br label %417

417:                                              ; preds = %416, %410
  %.pn279.pn = phi { ptr, i32 } [ %.pn279, %416 ], [ %411, %410 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %56) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #6
  br label %418

418:                                              ; preds = %417, %408
  %.pn279.pn.pn = phi { ptr, i32 } [ %.pn279.pn, %417 ], [ %409, %408 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %55) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #6
  br label %419

419:                                              ; preds = %418, %406
  %.pn279.pn.pn.pn = phi { ptr, i32 } [ %.pn279.pn.pn, %418 ], [ %407, %406 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %54) #6
  br label %558

.loopexit331:                                     ; preds = %395, %422, %424, %487
  %lpad.loopexit333 = landingpad { ptr, i32 }
          cleanup
  br label %558

.loopexit.split-lp332:                            ; preds = %401
  %lpad.loopexit.split-lp334 = landingpad { ptr, i32 }
          cleanup
  br label %558

420:                                              ; preds = %399
  %421 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %400) #6
  br label %558

422:                                              ; preds = %397
  invoke void @_ZN11spirv_cross12CompilerGLSL11begin_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848) %0)
          to label %423 unwind label %.loopexit331

423:                                              ; preds = %422
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %58) #6
  store i32 0, ptr %58, align 4, !tbaa !72
  br label %425

424:                                              ; preds = %451
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %58) #6
  invoke void @_ZN11spirv_cross12CompilerGLSL14end_scope_declEv(ptr noundef nonnull align 8 dereferenceable(9848) %0)
          to label %487 unwind label %.loopexit331

425:                                              ; preds = %423, %451
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %59) #6
  invoke void @_ZN11spirv_cross11CompilerMSL26get_argument_address_spaceB5cxx11ERKNS_12SPIRVariableE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %59, ptr noundef nonnull align 8 dereferenceable(12482) %0, ptr noundef nonnull align 8 dereferenceable(176) %367)
          to label %426 unwind label %455

426:                                              ; preds = %425
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %60) #6
  %427 = load ptr, ptr %0, align 8, !tbaa !66
  %428 = getelementptr inbounds i8, ptr %427, i64 152
  %429 = load ptr, ptr %428, align 8
  invoke void %429(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %60, ptr noundef nonnull align 8 dereferenceable(12482) %0, ptr noundef nonnull align 8 dereferenceable(336) %370, i32 noundef 0)
          to label %430 unwind label %457

430:                                              ; preds = %426
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %61) #6
  %431 = invoke noundef ptr @_ZN11spirv_cross11CompilerMSL11to_restrictEjb(ptr noundef nonnull align 8 dereferenceable(12482) %0, i32 noundef %369, i1 noundef zeroext false)
          to label %432 unwind label %459

432:                                              ; preds = %430
  store ptr %431, ptr %61, align 8, !tbaa !222
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %62) #6
  invoke void @_ZN11spirv_cross11CompilerMSL26get_argument_address_spaceB5cxx11ERKNS_12SPIRVariableE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %62, ptr noundef nonnull align 8 dereferenceable(12482) %0, ptr noundef nonnull align 8 dereferenceable(176) %367)
          to label %433 unwind label %461

433:                                              ; preds = %432
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %63) #6
  %434 = invoke noundef ptr @_ZN11spirv_cross11CompilerMSL11to_restrictEjb(ptr noundef nonnull align 8 dereferenceable(12482) %0, i32 noundef %369, i1 noundef zeroext false)
          to label %435 unwind label %463

435:                                              ; preds = %433
  store ptr %434, ptr %63, align 8, !tbaa !222
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %64) #6
  %436 = load ptr, ptr %0, align 8, !tbaa !66
  %437 = getelementptr inbounds i8, ptr %436, i64 48
  %438 = load ptr, ptr %437, align 8
  invoke void %438(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %64, ptr noundef nonnull align 8 dereferenceable(12482) %0, i32 noundef %379, i1 noundef zeroext true)
          to label %439 unwind label %465

439:                                              ; preds = %435
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %65) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %66, ptr noundef nonnull align 8 dereferenceable(32) %52)
          to label %440 unwind label %467

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

441:                                              ; preds = %440
  invoke void @_ZN11spirv_cross11CompilerMSL17ensure_valid_nameENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %65, ptr noundef nonnull align 8 dereferenceable(12482) %0, ptr noundef nonnull %66, ptr noundef nonnull %67)
          to label %442 unwind label %471

442:                                              ; preds = %441
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %69) #6
  %443 = load i32, ptr %125, align 4, !tbaa !223
  %444 = load ptr, ptr %0, align 8, !tbaa !66
  %445 = getelementptr inbounds i8, ptr %444, i64 48
  %446 = load ptr, ptr %445, align 8
  invoke void %446(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %69, ptr noundef nonnull align 8 dereferenceable(12482) %0, i32 noundef %443, i1 noundef zeroext true)
          to label %447 unwind label %473

447:                                              ; preds = %442
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %70) #6
  %448 = load i32, ptr %53, align 4, !tbaa !72
  %449 = load i32, ptr %58, align 4, !tbaa !72
  %450 = add i32 %449, %448
  store i32 %450, ptr %70, align 4, !tbaa !72
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA2_KcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES4_SA_RA3_S2_PS2_RA4_S2_SA_RA8_S2_SD_S4_SA_S4_SA_S4_RjS4_SF_SA_S4_jSF_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(2) @.str.58, ptr noundef nonnull align 8 dereferenceable(32) %59, ptr noundef nonnull align 1 dereferenceable(2) @.str.60, ptr noundef nonnull align 8 dereferenceable(32) %60, ptr noundef nonnull align 1 dereferenceable(3) @.str.61, ptr noundef nonnull align 8 dereferenceable(8) %61, ptr noundef nonnull align 1 dereferenceable(4) @.str.64, ptr noundef nonnull align 8 dereferenceable(32) %62, ptr noundef nonnull align 1 dereferenceable(8) @.str.65, ptr noundef nonnull align 8 dereferenceable(8) %63, ptr noundef nonnull align 1 dereferenceable(2) @.str.53, ptr noundef nonnull align 8 dereferenceable(32) %64, ptr noundef nonnull align 1 dereferenceable(2) @.str.66, ptr noundef nonnull align 8 dereferenceable(32) %65, ptr noundef nonnull align 1 dereferenceable(2) @.str.68, ptr noundef nonnull align 4 dereferenceable(4) %58, ptr noundef nonnull align 1 dereferenceable(2) @.str.69, ptr noundef nonnull align 1 dereferenceable(4) @.str.70, ptr noundef nonnull align 8 dereferenceable(32) %69, ptr noundef nonnull align 1 dereferenceable(2) @.str.68, ptr noundef nonnull align 4 dereferenceable(4) %70, ptr noundef nonnull align 1 dereferenceable(4) @.str.71)
          to label %451 unwind label %475

451:                                              ; preds = %447
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %70) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %69) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %68) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %65) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %64) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %63) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %62) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %61) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %60) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %59) #6
  %452 = load i32, ptr %58, align 4, !tbaa !72
  %453 = add i32 %452, 1
  store i32 %453, ptr %58, align 4, !tbaa !72
  %454 = icmp ult i32 %453, %396
  br i1 %454, label %425, label %424, !llvm.loop !224

455:                                              ; preds = %425
  %456 = landingpad { ptr, i32 }
          cleanup
  br label %486

457:                                              ; preds = %426
  %458 = landingpad { ptr, i32 }
          cleanup
  br label %485

459:                                              ; preds = %430
  %460 = landingpad { ptr, i32 }
          cleanup
  br label %484

461:                                              ; preds = %432
  %462 = landingpad { ptr, i32 }
          cleanup
  br label %483

463:                                              ; preds = %433
  %464 = landingpad { ptr, i32 }
          cleanup
  br label %482

465:                                              ; preds = %435
  %466 = landingpad { ptr, i32 }
          cleanup
  br label %481

467:                                              ; preds = %439
  %468 = landingpad { ptr, i32 }
          cleanup
  br label %480

469:                                              ; preds = %440
  %470 = landingpad { ptr, i32 }
          cleanup
  br label %479

471:                                              ; preds = %441
  %472 = landingpad { ptr, i32 }
          cleanup
  br label %478

473:                                              ; preds = %442
  %474 = landingpad { ptr, i32 }
          cleanup
  br label %477

475:                                              ; preds = %447
  %476 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %70) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #6
  br label %477

477:                                              ; preds = %475, %473
  %.pn285 = phi { ptr, i32 } [ %476, %475 ], [ %474, %473 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %69) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #6
  br label %478

478:                                              ; preds = %477, %471
  %.pn285.pn = phi { ptr, i32 } [ %.pn285, %477 ], [ %472, %471 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #6
  br label %479

479:                                              ; preds = %478, %469
  %.pn285.pn.pn = phi { ptr, i32 } [ %.pn285.pn, %478 ], [ %470, %469 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %68) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #6
  br label %480

480:                                              ; preds = %479, %467
  %.pn285.pn.pn.pn = phi { ptr, i32 } [ %.pn285.pn.pn, %479 ], [ %468, %467 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %65) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #6
  br label %481

481:                                              ; preds = %480, %465
  %.pn285.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn285.pn.pn.pn, %480 ], [ %466, %465 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %64) #6
  br label %482

482:                                              ; preds = %481, %463
  %.pn285.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn285.pn.pn.pn.pn, %481 ], [ %464, %463 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %63) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #6
  br label %483

483:                                              ; preds = %482, %461
  %.pn285.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn285.pn.pn.pn.pn.pn, %482 ], [ %462, %461 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %62) #6
  br label %484

484:                                              ; preds = %483, %459
  %.pn285.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn285.pn.pn.pn.pn.pn.pn, %483 ], [ %460, %459 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %61) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #6
  br label %485

485:                                              ; preds = %484, %457
  %.pn285.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn285.pn.pn.pn.pn.pn.pn.pn, %484 ], [ %458, %457 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %60) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #6
  br label %486

486:                                              ; preds = %485, %455
  %.pn285.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn285.pn.pn.pn.pn.pn.pn.pn.pn, %485 ], [ %456, %455 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %59) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %58) #6
  br label %558

487:                                              ; preds = %424
  invoke void @_ZN11spirv_cross12CompilerGLSL19statement_no_indentIJRA1_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(1) @.str.35)
          to label %488 unwind label %.loopexit331

488:                                              ; preds = %487
  store i8 0, ptr %126, align 2, !tbaa !74
  br label %554

489:                                              ; preds = %382
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %71) #6
  invoke void @_ZN11spirv_cross11CompilerMSL26get_argument_address_spaceB5cxx11ERKNS_12SPIRVariableE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %71, ptr noundef nonnull align 8 dereferenceable(12482) %0, ptr noundef nonnull align 8 dereferenceable(176) %367)
          to label %490 unwind label %516

490:                                              ; preds = %489
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %72) #6
  %491 = invoke noundef ptr @_ZN11spirv_cross11CompilerMSL11to_restrictEjb(ptr noundef nonnull align 8 dereferenceable(12482) %0, i32 noundef %369, i1 noundef zeroext true)
          to label %492 unwind label %518

492:                                              ; preds = %490
  store ptr %491, ptr %72, align 8, !tbaa !222
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %73) #6
  invoke void @_ZN11spirv_cross11CompilerMSL26get_argument_address_spaceB5cxx11ERKNS_12SPIRVariableE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %73, ptr noundef nonnull align 8 dereferenceable(12482) %0, ptr noundef nonnull align 8 dereferenceable(176) %367)
          to label %493 unwind label %520

493:                                              ; preds = %492
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %74) #6
  %494 = load ptr, ptr %0, align 8, !tbaa !66
  %495 = getelementptr inbounds i8, ptr %494, i64 152
  %496 = load ptr, ptr %495, align 8
  invoke void %496(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %74, ptr noundef nonnull align 8 dereferenceable(12482) %0, ptr noundef nonnull align 8 dereferenceable(336) %370, i32 noundef 0)
          to label %497 unwind label %522

497:                                              ; preds = %493
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %75) #6
  %498 = invoke noundef ptr @_ZN11spirv_cross11CompilerMSL11to_restrictEjb(ptr noundef nonnull align 8 dereferenceable(12482) %0, i32 noundef %369, i1 noundef zeroext false)
          to label %499 unwind label %524

499:                                              ; preds = %497
  store ptr %498, ptr %75, align 8, !tbaa !222
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %76) #6
  invoke void @_ZN11spirv_cross11CompilerMSL26get_argument_address_spaceB5cxx11ERKNS_12SPIRVariableE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %76, ptr noundef nonnull align 8 dereferenceable(12482) %0, ptr noundef nonnull align 8 dereferenceable(176) %367)
          to label %500 unwind label %526

500:                                              ; preds = %499
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %77) #6
  %501 = invoke noundef ptr @_ZN11spirv_cross11CompilerMSL11to_restrictEjb(ptr noundef nonnull align 8 dereferenceable(12482) %0, i32 noundef %369, i1 noundef zeroext false)
          to label %502 unwind label %528

502:                                              ; preds = %500
  store ptr %501, ptr %77, align 8, !tbaa !222
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %78) #6
  %503 = load ptr, ptr %0, align 8, !tbaa !66
  %504 = getelementptr inbounds i8, ptr %503, i64 48
  %505 = load ptr, ptr %504, align 8
  invoke void %505(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %78, ptr noundef nonnull align 8 dereferenceable(12482) %0, i32 noundef %379, i1 noundef zeroext true)
          to label %506 unwind label %530

506:                                              ; preds = %502
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %79) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %80, ptr noundef nonnull align 8 dereferenceable(32) %52)
          to label %507 unwind label %532

507:                                              ; preds = %506
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %82) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %82) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %81, ptr noundef nonnull @.str.67, ptr noundef nonnull align 1 dereferenceable(1) %82)
          to label %508 unwind label %534

508:                                              ; preds = %507
  invoke void @_ZN11spirv_cross11CompilerMSL17ensure_valid_nameENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %79, ptr noundef nonnull align 8 dereferenceable(12482) %0, ptr noundef nonnull %80, ptr noundef nonnull %81)
          to label %509 unwind label %536

509:                                              ; preds = %508
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %83) #6
  %510 = load i32, ptr %125, align 4, !tbaa !223
  %511 = load ptr, ptr %0, align 8, !tbaa !66
  %512 = getelementptr inbounds i8, ptr %511, i64 48
  %513 = load ptr, ptr %512, align 8
  invoke void %513(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %83, ptr noundef nonnull align 8 dereferenceable(12482) %0, i32 noundef %510, i1 noundef zeroext true)
          to label %514 unwind label %538

514:                                              ; preds = %509
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA8_KcPS8_RS7_RA6_S8_S7_RA2_S8_S7_RA3_S8_SB_RA4_S8_S7_SA_SB_SG_S7_SG_S7_SK_S7_SG_RjSK_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(32) %71, ptr noundef nonnull align 1 dereferenceable(8) @.str.72, ptr noundef nonnull align 8 dereferenceable(8) %72, ptr noundef nonnull align 8 dereferenceable(32) %52, ptr noundef nonnull align 1 dereferenceable(6) @.str.73, ptr noundef nonnull align 8 dereferenceable(32) %73, ptr noundef nonnull align 1 dereferenceable(2) @.str.60, ptr noundef nonnull align 8 dereferenceable(32) %74, ptr noundef nonnull align 1 dereferenceable(3) @.str.61, ptr noundef nonnull align 8 dereferenceable(8) %75, ptr noundef nonnull align 1 dereferenceable(4) @.str.64, ptr noundef nonnull align 8 dereferenceable(32) %76, ptr noundef nonnull align 1 dereferenceable(8) @.str.65, ptr noundef nonnull align 8 dereferenceable(8) %77, ptr noundef nonnull align 1 dereferenceable(2) @.str.53, ptr noundef nonnull align 8 dereferenceable(32) %78, ptr noundef nonnull align 1 dereferenceable(2) @.str.66, ptr noundef nonnull align 8 dereferenceable(32) %79, ptr noundef nonnull align 1 dereferenceable(4) @.str.70, ptr noundef nonnull align 8 dereferenceable(32) %83, ptr noundef nonnull align 1 dereferenceable(2) @.str.68, ptr noundef nonnull align 4 dereferenceable(4) %53, ptr noundef nonnull align 1 dereferenceable(4) @.str.74)
          to label %515 unwind label %540

515:                                              ; preds = %514
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %83) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %83) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %79) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %82) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %82) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %80) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %79) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %78) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %78) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %77) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %76) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %75) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %74) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %74) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %73) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %73) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %72) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %71) #6
  br label %554

516:                                              ; preds = %489
  %517 = landingpad { ptr, i32 }
          cleanup
  br label %553

518:                                              ; preds = %490
  %519 = landingpad { ptr, i32 }
          cleanup
  br label %552

520:                                              ; preds = %492
  %521 = landingpad { ptr, i32 }
          cleanup
  br label %551

522:                                              ; preds = %493
  %523 = landingpad { ptr, i32 }
          cleanup
  br label %550

524:                                              ; preds = %497
  %525 = landingpad { ptr, i32 }
          cleanup
  br label %549

526:                                              ; preds = %499
  %527 = landingpad { ptr, i32 }
          cleanup
  br label %548

528:                                              ; preds = %500
  %529 = landingpad { ptr, i32 }
          cleanup
  br label %547

530:                                              ; preds = %502
  %531 = landingpad { ptr, i32 }
          cleanup
  br label %546

532:                                              ; preds = %506
  %533 = landingpad { ptr, i32 }
          cleanup
  br label %545

534:                                              ; preds = %507
  %535 = landingpad { ptr, i32 }
          cleanup
  br label %544

536:                                              ; preds = %508
  %537 = landingpad { ptr, i32 }
          cleanup
  br label %543

538:                                              ; preds = %509
  %539 = landingpad { ptr, i32 }
          cleanup
  br label %542

540:                                              ; preds = %514
  %541 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %83) #6
  br label %542

542:                                              ; preds = %540, %538
  %.pn266 = phi { ptr, i32 } [ %541, %540 ], [ %539, %538 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %83) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %79) #6
  br label %543

543:                                              ; preds = %542, %536
  %.pn266.pn = phi { ptr, i32 } [ %.pn266, %542 ], [ %537, %536 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #6
  br label %544

544:                                              ; preds = %543, %534
  %.pn266.pn.pn = phi { ptr, i32 } [ %.pn266.pn, %543 ], [ %535, %534 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %82) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %82) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %80) #6
  br label %545

545:                                              ; preds = %544, %532
  %.pn266.pn.pn.pn = phi { ptr, i32 } [ %.pn266.pn.pn, %544 ], [ %533, %532 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %79) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %78) #6
  br label %546

546:                                              ; preds = %545, %530
  %.pn266.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn266.pn.pn.pn, %545 ], [ %531, %530 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %78) #6
  br label %547

547:                                              ; preds = %546, %528
  %.pn266.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn266.pn.pn.pn.pn, %546 ], [ %529, %528 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %77) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #6
  br label %548

548:                                              ; preds = %547, %526
  %.pn266.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn266.pn.pn.pn.pn.pn, %547 ], [ %527, %526 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %76) #6
  br label %549

549:                                              ; preds = %548, %524
  %.pn266.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn266.pn.pn.pn.pn.pn.pn, %548 ], [ %525, %524 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %75) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %74) #6
  br label %550

550:                                              ; preds = %549, %522
  %.pn266.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn266.pn.pn.pn.pn.pn.pn.pn, %549 ], [ %523, %522 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %74) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %73) #6
  br label %551

551:                                              ; preds = %550, %520
  %.pn266.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn266.pn.pn.pn.pn.pn.pn.pn.pn, %550 ], [ %521, %520 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %73) #6
  br label %552

552:                                              ; preds = %551, %518
  %.pn266.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn266.pn.pn.pn.pn.pn.pn.pn.pn.pn, %551 ], [ %519, %518 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %72) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #6
  br label %553

553:                                              ; preds = %552, %516
  %.pn266.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn266.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %552 ], [ %517, %516 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %71) #6
  br label %558

554:                                              ; preds = %515, %488
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %53) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %52) #6
  br label %555

555:                                              ; preds = %361, %554
  %556 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIKN11spirv_cross14SetBindingPairES0_IjjEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %50) #6
  %557 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKN11spirv_cross14SetBindingPairES0_IjjEEES8_(ptr noundef nonnull align 8 dereferenceable(8) %50, ptr noundef nonnull align 8 dereferenceable(8) %51) #6
  br i1 %557, label %361, label %._crit_edge354

558:                                              ; preds = %.loopexit331, %.loopexit.split-lp332, %420, %486, %553, %419, %404
  %.pn296.pn = phi { ptr, i32 } [ %.pn279.pn.pn.pn, %419 ], [ %.pn266.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %553 ], [ %405, %404 ], [ %421, %420 ], [ %.pn285.pn.pn.pn.pn.pn.pn.pn.pn.pn, %486 ], [ %lpad.loopexit333, %.loopexit331 ], [ %lpad.loopexit.split-lp334, %.loopexit.split-lp332 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %53) #6
  br label %559

559:                                              ; preds = %558, %402
  %.pn296.pn.pn = phi { ptr, i32 } [ %.pn296.pn, %558 ], [ %403, %402 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %52) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %50) #6
  br label %829

._crit_edge363:                                   ; preds = %675
  br i1 %.0219360.ph, label %._crit_edge363.thread, label %.critedge

560:                                              ; preds = %.outer, %675
  %.0221359 = phi ptr [ %676, %675 ], [ %.0221359.ph, %.outer ]
  %561 = load ptr, ptr %.0221359, align 8, !tbaa !222
  %562 = call noundef nonnull align 8 dereferenceable(336) ptr @_ZN11spirv_cross8Compiler22get_variable_data_typeERKNS_12SPIRVariableE(ptr noundef nonnull align 8 dereferenceable(3176) %0, ptr noundef nonnull align 8 dereferenceable(176) %561)
  %563 = call noundef nonnull align 8 dereferenceable(336) ptr @_ZN11spirv_cross8Compiler25get_variable_element_typeERKNS_12SPIRVariableE(ptr noundef nonnull align 8 dereferenceable(3176) %0, ptr noundef nonnull align 8 dereferenceable(176) %561)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %84) #6
  %564 = getelementptr inbounds i8, ptr %561, i64 8
  %565 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %564)
  %566 = load ptr, ptr %0, align 8, !tbaa !66
  %567 = getelementptr inbounds i8, ptr %566, i64 48
  %568 = load ptr, ptr %567, align 8
  call void %568(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %84, ptr noundef nonnull align 8 dereferenceable(12482) %0, i32 noundef %565, i1 noundef zeroext true)
  %569 = invoke noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL25is_var_runtime_size_arrayERKNS_12SPIRVariableE(ptr noundef nonnull align 8 dereferenceable(12482) %0, ptr noundef nonnull align 8 dereferenceable(176) %561)
          to label %570 unwind label %.loopexit

570:                                              ; preds = %560
  br i1 %569, label %571, label %638

571:                                              ; preds = %570
  %572 = load i32, ptr %359, align 4, !tbaa !226
  %573 = icmp slt i32 %572, 1
  br i1 %573, label %574, label %579

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

576:                                              ; preds = %574
  invoke void @__cxa_throw(ptr nonnull %575, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
          to label %830 unwind label %.loopexit.split-lp

.loopexit:                                        ; preds = %560, %653
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %678

.loopexit.split-lp:                               ; preds = %576
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %678

577:                                              ; preds = %574
  %578 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %575) #6
  br label %678

579:                                              ; preds = %571
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %85) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %85) #6
  %.sroa.0.0.copyload = load i32, ptr %564, align 8, !tbaa !72
  %580 = invoke noundef i32 @_ZNK11spirv_cross8Compiler14get_decorationENS_7TypedIDILNS_5TypesE0EEEN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 %.sroa.0.0.copyload, i32 noundef 34)
          to label %581 unwind label %588

581:                                              ; preds = %579
  %582 = call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL33descriptor_set_is_argument_bufferEj(ptr noundef nonnull align 8 dereferenceable(12482) %0, i32 noundef %580)
  br i1 %582, label %583, label %590

583:                                              ; preds = %581
  %584 = invoke noundef nonnull align 8 dereferenceable(488) ptr @_ZNSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE0EEENS0_4MetaESt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S4_EEEixERSA_(ptr noundef nonnull align 8 dereferenceable(56) %360, ptr noundef nonnull align 4 dereferenceable(4) %564)
          to label %585 unwind label %588

585:                                              ; preds = %583
  %586 = getelementptr inbounds i8, ptr %584, i64 32
  %587 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %85, ptr noundef nonnull align 8 dereferenceable(32) %586)
          to label %595 unwind label %588

588:                                              ; preds = %616, %585, %583, %579
  %589 = landingpad { ptr, i32 }
          cleanup
  br label %637

590:                                              ; preds = %581
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %86) #6
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %86, ptr noundef nonnull align 8 dereferenceable(32) %84, ptr noundef nonnull @.str.76)
          to label %591 unwind label %593

591:                                              ; preds = %590
  %592 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %85, ptr noundef nonnull align 8 dereferenceable(32) %86) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %86) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %86) #6
  br label %595

593:                                              ; preds = %590
  %594 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %86) #6
  br label %637

595:                                              ; preds = %585, %591
  %596 = getelementptr inbounds i8, ptr %562, i64 16
  %597 = load i32, ptr %596, align 8, !tbaa !23
  switch i32 %597, label %.thread [
    i32 16, label %598
    i32 18, label %598
    i32 19, label %598
    i32 17, label %610
    i32 15, label %622
  ]

598:                                              ; preds = %595, %595, %595
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %87) #6
  %599 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %564)
  %600 = load ptr, ptr %0, align 8, !tbaa !66
  %601 = getelementptr inbounds i8, ptr %600, i64 152
  %602 = load ptr, ptr %601, align 8
  invoke void %602(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %87, ptr noundef nonnull align 8 dereferenceable(12482) %0, ptr noundef nonnull align 8 dereferenceable(336) %563, i32 noundef %599)
          to label %603 unwind label %605

603:                                              ; preds = %598
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA20_KcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA3_S2_RKSA_SC_RSA_SC_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(20) @.str.77, ptr noundef nonnull align 8 dereferenceable(32) %87, ptr noundef nonnull align 1 dereferenceable(3) @.str.78, ptr noundef nonnull align 8 dereferenceable(32) %84, ptr noundef nonnull align 1 dereferenceable(3) @.str.79, ptr noundef nonnull align 8 dereferenceable(32) %85, ptr noundef nonnull align 1 dereferenceable(3) @.str.80)
          to label %604 unwind label %607

604:                                              ; preds = %603
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %87) #6
  br label %.thread

605:                                              ; preds = %598
  %606 = landingpad { ptr, i32 }
          cleanup
  br label %609

607:                                              ; preds = %603
  %608 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #6
  br label %609

609:                                              ; preds = %607, %605
  %.pn259 = phi { ptr, i32 } [ %608, %607 ], [ %606, %605 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %87) #6
  br label %637

610:                                              ; preds = %595
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %88) #6
  %611 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %564)
  %612 = load ptr, ptr %0, align 8, !tbaa !66
  %613 = getelementptr inbounds i8, ptr %612, i64 152
  %614 = load ptr, ptr %613, align 8
  invoke void %614(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %88, ptr noundef nonnull align 8 dereferenceable(12482) %0, ptr noundef nonnull align 8 dereferenceable(336) %563, i32 noundef %611)
          to label %615 unwind label %617

615:                                              ; preds = %610
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA20_KcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA3_S2_RKSA_SC_RSA_SC_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(20) @.str.77, ptr noundef nonnull align 8 dereferenceable(32) %88, ptr noundef nonnull align 1 dereferenceable(3) @.str.78, ptr noundef nonnull align 8 dereferenceable(32) %84, ptr noundef nonnull align 1 dereferenceable(3) @.str.79, ptr noundef nonnull align 8 dereferenceable(32) %85, ptr noundef nonnull align 1 dereferenceable(3) @.str.80)
          to label %616 unwind label %619

616:                                              ; preds = %615
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %88) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %88) #6
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA29_KcRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA8_S2_SC_RA9_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(29) @.str.81, ptr noundef nonnull align 8 dereferenceable(32) %84, ptr noundef nonnull align 1 dereferenceable(8) @.str.82, ptr noundef nonnull align 8 dereferenceable(32) %84, ptr noundef nonnull align 1 dereferenceable(9) @.str.83)
          to label %.thread unwind label %588

617:                                              ; preds = %610
  %618 = landingpad { ptr, i32 }
          cleanup
  br label %621

619:                                              ; preds = %615
  %620 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %88) #6
  br label %621

621:                                              ; preds = %619, %617
  %.pn257 = phi { ptr, i32 } [ %620, %619 ], [ %618, %617 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %88) #6
  br label %637

622:                                              ; preds = %595
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %89) #6
  invoke void @_ZN11spirv_cross11CompilerMSL26get_argument_address_spaceB5cxx11ERKNS_12SPIRVariableE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %89, ptr noundef nonnull align 8 dereferenceable(12482) %0, ptr noundef nonnull align 8 dereferenceable(176) %561)
          to label %623 unwind label %629

623:                                              ; preds = %622
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %90) #6
  %624 = load ptr, ptr %0, align 8, !tbaa !66
  %625 = getelementptr inbounds i8, ptr %624, i64 152
  %626 = load ptr, ptr %625, align 8
  invoke void %626(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %90, ptr noundef nonnull align 8 dereferenceable(12482) %0, ptr noundef nonnull align 8 dereferenceable(336) %563, i32 noundef 0)
          to label %627 unwind label %631

627:                                              ; preds = %623
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA20_KcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_S2_SA_RA4_S2_RKSA_RA3_S2_RSA_SI_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(20) @.str.77, ptr noundef nonnull align 8 dereferenceable(32) %89, ptr noundef nonnull align 1 dereferenceable(2) @.str.60, ptr noundef nonnull align 8 dereferenceable(32) %90, ptr noundef nonnull align 1 dereferenceable(4) @.str.84, ptr noundef nonnull align 8 dereferenceable(32) %84, ptr noundef nonnull align 1 dereferenceable(3) @.str.79, ptr noundef nonnull align 8 dereferenceable(32) %85, ptr noundef nonnull align 1 dereferenceable(3) @.str.80)
          to label %628 unwind label %633

628:                                              ; preds = %627
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %90) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %90) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %89) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %89) #6
  br label %.thread

629:                                              ; preds = %622
  %630 = landingpad { ptr, i32 }
          cleanup
  br label %636

631:                                              ; preds = %623
  %632 = landingpad { ptr, i32 }
          cleanup
  br label %635

633:                                              ; preds = %627
  %634 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %90) #6
  br label %635

635:                                              ; preds = %633, %631
  %.pn254 = phi { ptr, i32 } [ %634, %633 ], [ %632, %631 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %90) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %89) #6
  br label %636

636:                                              ; preds = %635, %629
  %.pn254.pn = phi { ptr, i32 } [ %.pn254, %635 ], [ %630, %629 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %89) #6
  br label %637

637:                                              ; preds = %636, %621, %609, %593, %588
  %.pn254.pn.pn = phi { ptr, i32 } [ %.pn254.pn, %636 ], [ %589, %588 ], [ %.pn257, %621 ], [ %.pn259, %609 ], [ %594, %593 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %85) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %85) #6
  br label %678

638:                                              ; preds = %570
  %639 = getelementptr inbounds i8, ptr %562, i64 32
  %640 = call noundef zeroext i1 @_ZNK11spirv_cross10VectorViewIjE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %639) #6
  %641 = getelementptr inbounds i8, ptr %562, i64 16
  %642 = load i32, ptr %641, align 8
  %643 = icmp ne i32 %642, 15
  %or.cond329.not = select i1 %640, i1 true, i1 %643
  br i1 %or.cond329.not, label %675, label %644

644:                                              ; preds = %638
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %91) #6
  invoke void @_ZN11spirv_cross11CompilerMSL26get_argument_address_spaceB5cxx11ERKNS_12SPIRVariableE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %91, ptr noundef nonnull align 8 dereferenceable(12482) %0, ptr noundef nonnull align 8 dereferenceable(176) %561)
          to label %645 unwind label %658

645:                                              ; preds = %644
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %92) #6
  %646 = load ptr, ptr %0, align 8, !tbaa !66
  %647 = getelementptr inbounds i8, ptr %646, i64 152
  %648 = load ptr, ptr %647, align 8
  invoke void %648(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %92, ptr noundef nonnull align 8 dereferenceable(12482) %0, ptr noundef nonnull align 8 dereferenceable(336) %563, i32 noundef 0)
          to label %649 unwind label %660

649:                                              ; preds = %645
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %93) #6
  %650 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %564)
  %651 = invoke noundef ptr @_ZN11spirv_cross11CompilerMSL11to_restrictEjb(ptr noundef nonnull align 8 dereferenceable(12482) %0, i32 noundef %650, i1 noundef zeroext true)
          to label %652 unwind label %662

652:                                              ; preds = %649
  store ptr %651, ptr %93, align 8, !tbaa !222
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_KcS7_RA3_S8_PS8_RKS7_RA5_S8_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(32) %91, ptr noundef nonnull align 1 dereferenceable(2) @.str.60, ptr noundef nonnull align 8 dereferenceable(32) %92, ptr noundef nonnull align 1 dereferenceable(3) @.str.61, ptr noundef nonnull align 8 dereferenceable(8) %93, ptr noundef nonnull align 8 dereferenceable(32) %84, ptr noundef nonnull align 1 dereferenceable(5) @.str.85)
          to label %653 unwind label %662

653:                                              ; preds = %652
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %93) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %92) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %91) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %91) #6
  invoke void @_ZN11spirv_cross12CompilerGLSL11begin_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848) %0)
          to label %654 unwind label %.loopexit

654:                                              ; preds = %653
  %655 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %564)
  %656 = invoke noundef i32 @_ZNK11spirv_cross11CompilerMSL23get_resource_array_sizeERKNS_8SPIRTypeEj(ptr noundef nonnull align 8 dereferenceable(12482) %0, ptr noundef nonnull align 8 dereferenceable(336) %562, i32 noundef %655)
          to label %657 unwind label %666

657:                                              ; preds = %654
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %94) #6
  store i32 0, ptr %94, align 4, !tbaa !72
  %.not379 = icmp eq i32 %656, 0
  br i1 %.not379, label %._crit_edge357, label %.lr.ph356

._crit_edge357:                                   ; preds = %668, %657
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %94) #6
  invoke void @_ZN11spirv_cross12CompilerGLSL14end_scope_declEv(ptr noundef nonnull align 8 dereferenceable(9848) %0)
          to label %674 unwind label %666

658:                                              ; preds = %644
  %659 = landingpad { ptr, i32 }
          cleanup
  br label %665

660:                                              ; preds = %645
  %661 = landingpad { ptr, i32 }
          cleanup
  br label %664

662:                                              ; preds = %652, %649
  %663 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %93) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #6
  br label %664

664:                                              ; preds = %662, %660
  %.pn249 = phi { ptr, i32 } [ %663, %662 ], [ %661, %660 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %92) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %91) #6
  br label %665

665:                                              ; preds = %664, %658
  %.pn249.pn = phi { ptr, i32 } [ %.pn249, %664 ], [ %659, %658 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %91) #6
  br label %678

666:                                              ; preds = %674, %._crit_edge357, %654
  %667 = landingpad { ptr, i32 }
          cleanup
  br label %678

.lr.ph356:                                        ; preds = %657, %668
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_KcRjSC_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(32) %84, ptr noundef nonnull align 1 dereferenceable(2) @.str.76, ptr noundef nonnull align 4 dereferenceable(4) %94, ptr noundef nonnull align 1 dereferenceable(2) @.str.86)
          to label %668 unwind label %672

668:                                              ; preds = %.lr.ph356
  %669 = load i32, ptr %94, align 4, !tbaa !72
  %670 = add i32 %669, 1
  store i32 %670, ptr %94, align 4, !tbaa !72
  %671 = icmp ult i32 %670, %656
  br i1 %671, label %.lr.ph356, label %._crit_edge357, !llvm.loop !227

672:                                              ; preds = %.lr.ph356
  %673 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %94) #6
  br label %678

674:                                              ; preds = %._crit_edge357
  invoke void @_ZN11spirv_cross12CompilerGLSL19statement_no_indentIJRA1_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(1) @.str.35)
          to label %675 unwind label %666

675:                                              ; preds = %674, %638
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %84) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %84) #6
  %676 = getelementptr inbounds i8, ptr %.0221359, i64 8
  %.not = icmp eq ptr %676, %358
  br i1 %.not, label %._crit_edge363, label %560

.thread:                                          ; preds = %604, %628, %616, %595
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %85) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %85) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %84) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %84) #6
  %677 = getelementptr inbounds i8, ptr %.0221359, i64 8
  %.not381 = icmp eq ptr %677, %358
  br i1 %.not381, label %._crit_edge363.thread, label %.outer

678:                                              ; preds = %.loopexit, %.loopexit.split-lp, %666, %672, %665, %637, %577
  %.pn262 = phi { ptr, i32 } [ %578, %577 ], [ %.pn254.pn.pn, %637 ], [ %.pn249.pn, %665 ], [ %673, %672 ], [ %667, %666 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %84) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %84) #6
  br label %829

._crit_edge363.thread:                            ; preds = %.thread, %._crit_edge363
  call void @_ZN11spirv_cross12CompilerGLSL19statement_no_indentIJRA1_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(1) @.str.35)
  br label %.critedge

.critedge:                                        ; preds = %._crit_edge354, %._crit_edge363.thread, %._crit_edge363
  %679 = getelementptr inbounds i8, ptr %0, i64 11968
  %680 = call noundef ptr @_ZN11spirv_cross10VectorViewIjE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %679) #6
  %681 = call noundef ptr @_ZN11spirv_cross10VectorViewIjE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %679) #6
  %.not229364 = icmp eq ptr %680, %681
  br i1 %.not229364, label %._crit_edge368, label %.lr.ph367

._crit_edge368:                                   ; preds = %711, %.critedge
  call void @_ZN11spirv_cross11SmallVectorIjLm8EE5clearEv(ptr noundef nonnull align 8 dereferenceable(56) %679) #6
  %682 = getelementptr inbounds i8, ptr %0, i64 11880
  %683 = call noundef ptr @_ZN11spirv_cross10VectorViewISt4pairIjjEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %682) #6
  %684 = call noundef ptr @_ZN11spirv_cross10VectorViewISt4pairIjjEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %682) #6
  %.not230369 = icmp eq ptr %683, %684
  br i1 %.not230369, label %._crit_edge373, label %.lr.ph372

.lr.ph372:                                        ; preds = %._crit_edge368
  %685 = getelementptr inbounds i8, ptr %0, i64 11186
  %686 = getelementptr inbounds i8, ptr %0, i64 256
  br label %738

.lr.ph367:                                        ; preds = %.critedge, %711
  %.0222365 = phi ptr [ %712, %711 ], [ %680, %.critedge ]
  %687 = load i32, ptr %.0222365, align 4, !tbaa !72
  %688 = call noundef nonnull align 8 dereferenceable(176) ptr @_ZN11spirv_cross8Compiler3getINS_12SPIRVariableEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %687)
  %689 = call noundef nonnull align 8 dereferenceable(336) ptr @_ZN11spirv_cross8Compiler22get_variable_data_typeERKNS_12SPIRVariableE(ptr noundef nonnull align 8 dereferenceable(3176) %0, ptr noundef nonnull align 8 dereferenceable(176) %688)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %95) #6
  call void @_ZN11spirv_cross11CompilerMSL26get_argument_address_spaceB5cxx11ERKNS_12SPIRVariableE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %95, ptr noundef nonnull align 8 dereferenceable(12482) %0, ptr noundef nonnull align 8 dereferenceable(176) %688)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %96) #6
  %690 = load i32, ptr %.0222365, align 4, !tbaa !72
  %691 = load ptr, ptr %0, align 8, !tbaa !66
  %692 = getelementptr inbounds i8, ptr %691, i64 48
  %693 = load ptr, ptr %692, align 8
  invoke void %693(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %96, ptr noundef nonnull align 8 dereferenceable(12482) %0, i32 noundef %690, i1 noundef zeroext true)
          to label %694 unwind label %713

694:                                              ; preds = %.lr.ph367
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %97) #6
  %695 = load i32, ptr %.0222365, align 4, !tbaa !72
  call void @_ZN11spirv_cross7TypedIDILNS_5TypesE0EEC2Ej(ptr noundef nonnull align 4 dereferenceable(4) %98, i32 noundef %695)
  %696 = load i32, ptr %98, align 4
  %697 = invoke noundef i32 @_ZNK11spirv_cross8Compiler14get_decorationENS_7TypedIDILNS_5TypesE0EEEN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 %696, i32 noundef 34)
          to label %698 unwind label %715

698:                                              ; preds = %694
  store i32 %697, ptr %97, align 4, !tbaa !72
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %99) #6
  %699 = load i32, ptr %.0222365, align 4, !tbaa !72
  call void @_ZN11spirv_cross7TypedIDILNS_5TypesE0EEC2Ej(ptr noundef nonnull align 4 dereferenceable(4) %100, i32 noundef %699)
  %700 = load i32, ptr %100, align 4
  %701 = invoke noundef i32 @_ZNK11spirv_cross8Compiler14get_decorationENS_7TypedIDILNS_5TypesE0EEEN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 %700, i32 noundef 33)
          to label %702 unwind label %717

702:                                              ; preds = %698
  store i32 %701, ptr %99, align 4, !tbaa !72
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %101) #6
  invoke void @_ZN11spirv_cross4joinIJRA18_KcRjRA8_S1_S4_EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %101, ptr noundef nonnull align 1 dereferenceable(18) @.str.87, ptr noundef nonnull align 4 dereferenceable(4) %97, ptr noundef nonnull align 1 dereferenceable(8) @.str.88, ptr noundef nonnull align 4 dereferenceable(4) %99)
          to label %703 unwind label %719

703:                                              ; preds = %702
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %102) #6
  %704 = load i32, ptr %.0222365, align 4, !tbaa !72
  %705 = invoke noundef ptr @_ZN11spirv_cross11CompilerMSL11to_restrictEjb(ptr noundef nonnull align 8 dereferenceable(12482) %0, i32 noundef %704, i1 noundef zeroext true)
          to label %706 unwind label %721

706:                                              ; preds = %703
  store ptr %705, ptr %102, align 8, !tbaa !222
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %103) #6
  %707 = load ptr, ptr %0, align 8, !tbaa !66
  %708 = getelementptr inbounds i8, ptr %707, i64 152
  %709 = load ptr, ptr %708, align 8
  invoke void %709(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %103, ptr noundef nonnull align 8 dereferenceable(12482) %0, ptr noundef nonnull align 8 dereferenceable(336) %689, i32 noundef 0)
          to label %710 unwind label %723

710:                                              ; preds = %706
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA8_KcPS9_S8_RA6_S9_S8_RA2_S9_S7_RA3_S9_S8_SG_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(32) %95, ptr noundef nonnull align 1 dereferenceable(8) @.str.72, ptr noundef nonnull align 8 dereferenceable(8) %102, ptr noundef nonnull align 8 dereferenceable(32) %96, ptr noundef nonnull align 1 dereferenceable(6) @.str.73, ptr noundef nonnull align 8 dereferenceable(32) %95, ptr noundef nonnull align 1 dereferenceable(2) @.str.60, ptr noundef nonnull align 8 dereferenceable(32) %103, ptr noundef nonnull align 1 dereferenceable(3) @.str.89, ptr noundef nonnull align 8 dereferenceable(32) %101, ptr noundef nonnull align 1 dereferenceable(2) @.str.57)
          to label %711 unwind label %725

711:                                              ; preds = %710
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %103) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %103) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %102) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %101) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %101) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %99) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %97) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %96) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %96) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %95) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %95) #6
  %712 = getelementptr inbounds i8, ptr %.0222365, i64 4
  %.not229 = icmp eq ptr %712, %681
  br i1 %.not229, label %._crit_edge368, label %.lr.ph367

713:                                              ; preds = %.lr.ph367
  %714 = landingpad { ptr, i32 }
          cleanup
  br label %732

715:                                              ; preds = %694
  %716 = landingpad { ptr, i32 }
          cleanup
  br label %731

717:                                              ; preds = %698
  %718 = landingpad { ptr, i32 }
          cleanup
  br label %730

719:                                              ; preds = %702
  %720 = landingpad { ptr, i32 }
          cleanup
  br label %729

721:                                              ; preds = %703
  %722 = landingpad { ptr, i32 }
          cleanup
  br label %728

723:                                              ; preds = %706
  %724 = landingpad { ptr, i32 }
          cleanup
  br label %727

725:                                              ; preds = %710
  %726 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %103) #6
  br label %727

727:                                              ; preds = %725, %723
  %.pn242 = phi { ptr, i32 } [ %726, %725 ], [ %724, %723 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %103) #6
  br label %728

728:                                              ; preds = %727, %721
  %.pn242.pn = phi { ptr, i32 } [ %.pn242, %727 ], [ %722, %721 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %102) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %101) #6
  br label %729

729:                                              ; preds = %728, %719
  %.pn242.pn.pn = phi { ptr, i32 } [ %.pn242.pn, %728 ], [ %720, %719 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %101) #6
  br label %730

730:                                              ; preds = %729, %717
  %.pn242.pn.pn.pn = phi { ptr, i32 } [ %.pn242.pn.pn, %729 ], [ %718, %717 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %99) #6
  br label %731

731:                                              ; preds = %730, %715
  %.pn242.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn242.pn.pn.pn, %730 ], [ %716, %715 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %97) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %96) #6
  br label %732

732:                                              ; preds = %731, %713
  %.pn242.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn242.pn.pn.pn.pn, %731 ], [ %714, %713 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %96) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %95) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %95) #6
  br label %829

._crit_edge373:                                   ; preds = %812, %._crit_edge368
  %733 = getelementptr inbounds i8, ptr %0, i64 12328
  %734 = call noundef ptr @_ZN11spirv_cross10VectorViewIjE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %733) #6
  %735 = call noundef ptr @_ZN11spirv_cross10VectorViewIjE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %733) #6
  call void @_ZSt4sortIPjEvT_S1_(ptr noundef %734, ptr noundef %735)
  %736 = call noundef ptr @_ZN11spirv_cross10VectorViewIjE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %733) #6
  %737 = call noundef ptr @_ZN11spirv_cross10VectorViewIjE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %733) #6
  %.not231374 = icmp eq ptr %736, %737
  br i1 %.not231374, label %._crit_edge378, label %.lr.ph377

738:                                              ; preds = %.lr.ph372, %812
  %.0223370 = phi ptr [ %683, %.lr.ph372 ], [ %813, %812 ]
  %739 = load i32, ptr %.0223370, align 4, !tbaa !228
  %740 = getelementptr inbounds i8, ptr %.0223370, i64 4
  %741 = load i32, ptr %740, align 4, !tbaa !229
  %742 = call noundef nonnull align 8 dereferenceable(176) ptr @_ZN11spirv_cross8Compiler3getINS_12SPIRVariableEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %739)
  %743 = call noundef nonnull align 8 dereferenceable(336) ptr @_ZN11spirv_cross8Compiler22get_variable_data_typeERKNS_12SPIRVariableE(ptr noundef nonnull align 8 dereferenceable(3176) %0, ptr noundef nonnull align 8 dereferenceable(176) %742)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %104) #6
  call void @_ZN11spirv_cross11CompilerMSL26get_argument_address_spaceB5cxx11ERKNS_12SPIRVariableE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %104, ptr noundef nonnull align 8 dereferenceable(12482) %0, ptr noundef nonnull align 8 dereferenceable(176) %742)
  %744 = getelementptr inbounds i8, ptr %743, i64 32
  %745 = call noundef zeroext i1 @_ZNK11spirv_cross10VectorViewIjE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %744) #6
  br i1 %745, label %746, label %772

746:                                              ; preds = %738
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %105) #6
  %747 = invoke noundef ptr @_ZN11spirv_cross11CompilerMSL11to_restrictEjb(ptr noundef nonnull align 8 dereferenceable(12482) %0, i32 noundef %739, i1 noundef zeroext true)
          to label %748 unwind label %761

748:                                              ; preds = %746
  store ptr %747, ptr %105, align 8, !tbaa !222
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %106) #6
  %749 = load ptr, ptr %0, align 8, !tbaa !66
  %750 = getelementptr inbounds i8, ptr %749, i64 48
  %751 = load ptr, ptr %750, align 8
  invoke void %751(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %106, ptr noundef nonnull align 8 dereferenceable(12482) %0, i32 noundef %739, i1 noundef zeroext true)
          to label %752 unwind label %763

752:                                              ; preds = %748
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %107) #6
  %753 = load ptr, ptr %0, align 8, !tbaa !66
  %754 = getelementptr inbounds i8, ptr %753, i64 152
  %755 = load ptr, ptr %754, align 8
  invoke void %755(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %107, ptr noundef nonnull align 8 dereferenceable(12482) %0, ptr noundef nonnull align 8 dereferenceable(336) %743, i32 noundef 0)
          to label %756 unwind label %765

756:                                              ; preds = %752
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %108) #6
  call void @_ZN11spirv_cross7TypedIDILNS_5TypesE0EEC2Ej(ptr noundef nonnull align 4 dereferenceable(4) %108, i32 noundef %741)
  %757 = invoke noundef nonnull align 8 dereferenceable(488) ptr @_ZNSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE0EEENS0_4MetaESt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S4_EEEixEOS3_(ptr noundef nonnull align 8 dereferenceable(56) %686, ptr noundef nonnull align 4 dereferenceable(4) %108)
          to label %758 unwind label %767

758:                                              ; preds = %756
  %759 = getelementptr inbounds i8, ptr %757, i64 32
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA8_KcPS9_S7_RA5_S9_S8_RA2_S9_S7_RA3_S9_S8_SG_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(32) %104, ptr noundef nonnull align 1 dereferenceable(8) @.str.72, ptr noundef nonnull align 8 dereferenceable(8) %105, ptr noundef nonnull align 8 dereferenceable(32) %106, ptr noundef nonnull align 1 dereferenceable(5) @.str.90, ptr noundef nonnull align 8 dereferenceable(32) %104, ptr noundef nonnull align 1 dereferenceable(2) @.str.60, ptr noundef nonnull align 8 dereferenceable(32) %107, ptr noundef nonnull align 1 dereferenceable(3) @.str.91, ptr noundef nonnull align 8 dereferenceable(32) %759, ptr noundef nonnull align 1 dereferenceable(2) @.str.57)
          to label %760 unwind label %767

760:                                              ; preds = %758
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %108) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %107) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %107) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %106) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %106) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %105) #6
  br label %812

761:                                              ; preds = %746
  %762 = landingpad { ptr, i32 }
          cleanup
  br label %771

763:                                              ; preds = %748
  %764 = landingpad { ptr, i32 }
          cleanup
  br label %770

765:                                              ; preds = %752
  %766 = landingpad { ptr, i32 }
          cleanup
  br label %769

767:                                              ; preds = %758, %756
  %768 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %108) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %107) #6
  br label %769

769:                                              ; preds = %767, %765
  %.pn237 = phi { ptr, i32 } [ %768, %767 ], [ %766, %765 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %107) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %106) #6
  br label %770

770:                                              ; preds = %769, %763
  %.pn237.pn = phi { ptr, i32 } [ %.pn237, %769 ], [ %764, %763 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %106) #6
  br label %771

771:                                              ; preds = %770, %761
  %.pn237.pn.pn = phi { ptr, i32 } [ %.pn237.pn, %770 ], [ %762, %761 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %105) #6
  br label %814

772:                                              ; preds = %738
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %109) #6
  %773 = getelementptr inbounds i8, ptr %742, i64 16
  %774 = load i32, ptr %773, align 8, !tbaa !230
  %775 = invoke noundef ptr @_ZNK11spirv_cross11CompilerMSL24descriptor_address_spaceEjN3spv12StorageClassEPKc(ptr noundef nonnull align 8 dereferenceable(12482) %0, i32 noundef %739, i32 noundef %774, ptr noundef nonnull @.str.92)
          to label %776 unwind label %795

776:                                              ; preds = %772
  store ptr %775, ptr %109, align 8, !tbaa !222
  store i8 1, ptr %685, align 2, !tbaa !74
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %110) #6
  %777 = invoke noundef ptr @_ZN11spirv_cross11CompilerMSL11to_restrictEjb(ptr noundef nonnull align 8 dereferenceable(12482) %0, i32 noundef %739, i1 noundef zeroext true)
          to label %778 unwind label %797

778:                                              ; preds = %776
  store ptr %777, ptr %110, align 8, !tbaa !222
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %111) #6
  %779 = load ptr, ptr %0, align 8, !tbaa !66
  %780 = getelementptr inbounds i8, ptr %779, i64 48
  %781 = load ptr, ptr %780, align 8
  invoke void %781(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %111, ptr noundef nonnull align 8 dereferenceable(12482) %0, i32 noundef %739, i1 noundef zeroext true)
          to label %782 unwind label %799

782:                                              ; preds = %778
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %112) #6
  %783 = load ptr, ptr %0, align 8, !tbaa !66
  %784 = getelementptr inbounds i8, ptr %783, i64 152
  %785 = load ptr, ptr %784, align 8
  invoke void %785(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %112, ptr noundef nonnull align 8 dereferenceable(12482) %0, ptr noundef nonnull align 8 dereferenceable(336) %743, i32 noundef 0)
          to label %786 unwind label %801

786:                                              ; preds = %782
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %113) #6
  %787 = load ptr, ptr %0, align 8, !tbaa !66
  %788 = getelementptr inbounds i8, ptr %787, i64 304
  %789 = load ptr, ptr %788, align 8
  invoke void %789(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %113, ptr noundef nonnull align 8 dereferenceable(12482) %0, ptr noundef nonnull align 8 dereferenceable(336) %743, i32 noundef %739)
          to label %790 unwind label %803

790:                                              ; preds = %786
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %114) #6
  call void @_ZN11spirv_cross7TypedIDILNS_5TypesE0EEC2Ej(ptr noundef nonnull align 4 dereferenceable(4) %114, i32 noundef %741)
  %791 = invoke noundef nonnull align 8 dereferenceable(488) ptr @_ZNSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE0EEENS0_4MetaESt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S4_EEEixEOS3_(ptr noundef nonnull align 8 dereferenceable(56) %686, ptr noundef nonnull align 4 dereferenceable(4) %114)
          to label %792 unwind label %805

792:                                              ; preds = %790
  %793 = getelementptr inbounds i8, ptr %791, i64 32
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA8_S2_S3_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA5_S2_RSC_RA2_S2_SC_RA3_S2_S4_SE_SC_SH_SF_SH_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %109, ptr noundef nonnull align 1 dereferenceable(8) @.str.72, ptr noundef nonnull align 8 dereferenceable(8) %110, ptr noundef nonnull align 8 dereferenceable(32) %111, ptr noundef nonnull align 1 dereferenceable(5) @.str.90, ptr noundef nonnull align 8 dereferenceable(32) %104, ptr noundef nonnull align 1 dereferenceable(2) @.str.60, ptr noundef nonnull align 8 dereferenceable(32) %112, ptr noundef nonnull align 1 dereferenceable(3) @.str.61, ptr noundef nonnull align 8 dereferenceable(8) %109, ptr noundef nonnull align 1 dereferenceable(5) @.str.93, ptr noundef nonnull align 8 dereferenceable(32) %113, ptr noundef nonnull align 1 dereferenceable(2) @.str.53, ptr noundef nonnull align 8 dereferenceable(32) %793, ptr noundef nonnull align 1 dereferenceable(2) @.str.57)
          to label %794 unwind label %805

794:                                              ; preds = %792
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %114) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %113) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %113) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %112) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %112) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %111) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %111) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %110) #6
  store i8 0, ptr %685, align 2, !tbaa !74
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %109) #6
  br label %812

795:                                              ; preds = %772
  %796 = landingpad { ptr, i32 }
          cleanup
  br label %811

797:                                              ; preds = %776
  %798 = landingpad { ptr, i32 }
          cleanup
  br label %810

799:                                              ; preds = %778
  %800 = landingpad { ptr, i32 }
          cleanup
  br label %809

801:                                              ; preds = %782
  %802 = landingpad { ptr, i32 }
          cleanup
  br label %808

803:                                              ; preds = %786
  %804 = landingpad { ptr, i32 }
          cleanup
  br label %807

805:                                              ; preds = %792, %790
  %806 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %114) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %113) #6
  br label %807

807:                                              ; preds = %805, %803
  %.pn = phi { ptr, i32 } [ %806, %805 ], [ %804, %803 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %113) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %112) #6
  br label %808

808:                                              ; preds = %807, %801
  %.pn.pn = phi { ptr, i32 } [ %.pn, %807 ], [ %802, %801 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %112) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %111) #6
  br label %809

809:                                              ; preds = %808, %799
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %808 ], [ %800, %799 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %111) #6
  br label %810

810:                                              ; preds = %809, %797
  %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn, %809 ], [ %798, %797 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %110) #6
  br label %811

811:                                              ; preds = %810, %795
  %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn, %810 ], [ %796, %795 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %109) #6
  br label %814

812:                                              ; preds = %794, %760
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %104) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %104) #6
  %813 = getelementptr inbounds i8, ptr %.0223370, i64 8
  %.not230 = icmp eq ptr %813, %684
  br i1 %.not230, label %._crit_edge373, label %738

814:                                              ; preds = %811, %771
  %.pn237.pn.pn.pn = phi { ptr, i32 } [ %.pn237.pn.pn, %771 ], [ %.pn.pn.pn.pn.pn, %811 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %104) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %104) #6
  br label %829

._crit_edge378:                                   ; preds = %820, %._crit_edge373
  %815 = getelementptr inbounds i8, ptr %0, i64 8184
  %816 = load i8, ptr %815, align 8, !tbaa !233, !range !58, !noundef !59
  %817 = trunc nuw i8 %816 to i1
  br i1 %817, label %825, label %828

.lr.ph377:                                        ; preds = %._crit_edge373, %820
  %.0218375 = phi ptr [ %822, %820 ], [ %736, %._crit_edge373 ]
  %818 = load i32, ptr %.0218375, align 4, !tbaa !72
  %819 = call noundef nonnull align 8 dereferenceable(176) ptr @_ZN11spirv_cross8Compiler3getINS_12SPIRVariableEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %818)
  call void @_ZN11spirv_cross12CompilerGLSL23add_local_variable_nameEj(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %818)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %115) #6
  call void @_ZN11spirv_cross12CompilerGLSL13variable_declB5cxx11ERKNS_12SPIRVariableE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %115, ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(176) %819)
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(32) %115, ptr noundef nonnull align 1 dereferenceable(2) @.str.57)
          to label %820 unwind label %823

820:                                              ; preds = %.lr.ph377
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %115) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %115) #6
  %821 = getelementptr inbounds i8, ptr %819, i64 152
  store i8 0, ptr %821, align 8, !tbaa !234
  %822 = getelementptr inbounds i8, ptr %.0218375, i64 4
  %.not231 = icmp eq ptr %822, %737
  br i1 %.not231, label %._crit_edge378, label %.lr.ph377

823:                                              ; preds = %.lr.ph377
  %824 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %115) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %115) #6
  br label %829

825:                                              ; preds = %._crit_edge378
  %826 = call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL14is_mesh_shaderEv(ptr noundef nonnull align 8 dereferenceable(12482) %0)
  br i1 %826, label %827, label %828

827:                                              ; preds = %825
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA32_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(32) @.str.94)
  br label %828

828:                                              ; preds = %827, %825, %._crit_edge378
  ret void

829:                                              ; preds = %678, %732, %814, %823, %559, %355
  %.pn316.pn = phi { ptr, i32 } [ %.pn316, %355 ], [ %.pn296.pn.pn, %559 ], [ %.pn262, %678 ], [ %.pn242.pn.pn.pn.pn.pn, %732 ], [ %.pn237.pn.pn.pn, %814 ], [ %824, %823 ]
  resume { ptr, i32 } %.pn316.pn

830:                                              ; preds = %576, %401
  unreachable
}

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

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

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

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

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

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

declare void @_ZN11spirv_cross12CompilerGLSL17add_resource_nameEj(ptr noundef nonnull align 8 dereferenceable(9848), i32 noundef) local_unnamed_addr #4

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL22create_sampler_addressB5cxx11PKcN11spirv_cross17MSLSamplerAddressE(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef, i32 noundef) local_unnamed_addr #2

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

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

declare void @_ZNK11spirv_cross12CompilerGLSL12format_floatB5cxx11Ef(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(9848), float noundef) local_unnamed_addr #4

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJRA19_KcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 1 dereferenceable(19), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(2)) local_unnamed_addr #5 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJRA19_KcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_S2_SA_RA3_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 1 dereferenceable(19), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(2), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(3)) local_unnamed_addr #5 align 2

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_KcS7_RA3_S8_PS8_RS7_S7_SC_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(2), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(3), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(3)) local_unnamed_addr #5 align 2

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

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

declare void @_ZN11spirv_cross12CompilerGLSL11begin_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848)) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJRA2_KcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES4_SA_RA3_S2_PS2_RA4_S2_SA_RA8_S2_SD_S4_SA_S4_SA_S4_RjS4_SF_SA_S4_jSF_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 1 dereferenceable(2), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(2), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(3), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 1 dereferenceable(4), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 1 dereferenceable(2), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(2), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(2), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(2), ptr noundef nonnull align 1 dereferenceable(4), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(2), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(4)) local_unnamed_addr #5 align 2

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

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

declare void @_ZN11spirv_cross12CompilerGLSL14end_scope_declEv(ptr noundef nonnull align 8 dereferenceable(9848)) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL19statement_no_indentIJRA1_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA8_KcPS8_RS7_RA6_S8_S7_RA2_S8_S7_RA3_S8_SB_RA4_S8_S7_SA_SB_SG_S7_SG_S7_SK_S7_SG_RjSK_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(6), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(2), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(3), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 1 dereferenceable(4), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 1 dereferenceable(2), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(2), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(4), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(2), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(4)) local_unnamed_addr #5 align 2

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJRA20_KcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA3_S2_RKSA_SC_RSA_SC_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 1 dereferenceable(20), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(3), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(3), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(3)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJRA29_KcRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA8_S2_SC_RA9_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 1 dereferenceable(29), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(9)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJRA20_KcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_S2_SA_RA4_S2_RKSA_RA3_S2_RSA_SI_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 1 dereferenceable(20), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(2), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(4), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(3), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(3)) local_unnamed_addr #5 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_KcS7_RA3_S8_PS8_RKS7_RA5_S8_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(2), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(3), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(5)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_KcRjSC_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(2), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(2)) local_unnamed_addr #5 align 2

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA8_KcPS9_S8_RA6_S9_S8_RA2_S9_S7_RA3_S9_S8_SG_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(6), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(2), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(3), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(2)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN11spirv_cross11SmallVectorIjLm8EE5clearEv(ptr noundef nonnull align 8 dereferenceable(56)) local_unnamed_addr #0 align 2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA8_KcPS9_S7_RA5_S9_S8_RA2_S9_S7_RA3_S9_S8_SG_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(5), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(2), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(3), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(2)) local_unnamed_addr #5 align 2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA8_S2_S3_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA5_S2_RSC_RA2_S2_SC_RA3_S2_S4_SE_SC_SH_SF_SH_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 1 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(5), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(2), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(3), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 1 dereferenceable(5), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(2), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(2)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt4sortIPjEvT_S1_(ptr noundef, ptr noundef) local_unnamed_addr #5

declare void @_ZN11spirv_cross12CompilerGLSL23add_local_variable_nameEj(ptr noundef nonnull align 8 dereferenceable(9848), i32 noundef) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(2)) local_unnamed_addr #5 align 2

declare void @_ZN11spirv_cross12CompilerGLSL13variable_declB5cxx11ERKNS_12SPIRVariableE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 8 dereferenceable(176)) unnamed_addr #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJRA32_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 1 dereferenceable(32)) local_unnamed_addr #5 align 2

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


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