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

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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.spirv_cross::SmallVector.590" = type { %"class.spirv_cross::VectorView.591", i64, %"class.spirv_cross::AlignedBuffer.592" }
%"class.spirv_cross::VectorView.591" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.592" = type { [512 x i8] }
%class.anon.593 = type { ptr, ptr }
%class.anon.594 = type { i8 }
%"class.spirv_cross::TypedID.413" = type { i32 }
%"class.std::allocator.71" = type { i8 }
%"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.27" = type { %"class.spirv_cross::VectorView.28", i64, %"class.spirv_cross::AlignedBuffer.29" }
%"class.spirv_cross::VectorView.28" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.29" = type { [256 x i8] }
%"class.spirv_cross::SmallVector.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.Resource = type { ptr, ptr, %"class.std::__cxx11::basic_string", i32, i32, 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 }
%"struct.spirv_cross::SPIRType" = type { %"struct.spirv_cross::IVariant.base", i32, i32, i32, i32, i32, %"class.spirv_cross::SmallVector.92", %"class.spirv_cross::SmallVector.416", i32, i8, i8, i32, %"class.spirv_cross::SmallVector.227", %"class.spirv_cross::SmallVector.92", %"struct.spirv_cross::SPIRType::ImageType", %"class.spirv_cross::TypedID.414", %"class.spirv_cross::TypedID.414", %"class.std::unordered_set.165" }
%"struct.spirv_cross::IVariant.base" = type <{ ptr, %"class.spirv_cross::TypedID.413" }>
%"class.spirv_cross::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 }
%"class.spirv_cross::TypedID.414" = type { i32 }
%"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 }
%"class.spirv_cross::TypedID.415" = type { i32 }

@_ZTIN11spirv_cross13CompilerErrorE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.35 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.76 = 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.1118 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.1189 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.1293 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.1317 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.1318 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.1322 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.1337 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.1360 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.1370 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.1371 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.1372 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.1373 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.1374 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.1375 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.1376 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.1377 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.1378 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.1379 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.1380 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.1381 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.1382 = external hidden unnamed_addr constant [4 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

declare ptr @__cxa_allocate_exception(i64)

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

declare void @__cxa_free_exception(ptr)

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

declare void @__cxa_throw(ptr, ptr, ptr)

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

; Function Attrs: mustprogress 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)) #1 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 #1 align 2

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

; Function Attrs: mustprogress 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

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 nounwind uwtable
declare dso_local noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE1EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4)) #1 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

; 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 nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK11spirv_cross10VectorViewIjE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16)) #1 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN11spirv_cross11SmallVectorIjLm8EE9push_backEOj(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 4 dereferenceable(4)) #1 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

declare noundef nonnull align 8 dereferenceable(64) ptr @_ZNK11spirv_cross8ParsedIR21get_decoration_bitsetENS_7TypedIDILNS_5TypesE0EEE(ptr noundef nonnull align 8 dereferenceable(1920), i32) #5

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11spirv_cross11CompilerMSL37entry_point_args_discrete_descriptorsERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(12482) %0, ptr noundef nonnull align 8 dereferenceable(32) %1) #2 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca %"class.spirv_cross::SmallVector.590", align 8
  %6 = alloca %class.anon.593, align 8
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca %class.anon.594, align 1
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca i32, align 4
  %18 = alloca ptr, align 8
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca i32, align 4
  %21 = alloca %"class.spirv_cross::TypedID.413", align 4
  %22 = alloca i32, align 4
  %23 = alloca %"class.spirv_cross::TypedID.413", align 4
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca %"class.std::__cxx11::basic_string", align 8
  %27 = alloca %"class.std::__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 i32, align 4
  %31 = alloca i8, align 1
  %32 = alloca %"class.spirv_cross::TypedID.413", align 4
  %33 = alloca %"class.std::__cxx11::basic_string", align 8
  %34 = alloca %"class.std::__cxx11::basic_string", align 8
  %35 = alloca %"class.std::__cxx11::basic_string", align 8
  %36 = alloca %"class.std::__cxx11::basic_string", align 8
  %37 = alloca %"class.std::__cxx11::basic_string", align 8
  %38 = alloca %"class.std::__cxx11::basic_string", align 8
  %39 = alloca %"class.std::__cxx11::basic_string", align 8
  %40 = alloca %"class.std::__cxx11::basic_string", align 8
  %41 = alloca %"class.std::__cxx11::basic_string", align 8
  %42 = alloca %"class.std::__cxx11::basic_string", align 8
  %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 i32, align 4
  %51 = alloca i32, align 4
  %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 %"class.std::__cxx11::basic_string", align 8
  %59 = alloca %"class.std::__cxx11::basic_string", align 8
  %60 = alloca %"class.std::__cxx11::basic_string", align 8
  %61 = alloca %"class.std::__cxx11::basic_string", align 8
  %62 = alloca %"class.std::__cxx11::basic_string", align 8
  %63 = alloca %"class.std::__cxx11::basic_string", align 8
  %64 = alloca %"class.std::__cxx11::basic_string", align 8
  %65 = alloca i32, align 4
  %66 = alloca %"class.std::__cxx11::basic_string", align 8
  %67 = alloca %"class.std::__cxx11::basic_string", align 8
  %68 = alloca i32, align 4
  %69 = alloca %"class.std::__cxx11::basic_string", align 8
  %70 = alloca %"class.std::__cxx11::basic_string", align 8
  %71 = alloca %"class.std::__cxx11::basic_string", align 8
  %72 = alloca %"class.std::__cxx11::basic_string", align 8
  %73 = alloca %"class.std::allocator.71", align 1
  %74 = alloca %"class.std::__cxx11::basic_string", align 8
  %75 = alloca %"class.std::__cxx11::basic_string", align 8
  %76 = alloca %"class.std::__cxx11::basic_string", align 8
  %77 = alloca %"class.std::__cxx11::basic_string", align 8
  %78 = alloca %"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::__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::__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 ptr, align 8
  %91 = alloca %"class.std::__cxx11::basic_string", align 8
  %92 = alloca %"class.std::__cxx11::basic_string", align 8
  %93 = alloca %"class.std::__cxx11::basic_string", align 8
  %94 = alloca %"class.std::__cxx11::basic_string", align 8
  %95 = alloca %"class.std::__cxx11::basic_string", 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::__cxx11::basic_string", align 8
  %101 = alloca %"class.std::__cxx11::basic_string", align 8
  %102 = alloca %"class.std::__cxx11::basic_string", align 8
  %103 = alloca %"class.std::__cxx11::basic_string", align 8
  %104 = alloca %"class.std::__cxx11::basic_string", align 8
  %105 = alloca %"class.std::__cxx11::basic_string", align 8
  %106 = alloca %"class.std::__cxx11::basic_string", align 8
  %107 = alloca i32, align 4
  %108 = alloca ptr, align 8
  %109 = alloca %"class.spirv_cross::TypedID.413", align 4
  %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.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 ptr, align 8
  %119 = alloca %"class.std::__cxx11::basic_string", align 8
  %120 = alloca %"class.std::__cxx11::basic_string", align 8
  %121 = alloca %"class.std::__cxx11::basic_string", align 8
  %122 = alloca %"class.std::__cxx11::basic_string", align 8
  %123 = alloca %"class.std::__cxx11::basic_string", align 8
  %124 = alloca %"class.std::__cxx11::basic_string", align 8
  %125 = alloca %"class.std::__cxx11::basic_string", align 8
  %126 = alloca %"class.std::__cxx11::basic_string", align 8
  %127 = alloca %"class.std::__cxx11::basic_string", align 8
  %128 = alloca %"class.std::__cxx11::basic_string", align 8
  %129 = alloca %"class.std::__cxx11::basic_string", align 8
  %130 = alloca %"class.std::__cxx11::basic_string", align 8
  %131 = alloca %"class.std::__cxx11::basic_string", align 8
  %132 = alloca %"class.std::__cxx11::basic_string", align 8
  %133 = alloca %"class.std::__cxx11::basic_string", align 8
  %134 = alloca %"class.std::__cxx11::basic_string", align 8
  %135 = alloca %"class.std::__cxx11::basic_string", align 8
  %136 = alloca %"class.std::__cxx11::basic_string", align 8
  %137 = alloca %"class.std::__cxx11::basic_string", align 8
  %138 = alloca %"class.std::__cxx11::basic_string", align 8
  %139 = alloca %"class.std::__cxx11::basic_string", align 8
  %140 = alloca %"class.std::__cxx11::basic_string", align 8
  %141 = alloca %"class.std::__cxx11::basic_string", align 8
  %142 = alloca %"class.std::__cxx11::basic_string", align 8
  %143 = alloca %"class.std::__cxx11::basic_string", align 8
  %144 = alloca %"class.std::__cxx11::basic_string", align 8
  %145 = alloca %"class.std::__cxx11::basic_string", align 8
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  %146 = load ptr, ptr %3, align 8
  call void @llvm.lifetime.start.p0(i64 536, ptr %5) #8
  call void @_ZN11spirv_cross11SmallVectorIZNS_11CompilerMSL37entry_point_args_discrete_descriptorsERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE8ResourceLm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(536) %5) #8
  %147 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %146, i32 0, i32 112
  call void @_ZN11spirv_cross11SmallVectorIPNS_12SPIRVariableELm8EE5clearEv(ptr noundef nonnull align 8 dereferenceable(88) %147) #8
  %148 = getelementptr inbounds %"class.spirv_cross::Compiler", ptr %146, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 16, ptr %6) #8
  %149 = getelementptr inbounds %class.anon.593, ptr %6, i32 0, i32 0
  store ptr %146, ptr %149, align 8, !tbaa !9
  %150 = getelementptr inbounds %class.anon.593, ptr %6, i32 0, i32 1
  store ptr %5, ptr %150, align 8, !tbaa !5
  invoke void @"_ZN11spirv_cross8ParsedIR17for_each_typed_idINS_12SPIRVariableEZNS_11CompilerMSL37entry_point_args_discrete_descriptorsERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE3$_0EEvRKT0_"(ptr noundef nonnull align 8 dereferenceable(1920) %148, ptr noundef nonnull align 8 dereferenceable(16) %6)
          to label %151 unwind label %164

151:                                              ; preds = %2
  call void @llvm.lifetime.end.p0(i64 16, ptr %6) #8
  %152 = call noundef ptr @_ZN11spirv_cross10VectorViewIZNS_11CompilerMSL37entry_point_args_discrete_descriptorsERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE8ResourceE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %5) #8
  %153 = call noundef ptr @_ZN11spirv_cross10VectorViewIZNS_11CompilerMSL37entry_point_args_discrete_descriptorsERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE8ResourceE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %5) #8
  invoke void @"_ZSt11stable_sortIPZN11spirv_cross11CompilerMSL37entry_point_args_discrete_descriptorsERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE8ResourceZNS1_37entry_point_args_discrete_descriptorsES8_E3$_1EvT_SC_T0_"(ptr noundef %152, ptr noundef %153)
          to label %154 unwind label %168

154:                                              ; preds = %151
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #8
  store ptr %5, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #8
  %155 = load ptr, ptr %10, align 8, !tbaa !5
  %156 = call noundef ptr @_ZN11spirv_cross10VectorViewIZNS_11CompilerMSL37entry_point_args_discrete_descriptorsERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE8ResourceE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %155) #8
  store ptr %156, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #8
  %157 = load ptr, ptr %10, align 8, !tbaa !5
  %158 = call noundef ptr @_ZN11spirv_cross10VectorViewIZNS_11CompilerMSL37entry_point_args_discrete_descriptorsERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE8ResourceE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %157) #8
  store ptr %158, ptr %12, align 8, !tbaa !5
  br label %159

159:                                              ; preds = %1632, %154
  %160 = load ptr, ptr %11, align 8, !tbaa !5
  %161 = load ptr, ptr %12, align 8, !tbaa !5
  %162 = icmp ne ptr %160, %161
  br i1 %162, label %172, label %163

163:                                              ; preds = %159
  store i32 2, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #8
  br label %1637

164:                                              ; preds = %2
  %165 = landingpad { ptr, i32 }
          cleanup
  %166 = extractvalue { ptr, i32 } %165, 0
  store ptr %166, ptr %7, align 8
  %167 = extractvalue { ptr, i32 } %165, 1
  store i32 %167, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %6) #8
  br label %1638

168:                                              ; preds = %151
  %169 = landingpad { ptr, i32 }
          cleanup
  %170 = extractvalue { ptr, i32 } %169, 0
  store ptr %170, ptr %7, align 8
  %171 = extractvalue { ptr, i32 } %169, 1
  store i32 %171, ptr %8, align 4
  br label %1638

172:                                              ; preds = %159
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #8
  %173 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %173, ptr %14, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #8
  %174 = load ptr, ptr %14, align 8, !tbaa !5
  %175 = getelementptr inbounds %struct.Resource, ptr %174, i32 0, i32 0
  %176 = load ptr, ptr %175, align 8, !tbaa !11
  store ptr %176, ptr %15, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #8
  %177 = load ptr, ptr %15, align 8, !tbaa !5
  %178 = invoke noundef nonnull align 8 dereferenceable(336) ptr @_ZN11spirv_cross8Compiler22get_variable_data_typeERKNS_12SPIRVariableE(ptr noundef nonnull align 8 dereferenceable(3176) %146, ptr noundef nonnull align 8 dereferenceable(176) %177)
          to label %179 unwind label %187

179:                                              ; preds = %172
  store ptr %178, ptr %16, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #8
  %180 = load ptr, ptr %15, align 8, !tbaa !5
  %181 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %180, i32 0, i32 1
  %182 = invoke noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %181)
          to label %183 unwind label %191

183:                                              ; preds = %179
  store i32 %182, ptr %17, align 4, !tbaa !18
  %184 = load ptr, ptr %14, align 8, !tbaa !5
  %185 = getelementptr inbounds %struct.Resource, ptr %184, i32 0, i32 3
  %186 = load i32, ptr %185, align 8, !tbaa !19
  switch i32 %186, label %1488 [
    i32 15, label %195
    i32 18, label %870
    i32 16, label %967
    i32 19, label %1317
  ]

187:                                              ; preds = %172
  %188 = landingpad { ptr, i32 }
          cleanup
  %189 = extractvalue { ptr, i32 } %188, 0
  store ptr %189, ptr %7, align 8
  %190 = extractvalue { ptr, i32 } %188, 1
  store i32 %190, ptr %8, align 4
  br label %1636

191:                                              ; preds = %1627, %1604, %1599, %1491, %1423, %1321, %1317, %970, %887, %873, %179
  %192 = landingpad { ptr, i32 }
          cleanup
  %193 = extractvalue { ptr, i32 } %192, 0
  store ptr %193, ptr %7, align 8
  %194 = extractvalue { ptr, i32 } %192, 1
  store i32 %194, ptr %8, align 4
  br label %1635

195:                                              ; preds = %183
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #8
  %196 = getelementptr inbounds %"class.spirv_cross::Compiler", ptr %146, i32 0, i32 1
  %197 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %196, i32 0, i32 3
  %198 = load ptr, ptr %16, align 8, !tbaa !5
  %199 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %198, i32 0, i32 1
  %200 = 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) %197, ptr noundef nonnull align 4 dereferenceable(4) %199)
          to label %201 unwind label %207

201:                                              ; preds = %195
  store ptr %200, ptr %18, align 8, !tbaa !5
  %202 = load ptr, ptr %18, align 8, !tbaa !5
  %203 = getelementptr inbounds %"struct.spirv_cross::Meta", ptr %202, i32 0, i32 1
  %204 = call noundef i64 @_ZNK11spirv_cross10VectorViewINS_4Meta10DecorationEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %203) #8
  %205 = icmp eq i64 %204, 0
  br i1 %205, label %206, label %211

206:                                              ; preds = %201
  store i32 4, ptr %13, align 4
  br label %868

207:                                              ; preds = %862, %839, %834, %711, %362, %358, %353, %348, %195
  %208 = landingpad { ptr, i32 }
          cleanup
  %209 = extractvalue { ptr, i32 } %208, 0
  store ptr %209, ptr %7, align 8
  %210 = extractvalue { ptr, i32 } %208, 1
  store i32 %210, ptr %8, align 4
  br label %869

211:                                              ; preds = %201
  %212 = load ptr, ptr %14, align 8, !tbaa !5
  %213 = getelementptr inbounds %struct.Resource, ptr %212, i32 0, i32 1
  %214 = load ptr, ptr %213, align 8, !tbaa !20
  %215 = icmp ne ptr %214, null
  br i1 %215, label %216, label %337

216:                                              ; preds = %211
  %217 = load ptr, ptr %14, align 8, !tbaa !5
  %218 = getelementptr inbounds %struct.Resource, ptr %217, i32 0, i32 0
  %219 = load ptr, ptr %218, align 8, !tbaa !11
  %220 = load ptr, ptr %14, align 8, !tbaa !5
  %221 = getelementptr inbounds %struct.Resource, ptr %220, i32 0, i32 1
  %222 = load ptr, ptr %221, align 8, !tbaa !20
  %223 = icmp eq ptr %219, %222
  br i1 %223, label %224, label %325

224:                                              ; preds = %216
  call void @llvm.lifetime.start.p0(i64 32, ptr %19) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #8
  %225 = load i32, ptr %17, align 4, !tbaa !18
  invoke void @_ZN11spirv_cross7TypedIDILNS_5TypesE0EEC2Ej(ptr noundef nonnull align 4 dereferenceable(4) %21, i32 noundef %225)
          to label %226 unwind label %244

226:                                              ; preds = %224
  %227 = getelementptr inbounds %"class.spirv_cross::TypedID.413", ptr %21, i32 0, i32 0
  %228 = load i32, ptr %227, align 4
  %229 = invoke noundef i32 @_ZNK11spirv_cross8Compiler14get_decorationENS_7TypedIDILNS_5TypesE0EEEN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %146, i32 %228, i32 noundef 34)
          to label %230 unwind label %244

230:                                              ; preds = %226
  store i32 %229, ptr %20, align 4, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #8
  %231 = load i32, ptr %17, align 4, !tbaa !18
  invoke void @_ZN11spirv_cross7TypedIDILNS_5TypesE0EEC2Ej(ptr noundef nonnull align 4 dereferenceable(4) %23, i32 noundef %231)
          to label %232 unwind label %248

232:                                              ; preds = %230
  %233 = getelementptr inbounds %"class.spirv_cross::TypedID.413", ptr %23, i32 0, i32 0
  %234 = load i32, ptr %233, align 4
  %235 = invoke noundef i32 @_ZNK11spirv_cross8Compiler14get_decorationENS_7TypedIDILNS_5TypesE0EEEN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %146, i32 %234, i32 noundef 33)
          to label %236 unwind label %248

236:                                              ; preds = %232
  store i32 %235, ptr %22, align 4, !tbaa !18
  invoke void @_ZN11spirv_cross4joinIJRA18_KcjRA8_S1_jEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %19, ptr noundef nonnull align 1 dereferenceable(18) @.str.87, ptr noundef nonnull align 4 dereferenceable(4) %20, ptr noundef nonnull align 1 dereferenceable(8) @.str.88, ptr noundef nonnull align 4 dereferenceable(4) %22)
          to label %237 unwind label %248

237:                                              ; preds = %236
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #8
  %238 = load ptr, ptr %4, align 8, !tbaa !5
  %239 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %238) #8
  br i1 %239, label %257, label %240

240:                                              ; preds = %237
  %241 = load ptr, ptr %4, align 8, !tbaa !5
  %242 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %241, ptr noundef @.str.55)
          to label %243 unwind label %253

243:                                              ; preds = %240
  br label %257

244:                                              ; preds = %226, %224
  %245 = landingpad { ptr, i32 }
          cleanup
  %246 = extractvalue { ptr, i32 } %245, 0
  store ptr %246, ptr %7, align 8
  %247 = extractvalue { ptr, i32 } %245, 1
  store i32 %247, ptr %8, align 4
  br label %252

248:                                              ; preds = %236, %232, %230
  %249 = landingpad { ptr, i32 }
          cleanup
  %250 = extractvalue { ptr, i32 } %249, 0
  store ptr %250, ptr %7, align 8
  %251 = extractvalue { ptr, i32 } %249, 1
  store i32 %251, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #8
  br label %252

252:                                              ; preds = %248, %244
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #8
  br label %324

253:                                              ; preds = %319, %277, %272, %240
  %254 = landingpad { ptr, i32 }
          cleanup
  %255 = extractvalue { ptr, i32 } %254, 0
  store ptr %255, ptr %7, align 8
  %256 = extractvalue { ptr, i32 } %254, 1
  store i32 %256, ptr %8, align 4
  br label %323

257:                                              ; preds = %243, %237
  call void @llvm.lifetime.start.p0(i64 32, ptr %24) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %25) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %26) #8
  %258 = load ptr, ptr %15, 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 %26, ptr noundef nonnull align 8 dereferenceable(12482) %146, ptr noundef nonnull align 8 dereferenceable(176) %258)
          to label %259 unwind label %281

259:                                              ; preds = %257
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %25, ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef @.str.1372)
          to label %260 unwind label %285

260:                                              ; preds = %259
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %24, ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull align 8 dereferenceable(32) %19)
          to label %261 unwind label %289

261:                                              ; preds = %260
  %262 = load ptr, ptr %4, align 8, !tbaa !5
  %263 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %262, ptr noundef nonnull align 8 dereferenceable(32) %24)
          to label %264 unwind label %293

264:                                              ; preds = %261
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %27) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %28) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %29) #8
  %265 = load ptr, ptr %14, align 8, !tbaa !5
  %266 = getelementptr inbounds %struct.Resource, ptr %265, i32 0, i32 4
  invoke void @_ZN11spirv_cross17convert_to_stringIjTnNSt9enable_ifIXntsr3std17is_floating_pointIT_EE5valueEiE4typeELi0EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS2_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %29, ptr noundef nonnull align 4 dereferenceable(4) %266)
          to label %267 unwind label %300

267:                                              ; preds = %264
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %28, ptr noundef @.str.1360, ptr noundef nonnull align 8 dereferenceable(32) %29)
          to label %268 unwind label %304

268:                                              ; preds = %267
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %27, ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef @.str.53)
          to label %269 unwind label %308

269:                                              ; preds = %268
  %270 = load ptr, ptr %4, align 8, !tbaa !5
  %271 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %270, ptr noundef nonnull align 8 dereferenceable(32) %27)
          to label %272 unwind label %312

272:                                              ; preds = %269
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #8
  %273 = getelementptr inbounds %"class.spirv_cross::Compiler", ptr %146, i32 0, i32 32
  %274 = invoke noundef i64 @_ZNKSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEE5countERKj(ptr noundef nonnull align 8 dereferenceable(56) %273, ptr noundef nonnull align 4 dereferenceable(4) %17)
          to label %275 unwind label %253

275:                                              ; preds = %272
  %276 = icmp ne i64 %274, 0
  br i1 %276, label %277, label %319

277:                                              ; preds = %275
  %278 = load ptr, ptr %4, align 8, !tbaa !5
  %279 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %278, ptr noundef @.str.1317)
          to label %280 unwind label %253

280:                                              ; preds = %277
  br label %319

281:                                              ; preds = %257
  %282 = landingpad { ptr, i32 }
          cleanup
  %283 = extractvalue { ptr, i32 } %282, 0
  store ptr %283, ptr %7, align 8
  %284 = extractvalue { ptr, i32 } %282, 1
  store i32 %284, ptr %8, align 4
  br label %299

285:                                              ; preds = %259
  %286 = landingpad { ptr, i32 }
          cleanup
  %287 = extractvalue { ptr, i32 } %286, 0
  store ptr %287, ptr %7, align 8
  %288 = extractvalue { ptr, i32 } %286, 1
  store i32 %288, ptr %8, align 4
  br label %298

289:                                              ; preds = %260
  %290 = landingpad { ptr, i32 }
          cleanup
  %291 = extractvalue { ptr, i32 } %290, 0
  store ptr %291, ptr %7, align 8
  %292 = extractvalue { ptr, i32 } %290, 1
  store i32 %292, ptr %8, align 4
  br label %297

293:                                              ; preds = %261
  %294 = landingpad { ptr, i32 }
          cleanup
  %295 = extractvalue { ptr, i32 } %294, 0
  store ptr %295, ptr %7, align 8
  %296 = extractvalue { ptr, i32 } %294, 1
  store i32 %296, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #8
  br label %297

297:                                              ; preds = %293, %289
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #8
  br label %298

298:                                              ; preds = %297, %285
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #8
  br label %299

299:                                              ; preds = %298, %281
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #8
  br label %323

300:                                              ; preds = %264
  %301 = landingpad { ptr, i32 }
          cleanup
  %302 = extractvalue { ptr, i32 } %301, 0
  store ptr %302, ptr %7, align 8
  %303 = extractvalue { ptr, i32 } %301, 1
  store i32 %303, ptr %8, align 4
  br label %318

304:                                              ; preds = %267
  %305 = landingpad { ptr, i32 }
          cleanup
  %306 = extractvalue { ptr, i32 } %305, 0
  store ptr %306, ptr %7, align 8
  %307 = extractvalue { ptr, i32 } %305, 1
  store i32 %307, ptr %8, align 4
  br label %317

308:                                              ; preds = %268
  %309 = landingpad { ptr, i32 }
          cleanup
  %310 = extractvalue { ptr, i32 } %309, 0
  store ptr %310, ptr %7, align 8
  %311 = extractvalue { ptr, i32 } %309, 1
  store i32 %311, ptr %8, align 4
  br label %316

312:                                              ; preds = %269
  %313 = landingpad { ptr, i32 }
          cleanup
  %314 = extractvalue { ptr, i32 } %313, 0
  store ptr %314, ptr %7, align 8
  %315 = extractvalue { ptr, i32 } %313, 1
  store i32 %315, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #8
  br label %316

316:                                              ; preds = %312, %308
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #8
  br label %317

317:                                              ; preds = %316, %304
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #8
  br label %318

318:                                              ; preds = %317, %300
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #8
  br label %323

319:                                              ; preds = %280, %275
  %320 = load ptr, ptr %4, align 8, !tbaa !5
  %321 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %320, ptr noundef @.str.1318)
          to label %322 unwind label %253

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

323:                                              ; preds = %318, %299, %253
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  br label %324

324:                                              ; preds = %323, %252
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #8
  br label %869

325:                                              ; preds = %322, %216
  %326 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %146, i32 0, i32 108
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #8
  %327 = load ptr, ptr %14, align 8, !tbaa !5
  %328 = getelementptr inbounds %struct.Resource, ptr %327, i32 0, i32 0
  %329 = load ptr, ptr %328, align 8, !tbaa !11
  %330 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %329, i32 0, i32 1
  %331 = invoke noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %330)
          to label %332 unwind label %333

332:                                              ; preds = %325
  store i32 %331, ptr %30, align 4, !tbaa !18
  call void @_ZN11spirv_cross11SmallVectorIjLm8EE9push_backEOj(ptr noundef nonnull align 8 dereferenceable(56) %326, ptr noundef nonnull align 4 dereferenceable(4) %30) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #8
  br label %867

333:                                              ; preds = %325
  %334 = landingpad { ptr, i32 }
          cleanup
  %335 = extractvalue { ptr, i32 } %334, 0
  store ptr %335, ptr %7, align 8
  %336 = extractvalue { ptr, i32 } %334, 1
  store i32 %336, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #8
  br label %869

337:                                              ; preds = %211
  %338 = load ptr, ptr %16, align 8, !tbaa !5
  %339 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %338, i32 0, i32 6
  %340 = call noundef zeroext i1 @_ZNK11spirv_cross10VectorViewIjE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %339) #8
  br i1 %340, label %708, label %341

341:                                              ; preds = %337
  %342 = load ptr, ptr %16, align 8, !tbaa !5
  %343 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %342, i32 0, i32 6
  %344 = call noundef i64 @_ZNK11spirv_cross10VectorViewIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %343) #8
  %345 = icmp ugt i64 %344, 1
  br i1 %345, label %346, label %353

346:                                              ; preds = %341
  %347 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %347, ptr noundef @.str.1373)
          to label %348 unwind label %349

348:                                              ; preds = %346
  invoke void @__cxa_throw(ptr %347, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #9
          to label %1644 unwind label %207

349:                                              ; preds = %346
  %350 = landingpad { ptr, i32 }
          cleanup
  %351 = extractvalue { ptr, i32 } %350, 0
  store ptr %351, ptr %7, align 8
  %352 = extractvalue { ptr, i32 } %350, 1
  store i32 %352, ptr %8, align 4
  call void @__cxa_free_exception(ptr %347) #8
  br label %869

353:                                              ; preds = %341
  %354 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %146, i32 0, i32 74
  store i8 1, ptr %354, align 2, !tbaa !21
  %355 = load ptr, ptr %15, align 8, !tbaa !5
  %356 = invoke noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL25is_var_runtime_size_arrayERKNS_12SPIRVariableE(ptr noundef nonnull align 8 dereferenceable(12482) %146, ptr noundef nonnull align 8 dereferenceable(176) %355)
          to label %357 unwind label %207

357:                                              ; preds = %353
  br i1 %356, label %358, label %555

358:                                              ; preds = %357
  invoke void @_ZN11spirv_cross11CompilerMSL26add_spv_func_and_recompileENS0_11SPVFuncImplE(ptr noundef nonnull align 8 dereferenceable(12482) %146, i8 noundef zeroext 70)
          to label %359 unwind label %207

359:                                              ; preds = %358
  %360 = load ptr, ptr %4, align 8, !tbaa !5
  %361 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %360) #8
  br i1 %361, label %366, label %362

362:                                              ; preds = %359
  %363 = load ptr, ptr %4, align 8, !tbaa !5
  %364 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %363, ptr noundef @.str.55)
          to label %365 unwind label %207

365:                                              ; preds = %362
  br label %366

366:                                              ; preds = %365, %359
  call void @llvm.lifetime.start.p0(i64 1, ptr %31) #8
  %367 = load ptr, ptr %16, align 8, !tbaa !5
  %368 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %367, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %32, ptr align 8 %368, i64 4, i1 false), !tbaa.struct !180
  %369 = getelementptr inbounds %"class.spirv_cross::TypedID.413", ptr %32, i32 0, i32 0
  %370 = load i32, ptr %369, align 4
  %371 = invoke noundef zeroext i1 @_ZNK11spirv_cross8Compiler14has_decorationENS_7TypedIDILNS_5TypesE0EEEN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %146, i32 %370, i32 noundef 3)
          to label %372 unwind label %402

372:                                              ; preds = %366
  %373 = zext i1 %371 to i8
  store i8 %373, ptr %31, align 1, !tbaa !181
  %374 = load ptr, ptr %15, align 8, !tbaa !5
  %375 = getelementptr inbounds %"struct.spirv_cross::SPIRVariable", ptr %374, i32 0, i32 2
  %376 = load i32, ptr %375, align 8, !tbaa !182
  %377 = icmp eq i32 %376, 12
  br i1 %377, label %381, label %378

378:                                              ; preds = %372
  %379 = load i8, ptr %31, align 1, !tbaa !181, !range !189, !noundef !190
  %380 = trunc i8 %379 to i1
  br i1 %380, label %381, label %440

381:                                              ; preds = %378, %372
  %382 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %146, i32 0, i32 37
  %383 = getelementptr inbounds %"struct.spirv_cross::CompilerMSL::Options", ptr %382, i32 0, i32 35
  %384 = load i8, ptr %383, align 4, !tbaa !191, !range !189, !noundef !190
  %385 = trunc i8 %384 to i1
  br i1 %385, label %386, label %440

386:                                              ; preds = %381
  invoke void @_ZN11spirv_cross11CompilerMSL26add_spv_func_and_recompileENS0_11SPVFuncImplE(ptr noundef nonnull align 8 dereferenceable(12482) %146, i8 noundef zeroext 69)
          to label %387 unwind label %402

387:                                              ; preds = %386
  call void @llvm.lifetime.start.p0(i64 32, ptr %33) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %34) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %35) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %36) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %37) #8
  %388 = load ptr, ptr %15, 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 %37, ptr noundef nonnull align 8 dereferenceable(12482) %146, ptr noundef nonnull align 8 dereferenceable(176) %388)
          to label %389 unwind label %406

389:                                              ; preds = %387
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %36, ptr noundef @.str.1374, ptr noundef nonnull align 8 dereferenceable(32) %37)
          to label %390 unwind label %410

390:                                              ; preds = %389
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %35, ptr noundef nonnull align 8 dereferenceable(32) %36, ptr noundef @.str.60)
          to label %391 unwind label %414

391:                                              ; preds = %390
  call void @llvm.lifetime.start.p0(i64 32, ptr %38) #8
  %392 = load ptr, ptr %16, align 8, !tbaa !5
  %393 = load ptr, ptr %146, align 8, !tbaa !192
  %394 = getelementptr inbounds ptr, ptr %393, i64 19
  %395 = load ptr, ptr %394, align 8
  invoke void %395(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %38, ptr noundef nonnull align 8 dereferenceable(12482) %146, ptr noundef nonnull align 8 dereferenceable(336) %392, i32 noundef 0)
          to label %396 unwind label %418

396:                                              ; preds = %391
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %34, ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef nonnull align 8 dereferenceable(32) %38)
          to label %397 unwind label %422

397:                                              ; preds = %396
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %33, ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef @.str.1375)
          to label %398 unwind label %426

398:                                              ; preds = %397
  %399 = load ptr, ptr %4, align 8, !tbaa !5
  %400 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %399, ptr noundef nonnull align 8 dereferenceable(32) %33)
          to label %401 unwind label %430

401:                                              ; preds = %398
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %37) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %34) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %33) #8
  br label %490

402:                                              ; preds = %550, %513, %508, %440, %386, %366
  %403 = landingpad { ptr, i32 }
          cleanup
  %404 = extractvalue { ptr, i32 } %403, 0
  store ptr %404, ptr %7, align 8
  %405 = extractvalue { ptr, i32 } %403, 1
  store i32 %405, ptr %8, align 4
  br label %554

406:                                              ; preds = %387
  %407 = landingpad { ptr, i32 }
          cleanup
  %408 = extractvalue { ptr, i32 } %407, 0
  store ptr %408, ptr %7, align 8
  %409 = extractvalue { ptr, i32 } %407, 1
  store i32 %409, ptr %8, align 4
  br label %439

410:                                              ; preds = %389
  %411 = landingpad { ptr, i32 }
          cleanup
  %412 = extractvalue { ptr, i32 } %411, 0
  store ptr %412, ptr %7, align 8
  %413 = extractvalue { ptr, i32 } %411, 1
  store i32 %413, ptr %8, align 4
  br label %438

414:                                              ; preds = %390
  %415 = landingpad { ptr, i32 }
          cleanup
  %416 = extractvalue { ptr, i32 } %415, 0
  store ptr %416, ptr %7, align 8
  %417 = extractvalue { ptr, i32 } %415, 1
  store i32 %417, ptr %8, align 4
  br label %437

418:                                              ; preds = %391
  %419 = landingpad { ptr, i32 }
          cleanup
  %420 = extractvalue { ptr, i32 } %419, 0
  store ptr %420, ptr %7, align 8
  %421 = extractvalue { ptr, i32 } %419, 1
  store i32 %421, ptr %8, align 4
  br label %436

422:                                              ; preds = %396
  %423 = landingpad { ptr, i32 }
          cleanup
  %424 = extractvalue { ptr, i32 } %423, 0
  store ptr %424, ptr %7, align 8
  %425 = extractvalue { ptr, i32 } %423, 1
  store i32 %425, ptr %8, align 4
  br label %435

426:                                              ; preds = %397
  %427 = landingpad { ptr, i32 }
          cleanup
  %428 = extractvalue { ptr, i32 } %427, 0
  store ptr %428, ptr %7, align 8
  %429 = extractvalue { ptr, i32 } %427, 1
  store i32 %429, ptr %8, align 4
  br label %434

430:                                              ; preds = %398
  %431 = landingpad { ptr, i32 }
          cleanup
  %432 = extractvalue { ptr, i32 } %431, 0
  store ptr %432, ptr %7, align 8
  %433 = extractvalue { ptr, i32 } %431, 1
  store i32 %433, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #8
  br label %434

434:                                              ; preds = %430, %426
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #8
  br label %435

435:                                              ; preds = %434, %422
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #8
  br label %436

436:                                              ; preds = %435, %418
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #8
  br label %437

437:                                              ; preds = %436, %414
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #8
  br label %438

438:                                              ; preds = %437, %410
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #8
  br label %439

439:                                              ; preds = %438, %406
  call void @llvm.lifetime.end.p0(i64 32, ptr %37) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %34) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %33) #8
  br label %554

440:                                              ; preds = %381, %378
  invoke void @_ZN11spirv_cross11CompilerMSL26add_spv_func_and_recompileENS0_11SPVFuncImplE(ptr noundef nonnull align 8 dereferenceable(12482) %146, i8 noundef zeroext 68)
          to label %441 unwind label %402

441:                                              ; preds = %440
  call void @llvm.lifetime.start.p0(i64 32, ptr %39) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %40) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %41) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %42) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %43) #8
  %442 = load ptr, ptr %15, 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 %43, ptr noundef nonnull align 8 dereferenceable(12482) %146, ptr noundef nonnull align 8 dereferenceable(176) %442)
          to label %443 unwind label %456

443:                                              ; preds = %441
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %42, ptr noundef @.str.1376, ptr noundef nonnull align 8 dereferenceable(32) %43)
          to label %444 unwind label %460

444:                                              ; preds = %443
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %41, ptr noundef nonnull align 8 dereferenceable(32) %42, ptr noundef @.str.60)
          to label %445 unwind label %464

445:                                              ; preds = %444
  call void @llvm.lifetime.start.p0(i64 32, ptr %44) #8
  %446 = load ptr, ptr %16, align 8, !tbaa !5
  %447 = load ptr, ptr %146, align 8, !tbaa !192
  %448 = getelementptr inbounds ptr, ptr %447, i64 19
  %449 = load ptr, ptr %448, align 8
  invoke void %449(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %44, ptr noundef nonnull align 8 dereferenceable(12482) %146, ptr noundef nonnull align 8 dereferenceable(336) %446, i32 noundef 0)
          to label %450 unwind label %468

450:                                              ; preds = %445
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %40, ptr noundef nonnull align 8 dereferenceable(32) %41, ptr noundef nonnull align 8 dereferenceable(32) %44)
          to label %451 unwind label %472

451:                                              ; preds = %450
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %39, ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef @.str.1375)
          to label %452 unwind label %476

452:                                              ; preds = %451
  %453 = load ptr, ptr %4, align 8, !tbaa !5
  %454 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %453, ptr noundef nonnull align 8 dereferenceable(32) %39)
          to label %455 unwind label %480

455:                                              ; preds = %452
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %44) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %43) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %42) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %41) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %39) #8
  br label %490

456:                                              ; preds = %441
  %457 = landingpad { ptr, i32 }
          cleanup
  %458 = extractvalue { ptr, i32 } %457, 0
  store ptr %458, ptr %7, align 8
  %459 = extractvalue { ptr, i32 } %457, 1
  store i32 %459, ptr %8, align 4
  br label %489

460:                                              ; preds = %443
  %461 = landingpad { ptr, i32 }
          cleanup
  %462 = extractvalue { ptr, i32 } %461, 0
  store ptr %462, ptr %7, align 8
  %463 = extractvalue { ptr, i32 } %461, 1
  store i32 %463, ptr %8, align 4
  br label %488

464:                                              ; preds = %444
  %465 = landingpad { ptr, i32 }
          cleanup
  %466 = extractvalue { ptr, i32 } %465, 0
  store ptr %466, ptr %7, align 8
  %467 = extractvalue { ptr, i32 } %465, 1
  store i32 %467, ptr %8, align 4
  br label %487

468:                                              ; preds = %445
  %469 = landingpad { ptr, i32 }
          cleanup
  %470 = extractvalue { ptr, i32 } %469, 0
  store ptr %470, ptr %7, align 8
  %471 = extractvalue { ptr, i32 } %469, 1
  store i32 %471, ptr %8, align 4
  br label %486

472:                                              ; preds = %450
  %473 = landingpad { ptr, i32 }
          cleanup
  %474 = extractvalue { ptr, i32 } %473, 0
  store ptr %474, ptr %7, align 8
  %475 = extractvalue { ptr, i32 } %473, 1
  store i32 %475, ptr %8, align 4
  br label %485

476:                                              ; preds = %451
  %477 = landingpad { ptr, i32 }
          cleanup
  %478 = extractvalue { ptr, i32 } %477, 0
  store ptr %478, ptr %7, align 8
  %479 = extractvalue { ptr, i32 } %477, 1
  store i32 %479, ptr %8, align 4
  br label %484

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

484:                                              ; preds = %480, %476
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #8
  br label %485

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

486:                                              ; preds = %485, %468
  call void @llvm.lifetime.end.p0(i64 32, ptr %44) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #8
  br label %487

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

488:                                              ; preds = %487, %460
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #8
  br label %489

489:                                              ; preds = %488, %456
  call void @llvm.lifetime.end.p0(i64 32, ptr %43) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %42) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %41) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %39) #8
  br label %554

490:                                              ; preds = %455, %401
  call void @llvm.lifetime.start.p0(i64 32, ptr %45) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %46) #8
  %491 = load i32, ptr %17, align 4, !tbaa !18
  %492 = invoke noundef ptr @_ZN11spirv_cross11CompilerMSL11to_restrictEjb(ptr noundef nonnull align 8 dereferenceable(12482) %146, i32 noundef %491, i1 noundef zeroext true)
          to label %493 unwind label %517

493:                                              ; preds = %490
  %494 = load ptr, ptr %14, align 8, !tbaa !5
  %495 = getelementptr inbounds %struct.Resource, ptr %494, i32 0, i32 2
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %46, ptr noundef %492, ptr noundef nonnull align 8 dereferenceable(32) %495)
          to label %496 unwind label %517

496:                                              ; preds = %493
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %45, ptr noundef nonnull align 8 dereferenceable(32) %46, ptr noundef @.str.76)
          to label %497 unwind label %521

497:                                              ; preds = %496
  %498 = load ptr, ptr %4, align 8, !tbaa !5
  %499 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %498, ptr noundef nonnull align 8 dereferenceable(32) %45)
          to label %500 unwind label %525

500:                                              ; preds = %497
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %46) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %45) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %47) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %48) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %49) #8
  %501 = load ptr, ptr %14, align 8, !tbaa !5
  %502 = getelementptr inbounds %struct.Resource, ptr %501, i32 0, i32 4
  invoke void @_ZN11spirv_cross17convert_to_stringIjTnNSt9enable_ifIXntsr3std17is_floating_pointIT_EE5valueEiE4typeELi0EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS2_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %49, ptr noundef nonnull align 4 dereferenceable(4) %502)
          to label %503 unwind label %531

503:                                              ; preds = %500
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %48, ptr noundef @.str.1360, ptr noundef nonnull align 8 dereferenceable(32) %49)
          to label %504 unwind label %535

504:                                              ; preds = %503
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %47, ptr noundef nonnull align 8 dereferenceable(32) %48, ptr noundef @.str.53)
          to label %505 unwind label %539

505:                                              ; preds = %504
  %506 = load ptr, ptr %4, align 8, !tbaa !5
  %507 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %506, ptr noundef nonnull align 8 dereferenceable(32) %47)
          to label %508 unwind label %543

508:                                              ; preds = %505
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %49) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %48) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %47) #8
  %509 = getelementptr inbounds %"class.spirv_cross::Compiler", ptr %146, i32 0, i32 32
  %510 = invoke noundef i64 @_ZNKSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEE5countERKj(ptr noundef nonnull align 8 dereferenceable(56) %509, ptr noundef nonnull align 4 dereferenceable(4) %17)
          to label %511 unwind label %402

511:                                              ; preds = %508
  %512 = icmp ne i64 %510, 0
  br i1 %512, label %513, label %550

513:                                              ; preds = %511
  %514 = load ptr, ptr %4, align 8, !tbaa !5
  %515 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %514, ptr noundef @.str.1317)
          to label %516 unwind label %402

516:                                              ; preds = %513
  br label %550

517:                                              ; preds = %493, %490
  %518 = landingpad { ptr, i32 }
          cleanup
  %519 = extractvalue { ptr, i32 } %518, 0
  store ptr %519, ptr %7, align 8
  %520 = extractvalue { ptr, i32 } %518, 1
  store i32 %520, ptr %8, align 4
  br label %530

521:                                              ; preds = %496
  %522 = landingpad { ptr, i32 }
          cleanup
  %523 = extractvalue { ptr, i32 } %522, 0
  store ptr %523, ptr %7, align 8
  %524 = extractvalue { ptr, i32 } %522, 1
  store i32 %524, ptr %8, align 4
  br label %529

525:                                              ; preds = %497
  %526 = landingpad { ptr, i32 }
          cleanup
  %527 = extractvalue { ptr, i32 } %526, 0
  store ptr %527, ptr %7, align 8
  %528 = extractvalue { ptr, i32 } %526, 1
  store i32 %528, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #8
  br label %529

529:                                              ; preds = %525, %521
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #8
  br label %530

530:                                              ; preds = %529, %517
  call void @llvm.lifetime.end.p0(i64 32, ptr %46) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %45) #8
  br label %554

531:                                              ; preds = %500
  %532 = landingpad { ptr, i32 }
          cleanup
  %533 = extractvalue { ptr, i32 } %532, 0
  store ptr %533, ptr %7, align 8
  %534 = extractvalue { ptr, i32 } %532, 1
  store i32 %534, ptr %8, align 4
  br label %549

535:                                              ; preds = %503
  %536 = landingpad { ptr, i32 }
          cleanup
  %537 = extractvalue { ptr, i32 } %536, 0
  store ptr %537, ptr %7, align 8
  %538 = extractvalue { ptr, i32 } %536, 1
  store i32 %538, ptr %8, align 4
  br label %548

539:                                              ; preds = %504
  %540 = landingpad { ptr, i32 }
          cleanup
  %541 = extractvalue { ptr, i32 } %540, 0
  store ptr %541, ptr %7, align 8
  %542 = extractvalue { ptr, i32 } %540, 1
  store i32 %542, ptr %8, align 4
  br label %547

543:                                              ; preds = %505
  %544 = landingpad { ptr, i32 }
          cleanup
  %545 = extractvalue { ptr, i32 } %544, 0
  store ptr %545, ptr %7, align 8
  %546 = extractvalue { ptr, i32 } %544, 1
  store i32 %546, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #8
  br label %547

547:                                              ; preds = %543, %539
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #8
  br label %548

548:                                              ; preds = %547, %535
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #8
  br label %549

549:                                              ; preds = %548, %531
  call void @llvm.lifetime.end.p0(i64 32, ptr %49) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %48) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %47) #8
  br label %554

550:                                              ; preds = %516, %511
  %551 = load ptr, ptr %4, align 8, !tbaa !5
  %552 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %551, ptr noundef @.str.1318)
          to label %553 unwind label %402

553:                                              ; preds = %550
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #8
  br label %706

554:                                              ; preds = %549, %530, %489, %439, %402
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #8
  br label %869

555:                                              ; preds = %357
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #8
  %556 = load ptr, ptr %16, align 8, !tbaa !5
  %557 = load i32, ptr %17, align 4, !tbaa !18
  %558 = invoke noundef i32 @_ZNK11spirv_cross11CompilerMSL23get_resource_array_sizeERKNS_8SPIRTypeEj(ptr noundef nonnull align 8 dereferenceable(12482) %146, ptr noundef nonnull align 8 dereferenceable(336) %556, i32 noundef %557)
          to label %559 unwind label %565

559:                                              ; preds = %555
  store i32 %558, ptr %50, align 4, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #8
  store i32 0, ptr %51, align 4, !tbaa !18
  br label %560

560:                                              ; preds = %700, %559
  %561 = load i32, ptr %51, align 4, !tbaa !18
  %562 = load i32, ptr %50, align 4, !tbaa !18
  %563 = icmp ult i32 %561, %562
  br i1 %563, label %569, label %564

564:                                              ; preds = %560
  store i32 5, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #8
  br label %704

565:                                              ; preds = %555
  %566 = landingpad { ptr, i32 }
          cleanup
  %567 = extractvalue { ptr, i32 } %566, 0
  store ptr %567, ptr %7, align 8
  %568 = extractvalue { ptr, i32 } %566, 1
  store i32 %568, ptr %8, align 4
  br label %705

569:                                              ; preds = %560
  %570 = load ptr, ptr %4, align 8, !tbaa !5
  %571 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %570) #8
  br i1 %571, label %580, label %572

572:                                              ; preds = %569
  %573 = load ptr, ptr %4, align 8, !tbaa !5
  %574 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %573, ptr noundef @.str.55)
          to label %575 unwind label %576

575:                                              ; preds = %572
  br label %580

576:                                              ; preds = %696, %619, %614, %572
  %577 = landingpad { ptr, i32 }
          cleanup
  %578 = extractvalue { ptr, i32 } %577, 0
  store ptr %578, ptr %7, align 8
  %579 = extractvalue { ptr, i32 } %577, 1
  store i32 %579, ptr %8, align 4
  br label %703

580:                                              ; preds = %575, %569
  call void @llvm.lifetime.start.p0(i64 32, ptr %52) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %53) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %54) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %55) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %56) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %57) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %58) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %59) #8
  %581 = load ptr, ptr %15, 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 %59, ptr noundef nonnull align 8 dereferenceable(12482) %146, ptr noundef nonnull align 8 dereferenceable(176) %581)
          to label %582 unwind label %623

582:                                              ; preds = %580
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %58, ptr noundef nonnull align 8 dereferenceable(32) %59, ptr noundef @.str.60)
          to label %583 unwind label %627

583:                                              ; preds = %582
  call void @llvm.lifetime.start.p0(i64 32, ptr %60) #8
  %584 = load ptr, ptr %16, align 8, !tbaa !5
  %585 = load ptr, ptr %146, align 8, !tbaa !192
  %586 = getelementptr inbounds ptr, ptr %585, i64 19
  %587 = load ptr, ptr %586, align 8
  invoke void %587(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %60, ptr noundef nonnull align 8 dereferenceable(12482) %146, ptr noundef nonnull align 8 dereferenceable(336) %584, i32 noundef 0)
          to label %588 unwind label %631

588:                                              ; preds = %583
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %57, ptr noundef nonnull align 8 dereferenceable(32) %58, ptr noundef nonnull align 8 dereferenceable(32) %60)
          to label %589 unwind label %635

589:                                              ; preds = %588
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %56, ptr noundef nonnull align 8 dereferenceable(32) %57, ptr noundef @.str.61)
          to label %590 unwind label %639

590:                                              ; preds = %589
  %591 = load i32, ptr %17, align 4, !tbaa !18
  %592 = invoke noundef ptr @_ZN11spirv_cross11CompilerMSL11to_restrictEjb(ptr noundef nonnull align 8 dereferenceable(12482) %146, i32 noundef %591, i1 noundef zeroext true)
          to label %593 unwind label %643

593:                                              ; preds = %590
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %55, ptr noundef nonnull align 8 dereferenceable(32) %56, ptr noundef %592)
          to label %594 unwind label %643

594:                                              ; preds = %593
  %595 = load ptr, ptr %14, align 8, !tbaa !5
  %596 = getelementptr inbounds %struct.Resource, ptr %595, i32 0, i32 2
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %54, ptr noundef nonnull align 8 dereferenceable(32) %55, ptr noundef nonnull align 8 dereferenceable(32) %596)
          to label %597 unwind label %647

597:                                              ; preds = %594
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %53, ptr noundef nonnull align 8 dereferenceable(32) %54, ptr noundef @.str.76)
          to label %598 unwind label %651

598:                                              ; preds = %597
  call void @llvm.lifetime.start.p0(i64 32, ptr %61) #8
  invoke void @_ZN11spirv_cross17convert_to_stringIjTnNSt9enable_ifIXntsr3std17is_floating_pointIT_EE5valueEiE4typeELi0EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS2_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %61, ptr noundef nonnull align 4 dereferenceable(4) %51)
          to label %599 unwind label %655

599:                                              ; preds = %598
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %52, ptr noundef nonnull align 8 dereferenceable(32) %53, ptr noundef nonnull align 8 dereferenceable(32) %61)
          to label %600 unwind label %659

600:                                              ; preds = %599
  %601 = load ptr, ptr %4, align 8, !tbaa !5
  %602 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %601, ptr noundef nonnull align 8 dereferenceable(32) %52)
          to label %603 unwind label %663

603:                                              ; preds = %600
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %61) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %60) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %59) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %58) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %57) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %56) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %55) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %54) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %53) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %52) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %62) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %63) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %64) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #8
  %604 = load ptr, ptr %14, align 8, !tbaa !5
  %605 = getelementptr inbounds %struct.Resource, ptr %604, i32 0, i32 4
  %606 = load i32, ptr %605, align 4, !tbaa !194
  %607 = load i32, ptr %51, align 4, !tbaa !18
  %608 = add i32 %606, %607
  store i32 %608, ptr %65, align 4, !tbaa !18
  invoke void @_ZN11spirv_cross17convert_to_stringIjTnNSt9enable_ifIXntsr3std17is_floating_pointIT_EE5valueEiE4typeELi0EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS2_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %64, ptr noundef nonnull align 4 dereferenceable(4) %65)
          to label %609 unwind label %677

609:                                              ; preds = %603
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %63, ptr noundef @.str.1360, ptr noundef nonnull align 8 dereferenceable(32) %64)
          to label %610 unwind label %681

610:                                              ; preds = %609
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %62, ptr noundef nonnull align 8 dereferenceable(32) %63, ptr noundef @.str.53)
          to label %611 unwind label %685

611:                                              ; preds = %610
  %612 = load ptr, ptr %4, align 8, !tbaa !5
  %613 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %612, ptr noundef nonnull align 8 dereferenceable(32) %62)
          to label %614 unwind label %689

614:                                              ; preds = %611
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %64) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %63) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %62) #8
  %615 = getelementptr inbounds %"class.spirv_cross::Compiler", ptr %146, i32 0, i32 32
  %616 = invoke noundef i64 @_ZNKSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEE5countERKj(ptr noundef nonnull align 8 dereferenceable(56) %615, ptr noundef nonnull align 4 dereferenceable(4) %17)
          to label %617 unwind label %576

617:                                              ; preds = %614
  %618 = icmp ne i64 %616, 0
  br i1 %618, label %619, label %696

619:                                              ; preds = %617
  %620 = load ptr, ptr %4, align 8, !tbaa !5
  %621 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %620, ptr noundef @.str.1317)
          to label %622 unwind label %576

622:                                              ; preds = %619
  br label %696

623:                                              ; preds = %580
  %624 = landingpad { ptr, i32 }
          cleanup
  %625 = extractvalue { ptr, i32 } %624, 0
  store ptr %625, ptr %7, align 8
  %626 = extractvalue { ptr, i32 } %624, 1
  store i32 %626, ptr %8, align 4
  br label %676

627:                                              ; preds = %582
  %628 = landingpad { ptr, i32 }
          cleanup
  %629 = extractvalue { ptr, i32 } %628, 0
  store ptr %629, ptr %7, align 8
  %630 = extractvalue { ptr, i32 } %628, 1
  store i32 %630, ptr %8, align 4
  br label %675

631:                                              ; preds = %583
  %632 = landingpad { ptr, i32 }
          cleanup
  %633 = extractvalue { ptr, i32 } %632, 0
  store ptr %633, ptr %7, align 8
  %634 = extractvalue { ptr, i32 } %632, 1
  store i32 %634, ptr %8, align 4
  br label %674

635:                                              ; preds = %588
  %636 = landingpad { ptr, i32 }
          cleanup
  %637 = extractvalue { ptr, i32 } %636, 0
  store ptr %637, ptr %7, align 8
  %638 = extractvalue { ptr, i32 } %636, 1
  store i32 %638, ptr %8, align 4
  br label %673

639:                                              ; preds = %589
  %640 = landingpad { ptr, i32 }
          cleanup
  %641 = extractvalue { ptr, i32 } %640, 0
  store ptr %641, ptr %7, align 8
  %642 = extractvalue { ptr, i32 } %640, 1
  store i32 %642, ptr %8, align 4
  br label %672

643:                                              ; preds = %593, %590
  %644 = landingpad { ptr, i32 }
          cleanup
  %645 = extractvalue { ptr, i32 } %644, 0
  store ptr %645, ptr %7, align 8
  %646 = extractvalue { ptr, i32 } %644, 1
  store i32 %646, ptr %8, align 4
  br label %671

647:                                              ; preds = %594
  %648 = landingpad { ptr, i32 }
          cleanup
  %649 = extractvalue { ptr, i32 } %648, 0
  store ptr %649, ptr %7, align 8
  %650 = extractvalue { ptr, i32 } %648, 1
  store i32 %650, ptr %8, align 4
  br label %670

651:                                              ; preds = %597
  %652 = landingpad { ptr, i32 }
          cleanup
  %653 = extractvalue { ptr, i32 } %652, 0
  store ptr %653, ptr %7, align 8
  %654 = extractvalue { ptr, i32 } %652, 1
  store i32 %654, ptr %8, align 4
  br label %669

655:                                              ; preds = %598
  %656 = landingpad { ptr, i32 }
          cleanup
  %657 = extractvalue { ptr, i32 } %656, 0
  store ptr %657, ptr %7, align 8
  %658 = extractvalue { ptr, i32 } %656, 1
  store i32 %658, ptr %8, align 4
  br label %668

659:                                              ; preds = %599
  %660 = landingpad { ptr, i32 }
          cleanup
  %661 = extractvalue { ptr, i32 } %660, 0
  store ptr %661, ptr %7, align 8
  %662 = extractvalue { ptr, i32 } %660, 1
  store i32 %662, ptr %8, align 4
  br label %667

663:                                              ; preds = %600
  %664 = landingpad { ptr, i32 }
          cleanup
  %665 = extractvalue { ptr, i32 } %664, 0
  store ptr %665, ptr %7, align 8
  %666 = extractvalue { ptr, i32 } %664, 1
  store i32 %666, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #8
  br label %667

667:                                              ; preds = %663, %659
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #8
  br label %668

668:                                              ; preds = %667, %655
  call void @llvm.lifetime.end.p0(i64 32, ptr %61) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #8
  br label %669

669:                                              ; preds = %668, %651
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #8
  br label %670

670:                                              ; preds = %669, %647
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #8
  br label %671

671:                                              ; preds = %670, %643
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #8
  br label %672

672:                                              ; preds = %671, %639
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #8
  br label %673

673:                                              ; preds = %672, %635
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #8
  br label %674

674:                                              ; preds = %673, %631
  call void @llvm.lifetime.end.p0(i64 32, ptr %60) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #8
  br label %675

675:                                              ; preds = %674, %627
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #8
  br label %676

676:                                              ; preds = %675, %623
  call void @llvm.lifetime.end.p0(i64 32, ptr %59) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %58) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %57) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %56) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %55) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %54) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %53) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %52) #8
  br label %703

677:                                              ; preds = %603
  %678 = landingpad { ptr, i32 }
          cleanup
  %679 = extractvalue { ptr, i32 } %678, 0
  store ptr %679, ptr %7, align 8
  %680 = extractvalue { ptr, i32 } %678, 1
  store i32 %680, ptr %8, align 4
  br label %695

681:                                              ; preds = %609
  %682 = landingpad { ptr, i32 }
          cleanup
  %683 = extractvalue { ptr, i32 } %682, 0
  store ptr %683, ptr %7, align 8
  %684 = extractvalue { ptr, i32 } %682, 1
  store i32 %684, ptr %8, align 4
  br label %694

685:                                              ; preds = %610
  %686 = landingpad { ptr, i32 }
          cleanup
  %687 = extractvalue { ptr, i32 } %686, 0
  store ptr %687, ptr %7, align 8
  %688 = extractvalue { ptr, i32 } %686, 1
  store i32 %688, ptr %8, align 4
  br label %693

689:                                              ; preds = %611
  %690 = landingpad { ptr, i32 }
          cleanup
  %691 = extractvalue { ptr, i32 } %690, 0
  store ptr %691, ptr %7, align 8
  %692 = extractvalue { ptr, i32 } %690, 1
  store i32 %692, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #8
  br label %693

693:                                              ; preds = %689, %685
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #8
  br label %694

694:                                              ; preds = %693, %681
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #8
  br label %695

695:                                              ; preds = %694, %677
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %64) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %63) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %62) #8
  br label %703

696:                                              ; preds = %622, %617
  %697 = load ptr, ptr %4, align 8, !tbaa !5
  %698 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %697, ptr noundef @.str.1318)
          to label %699 unwind label %576

699:                                              ; preds = %696
  br label %700

700:                                              ; preds = %699
  %701 = load i32, ptr %51, align 4, !tbaa !18
  %702 = add i32 %701, 1
  store i32 %702, ptr %51, align 4, !tbaa !18
  br label %560, !llvm.loop !195

703:                                              ; preds = %695, %676, %576
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #8
  br label %705

704:                                              ; preds = %564
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #8
  br label %706

705:                                              ; preds = %703, %565
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #8
  br label %869

706:                                              ; preds = %704, %553
  %707 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %146, i32 0, i32 74
  store i8 0, ptr %707, align 2, !tbaa !21
  br label %866

708:                                              ; preds = %337
  %709 = load ptr, ptr %4, align 8, !tbaa !5
  %710 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %709) #8
  br i1 %710, label %715, label %711

711:                                              ; preds = %708
  %712 = load ptr, ptr %4, align 8, !tbaa !5
  %713 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %712, ptr noundef @.str.55)
          to label %714 unwind label %207

714:                                              ; preds = %711
  br label %715

715:                                              ; preds = %714, %708
  call void @llvm.lifetime.start.p0(i64 32, ptr %66) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %67) #8
  %716 = load ptr, ptr %15, 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 %67, ptr noundef nonnull align 8 dereferenceable(12482) %146, ptr noundef nonnull align 8 dereferenceable(176) %716)
          to label %717 unwind label %743

717:                                              ; preds = %715
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %66, ptr noundef nonnull align 8 dereferenceable(32) %67, ptr noundef @.str.60)
          to label %718 unwind label %747

718:                                              ; preds = %717
  %719 = load ptr, ptr %4, align 8, !tbaa !5
  %720 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %719, ptr noundef nonnull align 8 dereferenceable(32) %66)
          to label %721 unwind label %751

721:                                              ; preds = %718
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %67) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %66) #8
  %722 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %146, i32 0, i32 111
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #8
  %723 = load ptr, ptr %16, align 8, !tbaa !5
  %724 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %723, i32 0, i32 1
  %725 = invoke noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %724)
          to label %726 unwind label %757

726:                                              ; preds = %721
  store i32 %725, ptr %68, align 4, !tbaa !18
  %727 = invoke noundef i64 @_ZNKSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEE5countERKj(ptr noundef nonnull align 8 dereferenceable(56) %722, ptr noundef nonnull align 4 dereferenceable(4) %68)
          to label %728 unwind label %757

728:                                              ; preds = %726
  %729 = icmp ne i64 %727, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #8
  br i1 %729, label %730, label %785

730:                                              ; preds = %728
  call void @llvm.lifetime.start.p0(i64 32, ptr %69) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %70) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %71) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %72) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %73) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %73) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %72, ptr noundef @.str.1370, ptr noundef nonnull align 1 dereferenceable(1) %73)
          to label %731 unwind label %761

731:                                              ; preds = %730
  %732 = load i32, ptr %17, align 4, !tbaa !18
  %733 = invoke noundef ptr @_ZN11spirv_cross11CompilerMSL11to_restrictEjb(ptr noundef nonnull align 8 dereferenceable(12482) %146, i32 noundef %732, i1 noundef zeroext true)
          to label %734 unwind label %765

734:                                              ; preds = %731
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %71, ptr noundef nonnull align 8 dereferenceable(32) %72, ptr noundef %733)
          to label %735 unwind label %765

735:                                              ; preds = %734
  %736 = load ptr, ptr %14, align 8, !tbaa !5
  %737 = getelementptr inbounds %struct.Resource, ptr %736, i32 0, i32 2
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %70, ptr noundef nonnull align 8 dereferenceable(32) %71, ptr noundef nonnull align 8 dereferenceable(32) %737)
          to label %738 unwind label %769

738:                                              ; preds = %735
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %69, ptr noundef nonnull align 8 dereferenceable(32) %70, ptr noundef @.str.1371)
          to label %739 unwind label %773

739:                                              ; preds = %738
  %740 = load ptr, ptr %4, align 8, !tbaa !5
  %741 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %740, ptr noundef nonnull align 8 dereferenceable(32) %69)
          to label %742 unwind label %777

742:                                              ; preds = %739
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %73) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %72) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %71) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %70) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %69) #8
  br label %826

743:                                              ; preds = %715
  %744 = landingpad { ptr, i32 }
          cleanup
  %745 = extractvalue { ptr, i32 } %744, 0
  store ptr %745, ptr %7, align 8
  %746 = extractvalue { ptr, i32 } %744, 1
  store i32 %746, ptr %8, align 4
  br label %756

747:                                              ; preds = %717
  %748 = landingpad { ptr, i32 }
          cleanup
  %749 = extractvalue { ptr, i32 } %748, 0
  store ptr %749, ptr %7, align 8
  %750 = extractvalue { ptr, i32 } %748, 1
  store i32 %750, ptr %8, align 4
  br label %755

751:                                              ; preds = %718
  %752 = landingpad { ptr, i32 }
          cleanup
  %753 = extractvalue { ptr, i32 } %752, 0
  store ptr %753, ptr %7, align 8
  %754 = extractvalue { ptr, i32 } %752, 1
  store i32 %754, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #8
  br label %755

755:                                              ; preds = %751, %747
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #8
  br label %756

756:                                              ; preds = %755, %743
  call void @llvm.lifetime.end.p0(i64 32, ptr %67) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %66) #8
  br label %869

757:                                              ; preds = %726, %721
  %758 = landingpad { ptr, i32 }
          cleanup
  %759 = extractvalue { ptr, i32 } %758, 0
  store ptr %759, ptr %7, align 8
  %760 = extractvalue { ptr, i32 } %758, 1
  store i32 %760, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #8
  br label %869

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

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

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

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

777:                                              ; preds = %739
  %778 = landingpad { ptr, i32 }
          cleanup
  %779 = extractvalue { ptr, i32 } %778, 0
  store ptr %779, ptr %7, align 8
  %780 = extractvalue { ptr, i32 } %778, 1
  store i32 %780, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #8
  br label %781

781:                                              ; preds = %777, %773
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #8
  br label %782

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

783:                                              ; preds = %782, %765
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #8
  br label %784

784:                                              ; preds = %783, %761
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %73) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %72) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %71) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %70) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %69) #8
  br label %869

785:                                              ; preds = %728
  call void @llvm.lifetime.start.p0(i64 32, ptr %74) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %75) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %76) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %77) #8
  %786 = load ptr, ptr %16, align 8, !tbaa !5
  %787 = load ptr, ptr %146, align 8, !tbaa !192
  %788 = getelementptr inbounds ptr, ptr %787, i64 19
  %789 = load ptr, ptr %788, align 8
  invoke void %789(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %77, ptr noundef nonnull align 8 dereferenceable(12482) %146, ptr noundef nonnull align 8 dereferenceable(336) %786, i32 noundef 0)
          to label %790 unwind label %802

790:                                              ; preds = %785
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %76, ptr noundef nonnull align 8 dereferenceable(32) %77, ptr noundef @.str.1189)
          to label %791 unwind label %806

791:                                              ; preds = %790
  %792 = load i32, ptr %17, align 4, !tbaa !18
  %793 = invoke noundef ptr @_ZN11spirv_cross11CompilerMSL11to_restrictEjb(ptr noundef nonnull align 8 dereferenceable(12482) %146, i32 noundef %792, i1 noundef zeroext true)
          to label %794 unwind label %810

794:                                              ; preds = %791
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %75, ptr noundef nonnull align 8 dereferenceable(32) %76, ptr noundef %793)
          to label %795 unwind label %810

795:                                              ; preds = %794
  %796 = load ptr, ptr %14, align 8, !tbaa !5
  %797 = getelementptr inbounds %struct.Resource, ptr %796, i32 0, i32 2
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %74, ptr noundef nonnull align 8 dereferenceable(32) %75, ptr noundef nonnull align 8 dereferenceable(32) %797)
          to label %798 unwind label %814

798:                                              ; preds = %795
  %799 = load ptr, ptr %4, align 8, !tbaa !5
  %800 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %799, ptr noundef nonnull align 8 dereferenceable(32) %74)
          to label %801 unwind label %818

801:                                              ; preds = %798
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %74) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %77) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %77) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %76) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %75) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %74) #8
  br label %826

802:                                              ; preds = %785
  %803 = landingpad { ptr, i32 }
          cleanup
  %804 = extractvalue { ptr, i32 } %803, 0
  store ptr %804, ptr %7, align 8
  %805 = extractvalue { ptr, i32 } %803, 1
  store i32 %805, ptr %8, align 4
  br label %825

806:                                              ; preds = %790
  %807 = landingpad { ptr, i32 }
          cleanup
  %808 = extractvalue { ptr, i32 } %807, 0
  store ptr %808, ptr %7, align 8
  %809 = extractvalue { ptr, i32 } %807, 1
  store i32 %809, ptr %8, align 4
  br label %824

810:                                              ; preds = %794, %791
  %811 = landingpad { ptr, i32 }
          cleanup
  %812 = extractvalue { ptr, i32 } %811, 0
  store ptr %812, ptr %7, align 8
  %813 = extractvalue { ptr, i32 } %811, 1
  store i32 %813, ptr %8, align 4
  br label %823

814:                                              ; preds = %795
  %815 = landingpad { ptr, i32 }
          cleanup
  %816 = extractvalue { ptr, i32 } %815, 0
  store ptr %816, ptr %7, align 8
  %817 = extractvalue { ptr, i32 } %815, 1
  store i32 %817, ptr %8, align 4
  br label %822

818:                                              ; preds = %798
  %819 = landingpad { ptr, i32 }
          cleanup
  %820 = extractvalue { ptr, i32 } %819, 0
  store ptr %820, ptr %7, align 8
  %821 = extractvalue { ptr, i32 } %819, 1
  store i32 %821, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %74) #8
  br label %822

822:                                              ; preds = %818, %814
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #8
  br label %823

823:                                              ; preds = %822, %810
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #8
  br label %824

824:                                              ; preds = %823, %806
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %77) #8
  br label %825

825:                                              ; preds = %824, %802
  call void @llvm.lifetime.end.p0(i64 32, ptr %77) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %76) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %75) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %74) #8
  br label %869

826:                                              ; preds = %801, %742
  call void @llvm.lifetime.start.p0(i64 32, ptr %78) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %79) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %80) #8
  %827 = load ptr, ptr %14, align 8, !tbaa !5
  %828 = getelementptr inbounds %struct.Resource, ptr %827, i32 0, i32 4
  invoke void @_ZN11spirv_cross17convert_to_stringIjTnNSt9enable_ifIXntsr3std17is_floating_pointIT_EE5valueEiE4typeELi0EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS2_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %80, ptr noundef nonnull align 4 dereferenceable(4) %828)
          to label %829 unwind label %843

829:                                              ; preds = %826
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %79, ptr noundef @.str.1360, ptr noundef nonnull align 8 dereferenceable(32) %80)
          to label %830 unwind label %847

830:                                              ; preds = %829
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %78, ptr noundef nonnull align 8 dereferenceable(32) %79, ptr noundef @.str.53)
          to label %831 unwind label %851

831:                                              ; preds = %830
  %832 = load ptr, ptr %4, align 8, !tbaa !5
  %833 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %832, ptr noundef nonnull align 8 dereferenceable(32) %78)
          to label %834 unwind label %855

834:                                              ; preds = %831
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %78) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %79) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %80) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %80) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %79) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %78) #8
  %835 = getelementptr inbounds %"class.spirv_cross::Compiler", ptr %146, i32 0, i32 32
  %836 = invoke noundef i64 @_ZNKSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEE5countERKj(ptr noundef nonnull align 8 dereferenceable(56) %835, ptr noundef nonnull align 4 dereferenceable(4) %17)
          to label %837 unwind label %207

837:                                              ; preds = %834
  %838 = icmp ne i64 %836, 0
  br i1 %838, label %839, label %862

839:                                              ; preds = %837
  %840 = load ptr, ptr %4, align 8, !tbaa !5
  %841 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %840, ptr noundef @.str.1317)
          to label %842 unwind label %207

842:                                              ; preds = %839
  br label %862

843:                                              ; preds = %826
  %844 = landingpad { ptr, i32 }
          cleanup
  %845 = extractvalue { ptr, i32 } %844, 0
  store ptr %845, ptr %7, align 8
  %846 = extractvalue { ptr, i32 } %844, 1
  store i32 %846, ptr %8, align 4
  br label %861

847:                                              ; preds = %829
  %848 = landingpad { ptr, i32 }
          cleanup
  %849 = extractvalue { ptr, i32 } %848, 0
  store ptr %849, ptr %7, align 8
  %850 = extractvalue { ptr, i32 } %848, 1
  store i32 %850, ptr %8, align 4
  br label %860

851:                                              ; preds = %830
  %852 = landingpad { ptr, i32 }
          cleanup
  %853 = extractvalue { ptr, i32 } %852, 0
  store ptr %853, ptr %7, align 8
  %854 = extractvalue { ptr, i32 } %852, 1
  store i32 %854, ptr %8, align 4
  br label %859

855:                                              ; preds = %831
  %856 = landingpad { ptr, i32 }
          cleanup
  %857 = extractvalue { ptr, i32 } %856, 0
  store ptr %857, ptr %7, align 8
  %858 = extractvalue { ptr, i32 } %856, 1
  store i32 %858, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %78) #8
  br label %859

859:                                              ; preds = %855, %851
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %79) #8
  br label %860

860:                                              ; preds = %859, %847
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %80) #8
  br label %861

861:                                              ; preds = %860, %843
  call void @llvm.lifetime.end.p0(i64 32, ptr %80) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %79) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %78) #8
  br label %869

862:                                              ; preds = %842, %837
  %863 = load ptr, ptr %4, align 8, !tbaa !5
  %864 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %863, ptr noundef @.str.1318)
          to label %865 unwind label %207

865:                                              ; preds = %862
  br label %866

866:                                              ; preds = %865, %706
  br label %867

867:                                              ; preds = %866, %332
  store i32 4, ptr %13, align 4
  br label %868

868:                                              ; preds = %867, %206
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #8
  br label %1631

869:                                              ; preds = %861, %825, %784, %757, %756, %705, %554, %349, %333, %324, %207
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #8
  br label %1635

870:                                              ; preds = %183
  %871 = load ptr, ptr %4, align 8, !tbaa !5
  %872 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %871) #8
  br i1 %872, label %877, label %873

873:                                              ; preds = %870
  %874 = load ptr, ptr %4, align 8, !tbaa !5
  %875 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %874, ptr noundef @.str.55)
          to label %876 unwind label %191

876:                                              ; preds = %873
  br label %877

877:                                              ; preds = %876, %870
  call void @llvm.lifetime.start.p0(i64 32, ptr %81) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %82) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %83) #8
  %878 = load ptr, ptr %16, align 8, !tbaa !5
  %879 = load i32, ptr %17, align 4, !tbaa !18
  invoke void @_ZN11spirv_cross11CompilerMSL12sampler_typeB5cxx11ERKNS_8SPIRTypeEjb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %83, ptr noundef nonnull align 8 dereferenceable(12482) %146, ptr noundef nonnull align 8 dereferenceable(336) %878, i32 noundef %879, i1 noundef zeroext false)
          to label %880 unwind label %900

880:                                              ; preds = %877
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %82, ptr noundef nonnull align 8 dereferenceable(32) %83, ptr noundef @.str.60)
          to label %881 unwind label %904

881:                                              ; preds = %880
  %882 = load ptr, ptr %14, align 8, !tbaa !5
  %883 = getelementptr inbounds %struct.Resource, ptr %882, i32 0, i32 2
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %81, ptr noundef nonnull align 8 dereferenceable(32) %82, ptr noundef nonnull align 8 dereferenceable(32) %883)
          to label %884 unwind label %908

884:                                              ; preds = %881
  %885 = load ptr, ptr %4, align 8, !tbaa !5
  %886 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %885, ptr noundef nonnull align 8 dereferenceable(32) %81)
          to label %887 unwind label %912

887:                                              ; preds = %884
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %82) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %83) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %83) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %82) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %81) #8
  %888 = load ptr, ptr %15, align 8, !tbaa !5
  %889 = invoke noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL25is_var_runtime_size_arrayERKNS_12SPIRVariableE(ptr noundef nonnull align 8 dereferenceable(12482) %146, ptr noundef nonnull align 8 dereferenceable(176) %888)
          to label %890 unwind label %191

890:                                              ; preds = %887
  br i1 %889, label %891, label %938

891:                                              ; preds = %890
  call void @llvm.lifetime.start.p0(i64 32, ptr %84) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %85) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %86) #8
  %892 = load ptr, ptr %14, align 8, !tbaa !5
  %893 = getelementptr inbounds %struct.Resource, ptr %892, i32 0, i32 4
  invoke void @_ZN11spirv_cross17convert_to_stringIjTnNSt9enable_ifIXntsr3std17is_floating_pointIT_EE5valueEiE4typeELi0EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS2_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %86, ptr noundef nonnull align 4 dereferenceable(4) %893)
          to label %894 unwind label %919

894:                                              ; preds = %891
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %85, ptr noundef @.str.1377, ptr noundef nonnull align 8 dereferenceable(32) %86)
          to label %895 unwind label %923

895:                                              ; preds = %894
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %84, ptr noundef nonnull align 8 dereferenceable(32) %85, ptr noundef @.str.1322)
          to label %896 unwind label %927

896:                                              ; preds = %895
  %897 = load ptr, ptr %4, align 8, !tbaa !5
  %898 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %897, ptr noundef nonnull align 8 dereferenceable(32) %84)
          to label %899 unwind label %931

899:                                              ; preds = %896
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %84) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %85) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %86) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %86) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %85) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %84) #8
  br label %966

900:                                              ; preds = %877
  %901 = landingpad { ptr, i32 }
          cleanup
  %902 = extractvalue { ptr, i32 } %901, 0
  store ptr %902, ptr %7, align 8
  %903 = extractvalue { ptr, i32 } %901, 1
  store i32 %903, ptr %8, align 4
  br label %918

904:                                              ; preds = %880
  %905 = landingpad { ptr, i32 }
          cleanup
  %906 = extractvalue { ptr, i32 } %905, 0
  store ptr %906, ptr %7, align 8
  %907 = extractvalue { ptr, i32 } %905, 1
  store i32 %907, ptr %8, align 4
  br label %917

908:                                              ; preds = %881
  %909 = landingpad { ptr, i32 }
          cleanup
  %910 = extractvalue { ptr, i32 } %909, 0
  store ptr %910, ptr %7, align 8
  %911 = extractvalue { ptr, i32 } %909, 1
  store i32 %911, ptr %8, align 4
  br label %916

912:                                              ; preds = %884
  %913 = landingpad { ptr, i32 }
          cleanup
  %914 = extractvalue { ptr, i32 } %913, 0
  store ptr %914, ptr %7, align 8
  %915 = extractvalue { ptr, i32 } %913, 1
  store i32 %915, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #8
  br label %916

916:                                              ; preds = %912, %908
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %82) #8
  br label %917

917:                                              ; preds = %916, %904
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %83) #8
  br label %918

918:                                              ; preds = %917, %900
  call void @llvm.lifetime.end.p0(i64 32, ptr %83) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %82) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %81) #8
  br label %1635

919:                                              ; preds = %891
  %920 = landingpad { ptr, i32 }
          cleanup
  %921 = extractvalue { ptr, i32 } %920, 0
  store ptr %921, ptr %7, align 8
  %922 = extractvalue { ptr, i32 } %920, 1
  store i32 %922, ptr %8, align 4
  br label %937

923:                                              ; preds = %894
  %924 = landingpad { ptr, i32 }
          cleanup
  %925 = extractvalue { ptr, i32 } %924, 0
  store ptr %925, ptr %7, align 8
  %926 = extractvalue { ptr, i32 } %924, 1
  store i32 %926, ptr %8, align 4
  br label %936

927:                                              ; preds = %895
  %928 = landingpad { ptr, i32 }
          cleanup
  %929 = extractvalue { ptr, i32 } %928, 0
  store ptr %929, ptr %7, align 8
  %930 = extractvalue { ptr, i32 } %928, 1
  store i32 %930, ptr %8, align 4
  br label %935

931:                                              ; preds = %896
  %932 = landingpad { ptr, i32 }
          cleanup
  %933 = extractvalue { ptr, i32 } %932, 0
  store ptr %933, ptr %7, align 8
  %934 = extractvalue { ptr, i32 } %932, 1
  store i32 %934, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %84) #8
  br label %935

935:                                              ; preds = %931, %927
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %85) #8
  br label %936

936:                                              ; preds = %935, %923
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %86) #8
  br label %937

937:                                              ; preds = %936, %919
  call void @llvm.lifetime.end.p0(i64 32, ptr %86) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %85) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %84) #8
  br label %1635

938:                                              ; preds = %890
  call void @llvm.lifetime.start.p0(i64 32, ptr %87) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %88) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %89) #8
  %939 = load ptr, ptr %14, align 8, !tbaa !5
  %940 = getelementptr inbounds %struct.Resource, ptr %939, i32 0, i32 4
  invoke void @_ZN11spirv_cross17convert_to_stringIjTnNSt9enable_ifIXntsr3std17is_floating_pointIT_EE5valueEiE4typeELi0EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS2_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %89, ptr noundef nonnull align 4 dereferenceable(4) %940)
          to label %941 unwind label %947

941:                                              ; preds = %938
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %88, ptr noundef @.str.1378, ptr noundef nonnull align 8 dereferenceable(32) %89)
          to label %942 unwind label %951

942:                                              ; preds = %941
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %87, ptr noundef nonnull align 8 dereferenceable(32) %88, ptr noundef @.str.1322)
          to label %943 unwind label %955

943:                                              ; preds = %942
  %944 = load ptr, ptr %4, align 8, !tbaa !5
  %945 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %944, ptr noundef nonnull align 8 dereferenceable(32) %87)
          to label %946 unwind label %959

946:                                              ; preds = %943
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %88) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %89) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %89) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %88) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %87) #8
  br label %966

947:                                              ; preds = %938
  %948 = landingpad { ptr, i32 }
          cleanup
  %949 = extractvalue { ptr, i32 } %948, 0
  store ptr %949, ptr %7, align 8
  %950 = extractvalue { ptr, i32 } %948, 1
  store i32 %950, ptr %8, align 4
  br label %965

951:                                              ; preds = %941
  %952 = landingpad { ptr, i32 }
          cleanup
  %953 = extractvalue { ptr, i32 } %952, 0
  store ptr %953, ptr %7, align 8
  %954 = extractvalue { ptr, i32 } %952, 1
  store i32 %954, ptr %8, align 4
  br label %964

955:                                              ; preds = %942
  %956 = landingpad { ptr, i32 }
          cleanup
  %957 = extractvalue { ptr, i32 } %956, 0
  store ptr %957, ptr %7, align 8
  %958 = extractvalue { ptr, i32 } %956, 1
  store i32 %958, ptr %8, align 4
  br label %963

959:                                              ; preds = %943
  %960 = landingpad { ptr, i32 }
          cleanup
  %961 = extractvalue { ptr, i32 } %960, 0
  store ptr %961, ptr %7, align 8
  %962 = extractvalue { ptr, i32 } %960, 1
  store i32 %962, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #8
  br label %963

963:                                              ; preds = %959, %955
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %88) #8
  br label %964

964:                                              ; preds = %963, %951
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %89) #8
  br label %965

965:                                              ; preds = %964, %947
  call void @llvm.lifetime.end.p0(i64 32, ptr %89) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %88) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %87) #8
  br label %1635

966:                                              ; preds = %946, %899
  br label %1631

967:                                              ; preds = %183
  %968 = load ptr, ptr %4, align 8, !tbaa !5
  %969 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %968) #8
  br i1 %969, label %974, label %970

970:                                              ; preds = %967
  %971 = load ptr, ptr %4, align 8, !tbaa !5
  %972 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %971, ptr noundef @.str.55)
          to label %973 unwind label %191

973:                                              ; preds = %970
  br label %974

974:                                              ; preds = %973, %967
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #8
  %975 = load ptr, ptr %15, align 8, !tbaa !5
  %976 = getelementptr inbounds %"struct.spirv_cross::SPIRVariable", ptr %975, i32 0, i32 1
  %977 = invoke noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE1EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %976)
          to label %978 unwind label %1010

978:                                              ; preds = %974
  %979 = invoke noundef nonnull align 8 dereferenceable(336) ptr @_ZN11spirv_cross8Compiler3getINS_8SPIRTypeEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %146, i32 noundef %977)
          to label %980 unwind label %1010

980:                                              ; preds = %978
  store ptr %979, ptr %90, align 8, !tbaa !5
  %981 = load ptr, ptr %90, align 8, !tbaa !5
  %982 = invoke noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL29type_is_msl_framebuffer_fetchERKNS_8SPIRTypeE(ptr noundef nonnull align 8 dereferenceable(12482) %146, ptr noundef nonnull align 8 dereferenceable(336) %981)
          to label %983 unwind label %1010

983:                                              ; preds = %980
  br i1 %982, label %1115, label %984

984:                                              ; preds = %983
  call void @llvm.lifetime.start.p0(i64 32, ptr %91) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %92) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %93) #8
  %985 = load ptr, ptr %16, align 8, !tbaa !5
  %986 = load i32, ptr %17, align 4, !tbaa !18
  %987 = load ptr, ptr %146, align 8, !tbaa !192
  %988 = getelementptr inbounds ptr, ptr %987, i64 23
  %989 = load ptr, ptr %988, align 8
  invoke void %989(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %93, ptr noundef nonnull align 8 dereferenceable(12482) %146, ptr noundef nonnull align 8 dereferenceable(336) %985, i32 noundef %986, i1 noundef zeroext false)
          to label %990 unwind label %1014

990:                                              ; preds = %984
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %92, ptr noundef nonnull align 8 dereferenceable(32) %93, ptr noundef @.str.60)
          to label %991 unwind label %1018

991:                                              ; preds = %990
  %992 = load ptr, ptr %14, align 8, !tbaa !5
  %993 = getelementptr inbounds %struct.Resource, ptr %992, i32 0, i32 2
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %91, ptr noundef nonnull align 8 dereferenceable(32) %92, ptr noundef nonnull align 8 dereferenceable(32) %993)
          to label %994 unwind label %1022

994:                                              ; preds = %991
  %995 = load ptr, ptr %4, align 8, !tbaa !5
  %996 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %995, ptr noundef nonnull align 8 dereferenceable(32) %91)
          to label %997 unwind label %1026

997:                                              ; preds = %994
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %91) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %93) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %93) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %92) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %91) #8
  %998 = load ptr, ptr %14, align 8, !tbaa !5
  %999 = getelementptr inbounds %struct.Resource, ptr %998, i32 0, i32 5
  %1000 = load i32, ptr %999, align 8, !tbaa !197
  %1001 = icmp ugt i32 %1000, 0
  br i1 %1001, label %1002, label %1042

1002:                                             ; preds = %997
  call void @llvm.lifetime.start.p0(i64 32, ptr %94) #8
  %1003 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %146, i32 0, i32 94
  %1004 = load ptr, ptr %14, align 8, !tbaa !5
  %1005 = getelementptr inbounds %struct.Resource, ptr %1004, i32 0, i32 5
  invoke void @_ZN11spirv_cross4joinIJRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERjEEES6_DpOT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %94, ptr noundef nonnull align 8 dereferenceable(32) %1003, ptr noundef nonnull align 4 dereferenceable(4) %1005)
          to label %1006 unwind label %1033

1006:                                             ; preds = %1002
  %1007 = load ptr, ptr %4, align 8, !tbaa !5
  %1008 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %1007, ptr noundef nonnull align 8 dereferenceable(32) %94)
          to label %1009 unwind label %1037

1009:                                             ; preds = %1006
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %94) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %94) #8
  br label %1042

1010:                                             ; preds = %1125, %1119, %1115, %1111, %1107, %1102, %1042, %980, %978, %974
  %1011 = landingpad { ptr, i32 }
          cleanup
  %1012 = extractvalue { ptr, i32 } %1011, 0
  store ptr %1012, ptr %7, align 8
  %1013 = extractvalue { ptr, i32 } %1011, 1
  store i32 %1013, ptr %8, align 4
  br label %1316

1014:                                             ; preds = %984
  %1015 = landingpad { ptr, i32 }
          cleanup
  %1016 = extractvalue { ptr, i32 } %1015, 0
  store ptr %1016, ptr %7, align 8
  %1017 = extractvalue { ptr, i32 } %1015, 1
  store i32 %1017, ptr %8, align 4
  br label %1032

1018:                                             ; preds = %990
  %1019 = landingpad { ptr, i32 }
          cleanup
  %1020 = extractvalue { ptr, i32 } %1019, 0
  store ptr %1020, ptr %7, align 8
  %1021 = extractvalue { ptr, i32 } %1019, 1
  store i32 %1021, ptr %8, align 4
  br label %1031

1022:                                             ; preds = %991
  %1023 = landingpad { ptr, i32 }
          cleanup
  %1024 = extractvalue { ptr, i32 } %1023, 0
  store ptr %1024, ptr %7, align 8
  %1025 = extractvalue { ptr, i32 } %1023, 1
  store i32 %1025, ptr %8, align 4
  br label %1030

1026:                                             ; preds = %994
  %1027 = landingpad { ptr, i32 }
          cleanup
  %1028 = extractvalue { ptr, i32 } %1027, 0
  store ptr %1028, ptr %7, align 8
  %1029 = extractvalue { ptr, i32 } %1027, 1
  store i32 %1029, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %91) #8
  br label %1030

1030:                                             ; preds = %1026, %1022
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #8
  br label %1031

1031:                                             ; preds = %1030, %1018
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %93) #8
  br label %1032

1032:                                             ; preds = %1031, %1014
  call void @llvm.lifetime.end.p0(i64 32, ptr %93) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %92) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %91) #8
  br label %1316

1033:                                             ; preds = %1002
  %1034 = landingpad { ptr, i32 }
          cleanup
  %1035 = extractvalue { ptr, i32 } %1034, 0
  store ptr %1035, ptr %7, align 8
  %1036 = extractvalue { ptr, i32 } %1034, 1
  store i32 %1036, ptr %8, align 4
  br label %1041

1037:                                             ; preds = %1006
  %1038 = landingpad { ptr, i32 }
          cleanup
  %1039 = extractvalue { ptr, i32 } %1038, 0
  store ptr %1039, ptr %7, align 8
  %1040 = extractvalue { ptr, i32 } %1038, 1
  store i32 %1040, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %94) #8
  br label %1041

1041:                                             ; preds = %1037, %1033
  call void @llvm.lifetime.end.p0(i64 32, ptr %94) #8
  br label %1316

1042:                                             ; preds = %1009, %997
  %1043 = load ptr, ptr %15, align 8, !tbaa !5
  %1044 = invoke noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL25is_var_runtime_size_arrayERKNS_12SPIRVariableE(ptr noundef nonnull align 8 dereferenceable(12482) %146, ptr noundef nonnull align 8 dereferenceable(176) %1043)
          to label %1045 unwind label %1010

1045:                                             ; preds = %1042
  br i1 %1044, label %1046, label %1074

1046:                                             ; preds = %1045
  call void @llvm.lifetime.start.p0(i64 32, ptr %95) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %96) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %97) #8
  %1047 = load ptr, ptr %14, align 8, !tbaa !5
  %1048 = getelementptr inbounds %struct.Resource, ptr %1047, i32 0, i32 4
  invoke void @_ZN11spirv_cross17convert_to_stringIjTnNSt9enable_ifIXntsr3std17is_floating_pointIT_EE5valueEiE4typeELi0EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS2_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %97, ptr noundef nonnull align 4 dereferenceable(4) %1048)
          to label %1049 unwind label %1055

1049:                                             ; preds = %1046
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %96, ptr noundef @.str.1377, ptr noundef nonnull align 8 dereferenceable(32) %97)
          to label %1050 unwind label %1059

1050:                                             ; preds = %1049
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %95, ptr noundef nonnull align 8 dereferenceable(32) %96, ptr noundef @.str.53)
          to label %1051 unwind label %1063

1051:                                             ; preds = %1050
  %1052 = load ptr, ptr %4, align 8, !tbaa !5
  %1053 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %1052, ptr noundef nonnull align 8 dereferenceable(32) %95)
          to label %1054 unwind label %1067

1054:                                             ; preds = %1051
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %95) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %96) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %97) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %97) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %96) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %95) #8
  br label %1102

1055:                                             ; preds = %1046
  %1056 = landingpad { ptr, i32 }
          cleanup
  %1057 = extractvalue { ptr, i32 } %1056, 0
  store ptr %1057, ptr %7, align 8
  %1058 = extractvalue { ptr, i32 } %1056, 1
  store i32 %1058, ptr %8, align 4
  br label %1073

1059:                                             ; preds = %1049
  %1060 = landingpad { ptr, i32 }
          cleanup
  %1061 = extractvalue { ptr, i32 } %1060, 0
  store ptr %1061, ptr %7, align 8
  %1062 = extractvalue { ptr, i32 } %1060, 1
  store i32 %1062, ptr %8, align 4
  br label %1072

1063:                                             ; preds = %1050
  %1064 = landingpad { ptr, i32 }
          cleanup
  %1065 = extractvalue { ptr, i32 } %1064, 0
  store ptr %1065, ptr %7, align 8
  %1066 = extractvalue { ptr, i32 } %1064, 1
  store i32 %1066, ptr %8, align 4
  br label %1071

1067:                                             ; preds = %1051
  %1068 = landingpad { ptr, i32 }
          cleanup
  %1069 = extractvalue { ptr, i32 } %1068, 0
  store ptr %1069, ptr %7, align 8
  %1070 = extractvalue { ptr, i32 } %1068, 1
  store i32 %1070, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %95) #8
  br label %1071

1071:                                             ; preds = %1067, %1063
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %96) #8
  br label %1072

1072:                                             ; preds = %1071, %1059
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %97) #8
  br label %1073

1073:                                             ; preds = %1072, %1055
  call void @llvm.lifetime.end.p0(i64 32, ptr %97) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %96) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %95) #8
  br label %1316

1074:                                             ; preds = %1045
  call void @llvm.lifetime.start.p0(i64 32, ptr %98) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %99) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %100) #8
  %1075 = load ptr, ptr %14, align 8, !tbaa !5
  %1076 = getelementptr inbounds %struct.Resource, ptr %1075, i32 0, i32 4
  invoke void @_ZN11spirv_cross17convert_to_stringIjTnNSt9enable_ifIXntsr3std17is_floating_pointIT_EE5valueEiE4typeELi0EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS2_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %100, ptr noundef nonnull align 4 dereferenceable(4) %1076)
          to label %1077 unwind label %1083

1077:                                             ; preds = %1074
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %99, ptr noundef @.str.1379, ptr noundef nonnull align 8 dereferenceable(32) %100)
          to label %1078 unwind label %1087

1078:                                             ; preds = %1077
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %98, ptr noundef nonnull align 8 dereferenceable(32) %99, ptr noundef @.str.53)
          to label %1079 unwind label %1091

1079:                                             ; preds = %1078
  %1080 = load ptr, ptr %4, align 8, !tbaa !5
  %1081 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %1080, ptr noundef nonnull align 8 dereferenceable(32) %98)
          to label %1082 unwind label %1095

1082:                                             ; preds = %1079
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %98) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %99) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %100) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %100) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %99) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %98) #8
  br label %1102

1083:                                             ; preds = %1074
  %1084 = landingpad { ptr, i32 }
          cleanup
  %1085 = extractvalue { ptr, i32 } %1084, 0
  store ptr %1085, ptr %7, align 8
  %1086 = extractvalue { ptr, i32 } %1084, 1
  store i32 %1086, ptr %8, align 4
  br label %1101

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

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

1095:                                             ; preds = %1079
  %1096 = landingpad { ptr, i32 }
          cleanup
  %1097 = extractvalue { ptr, i32 } %1096, 0
  store ptr %1097, ptr %7, align 8
  %1098 = extractvalue { ptr, i32 } %1096, 1
  store i32 %1098, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %98) #8
  br label %1099

1099:                                             ; preds = %1095, %1091
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %99) #8
  br label %1100

1100:                                             ; preds = %1099, %1087
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %100) #8
  br label %1101

1101:                                             ; preds = %1100, %1083
  call void @llvm.lifetime.end.p0(i64 32, ptr %100) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %99) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %98) #8
  br label %1316

1102:                                             ; preds = %1082, %1054
  %1103 = getelementptr inbounds %"class.spirv_cross::Compiler", ptr %146, i32 0, i32 32
  %1104 = invoke noundef i64 @_ZNKSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEE5countERKj(ptr noundef nonnull align 8 dereferenceable(56) %1103, ptr noundef nonnull align 4 dereferenceable(4) %17)
          to label %1105 unwind label %1010

1105:                                             ; preds = %1102
  %1106 = icmp ne i64 %1104, 0
  br i1 %1106, label %1107, label %1111

1107:                                             ; preds = %1105
  %1108 = load ptr, ptr %4, align 8, !tbaa !5
  %1109 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %1108, ptr noundef @.str.1317)
          to label %1110 unwind label %1010

1110:                                             ; preds = %1107
  br label %1111

1111:                                             ; preds = %1110, %1105
  %1112 = load ptr, ptr %4, align 8, !tbaa !5
  %1113 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %1112, ptr noundef @.str.1318)
          to label %1114 unwind label %1010

1114:                                             ; preds = %1111
  br label %1190

1115:                                             ; preds = %983
  %1116 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %146, i32 0, i32 37
  %1117 = invoke noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options8is_macosEv(ptr noundef nonnull align 4 dereferenceable(137) %1116)
          to label %1118 unwind label %1010

1118:                                             ; preds = %1115
  br i1 %1117, label %1119, label %1130

1119:                                             ; preds = %1118
  %1120 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %146, i32 0, i32 37
  %1121 = invoke noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options20supports_msl_versionEjjj(ptr noundef nonnull align 4 dereferenceable(137) %1120, i32 noundef 2, i32 noundef 3, i32 noundef 0)
          to label %1122 unwind label %1010

1122:                                             ; preds = %1119
  br i1 %1121, label %1130, label %1123

1123:                                             ; preds = %1122
  %1124 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1124, ptr noundef @.str.1380)
          to label %1125 unwind label %1126

1125:                                             ; preds = %1123
  invoke void @__cxa_throw(ptr %1124, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #9
          to label %1644 unwind label %1010

1126:                                             ; preds = %1123
  %1127 = landingpad { ptr, i32 }
          cleanup
  %1128 = extractvalue { ptr, i32 } %1127, 0
  store ptr %1128, ptr %7, align 8
  %1129 = extractvalue { ptr, i32 } %1127, 1
  store i32 %1129, ptr %8, align 4
  call void @__cxa_free_exception(ptr %1124) #8
  br label %1316

1130:                                             ; preds = %1122, %1118
  call void @llvm.lifetime.start.p0(i64 32, ptr %101) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %102) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %103) #8
  %1131 = load ptr, ptr %16, align 8, !tbaa !5
  %1132 = load i32, ptr %17, align 4, !tbaa !18
  %1133 = load ptr, ptr %146, align 8, !tbaa !192
  %1134 = getelementptr inbounds ptr, ptr %1133, i64 23
  %1135 = load ptr, ptr %1134, align 8
  invoke void %1135(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %103, ptr noundef nonnull align 8 dereferenceable(12482) %146, ptr noundef nonnull align 8 dereferenceable(336) %1131, i32 noundef %1132, i1 noundef zeroext false)
          to label %1136 unwind label %1152

1136:                                             ; preds = %1130
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %102, ptr noundef nonnull align 8 dereferenceable(32) %103, ptr noundef @.str.60)
          to label %1137 unwind label %1156

1137:                                             ; preds = %1136
  %1138 = load ptr, ptr %14, align 8, !tbaa !5
  %1139 = getelementptr inbounds %struct.Resource, ptr %1138, i32 0, i32 2
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %101, ptr noundef nonnull align 8 dereferenceable(32) %102, ptr noundef nonnull align 8 dereferenceable(32) %1139)
          to label %1140 unwind label %1160

1140:                                             ; preds = %1137
  %1141 = load ptr, ptr %4, align 8, !tbaa !5
  %1142 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %1141, ptr noundef nonnull align 8 dereferenceable(32) %101)
          to label %1143 unwind label %1164

1143:                                             ; preds = %1140
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %101) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %102) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %103) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %103) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %102) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %101) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %104) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %105) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %106) #8
  %1144 = load ptr, ptr %14, align 8, !tbaa !5
  %1145 = getelementptr inbounds %struct.Resource, ptr %1144, i32 0, i32 4
  invoke void @_ZN11spirv_cross17convert_to_stringIjTnNSt9enable_ifIXntsr3std17is_floating_pointIT_EE5valueEiE4typeELi0EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS2_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %106, ptr noundef nonnull align 4 dereferenceable(4) %1145)
          to label %1146 unwind label %1171

1146:                                             ; preds = %1143
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %105, ptr noundef @.str.1337, ptr noundef nonnull align 8 dereferenceable(32) %106)
          to label %1147 unwind label %1175

1147:                                             ; preds = %1146
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %104, ptr noundef nonnull align 8 dereferenceable(32) %105, ptr noundef @.str.1322)
          to label %1148 unwind label %1179

1148:                                             ; preds = %1147
  %1149 = load ptr, ptr %4, align 8, !tbaa !5
  %1150 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %1149, ptr noundef nonnull align 8 dereferenceable(32) %104)
          to label %1151 unwind label %1183

1151:                                             ; preds = %1148
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %104) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %105) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %106) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %106) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %105) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %104) #8
  br label %1190

1152:                                             ; preds = %1130
  %1153 = landingpad { ptr, i32 }
          cleanup
  %1154 = extractvalue { ptr, i32 } %1153, 0
  store ptr %1154, ptr %7, align 8
  %1155 = extractvalue { ptr, i32 } %1153, 1
  store i32 %1155, ptr %8, align 4
  br label %1170

1156:                                             ; preds = %1136
  %1157 = landingpad { ptr, i32 }
          cleanup
  %1158 = extractvalue { ptr, i32 } %1157, 0
  store ptr %1158, ptr %7, align 8
  %1159 = extractvalue { ptr, i32 } %1157, 1
  store i32 %1159, ptr %8, align 4
  br label %1169

1160:                                             ; preds = %1137
  %1161 = landingpad { ptr, i32 }
          cleanup
  %1162 = extractvalue { ptr, i32 } %1161, 0
  store ptr %1162, ptr %7, align 8
  %1163 = extractvalue { ptr, i32 } %1161, 1
  store i32 %1163, ptr %8, align 4
  br label %1168

1164:                                             ; preds = %1140
  %1165 = landingpad { ptr, i32 }
          cleanup
  %1166 = extractvalue { ptr, i32 } %1165, 0
  store ptr %1166, ptr %7, align 8
  %1167 = extractvalue { ptr, i32 } %1165, 1
  store i32 %1167, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %101) #8
  br label %1168

1168:                                             ; preds = %1164, %1160
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %102) #8
  br label %1169

1169:                                             ; preds = %1168, %1156
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %103) #8
  br label %1170

1170:                                             ; preds = %1169, %1152
  call void @llvm.lifetime.end.p0(i64 32, ptr %103) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %102) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %101) #8
  br label %1316

1171:                                             ; preds = %1143
  %1172 = landingpad { ptr, i32 }
          cleanup
  %1173 = extractvalue { ptr, i32 } %1172, 0
  store ptr %1173, ptr %7, align 8
  %1174 = extractvalue { ptr, i32 } %1172, 1
  store i32 %1174, ptr %8, align 4
  br label %1189

1175:                                             ; preds = %1146
  %1176 = landingpad { ptr, i32 }
          cleanup
  %1177 = extractvalue { ptr, i32 } %1176, 0
  store ptr %1177, ptr %7, align 8
  %1178 = extractvalue { ptr, i32 } %1176, 1
  store i32 %1178, ptr %8, align 4
  br label %1188

1179:                                             ; preds = %1147
  %1180 = landingpad { ptr, i32 }
          cleanup
  %1181 = extractvalue { ptr, i32 } %1180, 0
  store ptr %1181, ptr %7, align 8
  %1182 = extractvalue { ptr, i32 } %1180, 1
  store i32 %1182, ptr %8, align 4
  br label %1187

1183:                                             ; preds = %1148
  %1184 = landingpad { ptr, i32 }
          cleanup
  %1185 = extractvalue { ptr, i32 } %1184, 0
  store ptr %1185, ptr %7, align 8
  %1186 = extractvalue { ptr, i32 } %1184, 1
  store i32 %1186, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %104) #8
  br label %1187

1187:                                             ; preds = %1183, %1179
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %105) #8
  br label %1188

1188:                                             ; preds = %1187, %1175
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %106) #8
  br label %1189

1189:                                             ; preds = %1188, %1171
  call void @llvm.lifetime.end.p0(i64 32, ptr %106) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %105) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %104) #8
  br label %1316

1190:                                             ; preds = %1151, %1114
  %1191 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %146, i32 0, i32 109
  call void @llvm.lifetime.start.p0(i64 4, ptr %107) #8
  %1192 = load ptr, ptr %15, align 8, !tbaa !5
  %1193 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %1192, i32 0, i32 1
  %1194 = invoke noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %1193)
          to label %1195 unwind label %1250

1195:                                             ; preds = %1190
  store i32 %1194, ptr %107, align 4, !tbaa !18
  %1196 = invoke noundef i64 @_ZNKSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEE5countERKj(ptr noundef nonnull align 8 dereferenceable(56) %1191, ptr noundef nonnull align 4 dereferenceable(4) %107)
          to label %1197 unwind label %1250

1197:                                             ; preds = %1195
  %1198 = icmp ne i64 %1196, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %107) #8
  br i1 %1198, label %1199, label %1315

1199:                                             ; preds = %1197
  call void @llvm.lifetime.start.p0(i64 8, ptr %108) #8
  %1200 = getelementptr inbounds %"class.spirv_cross::Compiler", ptr %146, i32 0, i32 1
  %1201 = load ptr, ptr %15, align 8, !tbaa !5
  %1202 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %1201, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %109, ptr align 8 %1202, i64 4, i1 false), !tbaa.struct !180
  %1203 = getelementptr inbounds %"class.spirv_cross::TypedID.413", ptr %109, i32 0, i32 0
  %1204 = load i32, ptr %1203, align 4
  %1205 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZNK11spirv_cross8ParsedIR21get_decoration_bitsetENS_7TypedIDILNS_5TypesE0EEE(ptr noundef nonnull align 8 dereferenceable(1920) %1200, i32 %1204)
          to label %1206 unwind label %1254

1206:                                             ; preds = %1199
  store ptr %1205, ptr %108, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %110) #8
  %1207 = load ptr, ptr %108, align 8, !tbaa !5
  %1208 = invoke noundef zeroext i1 @_ZN11spirv_cross11CompilerMSL32decoration_flags_signal_volatileERKNS_6BitsetE(ptr noundef nonnull align 8 dereferenceable(64) %1207)
          to label %1209 unwind label %1258

1209:                                             ; preds = %1206
  %1210 = zext i1 %1208 to i64
  %1211 = select i1 %1208, ptr @.str.1118, ptr @.str.35
  store ptr %1211, ptr %110, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %111) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %112) #8
  %1212 = load ptr, ptr %90, align 8, !tbaa !5
  %1213 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %1212, i32 0, i32 14
  %1214 = getelementptr inbounds %"struct.spirv_cross::SPIRType::ImageType", ptr %1213, i32 0, i32 0
  %1215 = invoke noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE1EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %1214)
          to label %1216 unwind label %1262

1216:                                             ; preds = %1209
  %1217 = invoke noundef nonnull align 8 dereferenceable(336) ptr @_ZN11spirv_cross8Compiler3getINS_8SPIRTypeEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %146, i32 noundef %1215)
          to label %1218 unwind label %1262

1218:                                             ; preds = %1216
  %1219 = load ptr, ptr %146, align 8, !tbaa !192
  %1220 = getelementptr inbounds ptr, ptr %1219, i64 19
  %1221 = load ptr, ptr %1220, align 8
  invoke void %1221(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %112, ptr noundef nonnull align 8 dereferenceable(12482) %146, ptr noundef nonnull align 8 dereferenceable(336) %1217, i32 noundef 0)
          to label %1222 unwind label %1262

1222:                                             ; preds = %1218
  invoke void @_ZN11spirv_cross4joinIJRA3_KcRPS1_RA15_S1_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEESD_DpOT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %111, ptr noundef nonnull align 1 dereferenceable(3) @.str.55, ptr noundef nonnull align 8 dereferenceable(8) %110, ptr noundef nonnull align 1 dereferenceable(15) @.str.1381, ptr noundef nonnull align 8 dereferenceable(32) %112)
          to label %1223 unwind label %1266

1223:                                             ; preds = %1222
  %1224 = load ptr, ptr %4, align 8, !tbaa !5
  %1225 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %1224, ptr noundef nonnull align 8 dereferenceable(32) %111)
          to label %1226 unwind label %1270

1226:                                             ; preds = %1223
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %111) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %112) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %112) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %111) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %113) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %114) #8
  %1227 = load ptr, ptr %14, align 8, !tbaa !5
  %1228 = getelementptr inbounds %struct.Resource, ptr %1227, i32 0, i32 2
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %114, ptr noundef @.str.61, ptr noundef nonnull align 8 dereferenceable(32) %1228)
          to label %1229 unwind label %1276

1229:                                             ; preds = %1226
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %113, ptr noundef nonnull align 8 dereferenceable(32) %114, ptr noundef @.str.1293)
          to label %1230 unwind label %1280

1230:                                             ; preds = %1229
  %1231 = load ptr, ptr %4, align 8, !tbaa !5
  %1232 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %1231, ptr noundef nonnull align 8 dereferenceable(32) %113)
          to label %1233 unwind label %1284

1233:                                             ; preds = %1230
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %113) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %114) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %114) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %113) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %115) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %116) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %117) #8
  %1234 = load ptr, ptr %14, align 8, !tbaa !5
  %1235 = getelementptr inbounds %struct.Resource, ptr %1234, i32 0, i32 6
  invoke void @_ZN11spirv_cross17convert_to_stringIjTnNSt9enable_ifIXntsr3std17is_floating_pointIT_EE5valueEiE4typeELi0EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS2_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %117, ptr noundef nonnull align 4 dereferenceable(4) %1235)
          to label %1236 unwind label %1290

1236:                                             ; preds = %1233
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %116, ptr noundef @.str.1360, ptr noundef nonnull align 8 dereferenceable(32) %117)
          to label %1237 unwind label %1294

1237:                                             ; preds = %1236
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %115, ptr noundef nonnull align 8 dereferenceable(32) %116, ptr noundef @.str.53)
          to label %1238 unwind label %1298

1238:                                             ; preds = %1237
  %1239 = load ptr, ptr %4, align 8, !tbaa !5
  %1240 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %1239, ptr noundef nonnull align 8 dereferenceable(32) %115)
          to label %1241 unwind label %1302

1241:                                             ; preds = %1238
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %115) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %116) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %117) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %117) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %116) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %115) #8
  %1242 = getelementptr inbounds %"class.spirv_cross::Compiler", ptr %146, i32 0, i32 32
  %1243 = invoke noundef i64 @_ZNKSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEE5countERKj(ptr noundef nonnull align 8 dereferenceable(56) %1242, ptr noundef nonnull align 4 dereferenceable(4) %17)
          to label %1244 unwind label %1258

1244:                                             ; preds = %1241
  %1245 = icmp ne i64 %1243, 0
  br i1 %1245, label %1246, label %1309

1246:                                             ; preds = %1244
  %1247 = load ptr, ptr %4, align 8, !tbaa !5
  %1248 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %1247, ptr noundef @.str.1317)
          to label %1249 unwind label %1258

1249:                                             ; preds = %1246
  br label %1309

1250:                                             ; preds = %1195, %1190
  %1251 = landingpad { ptr, i32 }
          cleanup
  %1252 = extractvalue { ptr, i32 } %1251, 0
  store ptr %1252, ptr %7, align 8
  %1253 = extractvalue { ptr, i32 } %1251, 1
  store i32 %1253, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %107) #8
  br label %1316

1254:                                             ; preds = %1199
  %1255 = landingpad { ptr, i32 }
          cleanup
  %1256 = extractvalue { ptr, i32 } %1255, 0
  store ptr %1256, ptr %7, align 8
  %1257 = extractvalue { ptr, i32 } %1255, 1
  store i32 %1257, ptr %8, align 4
  br label %1314

1258:                                             ; preds = %1309, %1246, %1241, %1206
  %1259 = landingpad { ptr, i32 }
          cleanup
  %1260 = extractvalue { ptr, i32 } %1259, 0
  store ptr %1260, ptr %7, align 8
  %1261 = extractvalue { ptr, i32 } %1259, 1
  store i32 %1261, ptr %8, align 4
  br label %1313

1262:                                             ; preds = %1218, %1216, %1209
  %1263 = landingpad { ptr, i32 }
          cleanup
  %1264 = extractvalue { ptr, i32 } %1263, 0
  store ptr %1264, ptr %7, align 8
  %1265 = extractvalue { ptr, i32 } %1263, 1
  store i32 %1265, ptr %8, align 4
  br label %1275

1266:                                             ; preds = %1222
  %1267 = landingpad { ptr, i32 }
          cleanup
  %1268 = extractvalue { ptr, i32 } %1267, 0
  store ptr %1268, ptr %7, align 8
  %1269 = extractvalue { ptr, i32 } %1267, 1
  store i32 %1269, ptr %8, align 4
  br label %1274

1270:                                             ; preds = %1223
  %1271 = landingpad { ptr, i32 }
          cleanup
  %1272 = extractvalue { ptr, i32 } %1271, 0
  store ptr %1272, ptr %7, align 8
  %1273 = extractvalue { ptr, i32 } %1271, 1
  store i32 %1273, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %111) #8
  br label %1274

1274:                                             ; preds = %1270, %1266
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %112) #8
  br label %1275

1275:                                             ; preds = %1274, %1262
  call void @llvm.lifetime.end.p0(i64 32, ptr %112) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %111) #8
  br label %1313

1276:                                             ; preds = %1226
  %1277 = landingpad { ptr, i32 }
          cleanup
  %1278 = extractvalue { ptr, i32 } %1277, 0
  store ptr %1278, ptr %7, align 8
  %1279 = extractvalue { ptr, i32 } %1277, 1
  store i32 %1279, ptr %8, align 4
  br label %1289

1280:                                             ; preds = %1229
  %1281 = landingpad { ptr, i32 }
          cleanup
  %1282 = extractvalue { ptr, i32 } %1281, 0
  store ptr %1282, ptr %7, align 8
  %1283 = extractvalue { ptr, i32 } %1281, 1
  store i32 %1283, ptr %8, align 4
  br label %1288

1284:                                             ; preds = %1230
  %1285 = landingpad { ptr, i32 }
          cleanup
  %1286 = extractvalue { ptr, i32 } %1285, 0
  store ptr %1286, ptr %7, align 8
  %1287 = extractvalue { ptr, i32 } %1285, 1
  store i32 %1287, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %113) #8
  br label %1288

1288:                                             ; preds = %1284, %1280
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %114) #8
  br label %1289

1289:                                             ; preds = %1288, %1276
  call void @llvm.lifetime.end.p0(i64 32, ptr %114) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %113) #8
  br label %1313

1290:                                             ; preds = %1233
  %1291 = landingpad { ptr, i32 }
          cleanup
  %1292 = extractvalue { ptr, i32 } %1291, 0
  store ptr %1292, ptr %7, align 8
  %1293 = extractvalue { ptr, i32 } %1291, 1
  store i32 %1293, ptr %8, align 4
  br label %1308

1294:                                             ; preds = %1236
  %1295 = landingpad { ptr, i32 }
          cleanup
  %1296 = extractvalue { ptr, i32 } %1295, 0
  store ptr %1296, ptr %7, align 8
  %1297 = extractvalue { ptr, i32 } %1295, 1
  store i32 %1297, ptr %8, align 4
  br label %1307

1298:                                             ; preds = %1237
  %1299 = landingpad { ptr, i32 }
          cleanup
  %1300 = extractvalue { ptr, i32 } %1299, 0
  store ptr %1300, ptr %7, align 8
  %1301 = extractvalue { ptr, i32 } %1299, 1
  store i32 %1301, ptr %8, align 4
  br label %1306

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

1306:                                             ; preds = %1302, %1298
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %116) #8
  br label %1307

1307:                                             ; preds = %1306, %1294
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %117) #8
  br label %1308

1308:                                             ; preds = %1307, %1290
  call void @llvm.lifetime.end.p0(i64 32, ptr %117) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %116) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %115) #8
  br label %1313

1309:                                             ; preds = %1249, %1244
  %1310 = load ptr, ptr %4, align 8, !tbaa !5
  %1311 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %1310, ptr noundef @.str.1318)
          to label %1312 unwind label %1258

1312:                                             ; preds = %1309
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #8
  br label %1315

1313:                                             ; preds = %1308, %1289, %1275, %1258
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #8
  br label %1314

1314:                                             ; preds = %1313, %1254
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #8
  br label %1316

1315:                                             ; preds = %1312, %1197
  store i32 4, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #8
  br label %1631

1316:                                             ; preds = %1314, %1250, %1189, %1170, %1126, %1101, %1073, %1041, %1032, %1010
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #8
  br label %1635

1317:                                             ; preds = %183
  %1318 = load ptr, ptr %15, align 8, !tbaa !5
  %1319 = invoke noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL25is_var_runtime_size_arrayERKNS_12SPIRVariableE(ptr noundef nonnull align 8 dereferenceable(12482) %146, ptr noundef nonnull align 8 dereferenceable(176) %1318)
          to label %1320 unwind label %191

1320:                                             ; preds = %1317
  br i1 %1319, label %1321, label %1420

1321:                                             ; preds = %1320
  invoke void @_ZN11spirv_cross11CompilerMSL26add_spv_func_and_recompileENS0_11SPVFuncImplE(ptr noundef nonnull align 8 dereferenceable(12482) %146, i8 noundef zeroext 68)
          to label %1322 unwind label %191

1322:                                             ; preds = %1321
  call void @llvm.lifetime.start.p0(i64 8, ptr %118) #8
  %1323 = load ptr, ptr %16, align 8, !tbaa !5
  %1324 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %1323, i32 0, i32 16
  %1325 = invoke noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE1EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %1324)
          to label %1326 unwind label %1335

1326:                                             ; preds = %1322
  %1327 = invoke noundef nonnull align 8 dereferenceable(336) ptr @_ZN11spirv_cross8Compiler3getINS_8SPIRTypeEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %146, i32 noundef %1325)
          to label %1328 unwind label %1335

1328:                                             ; preds = %1326
  store ptr %1327, ptr %118, align 8, !tbaa !5
  %1329 = load ptr, ptr %4, align 8, !tbaa !5
  %1330 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %1329) #8
  br i1 %1330, label %1339, label %1331

1331:                                             ; preds = %1328
  %1332 = load ptr, ptr %4, align 8, !tbaa !5
  %1333 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %1332, ptr noundef @.str.55)
          to label %1334 unwind label %1335

1334:                                             ; preds = %1331
  br label %1339

1335:                                             ; preds = %1331, %1326, %1322
  %1336 = landingpad { ptr, i32 }
          cleanup
  %1337 = extractvalue { ptr, i32 } %1336, 0
  store ptr %1337, ptr %7, align 8
  %1338 = extractvalue { ptr, i32 } %1336, 1
  store i32 %1338, ptr %8, align 4
  br label %1419

1339:                                             ; preds = %1334, %1328
  call void @llvm.lifetime.start.p0(i64 32, ptr %119) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %120) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %121) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %122) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %123) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %124) #8
  %1340 = load ptr, ptr %118, align 8, !tbaa !5
  %1341 = load ptr, ptr %146, align 8, !tbaa !192
  %1342 = getelementptr inbounds ptr, ptr %1341, i64 19
  %1343 = load ptr, ptr %1342, align 8
  invoke void %1343(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %124, ptr noundef nonnull align 8 dereferenceable(12482) %146, ptr noundef nonnull align 8 dereferenceable(336) %1340, i32 noundef 0)
          to label %1344 unwind label %1366

1344:                                             ; preds = %1339
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %123, ptr noundef @.str.1376, ptr noundef nonnull align 8 dereferenceable(32) %124)
          to label %1345 unwind label %1370

1345:                                             ; preds = %1344
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %122, ptr noundef nonnull align 8 dereferenceable(32) %123, ptr noundef @.str.1382)
          to label %1346 unwind label %1374

1346:                                             ; preds = %1345
  %1347 = load i32, ptr %17, align 4, !tbaa !18
  %1348 = invoke noundef ptr @_ZN11spirv_cross11CompilerMSL11to_restrictEjb(ptr noundef nonnull align 8 dereferenceable(12482) %146, i32 noundef %1347, i1 noundef zeroext true)
          to label %1349 unwind label %1378

1349:                                             ; preds = %1346
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %121, ptr noundef nonnull align 8 dereferenceable(32) %122, ptr noundef %1348)
          to label %1350 unwind label %1378

1350:                                             ; preds = %1349
  %1351 = load ptr, ptr %14, align 8, !tbaa !5
  %1352 = getelementptr inbounds %struct.Resource, ptr %1351, i32 0, i32 2
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %120, ptr noundef nonnull align 8 dereferenceable(32) %121, ptr noundef nonnull align 8 dereferenceable(32) %1352)
          to label %1353 unwind label %1382

1353:                                             ; preds = %1350
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %119, ptr noundef nonnull align 8 dereferenceable(32) %120, ptr noundef @.str.76)
          to label %1354 unwind label %1386

1354:                                             ; preds = %1353
  %1355 = load ptr, ptr %4, align 8, !tbaa !5
  %1356 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %1355, ptr noundef nonnull align 8 dereferenceable(32) %119)
          to label %1357 unwind label %1390

1357:                                             ; preds = %1354
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %119) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %120) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %121) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %122) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %123) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %124) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %124) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %123) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %122) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %121) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %120) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %119) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %125) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %126) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %127) #8
  %1358 = load ptr, ptr %14, align 8, !tbaa !5
  %1359 = getelementptr inbounds %struct.Resource, ptr %1358, i32 0, i32 4
  invoke void @_ZN11spirv_cross17convert_to_stringIjTnNSt9enable_ifIXntsr3std17is_floating_pointIT_EE5valueEiE4typeELi0EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS2_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %127, ptr noundef nonnull align 4 dereferenceable(4) %1359)
          to label %1360 unwind label %1400

1360:                                             ; preds = %1357
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %126, ptr noundef @.str.1360, ptr noundef nonnull align 8 dereferenceable(32) %127)
          to label %1361 unwind label %1404

1361:                                             ; preds = %1360
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %125, ptr noundef nonnull align 8 dereferenceable(32) %126, ptr noundef @.str.1322)
          to label %1362 unwind label %1408

1362:                                             ; preds = %1361
  %1363 = load ptr, ptr %4, align 8, !tbaa !5
  %1364 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %1363, ptr noundef nonnull align 8 dereferenceable(32) %125)
          to label %1365 unwind label %1412

1365:                                             ; preds = %1362
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %125) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %126) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %127) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %127) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %126) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %125) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %118) #8
  br label %1487

1366:                                             ; preds = %1339
  %1367 = landingpad { ptr, i32 }
          cleanup
  %1368 = extractvalue { ptr, i32 } %1367, 0
  store ptr %1368, ptr %7, align 8
  %1369 = extractvalue { ptr, i32 } %1367, 1
  store i32 %1369, ptr %8, align 4
  br label %1399

1370:                                             ; preds = %1344
  %1371 = landingpad { ptr, i32 }
          cleanup
  %1372 = extractvalue { ptr, i32 } %1371, 0
  store ptr %1372, ptr %7, align 8
  %1373 = extractvalue { ptr, i32 } %1371, 1
  store i32 %1373, ptr %8, align 4
  br label %1398

1374:                                             ; preds = %1345
  %1375 = landingpad { ptr, i32 }
          cleanup
  %1376 = extractvalue { ptr, i32 } %1375, 0
  store ptr %1376, ptr %7, align 8
  %1377 = extractvalue { ptr, i32 } %1375, 1
  store i32 %1377, ptr %8, align 4
  br label %1397

1378:                                             ; preds = %1349, %1346
  %1379 = landingpad { ptr, i32 }
          cleanup
  %1380 = extractvalue { ptr, i32 } %1379, 0
  store ptr %1380, ptr %7, align 8
  %1381 = extractvalue { ptr, i32 } %1379, 1
  store i32 %1381, ptr %8, align 4
  br label %1396

1382:                                             ; preds = %1350
  %1383 = landingpad { ptr, i32 }
          cleanup
  %1384 = extractvalue { ptr, i32 } %1383, 0
  store ptr %1384, ptr %7, align 8
  %1385 = extractvalue { ptr, i32 } %1383, 1
  store i32 %1385, ptr %8, align 4
  br label %1395

1386:                                             ; preds = %1353
  %1387 = landingpad { ptr, i32 }
          cleanup
  %1388 = extractvalue { ptr, i32 } %1387, 0
  store ptr %1388, ptr %7, align 8
  %1389 = extractvalue { ptr, i32 } %1387, 1
  store i32 %1389, ptr %8, align 4
  br label %1394

1390:                                             ; preds = %1354
  %1391 = landingpad { ptr, i32 }
          cleanup
  %1392 = extractvalue { ptr, i32 } %1391, 0
  store ptr %1392, ptr %7, align 8
  %1393 = extractvalue { ptr, i32 } %1391, 1
  store i32 %1393, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %119) #8
  br label %1394

1394:                                             ; preds = %1390, %1386
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %120) #8
  br label %1395

1395:                                             ; preds = %1394, %1382
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %121) #8
  br label %1396

1396:                                             ; preds = %1395, %1378
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %122) #8
  br label %1397

1397:                                             ; preds = %1396, %1374
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %123) #8
  br label %1398

1398:                                             ; preds = %1397, %1370
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %124) #8
  br label %1399

1399:                                             ; preds = %1398, %1366
  call void @llvm.lifetime.end.p0(i64 32, ptr %124) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %123) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %122) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %121) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %120) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %119) #8
  br label %1419

1400:                                             ; preds = %1357
  %1401 = landingpad { ptr, i32 }
          cleanup
  %1402 = extractvalue { ptr, i32 } %1401, 0
  store ptr %1402, ptr %7, align 8
  %1403 = extractvalue { ptr, i32 } %1401, 1
  store i32 %1403, ptr %8, align 4
  br label %1418

1404:                                             ; preds = %1360
  %1405 = landingpad { ptr, i32 }
          cleanup
  %1406 = extractvalue { ptr, i32 } %1405, 0
  store ptr %1406, ptr %7, align 8
  %1407 = extractvalue { ptr, i32 } %1405, 1
  store i32 %1407, ptr %8, align 4
  br label %1417

1408:                                             ; preds = %1361
  %1409 = landingpad { ptr, i32 }
          cleanup
  %1410 = extractvalue { ptr, i32 } %1409, 0
  store ptr %1410, ptr %7, align 8
  %1411 = extractvalue { ptr, i32 } %1409, 1
  store i32 %1411, ptr %8, align 4
  br label %1416

1412:                                             ; preds = %1362
  %1413 = landingpad { ptr, i32 }
          cleanup
  %1414 = extractvalue { ptr, i32 } %1413, 0
  store ptr %1414, ptr %7, align 8
  %1415 = extractvalue { ptr, i32 } %1413, 1
  store i32 %1415, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %125) #8
  br label %1416

1416:                                             ; preds = %1412, %1408
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %126) #8
  br label %1417

1417:                                             ; preds = %1416, %1404
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %127) #8
  br label %1418

1418:                                             ; preds = %1417, %1400
  call void @llvm.lifetime.end.p0(i64 32, ptr %127) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %126) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %125) #8
  br label %1419

1419:                                             ; preds = %1418, %1399, %1335
  call void @llvm.lifetime.end.p0(i64 8, ptr %118) #8
  br label %1635

1420:                                             ; preds = %1320
  %1421 = load ptr, ptr %4, align 8, !tbaa !5
  %1422 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %1421) #8
  br i1 %1422, label %1427, label %1423

1423:                                             ; preds = %1420
  %1424 = load ptr, ptr %4, align 8, !tbaa !5
  %1425 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %1424, ptr noundef @.str.55)
          to label %1426 unwind label %191

1426:                                             ; preds = %1423
  br label %1427

1427:                                             ; preds = %1426, %1420
  call void @llvm.lifetime.start.p0(i64 32, ptr %128) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %129) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %130) #8
  %1428 = load ptr, ptr %16, align 8, !tbaa !5
  %1429 = load i32, ptr %17, align 4, !tbaa !18
  %1430 = load ptr, ptr %146, align 8, !tbaa !192
  %1431 = getelementptr inbounds ptr, ptr %1430, i64 19
  %1432 = load ptr, ptr %1431, align 8
  invoke void %1432(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %130, ptr noundef nonnull align 8 dereferenceable(12482) %146, ptr noundef nonnull align 8 dereferenceable(336) %1428, i32 noundef %1429)
          to label %1433 unwind label %1449

1433:                                             ; preds = %1427
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %129, ptr noundef nonnull align 8 dereferenceable(32) %130, ptr noundef @.str.60)
          to label %1434 unwind label %1453

1434:                                             ; preds = %1433
  %1435 = load ptr, ptr %14, align 8, !tbaa !5
  %1436 = getelementptr inbounds %struct.Resource, ptr %1435, i32 0, i32 2
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %128, ptr noundef nonnull align 8 dereferenceable(32) %129, ptr noundef nonnull align 8 dereferenceable(32) %1436)
          to label %1437 unwind label %1457

1437:                                             ; preds = %1434
  %1438 = load ptr, ptr %4, align 8, !tbaa !5
  %1439 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %1438, ptr noundef nonnull align 8 dereferenceable(32) %128)
          to label %1440 unwind label %1461

1440:                                             ; preds = %1437
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %128) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %129) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %130) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %130) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %129) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %128) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %131) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %132) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %133) #8
  %1441 = load ptr, ptr %14, align 8, !tbaa !5
  %1442 = getelementptr inbounds %struct.Resource, ptr %1441, i32 0, i32 4
  invoke void @_ZN11spirv_cross17convert_to_stringIjTnNSt9enable_ifIXntsr3std17is_floating_pointIT_EE5valueEiE4typeELi0EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS2_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %133, ptr noundef nonnull align 4 dereferenceable(4) %1442)
          to label %1443 unwind label %1468

1443:                                             ; preds = %1440
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %132, ptr noundef @.str.1360, ptr noundef nonnull align 8 dereferenceable(32) %133)
          to label %1444 unwind label %1472

1444:                                             ; preds = %1443
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %131, ptr noundef nonnull align 8 dereferenceable(32) %132, ptr noundef @.str.1322)
          to label %1445 unwind label %1476

1445:                                             ; preds = %1444
  %1446 = load ptr, ptr %4, align 8, !tbaa !5
  %1447 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %1446, ptr noundef nonnull align 8 dereferenceable(32) %131)
          to label %1448 unwind label %1480

1448:                                             ; preds = %1445
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %131) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %132) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %133) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %133) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %132) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %131) #8
  br label %1487

1449:                                             ; preds = %1427
  %1450 = landingpad { ptr, i32 }
          cleanup
  %1451 = extractvalue { ptr, i32 } %1450, 0
  store ptr %1451, ptr %7, align 8
  %1452 = extractvalue { ptr, i32 } %1450, 1
  store i32 %1452, ptr %8, align 4
  br label %1467

1453:                                             ; preds = %1433
  %1454 = landingpad { ptr, i32 }
          cleanup
  %1455 = extractvalue { ptr, i32 } %1454, 0
  store ptr %1455, ptr %7, align 8
  %1456 = extractvalue { ptr, i32 } %1454, 1
  store i32 %1456, ptr %8, align 4
  br label %1466

1457:                                             ; preds = %1434
  %1458 = landingpad { ptr, i32 }
          cleanup
  %1459 = extractvalue { ptr, i32 } %1458, 0
  store ptr %1459, ptr %7, align 8
  %1460 = extractvalue { ptr, i32 } %1458, 1
  store i32 %1460, ptr %8, align 4
  br label %1465

1461:                                             ; preds = %1437
  %1462 = landingpad { ptr, i32 }
          cleanup
  %1463 = extractvalue { ptr, i32 } %1462, 0
  store ptr %1463, ptr %7, align 8
  %1464 = extractvalue { ptr, i32 } %1462, 1
  store i32 %1464, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %128) #8
  br label %1465

1465:                                             ; preds = %1461, %1457
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %129) #8
  br label %1466

1466:                                             ; preds = %1465, %1453
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %130) #8
  br label %1467

1467:                                             ; preds = %1466, %1449
  call void @llvm.lifetime.end.p0(i64 32, ptr %130) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %129) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %128) #8
  br label %1635

1468:                                             ; preds = %1440
  %1469 = landingpad { ptr, i32 }
          cleanup
  %1470 = extractvalue { ptr, i32 } %1469, 0
  store ptr %1470, ptr %7, align 8
  %1471 = extractvalue { ptr, i32 } %1469, 1
  store i32 %1471, ptr %8, align 4
  br label %1486

1472:                                             ; preds = %1443
  %1473 = landingpad { ptr, i32 }
          cleanup
  %1474 = extractvalue { ptr, i32 } %1473, 0
  store ptr %1474, ptr %7, align 8
  %1475 = extractvalue { ptr, i32 } %1473, 1
  store i32 %1475, ptr %8, align 4
  br label %1485

1476:                                             ; preds = %1444
  %1477 = landingpad { ptr, i32 }
          cleanup
  %1478 = extractvalue { ptr, i32 } %1477, 0
  store ptr %1478, ptr %7, align 8
  %1479 = extractvalue { ptr, i32 } %1477, 1
  store i32 %1479, ptr %8, align 4
  br label %1484

1480:                                             ; preds = %1445
  %1481 = landingpad { ptr, i32 }
          cleanup
  %1482 = extractvalue { ptr, i32 } %1481, 0
  store ptr %1482, ptr %7, align 8
  %1483 = extractvalue { ptr, i32 } %1481, 1
  store i32 %1483, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %131) #8
  br label %1484

1484:                                             ; preds = %1480, %1476
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %132) #8
  br label %1485

1485:                                             ; preds = %1484, %1472
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %133) #8
  br label %1486

1486:                                             ; preds = %1485, %1468
  call void @llvm.lifetime.end.p0(i64 32, ptr %133) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %132) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %131) #8
  br label %1635

1487:                                             ; preds = %1448, %1365
  br label %1631

1488:                                             ; preds = %183
  %1489 = load ptr, ptr %4, align 8, !tbaa !5
  %1490 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %1489) #8
  br i1 %1490, label %1495, label %1491

1491:                                             ; preds = %1488
  %1492 = load ptr, ptr %4, align 8, !tbaa !5
  %1493 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %1492, ptr noundef @.str.55)
          to label %1494 unwind label %191

1494:                                             ; preds = %1491
  br label %1495

1495:                                             ; preds = %1494, %1488
  %1496 = load ptr, ptr %16, align 8, !tbaa !5
  %1497 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %1496, i32 0, i32 9
  %1498 = load i8, ptr %1497, align 4, !tbaa !198, !range !189, !noundef !190
  %1499 = trunc i8 %1498 to i1
  br i1 %1499, label %1558, label %1500

1500:                                             ; preds = %1495
  call void @llvm.lifetime.start.p0(i64 32, ptr %134) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %135) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %136) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %137) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %138) #8
  %1501 = load ptr, ptr %15, align 8, !tbaa !5
  %1502 = getelementptr inbounds %"struct.spirv_cross::SPIRVariable", ptr %1501, i32 0, i32 1
  %1503 = invoke noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE1EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %1502)
          to label %1504 unwind label %1524

1504:                                             ; preds = %1500
  %1505 = invoke noundef nonnull align 8 dereferenceable(336) ptr @_ZN11spirv_cross8Compiler3getINS_8SPIRTypeEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %146, i32 noundef %1503)
          to label %1506 unwind label %1524

1506:                                             ; preds = %1504
  %1507 = load i32, ptr %17, align 4, !tbaa !18
  invoke void @_ZN11spirv_cross11CompilerMSL22get_type_address_spaceB5cxx11ERKNS_8SPIRTypeEjb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %138, ptr noundef nonnull align 8 dereferenceable(12482) %146, ptr noundef nonnull align 8 dereferenceable(336) %1505, i32 noundef %1507, i1 noundef zeroext false)
          to label %1508 unwind label %1524

1508:                                             ; preds = %1506
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %137, ptr noundef nonnull align 8 dereferenceable(32) %138, ptr noundef @.str.60)
          to label %1509 unwind label %1528

1509:                                             ; preds = %1508
  call void @llvm.lifetime.start.p0(i64 32, ptr %139) #8
  %1510 = load ptr, ptr %16, align 8, !tbaa !5
  %1511 = load i32, ptr %17, align 4, !tbaa !18
  %1512 = load ptr, ptr %146, align 8, !tbaa !192
  %1513 = getelementptr inbounds ptr, ptr %1512, i64 19
  %1514 = load ptr, ptr %1513, align 8
  invoke void %1514(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %139, ptr noundef nonnull align 8 dereferenceable(12482) %146, ptr noundef nonnull align 8 dereferenceable(336) %1510, i32 noundef %1511)
          to label %1515 unwind label %1532

1515:                                             ; preds = %1509
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %136, ptr noundef nonnull align 8 dereferenceable(32) %137, ptr noundef nonnull align 8 dereferenceable(32) %139)
          to label %1516 unwind label %1536

1516:                                             ; preds = %1515
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %135, ptr noundef nonnull align 8 dereferenceable(32) %136, ptr noundef @.str.1189)
          to label %1517 unwind label %1540

1517:                                             ; preds = %1516
  %1518 = load ptr, ptr %14, align 8, !tbaa !5
  %1519 = getelementptr inbounds %struct.Resource, ptr %1518, i32 0, i32 2
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %134, ptr noundef nonnull align 8 dereferenceable(32) %135, ptr noundef nonnull align 8 dereferenceable(32) %1519)
          to label %1520 unwind label %1544

1520:                                             ; preds = %1517
  %1521 = load ptr, ptr %4, align 8, !tbaa !5
  %1522 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %1521, ptr noundef nonnull align 8 dereferenceable(32) %134)
          to label %1523 unwind label %1548

1523:                                             ; preds = %1520
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %134) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %135) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %136) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %139) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %139) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %137) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %138) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %138) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %137) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %136) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %135) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %134) #8
  br label %1591

1524:                                             ; preds = %1506, %1504, %1500
  %1525 = landingpad { ptr, i32 }
          cleanup
  %1526 = extractvalue { ptr, i32 } %1525, 0
  store ptr %1526, ptr %7, align 8
  %1527 = extractvalue { ptr, i32 } %1525, 1
  store i32 %1527, ptr %8, align 4
  br label %1557

1528:                                             ; preds = %1508
  %1529 = landingpad { ptr, i32 }
          cleanup
  %1530 = extractvalue { ptr, i32 } %1529, 0
  store ptr %1530, ptr %7, align 8
  %1531 = extractvalue { ptr, i32 } %1529, 1
  store i32 %1531, ptr %8, align 4
  br label %1556

1532:                                             ; preds = %1509
  %1533 = landingpad { ptr, i32 }
          cleanup
  %1534 = extractvalue { ptr, i32 } %1533, 0
  store ptr %1534, ptr %7, align 8
  %1535 = extractvalue { ptr, i32 } %1533, 1
  store i32 %1535, ptr %8, align 4
  br label %1555

1536:                                             ; preds = %1515
  %1537 = landingpad { ptr, i32 }
          cleanup
  %1538 = extractvalue { ptr, i32 } %1537, 0
  store ptr %1538, ptr %7, align 8
  %1539 = extractvalue { ptr, i32 } %1537, 1
  store i32 %1539, ptr %8, align 4
  br label %1554

1540:                                             ; preds = %1516
  %1541 = landingpad { ptr, i32 }
          cleanup
  %1542 = extractvalue { ptr, i32 } %1541, 0
  store ptr %1542, ptr %7, align 8
  %1543 = extractvalue { ptr, i32 } %1541, 1
  store i32 %1543, ptr %8, align 4
  br label %1553

1544:                                             ; preds = %1517
  %1545 = landingpad { ptr, i32 }
          cleanup
  %1546 = extractvalue { ptr, i32 } %1545, 0
  store ptr %1546, ptr %7, align 8
  %1547 = extractvalue { ptr, i32 } %1545, 1
  store i32 %1547, ptr %8, align 4
  br label %1552

1548:                                             ; preds = %1520
  %1549 = landingpad { ptr, i32 }
          cleanup
  %1550 = extractvalue { ptr, i32 } %1549, 0
  store ptr %1550, ptr %7, align 8
  %1551 = extractvalue { ptr, i32 } %1549, 1
  store i32 %1551, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %134) #8
  br label %1552

1552:                                             ; preds = %1548, %1544
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %135) #8
  br label %1553

1553:                                             ; preds = %1552, %1540
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %136) #8
  br label %1554

1554:                                             ; preds = %1553, %1536
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %139) #8
  br label %1555

1555:                                             ; preds = %1554, %1532
  call void @llvm.lifetime.end.p0(i64 32, ptr %139) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %137) #8
  br label %1556

1556:                                             ; preds = %1555, %1528
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %138) #8
  br label %1557

1557:                                             ; preds = %1556, %1524
  call void @llvm.lifetime.end.p0(i64 32, ptr %138) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %137) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %136) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %135) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %134) #8
  br label %1635

1558:                                             ; preds = %1495
  call void @llvm.lifetime.start.p0(i64 32, ptr %140) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %141) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %142) #8
  %1559 = load ptr, ptr %16, align 8, !tbaa !5
  %1560 = load i32, ptr %17, align 4, !tbaa !18
  %1561 = load ptr, ptr %146, align 8, !tbaa !192
  %1562 = getelementptr inbounds ptr, ptr %1561, i64 19
  %1563 = load ptr, ptr %1562, align 8
  invoke void %1563(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %142, ptr noundef nonnull align 8 dereferenceable(12482) %146, ptr noundef nonnull align 8 dereferenceable(336) %1559, i32 noundef %1560)
          to label %1564 unwind label %1572

1564:                                             ; preds = %1558
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %141, ptr noundef nonnull align 8 dereferenceable(32) %142, ptr noundef @.str.60)
          to label %1565 unwind label %1576

1565:                                             ; preds = %1564
  %1566 = load ptr, ptr %14, align 8, !tbaa !5
  %1567 = getelementptr inbounds %struct.Resource, ptr %1566, i32 0, i32 2
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %140, ptr noundef nonnull align 8 dereferenceable(32) %141, ptr noundef nonnull align 8 dereferenceable(32) %1567)
          to label %1568 unwind label %1580

1568:                                             ; preds = %1565
  %1569 = load ptr, ptr %4, align 8, !tbaa !5
  %1570 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %1569, ptr noundef nonnull align 8 dereferenceable(32) %140)
          to label %1571 unwind label %1584

1571:                                             ; preds = %1568
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %140) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %141) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %142) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %142) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %141) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %140) #8
  br label %1591

1572:                                             ; preds = %1558
  %1573 = landingpad { ptr, i32 }
          cleanup
  %1574 = extractvalue { ptr, i32 } %1573, 0
  store ptr %1574, ptr %7, align 8
  %1575 = extractvalue { ptr, i32 } %1573, 1
  store i32 %1575, ptr %8, align 4
  br label %1590

1576:                                             ; preds = %1564
  %1577 = landingpad { ptr, i32 }
          cleanup
  %1578 = extractvalue { ptr, i32 } %1577, 0
  store ptr %1578, ptr %7, align 8
  %1579 = extractvalue { ptr, i32 } %1577, 1
  store i32 %1579, ptr %8, align 4
  br label %1589

1580:                                             ; preds = %1565
  %1581 = landingpad { ptr, i32 }
          cleanup
  %1582 = extractvalue { ptr, i32 } %1581, 0
  store ptr %1582, ptr %7, align 8
  %1583 = extractvalue { ptr, i32 } %1581, 1
  store i32 %1583, ptr %8, align 4
  br label %1588

1584:                                             ; preds = %1568
  %1585 = landingpad { ptr, i32 }
          cleanup
  %1586 = extractvalue { ptr, i32 } %1585, 0
  store ptr %1586, ptr %7, align 8
  %1587 = extractvalue { ptr, i32 } %1585, 1
  store i32 %1587, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %140) #8
  br label %1588

1588:                                             ; preds = %1584, %1580
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %141) #8
  br label %1589

1589:                                             ; preds = %1588, %1576
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %142) #8
  br label %1590

1590:                                             ; preds = %1589, %1572
  call void @llvm.lifetime.end.p0(i64 32, ptr %142) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %141) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %140) #8
  br label %1635

1591:                                             ; preds = %1571, %1523
  call void @llvm.lifetime.start.p0(i64 32, ptr %143) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %144) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %145) #8
  %1592 = load ptr, ptr %14, align 8, !tbaa !5
  %1593 = getelementptr inbounds %struct.Resource, ptr %1592, i32 0, i32 4
  invoke void @_ZN11spirv_cross17convert_to_stringIjTnNSt9enable_ifIXntsr3std17is_floating_pointIT_EE5valueEiE4typeELi0EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS2_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %145, ptr noundef nonnull align 4 dereferenceable(4) %1593)
          to label %1594 unwind label %1608

1594:                                             ; preds = %1591
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %144, ptr noundef @.str.1360, ptr noundef nonnull align 8 dereferenceable(32) %145)
          to label %1595 unwind label %1612

1595:                                             ; preds = %1594
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %143, ptr noundef nonnull align 8 dereferenceable(32) %144, ptr noundef @.str.53)
          to label %1596 unwind label %1616

1596:                                             ; preds = %1595
  %1597 = load ptr, ptr %4, align 8, !tbaa !5
  %1598 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %1597, ptr noundef nonnull align 8 dereferenceable(32) %143)
          to label %1599 unwind label %1620

1599:                                             ; preds = %1596
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %143) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %144) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %145) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %145) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %144) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %143) #8
  %1600 = getelementptr inbounds %"class.spirv_cross::Compiler", ptr %146, i32 0, i32 32
  %1601 = invoke noundef i64 @_ZNKSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEE5countERKj(ptr noundef nonnull align 8 dereferenceable(56) %1600, ptr noundef nonnull align 4 dereferenceable(4) %17)
          to label %1602 unwind label %191

1602:                                             ; preds = %1599
  %1603 = icmp ne i64 %1601, 0
  br i1 %1603, label %1604, label %1627

1604:                                             ; preds = %1602
  %1605 = load ptr, ptr %4, align 8, !tbaa !5
  %1606 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %1605, ptr noundef @.str.1317)
          to label %1607 unwind label %191

1607:                                             ; preds = %1604
  br label %1627

1608:                                             ; preds = %1591
  %1609 = landingpad { ptr, i32 }
          cleanup
  %1610 = extractvalue { ptr, i32 } %1609, 0
  store ptr %1610, ptr %7, align 8
  %1611 = extractvalue { ptr, i32 } %1609, 1
  store i32 %1611, ptr %8, align 4
  br label %1626

1612:                                             ; preds = %1594
  %1613 = landingpad { ptr, i32 }
          cleanup
  %1614 = extractvalue { ptr, i32 } %1613, 0
  store ptr %1614, ptr %7, align 8
  %1615 = extractvalue { ptr, i32 } %1613, 1
  store i32 %1615, ptr %8, align 4
  br label %1625

1616:                                             ; preds = %1595
  %1617 = landingpad { ptr, i32 }
          cleanup
  %1618 = extractvalue { ptr, i32 } %1617, 0
  store ptr %1618, ptr %7, align 8
  %1619 = extractvalue { ptr, i32 } %1617, 1
  store i32 %1619, ptr %8, align 4
  br label %1624

1620:                                             ; preds = %1596
  %1621 = landingpad { ptr, i32 }
          cleanup
  %1622 = extractvalue { ptr, i32 } %1621, 0
  store ptr %1622, ptr %7, align 8
  %1623 = extractvalue { ptr, i32 } %1621, 1
  store i32 %1623, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %143) #8
  br label %1624

1624:                                             ; preds = %1620, %1616
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %144) #8
  br label %1625

1625:                                             ; preds = %1624, %1612
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %145) #8
  br label %1626

1626:                                             ; preds = %1625, %1608
  call void @llvm.lifetime.end.p0(i64 32, ptr %145) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %144) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %143) #8
  br label %1635

1627:                                             ; preds = %1607, %1602
  %1628 = load ptr, ptr %4, align 8, !tbaa !5
  %1629 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %1628, ptr noundef @.str.1318)
          to label %1630 unwind label %191

1630:                                             ; preds = %1627
  br label %1631

1631:                                             ; preds = %1630, %1487, %1315, %966, %868
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #8
  br label %1632

1632:                                             ; preds = %1631
  %1633 = load ptr, ptr %11, align 8, !tbaa !5
  %1634 = getelementptr inbounds %struct.Resource, ptr %1633, i32 1
  store ptr %1634, ptr %11, align 8, !tbaa !5
  br label %159

1635:                                             ; preds = %1626, %1590, %1557, %1486, %1467, %1419, %1316, %965, %937, %918, %869, %191
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #8
  br label %1636

1636:                                             ; preds = %1635, %187
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #8
  br label %1638

1637:                                             ; preds = %163
  call void @_ZN11spirv_cross11SmallVectorIZNS_11CompilerMSL37entry_point_args_discrete_descriptorsERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE8ResourceLm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(536) %5) #8
  call void @llvm.lifetime.end.p0(i64 536, ptr %5) #8
  ret void

1638:                                             ; preds = %1636, %168, %164
  call void @_ZN11spirv_cross11SmallVectorIZNS_11CompilerMSL37entry_point_args_discrete_descriptorsERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE8ResourceLm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(536) %5) #8
  call void @llvm.lifetime.end.p0(i64 536, ptr %5) #8
  br label %1639

1639:                                             ; preds = %1638
  %1640 = load ptr, ptr %7, align 8
  %1641 = load i32, ptr %8, align 4
  %1642 = insertvalue { ptr, i32 } poison, ptr %1640, 0
  %1643 = insertvalue { ptr, i32 } %1642, i32 %1641, 1
  resume { ptr, i32 } %1643

1644:                                             ; preds = %1125, %348
  unreachable
}

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZN11spirv_cross8ParsedIR17for_each_typed_idINS_12SPIRVariableEZNS_11CompilerMSL37entry_point_args_discrete_descriptorsERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE3$_0EEvRKT0_"(ptr noundef nonnull align 8 dereferenceable(1920), ptr noundef nonnull align 8 dereferenceable(16)) #2 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZSt11stable_sortIPZN11spirv_cross11CompilerMSL37entry_point_args_discrete_descriptorsERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE8ResourceZNS1_37entry_point_args_discrete_descriptorsES8_E3$_1EvT_SC_T0_"(ptr noundef, ptr noundef) #6

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef ptr @_ZN11spirv_cross10VectorViewIZNS_11CompilerMSL37entry_point_args_discrete_descriptorsERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE8ResourceE5beginEv(ptr noundef nonnull align 8 dereferenceable(16)) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef ptr @_ZN11spirv_cross10VectorViewIZNS_11CompilerMSL37entry_point_args_discrete_descriptorsERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE8ResourceE3endEv(ptr noundef nonnull align 8 dereferenceable(16)) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11spirv_cross4joinIJRA18_KcjRA8_S1_jEEENSt7__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: mustprogress uwtable
declare dso_local void @_ZN11spirv_cross4joinIJRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERjEEES6_DpOT_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 4 dereferenceable(4)) #2

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

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

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

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

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


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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.spirv_cross::SmallVector.590" = type { %"class.spirv_cross::VectorView.591", i64, %"class.spirv_cross::AlignedBuffer.592" }
%"class.spirv_cross::VectorView.591" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.592" = type { [512 x i8] }
%class.anon.593 = type { ptr, ptr }
%"class.spirv_cross::TypedID.413" = type { i32 }
%"class.std::allocator.71" = type { i8 }

@_ZTIN11spirv_cross13CompilerErrorE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.35 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.76 = 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.1118 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.1189 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.1293 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.1317 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.1318 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.1322 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.1337 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.1360 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.1370 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.1371 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.1372 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.1373 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.1374 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.1375 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.1376 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.1377 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.1378 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.1379 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.1380 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.1381 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.1382 = external hidden unnamed_addr constant [4 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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

declare void @__cxa_free_exception(ptr) local_unnamed_addr

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

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

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

; Function Attrs: mustprogress 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 #1 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 #1 align 2

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

; Function Attrs: mustprogress 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

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 nounwind uwtable
declare dso_local noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE1EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #1 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

; 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 nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK11spirv_cross10VectorViewIjE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #1 align 2

declare noundef zeroext i1 @_ZNK11spirv_cross8Compiler14has_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_cross11SmallVectorIjLm8EE9push_backEOj(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #1 align 2

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11spirv_cross11CompilerMSL26add_spv_func_and_recompileENS0_11SPVFuncImplE(ptr noundef nonnull align 8 dereferenceable(12482), i8 noundef zeroext) local_unnamed_addr #2 align 2

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

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

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

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

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

declare noundef nonnull align 8 dereferenceable(64) ptr @_ZNK11spirv_cross8ParsedIR21get_decoration_bitsetENS_7TypedIDILNS_5TypesE0EEE(ptr noundef nonnull align 8 dereferenceable(1920), i32) local_unnamed_addr #4

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11spirv_cross11CompilerMSL37entry_point_args_discrete_descriptorsERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(12482) %0, ptr noundef nonnull align 8 dereferenceable(32) %1) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca %"class.spirv_cross::SmallVector.590", align 8
  %4 = alloca %class.anon.593, align 8
  %5 = alloca i32, align 4
  %6 = alloca %"class.std::__cxx11::basic_string", align 8
  %7 = alloca i32, align 4
  %8 = alloca %"class.spirv_cross::TypedID.413", align 4
  %9 = alloca i32, align 4
  %10 = alloca %"class.spirv_cross::TypedID.413", align 4
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca i32, align 4
  %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::__cxx11::basic_string", align 8
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca %"class.std::__cxx11::basic_string", align 8
  %27 = alloca %"class.std::__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::__cxx11::basic_string", align 8
  %31 = alloca %"class.std::__cxx11::basic_string", align 8
  %32 = alloca %"class.std::__cxx11::basic_string", align 8
  %33 = alloca %"class.std::__cxx11::basic_string", align 8
  %34 = alloca %"class.std::__cxx11::basic_string", align 8
  %35 = alloca i32, align 4
  %36 = alloca %"class.std::__cxx11::basic_string", align 8
  %37 = alloca %"class.std::__cxx11::basic_string", align 8
  %38 = alloca %"class.std::__cxx11::basic_string", align 8
  %39 = alloca %"class.std::__cxx11::basic_string", align 8
  %40 = alloca %"class.std::__cxx11::basic_string", align 8
  %41 = alloca %"class.std::__cxx11::basic_string", align 8
  %42 = alloca %"class.std::__cxx11::basic_string", align 8
  %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 i32, align 4
  %50 = alloca %"class.std::__cxx11::basic_string", align 8
  %51 = alloca %"class.std::__cxx11::basic_string", align 8
  %52 = alloca i32, align 4
  %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::allocator.71", align 1
  %58 = alloca %"class.std::__cxx11::basic_string", align 8
  %59 = alloca %"class.std::__cxx11::basic_string", align 8
  %60 = alloca %"class.std::__cxx11::basic_string", align 8
  %61 = alloca %"class.std::__cxx11::basic_string", align 8
  %62 = alloca %"class.std::__cxx11::basic_string", align 8
  %63 = alloca %"class.std::__cxx11::basic_string", align 8
  %64 = alloca %"class.std::__cxx11::basic_string", align 8
  %65 = alloca %"class.std::__cxx11::basic_string", align 8
  %66 = alloca %"class.std::__cxx11::basic_string", align 8
  %67 = alloca %"class.std::__cxx11::basic_string", align 8
  %68 = alloca %"class.std::__cxx11::basic_string", align 8
  %69 = alloca %"class.std::__cxx11::basic_string", align 8
  %70 = alloca %"class.std::__cxx11::basic_string", align 8
  %71 = alloca %"class.std::__cxx11::basic_string", align 8
  %72 = alloca %"class.std::__cxx11::basic_string", align 8
  %73 = alloca %"class.std::__cxx11::basic_string", align 8
  %74 = alloca %"class.std::__cxx11::basic_string", align 8
  %75 = alloca %"class.std::__cxx11::basic_string", align 8
  %76 = alloca %"class.std::__cxx11::basic_string", align 8
  %77 = alloca %"class.std::__cxx11::basic_string", align 8
  %78 = alloca %"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::__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::__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 i32, align 4
  %91 = alloca ptr, align 8
  %92 = alloca %"class.std::__cxx11::basic_string", align 8
  %93 = alloca %"class.std::__cxx11::basic_string", align 8
  %94 = alloca %"class.std::__cxx11::basic_string", align 8
  %95 = alloca %"class.std::__cxx11::basic_string", 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::__cxx11::basic_string", align 8
  %101 = alloca %"class.std::__cxx11::basic_string", align 8
  %102 = alloca %"class.std::__cxx11::basic_string", align 8
  %103 = alloca %"class.std::__cxx11::basic_string", align 8
  %104 = alloca %"class.std::__cxx11::basic_string", align 8
  %105 = alloca %"class.std::__cxx11::basic_string", align 8
  %106 = alloca %"class.std::__cxx11::basic_string", align 8
  %107 = alloca %"class.std::__cxx11::basic_string", align 8
  %108 = alloca %"class.std::__cxx11::basic_string", align 8
  %109 = alloca %"class.std::__cxx11::basic_string", align 8
  %110 = alloca %"class.std::__cxx11::basic_string", 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.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 %"class.std::__cxx11::basic_string", align 8
  %121 = alloca %"class.std::__cxx11::basic_string", align 8
  %122 = alloca %"class.std::__cxx11::basic_string", align 8
  %123 = alloca %"class.std::__cxx11::basic_string", align 8
  %124 = alloca %"class.std::__cxx11::basic_string", align 8
  %125 = alloca %"class.std::__cxx11::basic_string", align 8
  call void @llvm.lifetime.start.p0(i64 536, ptr nonnull %3) #7
  call void @_ZN11spirv_cross11SmallVectorIZNS_11CompilerMSL37entry_point_args_discrete_descriptorsERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE8ResourceLm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(536) %3) #7
  %126 = getelementptr inbounds i8, ptr %0, i64 12192
  call void @_ZN11spirv_cross11SmallVectorIPNS_12SPIRVariableELm8EE5clearEv(ptr noundef nonnull align 8 dereferenceable(88) %126) #7
  %127 = getelementptr inbounds i8, ptr %0, i64 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #7
  store ptr %0, ptr %4, align 8, !tbaa !5
  %128 = getelementptr inbounds i8, ptr %4, i64 8
  store ptr %3, ptr %128, align 8, !tbaa !10
  invoke void @"_ZN11spirv_cross8ParsedIR17for_each_typed_idINS_12SPIRVariableEZNS_11CompilerMSL37entry_point_args_discrete_descriptorsERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE3$_0EEvRKT0_"(ptr noundef nonnull align 8 dereferenceable(1920) %127, ptr noundef nonnull align 8 dereferenceable(16) %4)
          to label %129 unwind label %144

129:                                              ; preds = %2
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #7
  %130 = call noundef ptr @_ZN11spirv_cross10VectorViewIZNS_11CompilerMSL37entry_point_args_discrete_descriptorsERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE8ResourceE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #7
  %131 = call noundef ptr @_ZN11spirv_cross10VectorViewIZNS_11CompilerMSL37entry_point_args_discrete_descriptorsERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE8ResourceE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #7
  invoke void @"_ZSt11stable_sortIPZN11spirv_cross11CompilerMSL37entry_point_args_discrete_descriptorsERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE8ResourceZNS1_37entry_point_args_discrete_descriptorsES8_E3$_1EvT_SC_T0_"(ptr noundef %130, ptr noundef %131)
          to label %132 unwind label %146

132:                                              ; preds = %129
  %133 = call noundef ptr @_ZN11spirv_cross10VectorViewIZNS_11CompilerMSL37entry_point_args_discrete_descriptorsERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE8ResourceE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #7
  %134 = call noundef ptr @_ZN11spirv_cross10VectorViewIZNS_11CompilerMSL37entry_point_args_discrete_descriptorsERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE8ResourceE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #7
  %.not416 = icmp eq ptr %133, %134
  br i1 %.not416, label %._crit_edge420, label %.lr.ph419

.lr.ph419:                                        ; preds = %132
  %135 = getelementptr inbounds i8, ptr %0, i64 11456
  %136 = getelementptr inbounds i8, ptr %0, i64 3056
  %137 = getelementptr inbounds i8, ptr %0, i64 10036
  %138 = getelementptr inbounds i8, ptr %0, i64 12024
  %139 = getelementptr inbounds i8, ptr %0, i64 256
  %140 = getelementptr inbounds i8, ptr %0, i64 11968
  %141 = getelementptr inbounds i8, ptr %0, i64 11186
  %142 = getelementptr inbounds i8, ptr %0, i64 10136
  %143 = getelementptr inbounds i8, ptr %0, i64 12136
  br label %148

._crit_edge420:                                   ; preds = %987, %132
  call void @_ZN11spirv_cross11SmallVectorIZNS_11CompilerMSL37entry_point_args_discrete_descriptorsERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE8ResourceLm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(536) %3) #7
  call void @llvm.lifetime.end.p0(i64 536, ptr nonnull %3) #7
  ret void

144:                                              ; preds = %2
  %145 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #7
  br label %990

146:                                              ; preds = %129
  %147 = landingpad { ptr, i32 }
          cleanup
  br label %990

148:                                              ; preds = %.lr.ph419, %987
  %.0254417 = phi ptr [ %133, %.lr.ph419 ], [ %988, %987 ]
  %149 = load ptr, ptr %.0254417, align 8, !tbaa !11
  %150 = invoke 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) %149)
          to label %151 unwind label %156

151:                                              ; preds = %148
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #7
  %152 = getelementptr inbounds i8, ptr %149, i64 8
  %153 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %152)
  store i32 %153, ptr %5, align 4, !tbaa !18
  %154 = getelementptr inbounds i8, ptr %.0254417, i64 48
  %155 = load i32, ptr %154, align 8, !tbaa !19
  switch i32 %155, label %898 [
    i32 15, label %160
    i32 18, label %551
    i32 16, label %603
    i32 19, label %796
  ]

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

158:                                              ; preds = %985, %975, %972, %900, %861, %799, %796, %605, %562, %553
  %159 = landingpad { ptr, i32 }
          cleanup
  br label %989

160:                                              ; preds = %151
  %161 = getelementptr inbounds i8, ptr %150, i64 8
  %162 = 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) %139, ptr noundef nonnull align 4 dereferenceable(4) %161)
          to label %163 unwind label %.loopexit411

163:                                              ; preds = %160
  %164 = getelementptr inbounds i8, ptr %162, i64 392
  %165 = call noundef i64 @_ZNK11spirv_cross10VectorViewINS_4Meta10DecorationEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %164) #7
  %166 = icmp eq i64 %165, 0
  br i1 %166, label %987, label %167

.loopexit411:                                     ; preds = %160, %247, %250, %253, %458, %536, %539, %549
  %lpad.loopexit413 = landingpad { ptr, i32 }
          cleanup
  br label %989

.loopexit.split-lp412:                            ; preds = %244
  %lpad.loopexit.split-lp414 = landingpad { ptr, i32 }
          cleanup
  br label %989

167:                                              ; preds = %163
  %168 = getelementptr inbounds i8, ptr %.0254417, i64 8
  %169 = load ptr, ptr %168, align 8, !tbaa !20
  %.not319 = icmp eq ptr %169, null
  br i1 %.not319, label %236, label %170

170:                                              ; preds = %167
  %171 = load ptr, ptr %.0254417, align 8, !tbaa !11
  %172 = icmp eq ptr %171, %169
  br i1 %172, label %173, label %232

173:                                              ; preds = %170
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #7
  %174 = load i32, ptr %5, align 4, !tbaa !18
  call void @_ZN11spirv_cross7TypedIDILNS_5TypesE0EEC2Ej(ptr noundef nonnull align 4 dereferenceable(4) %8, i32 noundef %174)
  %175 = load i32, ptr %8, align 4
  %176 = invoke noundef i32 @_ZNK11spirv_cross8Compiler14get_decorationENS_7TypedIDILNS_5TypesE0EEEN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 %175, i32 noundef 34)
          to label %177 unwind label %186

177:                                              ; preds = %173
  store i32 %176, ptr %7, align 4, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #7
  %178 = load i32, ptr %5, align 4, !tbaa !18
  call void @_ZN11spirv_cross7TypedIDILNS_5TypesE0EEC2Ej(ptr noundef nonnull align 4 dereferenceable(4) %10, i32 noundef %178)
  %179 = load i32, ptr %10, align 4
  %180 = invoke noundef i32 @_ZNK11spirv_cross8Compiler14get_decorationENS_7TypedIDILNS_5TypesE0EEEN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 %179, i32 noundef 33)
          to label %181 unwind label %188

181:                                              ; preds = %177
  store i32 %180, ptr %9, align 4, !tbaa !18
  invoke void @_ZN11spirv_cross4joinIJRA18_KcjRA8_S1_jEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %6, ptr noundef nonnull align 1 dereferenceable(18) @.str.87, ptr noundef nonnull align 4 dereferenceable(4) %7, ptr noundef nonnull align 1 dereferenceable(8) @.str.88, ptr noundef nonnull align 4 dereferenceable(4) %9)
          to label %182 unwind label %188

182:                                              ; preds = %181
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #7
  %183 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %1) #7
  br i1 %183, label %193, label %184

184:                                              ; preds = %182
  %185 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull @.str.55)
          to label %193 unwind label %191

186:                                              ; preds = %173
  %187 = landingpad { ptr, i32 }
          cleanup
  br label %190

188:                                              ; preds = %181, %177
  %189 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #7
  br label %190

190:                                              ; preds = %188, %186
  %.pn378 = phi { ptr, i32 } [ %189, %188 ], [ %187, %186 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #7
  br label %231

191:                                              ; preds = %227, %206, %203, %184
  %192 = landingpad { ptr, i32 }
          cleanup
  br label %230

193:                                              ; preds = %184, %182
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #7
  invoke void @_ZN11spirv_cross11CompilerMSL26get_argument_address_spaceB5cxx11ERKNS_12SPIRVariableE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %13, ptr noundef nonnull align 8 dereferenceable(12482) %0, ptr noundef nonnull align 8 dereferenceable(176) %149)
          to label %194 unwind label %208

194:                                              ; preds = %193
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %12, ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull @.str.1372)
          to label %195 unwind label %210

195:                                              ; preds = %194
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %11, ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %196 unwind label %212

196:                                              ; preds = %195
  %197 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull align 8 dereferenceable(32) %11)
          to label %198 unwind label %214

198:                                              ; preds = %196
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %16) #7
  %199 = getelementptr inbounds i8, ptr %.0254417, i64 52
  call void @_ZN11spirv_cross17convert_to_stringIjTnNSt9enable_ifIXntsr3std17is_floating_pointIT_EE5valueEiE4typeELi0EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS2_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %16, ptr noundef nonnull align 4 dereferenceable(4) %199)
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %15, ptr noundef nonnull @.str.1360, ptr noundef nonnull align 8 dereferenceable(32) %16)
          to label %200 unwind label %219

200:                                              ; preds = %198
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %14, ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull @.str.53)
          to label %201 unwind label %221

201:                                              ; preds = %200
  %202 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull align 8 dereferenceable(32) %14)
          to label %203 unwind label %223

203:                                              ; preds = %201
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #7
  %204 = invoke noundef i64 @_ZNKSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEE5countERKj(ptr noundef nonnull align 8 dereferenceable(56) %136, ptr noundef nonnull align 4 dereferenceable(4) %5)
          to label %205 unwind label %191

205:                                              ; preds = %203
  %.not387 = icmp eq i64 %204, 0
  br i1 %.not387, label %227, label %206

206:                                              ; preds = %205
  %207 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull @.str.1317)
          to label %227 unwind label %191

208:                                              ; preds = %193
  %209 = landingpad { ptr, i32 }
          cleanup
  br label %218

210:                                              ; preds = %194
  %211 = landingpad { ptr, i32 }
          cleanup
  br label %217

212:                                              ; preds = %195
  %213 = landingpad { ptr, i32 }
          cleanup
  br label %216

214:                                              ; preds = %196
  %215 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #7
  br label %216

216:                                              ; preds = %214, %212
  %.pn380 = phi { ptr, i32 } [ %215, %214 ], [ %213, %212 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #7
  br label %217

217:                                              ; preds = %216, %210
  %.pn380.pn = phi { ptr, i32 } [ %.pn380, %216 ], [ %211, %210 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  br label %218

218:                                              ; preds = %217, %208
  %.pn380.pn.pn = phi { ptr, i32 } [ %.pn380.pn, %217 ], [ %209, %208 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #7
  br label %230

219:                                              ; preds = %198
  %220 = landingpad { ptr, i32 }
          cleanup
  br label %226

221:                                              ; preds = %200
  %222 = landingpad { ptr, i32 }
          cleanup
  br label %225

223:                                              ; preds = %201
  %224 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #7
  br label %225

225:                                              ; preds = %223, %221
  %.pn384 = phi { ptr, i32 } [ %224, %223 ], [ %222, %221 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  br label %226

226:                                              ; preds = %225, %219
  %.pn384.pn = phi { ptr, i32 } [ %.pn384, %225 ], [ %220, %219 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #7
  br label %230

227:                                              ; preds = %206, %205
  %228 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull @.str.1318)
          to label %229 unwind label %191

229:                                              ; preds = %227
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #7
  %.pre = load ptr, ptr %.0254417, align 8, !tbaa !11
  br label %232

230:                                              ; preds = %226, %218, %191
  %.pn388 = phi { ptr, i32 } [ %192, %191 ], [ %.pn384.pn, %226 ], [ %.pn380.pn.pn, %218 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #7
  br label %231

231:                                              ; preds = %230, %190
  %.pn388.pn = phi { ptr, i32 } [ %.pn388, %230 ], [ %.pn378, %190 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #7
  br label %989

232:                                              ; preds = %229, %170
  %233 = phi ptr [ %.pre, %229 ], [ %171, %170 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #7
  %234 = getelementptr inbounds i8, ptr %233, i64 8
  %235 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %234)
  store i32 %235, ptr %17, align 4, !tbaa !18
  call void @_ZN11spirv_cross11SmallVectorIjLm8EE9push_backEOj(ptr noundef nonnull align 8 dereferenceable(56) %140, ptr noundef nonnull align 4 dereferenceable(4) %17) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #7
  br label %987

236:                                              ; preds = %167
  %237 = getelementptr inbounds i8, ptr %150, i64 32
  %238 = call noundef zeroext i1 @_ZNK11spirv_cross10VectorViewIjE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %237) #7
  br i1 %238, label %456, label %239

239:                                              ; preds = %236
  %240 = call noundef i64 @_ZNK11spirv_cross10VectorViewIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %237) #7
  %241 = icmp ugt i64 %240, 1
  br i1 %241, label %242, label %247

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

244:                                              ; preds = %242
  invoke void @__cxa_throw(ptr nonnull %243, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #8
          to label %991 unwind label %.loopexit.split-lp412

245:                                              ; preds = %242
  %246 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %243) #7
  br label %989

247:                                              ; preds = %239
  store i8 1, ptr %141, align 2, !tbaa !21
  %248 = 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) %149)
          to label %249 unwind label %.loopexit411

249:                                              ; preds = %247
  br i1 %248, label %250, label %368

250:                                              ; preds = %249
  invoke void @_ZN11spirv_cross11CompilerMSL26add_spv_func_and_recompileENS0_11SPVFuncImplE(ptr noundef nonnull align 8 dereferenceable(12482) %0, i8 noundef zeroext 70)
          to label %251 unwind label %.loopexit411

251:                                              ; preds = %250
  %252 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %1) #7
  br i1 %252, label %255, label %253

253:                                              ; preds = %251
  %254 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull @.str.55)
          to label %255 unwind label %.loopexit411

255:                                              ; preds = %253, %251
  %.sroa.04.0.copyload = load i32, ptr %161, align 8, !tbaa !18
  %256 = invoke noundef zeroext i1 @_ZNK11spirv_cross8Compiler14has_decorationENS_7TypedIDILNS_5TypesE0EEEN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 %.sroa.04.0.copyload, i32 noundef 3)
          to label %257 unwind label %277

257:                                              ; preds = %255
  %258 = getelementptr inbounds i8, ptr %149, i64 16
  %259 = load i32, ptr %258, align 8, !tbaa !180
  %260 = icmp eq i32 %259, 12
  %brmerge = or i1 %256, %260
  br i1 %brmerge, label %261, label %299

261:                                              ; preds = %257
  %262 = load i8, ptr %142, align 8, !tbaa !187, !range !188, !noundef !189
  %263 = trunc nuw i8 %262 to i1
  br i1 %263, label %264, label %299

264:                                              ; preds = %261
  invoke void @_ZN11spirv_cross11CompilerMSL26add_spv_func_and_recompileENS0_11SPVFuncImplE(ptr noundef nonnull align 8 dereferenceable(12482) %0, i8 noundef zeroext 69)
          to label %265 unwind label %277

265:                                              ; preds = %264
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %18) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %20) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %21) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %22) #7
  invoke void @_ZN11spirv_cross11CompilerMSL26get_argument_address_spaceB5cxx11ERKNS_12SPIRVariableE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %22, ptr noundef nonnull align 8 dereferenceable(12482) %0, ptr noundef nonnull align 8 dereferenceable(176) %149)
          to label %266 unwind label %279

266:                                              ; preds = %265
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %21, ptr noundef nonnull @.str.1374, ptr noundef nonnull align 8 dereferenceable(32) %22)
          to label %267 unwind label %281

267:                                              ; preds = %266
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %20, ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull @.str.60)
          to label %268 unwind label %283

268:                                              ; preds = %267
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %23) #7
  %269 = load ptr, ptr %0, align 8, !tbaa !190
  %270 = getelementptr inbounds i8, ptr %269, i64 152
  %271 = load ptr, ptr %270, align 8
  invoke void %271(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %23, ptr noundef nonnull align 8 dereferenceable(12482) %0, ptr noundef nonnull align 8 dereferenceable(336) %150, i32 noundef 0)
          to label %272 unwind label %285

272:                                              ; preds = %268
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %19, ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef nonnull align 8 dereferenceable(32) %23)
          to label %273 unwind label %287

273:                                              ; preds = %272
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %18, ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull @.str.1375)
          to label %274 unwind label %289

274:                                              ; preds = %273
  %275 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull align 8 dereferenceable(32) %18)
          to label %276 unwind label %291

276:                                              ; preds = %274
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #7
  br label %332

277:                                              ; preds = %366, %348, %345, %299, %264, %255
  %278 = landingpad { ptr, i32 }
          cleanup
  br label %989

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

281:                                              ; preds = %266
  %282 = landingpad { ptr, i32 }
          cleanup
  br label %297

283:                                              ; preds = %267
  %284 = landingpad { ptr, i32 }
          cleanup
  br label %296

285:                                              ; preds = %268
  %286 = landingpad { ptr, i32 }
          cleanup
  br label %295

287:                                              ; preds = %272
  %288 = landingpad { ptr, i32 }
          cleanup
  br label %294

289:                                              ; preds = %273
  %290 = landingpad { ptr, i32 }
          cleanup
  br label %293

291:                                              ; preds = %274
  %292 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #7
  br label %293

293:                                              ; preds = %291, %289
  %.pn344 = phi { ptr, i32 } [ %292, %291 ], [ %290, %289 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #7
  br label %294

294:                                              ; preds = %293, %287
  %.pn344.pn = phi { ptr, i32 } [ %.pn344, %293 ], [ %288, %287 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #7
  br label %295

295:                                              ; preds = %294, %285
  %.pn344.pn.pn = phi { ptr, i32 } [ %.pn344.pn, %294 ], [ %286, %285 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #7
  br label %296

296:                                              ; preds = %295, %283
  %.pn344.pn.pn.pn = phi { ptr, i32 } [ %.pn344.pn.pn, %295 ], [ %284, %283 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #7
  br label %297

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

298:                                              ; preds = %297, %279
  %.pn344.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn344.pn.pn.pn.pn, %297 ], [ %280, %279 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #7
  br label %989

299:                                              ; preds = %257, %261
  invoke void @_ZN11spirv_cross11CompilerMSL26add_spv_func_and_recompileENS0_11SPVFuncImplE(ptr noundef nonnull align 8 dereferenceable(12482) %0, i8 noundef zeroext 68)
          to label %300 unwind label %277

300:                                              ; preds = %299
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %24) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %25) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %26) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %27) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %28) #7
  invoke void @_ZN11spirv_cross11CompilerMSL26get_argument_address_spaceB5cxx11ERKNS_12SPIRVariableE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %28, ptr noundef nonnull align 8 dereferenceable(12482) %0, ptr noundef nonnull align 8 dereferenceable(176) %149)
          to label %301 unwind label %312

301:                                              ; preds = %300
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %27, ptr noundef nonnull @.str.1376, ptr noundef nonnull align 8 dereferenceable(32) %28)
          to label %302 unwind label %314

302:                                              ; preds = %301
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %26, ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull @.str.60)
          to label %303 unwind label %316

303:                                              ; preds = %302
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %29) #7
  %304 = load ptr, ptr %0, align 8, !tbaa !190
  %305 = getelementptr inbounds i8, ptr %304, i64 152
  %306 = load ptr, ptr %305, align 8
  invoke void %306(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %29, ptr noundef nonnull align 8 dereferenceable(12482) %0, ptr noundef nonnull align 8 dereferenceable(336) %150, i32 noundef 0)
          to label %307 unwind label %318

307:                                              ; preds = %303
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %25, ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef nonnull align 8 dereferenceable(32) %29)
          to label %308 unwind label %320

308:                                              ; preds = %307
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %24, ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull @.str.1375)
          to label %309 unwind label %322

309:                                              ; preds = %308
  %310 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull align 8 dereferenceable(32) %24)
          to label %311 unwind label %324

311:                                              ; preds = %309
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %29) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #7
  br label %332

312:                                              ; preds = %300
  %313 = landingpad { ptr, i32 }
          cleanup
  br label %331

314:                                              ; preds = %301
  %315 = landingpad { ptr, i32 }
          cleanup
  br label %330

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

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

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

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

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

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

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

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

329:                                              ; preds = %328, %316
  %.pn337.pn.pn.pn = phi { ptr, i32 } [ %.pn337.pn.pn, %328 ], [ %317, %316 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #7
  br label %330

330:                                              ; preds = %329, %314
  %.pn337.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn337.pn.pn.pn, %329 ], [ %315, %314 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #7
  br label %331

331:                                              ; preds = %330, %312
  %.pn337.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn337.pn.pn.pn.pn, %330 ], [ %313, %312 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #7
  br label %989

332:                                              ; preds = %311, %276
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %30) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %31) #7
  %333 = load i32, ptr %5, align 4, !tbaa !18
  %334 = invoke noundef ptr @_ZN11spirv_cross11CompilerMSL11to_restrictEjb(ptr noundef nonnull align 8 dereferenceable(12482) %0, i32 noundef %333, i1 noundef zeroext true)
          to label %335 unwind label %350

335:                                              ; preds = %332
  %336 = getelementptr inbounds i8, ptr %.0254417, i64 16
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %31, ptr noundef %334, ptr noundef nonnull align 8 dereferenceable(32) %336)
          to label %337 unwind label %350

337:                                              ; preds = %335
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %30, ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef nonnull @.str.76)
          to label %338 unwind label %352

338:                                              ; preds = %337
  %339 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull align 8 dereferenceable(32) %30)
          to label %340 unwind label %354

340:                                              ; preds = %338
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %32) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %33) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %34) #7
  %341 = getelementptr inbounds i8, ptr %.0254417, i64 52
  call void @_ZN11spirv_cross17convert_to_stringIjTnNSt9enable_ifIXntsr3std17is_floating_pointIT_EE5valueEiE4typeELi0EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS2_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %34, ptr noundef nonnull align 4 dereferenceable(4) %341)
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %33, ptr noundef nonnull @.str.1360, ptr noundef nonnull align 8 dereferenceable(32) %34)
          to label %342 unwind label %358

342:                                              ; preds = %340
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %32, ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef nonnull @.str.53)
          to label %343 unwind label %360

343:                                              ; preds = %342
  %344 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull align 8 dereferenceable(32) %32)
          to label %345 unwind label %362

345:                                              ; preds = %343
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %33) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #7
  %346 = invoke noundef i64 @_ZNKSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEE5countERKj(ptr noundef nonnull align 8 dereferenceable(56) %136, ptr noundef nonnull align 4 dereferenceable(4) %5)
          to label %347 unwind label %277

347:                                              ; preds = %345
  %.not357 = icmp eq i64 %346, 0
  br i1 %.not357, label %366, label %348

348:                                              ; preds = %347
  %349 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull @.str.1317)
          to label %366 unwind label %277

350:                                              ; preds = %335, %332
  %351 = landingpad { ptr, i32 }
          cleanup
  br label %357

352:                                              ; preds = %337
  %353 = landingpad { ptr, i32 }
          cleanup
  br label %356

354:                                              ; preds = %338
  %355 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #7
  br label %356

356:                                              ; preds = %354, %352
  %.pn351 = phi { ptr, i32 } [ %355, %354 ], [ %353, %352 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #7
  br label %357

357:                                              ; preds = %356, %350
  %.pn351.pn = phi { ptr, i32 } [ %.pn351, %356 ], [ %351, %350 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #7
  br label %989

358:                                              ; preds = %340
  %359 = landingpad { ptr, i32 }
          cleanup
  br label %365

360:                                              ; preds = %342
  %361 = landingpad { ptr, i32 }
          cleanup
  br label %364

362:                                              ; preds = %343
  %363 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #7
  br label %364

364:                                              ; preds = %362, %360
  %.pn354 = phi { ptr, i32 } [ %363, %362 ], [ %361, %360 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #7
  br label %365

365:                                              ; preds = %364, %358
  %.pn354.pn = phi { ptr, i32 } [ %.pn354, %364 ], [ %359, %358 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %33) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #7
  br label %989

366:                                              ; preds = %348, %347
  %367 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull @.str.1318)
          to label %455 unwind label %277

368:                                              ; preds = %249
  %369 = load i32, ptr %5, align 4, !tbaa !18
  %370 = invoke noundef i32 @_ZNK11spirv_cross11CompilerMSL23get_resource_array_sizeERKNS_8SPIRTypeEj(ptr noundef nonnull align 8 dereferenceable(12482) %0, ptr noundef nonnull align 8 dereferenceable(336) %150, i32 noundef %369)
          to label %371 unwind label %374

371:                                              ; preds = %368
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %35) #7
  store i32 0, ptr %35, align 4, !tbaa !18
  %.not421 = icmp eq i32 %370, 0
  br i1 %.not421, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %371
  %372 = getelementptr inbounds i8, ptr %.0254417, i64 16
  %373 = getelementptr inbounds i8, ptr %.0254417, i64 52
  br label %376

._crit_edge:                                      ; preds = %450, %371
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %35) #7
  br label %455

374:                                              ; preds = %368
  %375 = landingpad { ptr, i32 }
          cleanup
  br label %989

376:                                              ; preds = %.lr.ph, %450
  %377 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %1) #7
  br i1 %377, label %382, label %378

378:                                              ; preds = %376
  %379 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull @.str.55)
          to label %382 unwind label %380

380:                                              ; preds = %448, %409, %406, %378
  %381 = landingpad { ptr, i32 }
          cleanup
  br label %454

382:                                              ; preds = %378, %376
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %36) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %37) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %38) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %39) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %40) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %41) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %42) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %43) #7
  invoke void @_ZN11spirv_cross11CompilerMSL26get_argument_address_spaceB5cxx11ERKNS_12SPIRVariableE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %43, ptr noundef nonnull align 8 dereferenceable(12482) %0, ptr noundef nonnull align 8 dereferenceable(176) %149)
          to label %383 unwind label %411

383:                                              ; preds = %382
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %42, ptr noundef nonnull align 8 dereferenceable(32) %43, ptr noundef nonnull @.str.60)
          to label %384 unwind label %413

384:                                              ; preds = %383
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %44) #7
  %385 = load ptr, ptr %0, align 8, !tbaa !190
  %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 %44, ptr noundef nonnull align 8 dereferenceable(12482) %0, ptr noundef nonnull align 8 dereferenceable(336) %150, i32 noundef 0)
          to label %388 unwind label %415

388:                                              ; preds = %384
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %41, ptr noundef nonnull align 8 dereferenceable(32) %42, ptr noundef nonnull align 8 dereferenceable(32) %44)
          to label %389 unwind label %417

389:                                              ; preds = %388
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %40, ptr noundef nonnull align 8 dereferenceable(32) %41, ptr noundef nonnull @.str.61)
          to label %390 unwind label %419

390:                                              ; preds = %389
  %391 = load i32, ptr %5, align 4, !tbaa !18
  %392 = invoke noundef ptr @_ZN11spirv_cross11CompilerMSL11to_restrictEjb(ptr noundef nonnull align 8 dereferenceable(12482) %0, i32 noundef %391, i1 noundef zeroext true)
          to label %393 unwind label %421

393:                                              ; preds = %390
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %39, ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef %392)
          to label %394 unwind label %421

394:                                              ; preds = %393
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %38, ptr noundef nonnull align 8 dereferenceable(32) %39, ptr noundef nonnull align 8 dereferenceable(32) %372)
          to label %395 unwind label %423

395:                                              ; preds = %394
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %37, ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef nonnull @.str.76)
          to label %396 unwind label %425

396:                                              ; preds = %395
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %45) #7
  call void @_ZN11spirv_cross17convert_to_stringIjTnNSt9enable_ifIXntsr3std17is_floating_pointIT_EE5valueEiE4typeELi0EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS2_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %45, ptr noundef nonnull align 4 dereferenceable(4) %35)
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %36, ptr noundef nonnull align 8 dereferenceable(32) %37, ptr noundef nonnull align 8 dereferenceable(32) %45)
          to label %397 unwind label %427

397:                                              ; preds = %396
  %398 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull align 8 dereferenceable(32) %36)
          to label %399 unwind label %429

399:                                              ; preds = %397
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %45) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %44) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %43) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %42) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %41) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %40) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %39) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %38) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %37) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %36) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %46) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %47) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %48) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %49) #7
  %400 = load i32, ptr %373, align 4, !tbaa !192
  %401 = load i32, ptr %35, align 4, !tbaa !18
  %402 = add i32 %401, %400
  store i32 %402, ptr %49, align 4, !tbaa !18
  call void @_ZN11spirv_cross17convert_to_stringIjTnNSt9enable_ifIXntsr3std17is_floating_pointIT_EE5valueEiE4typeELi0EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS2_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %48, ptr noundef nonnull align 4 dereferenceable(4) %49)
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %47, ptr noundef nonnull @.str.1360, ptr noundef nonnull align 8 dereferenceable(32) %48)
          to label %403 unwind label %440

403:                                              ; preds = %399
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %46, ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef nonnull @.str.53)
          to label %404 unwind label %442

404:                                              ; preds = %403
  %405 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull align 8 dereferenceable(32) %46)
          to label %406 unwind label %444

406:                                              ; preds = %404
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %49) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %48) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %47) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %46) #7
  %407 = invoke noundef i64 @_ZNKSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEE5countERKj(ptr noundef nonnull align 8 dereferenceable(56) %136, ptr noundef nonnull align 4 dereferenceable(4) %5)
          to label %408 unwind label %380

408:                                              ; preds = %406
  %.not333 = icmp eq i64 %407, 0
  br i1 %.not333, label %448, label %409

409:                                              ; preds = %408
  %410 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull @.str.1317)
          to label %448 unwind label %380

411:                                              ; preds = %382
  %412 = landingpad { ptr, i32 }
          cleanup
  br label %439

413:                                              ; preds = %383
  %414 = landingpad { ptr, i32 }
          cleanup
  br label %438

415:                                              ; preds = %384
  %416 = landingpad { ptr, i32 }
          cleanup
  br label %437

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

419:                                              ; preds = %389
  %420 = landingpad { ptr, i32 }
          cleanup
  br label %435

421:                                              ; preds = %393, %390
  %422 = landingpad { ptr, i32 }
          cleanup
  br label %434

423:                                              ; preds = %394
  %424 = landingpad { ptr, i32 }
          cleanup
  br label %433

425:                                              ; preds = %395
  %426 = landingpad { ptr, i32 }
          cleanup
  br label %432

427:                                              ; preds = %396
  %428 = landingpad { ptr, i32 }
          cleanup
  br label %431

429:                                              ; preds = %397
  %430 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #7
  br label %431

431:                                              ; preds = %429, %427
  %.pn320 = phi { ptr, i32 } [ %430, %429 ], [ %428, %427 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %45) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #7
  br label %432

432:                                              ; preds = %431, %425
  %.pn320.pn = phi { ptr, i32 } [ %.pn320, %431 ], [ %426, %425 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #7
  br label %433

433:                                              ; preds = %432, %423
  %.pn320.pn.pn = phi { ptr, i32 } [ %.pn320.pn, %432 ], [ %424, %423 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #7
  br label %434

434:                                              ; preds = %433, %421
  %.pn320.pn.pn.pn = phi { ptr, i32 } [ %.pn320.pn.pn, %433 ], [ %422, %421 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #7
  br label %435

435:                                              ; preds = %434, %419
  %.pn320.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn320.pn.pn.pn, %434 ], [ %420, %419 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #7
  br label %436

436:                                              ; preds = %435, %417
  %.pn320.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn320.pn.pn.pn.pn, %435 ], [ %418, %417 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #7
  br label %437

437:                                              ; preds = %436, %415
  %.pn320.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn320.pn.pn.pn.pn.pn, %436 ], [ %416, %415 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %44) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #7
  br label %438

438:                                              ; preds = %437, %413
  %.pn320.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn320.pn.pn.pn.pn.pn.pn, %437 ], [ %414, %413 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #7
  br label %439

439:                                              ; preds = %438, %411
  %.pn320.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn320.pn.pn.pn.pn.pn.pn.pn, %438 ], [ %412, %411 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %43) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %42) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %41) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %40) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %39) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %38) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %37) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %36) #7
  br label %454

440:                                              ; preds = %399
  %441 = landingpad { ptr, i32 }
          cleanup
  br label %447

442:                                              ; preds = %403
  %443 = landingpad { ptr, i32 }
          cleanup
  br label %446

444:                                              ; preds = %404
  %445 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #7
  br label %446

446:                                              ; preds = %444, %442
  %.pn330 = phi { ptr, i32 } [ %445, %444 ], [ %443, %442 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #7
  br label %447

447:                                              ; preds = %446, %440
  %.pn330.pn = phi { ptr, i32 } [ %.pn330, %446 ], [ %441, %440 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %49) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %48) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %47) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %46) #7
  br label %454

448:                                              ; preds = %409, %408
  %449 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull @.str.1318)
          to label %450 unwind label %380

450:                                              ; preds = %448
  %451 = load i32, ptr %35, align 4, !tbaa !18
  %452 = add i32 %451, 1
  store i32 %452, ptr %35, align 4, !tbaa !18
  %453 = icmp ult i32 %452, %370
  br i1 %453, label %376, label %._crit_edge, !llvm.loop !193

454:                                              ; preds = %447, %439, %380
  %.pn334 = phi { ptr, i32 } [ %381, %380 ], [ %.pn330.pn, %447 ], [ %.pn320.pn.pn.pn.pn.pn.pn.pn.pn, %439 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %35) #7
  br label %989

455:                                              ; preds = %366, %._crit_edge
  store i8 0, ptr %141, align 2, !tbaa !21
  br label %987

456:                                              ; preds = %236
  %457 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %1) #7
  br i1 %457, label %460, label %458

458:                                              ; preds = %456
  %459 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull @.str.55)
          to label %460 unwind label %.loopexit411

460:                                              ; preds = %458, %456
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %50) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %51) #7
  invoke void @_ZN11spirv_cross11CompilerMSL26get_argument_address_spaceB5cxx11ERKNS_12SPIRVariableE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %51, ptr noundef nonnull align 8 dereferenceable(12482) %0, ptr noundef nonnull align 8 dereferenceable(176) %149)
          to label %461 unwind label %479

461:                                              ; preds = %460
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %50, ptr noundef nonnull align 8 dereferenceable(32) %51, ptr noundef nonnull @.str.60)
          to label %462 unwind label %481

462:                                              ; preds = %461
  %463 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull align 8 dereferenceable(32) %50)
          to label %464 unwind label %483

464:                                              ; preds = %462
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #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 nonnull %51) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %50) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %52) #7
  %465 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %161)
  store i32 %465, ptr %52, align 4, !tbaa !18
  %466 = invoke noundef i64 @_ZNKSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEE5countERKj(ptr noundef nonnull align 8 dereferenceable(56) %143, ptr noundef nonnull align 4 dereferenceable(4) %52)
          to label %467 unwind label %487

467:                                              ; preds = %464
  %.not363 = icmp eq i64 %466, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %52) #7
  br i1 %.not363, label %503, label %468

468:                                              ; preds = %467
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %53) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %54) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %55) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %56) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %57) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %56, ptr noundef nonnull @.str.1370, ptr noundef nonnull align 1 dereferenceable(1) %57)
          to label %469 unwind label %489

469:                                              ; preds = %468
  %470 = load i32, ptr %5, align 4, !tbaa !18
  %471 = invoke noundef ptr @_ZN11spirv_cross11CompilerMSL11to_restrictEjb(ptr noundef nonnull align 8 dereferenceable(12482) %0, i32 noundef %470, i1 noundef zeroext true)
          to label %472 unwind label %491

472:                                              ; preds = %469
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %55, ptr noundef nonnull align 8 dereferenceable(32) %56, ptr noundef %471)
          to label %473 unwind label %491

473:                                              ; preds = %472
  %474 = getelementptr inbounds i8, ptr %.0254417, i64 16
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %54, ptr noundef nonnull align 8 dereferenceable(32) %55, ptr noundef nonnull align 8 dereferenceable(32) %474)
          to label %475 unwind label %493

475:                                              ; preds = %473
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %53, ptr noundef nonnull align 8 dereferenceable(32) %54, ptr noundef nonnull @.str.1371)
          to label %476 unwind label %495

476:                                              ; preds = %475
  %477 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull align 8 dereferenceable(32) %53)
          to label %478 unwind label %497

478:                                              ; preds = %476
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %57) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %56) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %55) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %54) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %53) #7
  br label %531

479:                                              ; preds = %460
  %480 = landingpad { ptr, i32 }
          cleanup
  br label %486

481:                                              ; preds = %461
  %482 = landingpad { ptr, i32 }
          cleanup
  br label %485

483:                                              ; preds = %462
  %484 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #7
  br label %485

485:                                              ; preds = %483, %481
  %.pn360 = phi { ptr, i32 } [ %484, %483 ], [ %482, %481 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #7
  br label %486

486:                                              ; preds = %485, %479
  %.pn360.pn = phi { ptr, i32 } [ %.pn360, %485 ], [ %480, %479 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %51) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %50) #7
  br label %989

487:                                              ; preds = %464
  %488 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %52) #7
  br label %989

489:                                              ; preds = %468
  %490 = landingpad { ptr, i32 }
          cleanup
  br label %502

491:                                              ; preds = %472, %469
  %492 = landingpad { ptr, i32 }
          cleanup
  br label %501

493:                                              ; preds = %473
  %494 = landingpad { ptr, i32 }
          cleanup
  br label %500

495:                                              ; preds = %475
  %496 = landingpad { ptr, i32 }
          cleanup
  br label %499

497:                                              ; preds = %476
  %498 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #7
  br label %499

499:                                              ; preds = %497, %495
  %.pn369 = phi { ptr, i32 } [ %498, %497 ], [ %496, %495 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #7
  br label %500

500:                                              ; preds = %499, %493
  %.pn369.pn = phi { ptr, i32 } [ %.pn369, %499 ], [ %494, %493 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #7
  br label %501

501:                                              ; preds = %500, %491
  %.pn369.pn.pn = phi { ptr, i32 } [ %.pn369.pn, %500 ], [ %492, %491 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #7
  br label %502

502:                                              ; preds = %501, %489
  %.pn369.pn.pn.pn = phi { ptr, i32 } [ %.pn369.pn.pn, %501 ], [ %490, %489 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %57) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %56) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %55) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %54) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %53) #7
  br label %989

503:                                              ; preds = %467
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %58) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %59) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %60) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %61) #7
  %504 = load ptr, ptr %0, align 8, !tbaa !190
  %505 = getelementptr inbounds i8, ptr %504, i64 152
  %506 = load ptr, ptr %505, align 8
  invoke void %506(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %61, ptr noundef nonnull align 8 dereferenceable(12482) %0, ptr noundef nonnull align 8 dereferenceable(336) %150, i32 noundef 0)
          to label %507 unwind label %517

507:                                              ; preds = %503
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %60, ptr noundef nonnull align 8 dereferenceable(32) %61, ptr noundef nonnull @.str.1189)
          to label %508 unwind label %519

508:                                              ; preds = %507
  %509 = load i32, ptr %5, align 4, !tbaa !18
  %510 = invoke noundef ptr @_ZN11spirv_cross11CompilerMSL11to_restrictEjb(ptr noundef nonnull align 8 dereferenceable(12482) %0, i32 noundef %509, i1 noundef zeroext true)
          to label %511 unwind label %521

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

512:                                              ; preds = %511
  %513 = getelementptr inbounds i8, ptr %.0254417, i64 16
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %58, ptr noundef nonnull align 8 dereferenceable(32) %59, ptr noundef nonnull align 8 dereferenceable(32) %513)
          to label %514 unwind label %523

514:                                              ; preds = %512
  %515 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull align 8 dereferenceable(32) %58)
          to label %516 unwind label %525

516:                                              ; preds = %514
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %61) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %60) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %59) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %58) #7
  br label %531

517:                                              ; preds = %503
  %518 = landingpad { ptr, i32 }
          cleanup
  br label %530

519:                                              ; preds = %507
  %520 = landingpad { ptr, i32 }
          cleanup
  br label %529

521:                                              ; preds = %511, %508
  %522 = landingpad { ptr, i32 }
          cleanup
  br label %528

523:                                              ; preds = %512
  %524 = landingpad { ptr, i32 }
          cleanup
  br label %527

525:                                              ; preds = %514
  %526 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #7
  br label %527

527:                                              ; preds = %525, %523
  %.pn364 = phi { ptr, i32 } [ %526, %525 ], [ %524, %523 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #7
  br label %528

528:                                              ; preds = %527, %521
  %.pn364.pn = phi { ptr, i32 } [ %.pn364, %527 ], [ %522, %521 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #7
  br label %529

529:                                              ; preds = %528, %519
  %.pn364.pn.pn = phi { ptr, i32 } [ %.pn364.pn, %528 ], [ %520, %519 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #7
  br label %530

530:                                              ; preds = %529, %517
  %.pn364.pn.pn.pn = phi { ptr, i32 } [ %.pn364.pn.pn, %529 ], [ %518, %517 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %61) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %60) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %59) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %58) #7
  br label %989

531:                                              ; preds = %516, %478
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %62) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %63) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %64) #7
  %532 = getelementptr inbounds i8, ptr %.0254417, i64 52
  call void @_ZN11spirv_cross17convert_to_stringIjTnNSt9enable_ifIXntsr3std17is_floating_pointIT_EE5valueEiE4typeELi0EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS2_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %64, ptr noundef nonnull align 4 dereferenceable(4) %532)
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %63, ptr noundef nonnull @.str.1360, ptr noundef nonnull align 8 dereferenceable(32) %64)
          to label %533 unwind label %541

533:                                              ; preds = %531
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %62, ptr noundef nonnull align 8 dereferenceable(32) %63, ptr noundef nonnull @.str.53)
          to label %534 unwind label %543

534:                                              ; preds = %533
  %535 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull align 8 dereferenceable(32) %62)
          to label %536 unwind label %545

536:                                              ; preds = %534
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %64) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %63) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %62) #7
  %537 = invoke noundef i64 @_ZNKSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEE5countERKj(ptr noundef nonnull align 8 dereferenceable(56) %136, ptr noundef nonnull align 4 dereferenceable(4) %5)
          to label %538 unwind label %.loopexit411

538:                                              ; preds = %536
  %.not377 = icmp eq i64 %537, 0
  br i1 %.not377, label %549, label %539

539:                                              ; preds = %538
  %540 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull @.str.1317)
          to label %549 unwind label %.loopexit411

541:                                              ; preds = %531
  %542 = landingpad { ptr, i32 }
          cleanup
  br label %548

543:                                              ; preds = %533
  %544 = landingpad { ptr, i32 }
          cleanup
  br label %547

545:                                              ; preds = %534
  %546 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #7
  br label %547

547:                                              ; preds = %545, %543
  %.pn374 = phi { ptr, i32 } [ %546, %545 ], [ %544, %543 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #7
  br label %548

548:                                              ; preds = %547, %541
  %.pn374.pn = phi { ptr, i32 } [ %.pn374, %547 ], [ %542, %541 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %64) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %63) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %62) #7
  br label %989

549:                                              ; preds = %539, %538
  %550 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull @.str.1318)
          to label %987 unwind label %.loopexit411

551:                                              ; preds = %151
  %552 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %1) #7
  br i1 %552, label %555, label %553

553:                                              ; preds = %551
  %554 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull @.str.55)
          to label %555 unwind label %158

555:                                              ; preds = %553, %551
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %65) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %66) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %67) #7
  %556 = load i32, ptr %5, align 4, !tbaa !18
  invoke void @_ZN11spirv_cross11CompilerMSL12sampler_typeB5cxx11ERKNS_8SPIRTypeEjb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %67, ptr noundef nonnull align 8 dereferenceable(12482) %0, ptr noundef nonnull align 8 dereferenceable(336) %150, i32 noundef %556, i1 noundef zeroext false)
          to label %557 unwind label %571

557:                                              ; preds = %555
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %66, ptr noundef nonnull align 8 dereferenceable(32) %67, ptr noundef nonnull @.str.60)
          to label %558 unwind label %573

558:                                              ; preds = %557
  %559 = getelementptr inbounds i8, ptr %.0254417, i64 16
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %65, ptr noundef nonnull align 8 dereferenceable(32) %66, ptr noundef nonnull align 8 dereferenceable(32) %559)
          to label %560 unwind label %575

560:                                              ; preds = %558
  %561 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull align 8 dereferenceable(32) %65)
          to label %562 unwind label %577

562:                                              ; preds = %560
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %67) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %66) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %65) #7
  %563 = 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) %149)
          to label %564 unwind label %158

564:                                              ; preds = %562
  %565 = getelementptr inbounds i8, ptr %.0254417, i64 52
  br i1 %563, label %566, label %590

566:                                              ; preds = %564
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %68) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %69) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %70) #7
  call void @_ZN11spirv_cross17convert_to_stringIjTnNSt9enable_ifIXntsr3std17is_floating_pointIT_EE5valueEiE4typeELi0EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS2_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %70, ptr noundef nonnull align 4 dereferenceable(4) %565)
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %69, ptr noundef nonnull @.str.1377, ptr noundef nonnull align 8 dereferenceable(32) %70)
          to label %567 unwind label %582

567:                                              ; preds = %566
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %68, ptr noundef nonnull align 8 dereferenceable(32) %69, ptr noundef nonnull @.str.1322)
          to label %568 unwind label %584

568:                                              ; preds = %567
  %569 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull align 8 dereferenceable(32) %68)
          to label %570 unwind label %586

570:                                              ; preds = %568
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %70) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %69) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %68) #7
  br label %987

571:                                              ; preds = %555
  %572 = landingpad { ptr, i32 }
          cleanup
  br label %581

573:                                              ; preds = %557
  %574 = landingpad { ptr, i32 }
          cleanup
  br label %580

575:                                              ; preds = %558
  %576 = landingpad { ptr, i32 }
          cleanup
  br label %579

577:                                              ; preds = %560
  %578 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #7
  br label %579

579:                                              ; preds = %577, %575
  %.pn309 = phi { ptr, i32 } [ %578, %577 ], [ %576, %575 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #7
  br label %580

580:                                              ; preds = %579, %573
  %.pn309.pn = phi { ptr, i32 } [ %.pn309, %579 ], [ %574, %573 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #7
  br label %581

581:                                              ; preds = %580, %571
  %.pn309.pn.pn = phi { ptr, i32 } [ %.pn309.pn, %580 ], [ %572, %571 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %67) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %66) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %65) #7
  br label %989

582:                                              ; preds = %566
  %583 = landingpad { ptr, i32 }
          cleanup
  br label %589

584:                                              ; preds = %567
  %585 = landingpad { ptr, i32 }
          cleanup
  br label %588

586:                                              ; preds = %568
  %587 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #7
  br label %588

588:                                              ; preds = %586, %584
  %.pn316 = phi { ptr, i32 } [ %587, %586 ], [ %585, %584 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #7
  br label %589

589:                                              ; preds = %588, %582
  %.pn316.pn = phi { ptr, i32 } [ %.pn316, %588 ], [ %583, %582 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %70) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %69) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %68) #7
  br label %989

590:                                              ; preds = %564
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %71) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %72) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %73) #7
  call void @_ZN11spirv_cross17convert_to_stringIjTnNSt9enable_ifIXntsr3std17is_floating_pointIT_EE5valueEiE4typeELi0EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS2_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %73, ptr noundef nonnull align 4 dereferenceable(4) %565)
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %72, ptr noundef nonnull @.str.1378, ptr noundef nonnull align 8 dereferenceable(32) %73)
          to label %591 unwind label %595

591:                                              ; preds = %590
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %71, ptr noundef nonnull align 8 dereferenceable(32) %72, ptr noundef nonnull @.str.1322)
          to label %592 unwind label %597

592:                                              ; preds = %591
  %593 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull align 8 dereferenceable(32) %71)
          to label %594 unwind label %599

594:                                              ; preds = %592
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %73) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %73) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %72) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %71) #7
  br label %987

595:                                              ; preds = %590
  %596 = landingpad { ptr, i32 }
          cleanup
  br label %602

597:                                              ; preds = %591
  %598 = landingpad { ptr, i32 }
          cleanup
  br label %601

599:                                              ; preds = %592
  %600 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #7
  br label %601

601:                                              ; preds = %599, %597
  %.pn313 = phi { ptr, i32 } [ %600, %599 ], [ %598, %597 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #7
  br label %602

602:                                              ; preds = %601, %595
  %.pn313.pn = phi { ptr, i32 } [ %.pn313, %601 ], [ %596, %595 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %73) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %73) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %72) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %71) #7
  br label %989

603:                                              ; preds = %151
  %604 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %1) #7
  br i1 %604, label %607, label %605

605:                                              ; preds = %603
  %606 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull @.str.55)
          to label %607 unwind label %158

607:                                              ; preds = %605, %603
  %608 = getelementptr inbounds i8, ptr %149, i64 12
  %609 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE1EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %608)
  %610 = invoke noundef nonnull align 8 dereferenceable(336) ptr @_ZN11spirv_cross8Compiler3getINS_8SPIRTypeEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %609)
          to label %611 unwind label %.loopexit

611:                                              ; preds = %607
  %612 = call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL29type_is_msl_framebuffer_fetchERKNS_8SPIRTypeE(ptr noundef nonnull align 8 dereferenceable(12482) %0, ptr noundef nonnull align 8 dereferenceable(336) %610)
  br i1 %612, label %683, label %613

613:                                              ; preds = %611
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %74) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %75) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %76) #7
  %614 = load i32, ptr %5, align 4, !tbaa !18
  %615 = load ptr, ptr %0, align 8, !tbaa !190
  %616 = getelementptr inbounds i8, ptr %615, i64 184
  %617 = load ptr, ptr %616, align 8
  invoke void %617(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(336) %150, i32 noundef %614, i1 noundef zeroext false)
          to label %618 unwind label %630

618:                                              ; preds = %613
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %75, ptr noundef nonnull align 8 dereferenceable(32) %76, ptr noundef nonnull @.str.60)
          to label %619 unwind label %632

619:                                              ; preds = %618
  %620 = getelementptr inbounds i8, ptr %.0254417, i64 16
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %74, ptr noundef nonnull align 8 dereferenceable(32) %75, ptr noundef nonnull align 8 dereferenceable(32) %620)
          to label %621 unwind label %634

621:                                              ; preds = %619
  %622 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull align 8 dereferenceable(32) %74)
          to label %623 unwind label %636

623:                                              ; preds = %621
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %74) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %76) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %75) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %74) #7
  %624 = getelementptr inbounds i8, ptr %.0254417, i64 56
  %625 = load i32, ptr %624, align 8, !tbaa !195
  %.not277 = icmp eq i32 %625, 0
  br i1 %.not277, label %646, label %626

626:                                              ; preds = %623
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %77) #7
  invoke void @_ZN11spirv_cross4joinIJRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERjEEES6_DpOT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %77, ptr noundef nonnull align 8 dereferenceable(32) %135, ptr noundef nonnull align 4 dereferenceable(4) %624)
          to label %627 unwind label %641

627:                                              ; preds = %626
  %628 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull align 8 dereferenceable(32) %77)
          to label %629 unwind label %643

629:                                              ; preds = %627
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %77) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %77) #7
  br label %646

.loopexit:                                        ; preds = %607, %646, %676, %679, %681
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %989

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

630:                                              ; preds = %613
  %631 = landingpad { ptr, i32 }
          cleanup
  br label %640

632:                                              ; preds = %618
  %633 = landingpad { ptr, i32 }
          cleanup
  br label %639

634:                                              ; preds = %619
  %635 = landingpad { ptr, i32 }
          cleanup
  br label %638

636:                                              ; preds = %621
  %637 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %74) #7
  br label %638

638:                                              ; preds = %636, %634
  %.pn273 = phi { ptr, i32 } [ %637, %636 ], [ %635, %634 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #7
  br label %639

639:                                              ; preds = %638, %632
  %.pn273.pn = phi { ptr, i32 } [ %.pn273, %638 ], [ %633, %632 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #7
  br label %640

640:                                              ; preds = %639, %630
  %.pn273.pn.pn = phi { ptr, i32 } [ %.pn273.pn, %639 ], [ %631, %630 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %76) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %75) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %74) #7
  br label %989

641:                                              ; preds = %626
  %642 = landingpad { ptr, i32 }
          cleanup
  br label %645

643:                                              ; preds = %627
  %644 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %77) #7
  br label %645

645:                                              ; preds = %643, %641
  %.pn278 = phi { ptr, i32 } [ %644, %643 ], [ %642, %641 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %77) #7
  br label %989

646:                                              ; preds = %629, %623
  %647 = 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) %149)
          to label %648 unwind label %.loopexit

648:                                              ; preds = %646
  %649 = getelementptr inbounds i8, ptr %.0254417, i64 52
  br i1 %647, label %650, label %663

650:                                              ; preds = %648
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %78) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %79) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %80) #7
  call void @_ZN11spirv_cross17convert_to_stringIjTnNSt9enable_ifIXntsr3std17is_floating_pointIT_EE5valueEiE4typeELi0EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS2_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %80, ptr noundef nonnull align 4 dereferenceable(4) %649)
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %79, ptr noundef nonnull @.str.1377, ptr noundef nonnull align 8 dereferenceable(32) %80)
          to label %651 unwind label %655

651:                                              ; preds = %650
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %78, ptr noundef nonnull align 8 dereferenceable(32) %79, ptr noundef nonnull @.str.53)
          to label %652 unwind label %657

652:                                              ; preds = %651
  %653 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull align 8 dereferenceable(32) %78)
          to label %654 unwind label %659

654:                                              ; preds = %652
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %78) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %79) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %80) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %80) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %79) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %78) #7
  br label %676

655:                                              ; preds = %650
  %656 = landingpad { ptr, i32 }
          cleanup
  br label %662

657:                                              ; preds = %651
  %658 = landingpad { ptr, i32 }
          cleanup
  br label %661

659:                                              ; preds = %652
  %660 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %78) #7
  br label %661

661:                                              ; preds = %659, %657
  %.pn283 = phi { ptr, i32 } [ %660, %659 ], [ %658, %657 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %79) #7
  br label %662

662:                                              ; preds = %661, %655
  %.pn283.pn = phi { ptr, i32 } [ %.pn283, %661 ], [ %656, %655 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %80) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %80) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %79) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %78) #7
  br label %989

663:                                              ; preds = %648
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %81) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %82) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %83) #7
  call void @_ZN11spirv_cross17convert_to_stringIjTnNSt9enable_ifIXntsr3std17is_floating_pointIT_EE5valueEiE4typeELi0EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS2_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %83, ptr noundef nonnull align 4 dereferenceable(4) %649)
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %82, ptr noundef nonnull @.str.1379, ptr noundef nonnull align 8 dereferenceable(32) %83)
          to label %664 unwind label %668

664:                                              ; preds = %663
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %81, ptr noundef nonnull align 8 dereferenceable(32) %82, ptr noundef nonnull @.str.53)
          to label %665 unwind label %670

665:                                              ; preds = %664
  %666 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull align 8 dereferenceable(32) %81)
          to label %667 unwind label %672

667:                                              ; preds = %665
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %82) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %83) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %83) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %82) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %81) #7
  br label %676

668:                                              ; preds = %663
  %669 = landingpad { ptr, i32 }
          cleanup
  br label %675

670:                                              ; preds = %664
  %671 = landingpad { ptr, i32 }
          cleanup
  br label %674

672:                                              ; preds = %665
  %673 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #7
  br label %674

674:                                              ; preds = %672, %670
  %.pn280 = phi { ptr, i32 } [ %673, %672 ], [ %671, %670 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %82) #7
  br label %675

675:                                              ; preds = %674, %668
  %.pn280.pn = phi { ptr, i32 } [ %.pn280, %674 ], [ %669, %668 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %83) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %83) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %82) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %81) #7
  br label %989

676:                                              ; preds = %667, %654
  %677 = invoke noundef i64 @_ZNKSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEE5countERKj(ptr noundef nonnull align 8 dereferenceable(56) %136, ptr noundef nonnull align 4 dereferenceable(4) %5)
          to label %678 unwind label %.loopexit

678:                                              ; preds = %676
  %.not286 = icmp eq i64 %677, 0
  br i1 %.not286, label %681, label %679

679:                                              ; preds = %678
  %680 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull @.str.1317)
          to label %681 unwind label %.loopexit

681:                                              ; preds = %679, %678
  %682 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull @.str.1318)
          to label %727 unwind label %.loopexit

683:                                              ; preds = %611
  %684 = call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options8is_macosEv(ptr noundef nonnull align 4 dereferenceable(137) %137)
  br i1 %684, label %685, label %692

685:                                              ; preds = %683
  %686 = call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options20supports_msl_versionEjjj(ptr noundef nonnull align 4 dereferenceable(137) %137, i32 noundef 2, i32 noundef 3, i32 noundef 0)
  br i1 %686, label %692, label %687

687:                                              ; preds = %685
  %688 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %688, ptr noundef nonnull @.str.1380)
          to label %689 unwind label %690

689:                                              ; preds = %687
  invoke void @__cxa_throw(ptr nonnull %688, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #8
          to label %991 unwind label %.loopexit.split-lp

690:                                              ; preds = %687
  %691 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %688) #7
  br label %989

692:                                              ; preds = %685, %683
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %84) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %85) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %86) #7
  %693 = load i32, ptr %5, align 4, !tbaa !18
  %694 = load ptr, ptr %0, align 8, !tbaa !190
  %695 = getelementptr inbounds i8, ptr %694, i64 184
  %696 = load ptr, ptr %695, align 8
  invoke void %696(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %86, ptr noundef nonnull align 8 dereferenceable(12482) %0, ptr noundef nonnull align 8 dereferenceable(336) %150, i32 noundef %693, i1 noundef zeroext false)
          to label %697 unwind label %708

697:                                              ; preds = %692
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %85, ptr noundef nonnull align 8 dereferenceable(32) %86, ptr noundef nonnull @.str.60)
          to label %698 unwind label %710

698:                                              ; preds = %697
  %699 = getelementptr inbounds i8, ptr %.0254417, i64 16
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %84, ptr noundef nonnull align 8 dereferenceable(32) %85, ptr noundef nonnull align 8 dereferenceable(32) %699)
          to label %700 unwind label %712

700:                                              ; preds = %698
  %701 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull align 8 dereferenceable(32) %84)
          to label %702 unwind label %714

702:                                              ; preds = %700
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %84) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %85) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %86) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %86) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %85) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %84) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %87) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %88) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %89) #7
  %703 = getelementptr inbounds i8, ptr %.0254417, i64 52
  call void @_ZN11spirv_cross17convert_to_stringIjTnNSt9enable_ifIXntsr3std17is_floating_pointIT_EE5valueEiE4typeELi0EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS2_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %89, ptr noundef nonnull align 4 dereferenceable(4) %703)
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %88, ptr noundef nonnull @.str.1337, ptr noundef nonnull align 8 dereferenceable(32) %89)
          to label %704 unwind label %719

704:                                              ; preds = %702
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %87, ptr noundef nonnull align 8 dereferenceable(32) %88, ptr noundef nonnull @.str.1322)
          to label %705 unwind label %721

705:                                              ; preds = %704
  %706 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull align 8 dereferenceable(32) %87)
          to label %707 unwind label %723

707:                                              ; preds = %705
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %88) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %89) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %89) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %88) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %87) #7
  br label %727

708:                                              ; preds = %692
  %709 = landingpad { ptr, i32 }
          cleanup
  br label %718

710:                                              ; preds = %697
  %711 = landingpad { ptr, i32 }
          cleanup
  br label %717

712:                                              ; preds = %698
  %713 = landingpad { ptr, i32 }
          cleanup
  br label %716

714:                                              ; preds = %700
  %715 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %84) #7
  br label %716

716:                                              ; preds = %714, %712
  %.pn287 = phi { ptr, i32 } [ %715, %714 ], [ %713, %712 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %85) #7
  br label %717

717:                                              ; preds = %716, %710
  %.pn287.pn = phi { ptr, i32 } [ %.pn287, %716 ], [ %711, %710 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %86) #7
  br label %718

718:                                              ; preds = %717, %708
  %.pn287.pn.pn = phi { ptr, i32 } [ %.pn287.pn, %717 ], [ %709, %708 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %86) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %85) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %84) #7
  br label %989

719:                                              ; preds = %702
  %720 = landingpad { ptr, i32 }
          cleanup
  br label %726

721:                                              ; preds = %704
  %722 = landingpad { ptr, i32 }
          cleanup
  br label %725

723:                                              ; preds = %705
  %724 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #7
  br label %725

725:                                              ; preds = %723, %721
  %.pn291 = phi { ptr, i32 } [ %724, %723 ], [ %722, %721 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %88) #7
  br label %726

726:                                              ; preds = %725, %719
  %.pn291.pn = phi { ptr, i32 } [ %.pn291, %725 ], [ %720, %719 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %89) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %89) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %88) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %87) #7
  br label %989

727:                                              ; preds = %681, %707
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %90) #7
  %728 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %152)
  store i32 %728, ptr %90, align 4, !tbaa !18
  %729 = invoke noundef i64 @_ZNKSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEE5countERKj(ptr noundef nonnull align 8 dereferenceable(56) %138, ptr noundef nonnull align 4 dereferenceable(4) %90)
          to label %730 unwind label %762

730:                                              ; preds = %727
  %.not294 = icmp eq i64 %729, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %90) #7
  br i1 %.not294, label %987, label %731

731:                                              ; preds = %730
  %.sroa.0.0.copyload = load i32, ptr %152, align 8, !tbaa !18
  %732 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZNK11spirv_cross8ParsedIR21get_decoration_bitsetENS_7TypedIDILNS_5TypesE0EEE(ptr noundef nonnull align 8 dereferenceable(1920) %127, i32 %.sroa.0.0.copyload)
          to label %733 unwind label %764

733:                                              ; preds = %731
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %91) #7
  %734 = invoke noundef zeroext i1 @_ZN11spirv_cross11CompilerMSL32decoration_flags_signal_volatileERKNS_6BitsetE(ptr noundef nonnull align 8 dereferenceable(64) %732)
          to label %735 unwind label %766

735:                                              ; preds = %733
  %736 = select i1 %734, ptr @.str.1118, ptr @.str.35
  store ptr %736, ptr %91, align 8, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %92) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %93) #7
  %737 = getelementptr inbounds i8, ptr %610, i64 248
  %738 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE1EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %737)
  %739 = invoke noundef nonnull align 8 dereferenceable(336) ptr @_ZN11spirv_cross8Compiler3getINS_8SPIRTypeEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %738)
          to label %740 unwind label %768

740:                                              ; preds = %735
  %741 = load ptr, ptr %0, align 8, !tbaa !190
  %742 = getelementptr inbounds i8, ptr %741, i64 152
  %743 = load ptr, ptr %742, align 8
  invoke void %743(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %93, ptr noundef nonnull align 8 dereferenceable(12482) %0, ptr noundef nonnull align 8 dereferenceable(336) %739, i32 noundef 0)
          to label %744 unwind label %768

744:                                              ; preds = %740
  invoke void @_ZN11spirv_cross4joinIJRA3_KcRPS1_RA15_S1_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEESD_DpOT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %92, ptr noundef nonnull align 1 dereferenceable(3) @.str.55, ptr noundef nonnull align 8 dereferenceable(8) %91, ptr noundef nonnull align 1 dereferenceable(15) @.str.1381, ptr noundef nonnull align 8 dereferenceable(32) %93)
          to label %745 unwind label %770

745:                                              ; preds = %744
  %746 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull align 8 dereferenceable(32) %92)
          to label %747 unwind label %772

747:                                              ; preds = %745
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %93) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %93) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %92) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %94) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %95) #7
  %748 = getelementptr inbounds i8, ptr %.0254417, i64 16
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %95, ptr noundef nonnull @.str.61, ptr noundef nonnull align 8 dereferenceable(32) %748)
          to label %749 unwind label %776

749:                                              ; preds = %747
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %94, ptr noundef nonnull align 8 dereferenceable(32) %95, ptr noundef nonnull @.str.1293)
          to label %750 unwind label %778

750:                                              ; preds = %749
  %751 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull align 8 dereferenceable(32) %94)
          to label %752 unwind label %780

752:                                              ; preds = %750
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %94) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %95) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %95) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %94) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %96) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %97) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %98) #7
  %753 = getelementptr inbounds i8, ptr %.0254417, i64 60
  call void @_ZN11spirv_cross17convert_to_stringIjTnNSt9enable_ifIXntsr3std17is_floating_pointIT_EE5valueEiE4typeELi0EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS2_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %98, ptr noundef nonnull align 4 dereferenceable(4) %753)
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %97, ptr noundef nonnull @.str.1360, ptr noundef nonnull align 8 dereferenceable(32) %98)
          to label %754 unwind label %784

754:                                              ; preds = %752
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %96, ptr noundef nonnull align 8 dereferenceable(32) %97, ptr noundef nonnull @.str.53)
          to label %755 unwind label %786

755:                                              ; preds = %754
  %756 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull align 8 dereferenceable(32) %96)
          to label %757 unwind label %788

757:                                              ; preds = %755
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %96) #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) %98) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %98) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %97) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %96) #7
  %758 = invoke noundef i64 @_ZNKSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEE5countERKj(ptr noundef nonnull align 8 dereferenceable(56) %136, ptr noundef nonnull align 4 dereferenceable(4) %5)
          to label %759 unwind label %766

759:                                              ; preds = %757
  %.not304 = icmp eq i64 %758, 0
  br i1 %.not304, label %792, label %760

760:                                              ; preds = %759
  %761 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull @.str.1317)
          to label %792 unwind label %766

762:                                              ; preds = %727
  %763 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %90) #7
  br label %989

764:                                              ; preds = %731
  %765 = landingpad { ptr, i32 }
          cleanup
  br label %989

766:                                              ; preds = %792, %760, %757, %733
  %767 = landingpad { ptr, i32 }
          cleanup
  br label %795

768:                                              ; preds = %740, %735
  %769 = landingpad { ptr, i32 }
          cleanup
  br label %775

770:                                              ; preds = %744
  %771 = landingpad { ptr, i32 }
          cleanup
  br label %774

772:                                              ; preds = %745
  %773 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #7
  br label %774

774:                                              ; preds = %772, %770
  %.pn295 = phi { ptr, i32 } [ %773, %772 ], [ %771, %770 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %93) #7
  br label %775

775:                                              ; preds = %774, %768
  %.pn295.pn = phi { ptr, i32 } [ %.pn295, %774 ], [ %769, %768 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %93) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %92) #7
  br label %795

776:                                              ; preds = %747
  %777 = landingpad { ptr, i32 }
          cleanup
  br label %783

778:                                              ; preds = %749
  %779 = landingpad { ptr, i32 }
          cleanup
  br label %782

780:                                              ; preds = %750
  %781 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %94) #7
  br label %782

782:                                              ; preds = %780, %778
  %.pn298 = phi { ptr, i32 } [ %781, %780 ], [ %779, %778 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %95) #7
  br label %783

783:                                              ; preds = %782, %776
  %.pn298.pn = phi { ptr, i32 } [ %.pn298, %782 ], [ %777, %776 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %95) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %94) #7
  br label %795

784:                                              ; preds = %752
  %785 = landingpad { ptr, i32 }
          cleanup
  br label %791

786:                                              ; preds = %754
  %787 = landingpad { ptr, i32 }
          cleanup
  br label %790

788:                                              ; preds = %755
  %789 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %96) #7
  br label %790

790:                                              ; preds = %788, %786
  %.pn301 = phi { ptr, i32 } [ %789, %788 ], [ %787, %786 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %97) #7
  br label %791

791:                                              ; preds = %790, %784
  %.pn301.pn = phi { ptr, i32 } [ %.pn301, %790 ], [ %785, %784 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %98) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %98) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %97) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %96) #7
  br label %795

792:                                              ; preds = %760, %759
  %793 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull @.str.1318)
          to label %794 unwind label %766

794:                                              ; preds = %792
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %91) #7
  br label %987

795:                                              ; preds = %791, %783, %775, %766
  %.pn305 = phi { ptr, i32 } [ %767, %766 ], [ %.pn301.pn, %791 ], [ %.pn298.pn, %783 ], [ %.pn295.pn, %775 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %91) #7
  br label %989

796:                                              ; preds = %151
  %797 = 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) %149)
          to label %798 unwind label %158

798:                                              ; preds = %796
  br i1 %797, label %799, label %859

799:                                              ; preds = %798
  invoke void @_ZN11spirv_cross11CompilerMSL26add_spv_func_and_recompileENS0_11SPVFuncImplE(ptr noundef nonnull align 8 dereferenceable(12482) %0, i8 noundef zeroext 68)
          to label %800 unwind label %158

800:                                              ; preds = %799
  %801 = getelementptr inbounds i8, ptr %150, i64 276
  %802 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE1EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %801)
  %803 = invoke noundef nonnull align 8 dereferenceable(336) ptr @_ZN11spirv_cross8Compiler3getINS_8SPIRTypeEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %802)
          to label %804 unwind label %808

804:                                              ; preds = %800
  %805 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %1) #7
  br i1 %805, label %810, label %806

806:                                              ; preds = %804
  %807 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull @.str.55)
          to label %810 unwind label %808

808:                                              ; preds = %806, %800
  %809 = landingpad { ptr, i32 }
          cleanup
  br label %989

810:                                              ; preds = %806, %804
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %99) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %100) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %101) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %102) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %103) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %104) #7
  %811 = load ptr, ptr %0, align 8, !tbaa !190
  %812 = getelementptr inbounds i8, ptr %811, i64 152
  %813 = load ptr, ptr %812, align 8
  invoke void %813(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(336) %803, i32 noundef 0)
          to label %814 unwind label %831

814:                                              ; preds = %810
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %103, ptr noundef nonnull @.str.1376, ptr noundef nonnull align 8 dereferenceable(32) %104)
          to label %815 unwind label %833

815:                                              ; preds = %814
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %102, ptr noundef nonnull align 8 dereferenceable(32) %103, ptr noundef nonnull @.str.1382)
          to label %816 unwind label %835

816:                                              ; preds = %815
  %817 = load i32, ptr %5, align 4, !tbaa !18
  %818 = invoke noundef ptr @_ZN11spirv_cross11CompilerMSL11to_restrictEjb(ptr noundef nonnull align 8 dereferenceable(12482) %0, i32 noundef %817, i1 noundef zeroext true)
          to label %819 unwind label %837

819:                                              ; preds = %816
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %101, ptr noundef nonnull align 8 dereferenceable(32) %102, ptr noundef %818)
          to label %820 unwind label %837

820:                                              ; preds = %819
  %821 = getelementptr inbounds i8, ptr %.0254417, i64 16
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %100, ptr noundef nonnull align 8 dereferenceable(32) %101, ptr noundef nonnull align 8 dereferenceable(32) %821)
          to label %822 unwind label %839

822:                                              ; preds = %820
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %99, ptr noundef nonnull align 8 dereferenceable(32) %100, ptr noundef nonnull @.str.76)
          to label %823 unwind label %841

823:                                              ; preds = %822
  %824 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull align 8 dereferenceable(32) %99)
          to label %825 unwind label %843

825:                                              ; preds = %823
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %99) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %100) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %101) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %102) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %103) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %104) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %104) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %103) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %102) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %101) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %100) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %99) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %105) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %106) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %107) #7
  %826 = getelementptr inbounds i8, ptr %.0254417, i64 52
  call void @_ZN11spirv_cross17convert_to_stringIjTnNSt9enable_ifIXntsr3std17is_floating_pointIT_EE5valueEiE4typeELi0EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS2_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %107, ptr noundef nonnull align 4 dereferenceable(4) %826)
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %106, ptr noundef nonnull @.str.1360, ptr noundef nonnull align 8 dereferenceable(32) %107)
          to label %827 unwind label %851

827:                                              ; preds = %825
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %105, ptr noundef nonnull align 8 dereferenceable(32) %106, ptr noundef nonnull @.str.1322)
          to label %828 unwind label %853

828:                                              ; preds = %827
  %829 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull align 8 dereferenceable(32) %105)
          to label %830 unwind label %855

830:                                              ; preds = %828
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %105) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %106) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %107) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %107) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %106) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %105) #7
  br label %987

831:                                              ; preds = %810
  %832 = landingpad { ptr, i32 }
          cleanup
  br label %850

833:                                              ; preds = %814
  %834 = landingpad { ptr, i32 }
          cleanup
  br label %849

835:                                              ; preds = %815
  %836 = landingpad { ptr, i32 }
          cleanup
  br label %848

837:                                              ; preds = %819, %816
  %838 = landingpad { ptr, i32 }
          cleanup
  br label %847

839:                                              ; preds = %820
  %840 = landingpad { ptr, i32 }
          cleanup
  br label %846

841:                                              ; preds = %822
  %842 = landingpad { ptr, i32 }
          cleanup
  br label %845

843:                                              ; preds = %823
  %844 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %99) #7
  br label %845

845:                                              ; preds = %843, %841
  %.pn262 = phi { ptr, i32 } [ %844, %843 ], [ %842, %841 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %100) #7
  br label %846

846:                                              ; preds = %845, %839
  %.pn262.pn = phi { ptr, i32 } [ %.pn262, %845 ], [ %840, %839 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %101) #7
  br label %847

847:                                              ; preds = %846, %837
  %.pn262.pn.pn = phi { ptr, i32 } [ %.pn262.pn, %846 ], [ %838, %837 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %102) #7
  br label %848

848:                                              ; preds = %847, %835
  %.pn262.pn.pn.pn = phi { ptr, i32 } [ %.pn262.pn.pn, %847 ], [ %836, %835 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %103) #7
  br label %849

849:                                              ; preds = %848, %833
  %.pn262.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn262.pn.pn.pn, %848 ], [ %834, %833 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %104) #7
  br label %850

850:                                              ; preds = %849, %831
  %.pn262.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn262.pn.pn.pn.pn, %849 ], [ %832, %831 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %104) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %103) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %102) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %101) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %100) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %99) #7
  br label %989

851:                                              ; preds = %825
  %852 = landingpad { ptr, i32 }
          cleanup
  br label %858

853:                                              ; preds = %827
  %854 = landingpad { ptr, i32 }
          cleanup
  br label %857

855:                                              ; preds = %828
  %856 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %105) #7
  br label %857

857:                                              ; preds = %855, %853
  %.pn269 = phi { ptr, i32 } [ %856, %855 ], [ %854, %853 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %106) #7
  br label %858

858:                                              ; preds = %857, %851
  %.pn269.pn = phi { ptr, i32 } [ %.pn269, %857 ], [ %852, %851 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %107) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %107) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %106) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %105) #7
  br label %989

859:                                              ; preds = %798
  %860 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %1) #7
  br i1 %860, label %863, label %861

861:                                              ; preds = %859
  %862 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull @.str.55)
          to label %863 unwind label %158

863:                                              ; preds = %861, %859
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %108) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %109) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %110) #7
  %864 = load i32, ptr %5, align 4, !tbaa !18
  %865 = load ptr, ptr %0, align 8, !tbaa !190
  %866 = getelementptr inbounds i8, ptr %865, i64 152
  %867 = load ptr, ptr %866, align 8
  invoke void %867(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %110, ptr noundef nonnull align 8 dereferenceable(12482) %0, ptr noundef nonnull align 8 dereferenceable(336) %150, i32 noundef %864)
          to label %868 unwind label %879

868:                                              ; preds = %863
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %109, ptr noundef nonnull align 8 dereferenceable(32) %110, ptr noundef nonnull @.str.60)
          to label %869 unwind label %881

869:                                              ; preds = %868
  %870 = getelementptr inbounds i8, ptr %.0254417, i64 16
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %108, ptr noundef nonnull align 8 dereferenceable(32) %109, ptr noundef nonnull align 8 dereferenceable(32) %870)
          to label %871 unwind label %883

871:                                              ; preds = %869
  %872 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull align 8 dereferenceable(32) %108)
          to label %873 unwind label %885

873:                                              ; preds = %871
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %108) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %109) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %110) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %110) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %109) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %108) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %111) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %112) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %113) #7
  %874 = getelementptr inbounds i8, ptr %.0254417, i64 52
  call void @_ZN11spirv_cross17convert_to_stringIjTnNSt9enable_ifIXntsr3std17is_floating_pointIT_EE5valueEiE4typeELi0EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS2_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %113, ptr noundef nonnull align 4 dereferenceable(4) %874)
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %112, ptr noundef nonnull @.str.1360, ptr noundef nonnull align 8 dereferenceable(32) %113)
          to label %875 unwind label %890

875:                                              ; preds = %873
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %111, ptr noundef nonnull align 8 dereferenceable(32) %112, ptr noundef nonnull @.str.1322)
          to label %876 unwind label %892

876:                                              ; preds = %875
  %877 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull align 8 dereferenceable(32) %111)
          to label %878 unwind label %894

878:                                              ; preds = %876
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %111) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %112) #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 nonnull %113) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %112) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %111) #7
  br label %987

879:                                              ; preds = %863
  %880 = landingpad { ptr, i32 }
          cleanup
  br label %889

881:                                              ; preds = %868
  %882 = landingpad { ptr, i32 }
          cleanup
  br label %888

883:                                              ; preds = %869
  %884 = landingpad { ptr, i32 }
          cleanup
  br label %887

885:                                              ; preds = %871
  %886 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %108) #7
  br label %887

887:                                              ; preds = %885, %883
  %.pn = phi { ptr, i32 } [ %886, %885 ], [ %884, %883 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %109) #7
  br label %888

888:                                              ; preds = %887, %881
  %.pn.pn = phi { ptr, i32 } [ %.pn, %887 ], [ %882, %881 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %110) #7
  br label %889

889:                                              ; preds = %888, %879
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %888 ], [ %880, %879 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %110) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %109) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %108) #7
  br label %989

890:                                              ; preds = %873
  %891 = landingpad { ptr, i32 }
          cleanup
  br label %897

892:                                              ; preds = %875
  %893 = landingpad { ptr, i32 }
          cleanup
  br label %896

894:                                              ; preds = %876
  %895 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %111) #7
  br label %896

896:                                              ; preds = %894, %892
  %.pn259 = phi { ptr, i32 } [ %895, %894 ], [ %893, %892 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %112) #7
  br label %897

897:                                              ; preds = %896, %890
  %.pn259.pn = phi { ptr, i32 } [ %.pn259, %896 ], [ %891, %890 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %113) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %113) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %112) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %111) #7
  br label %989

898:                                              ; preds = %151
  %899 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %1) #7
  br i1 %899, label %902, label %900

900:                                              ; preds = %898
  %901 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull @.str.55)
          to label %902 unwind label %158

902:                                              ; preds = %900, %898
  %903 = getelementptr inbounds i8, ptr %150, i64 124
  %904 = load i8, ptr %903, align 4, !tbaa !196, !range !188, !noundef !189
  %905 = trunc nuw i8 %904 to i1
  br i1 %905, label %945, label %906

906:                                              ; preds = %902
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %114) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %115) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %116) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %117) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %118) #7
  %907 = getelementptr inbounds i8, ptr %149, i64 12
  %908 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE1EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %907)
  %909 = invoke noundef nonnull align 8 dereferenceable(336) ptr @_ZN11spirv_cross8Compiler3getINS_8SPIRTypeEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %908)
          to label %910 unwind label %925

910:                                              ; preds = %906
  %911 = load i32, ptr %5, align 4, !tbaa !18
  invoke void @_ZN11spirv_cross11CompilerMSL22get_type_address_spaceB5cxx11ERKNS_8SPIRTypeEjb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %118, ptr noundef nonnull align 8 dereferenceable(12482) %0, ptr noundef nonnull align 8 dereferenceable(336) %909, i32 noundef %911, i1 noundef zeroext false)
          to label %912 unwind label %925

912:                                              ; preds = %910
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %117, ptr noundef nonnull align 8 dereferenceable(32) %118, ptr noundef nonnull @.str.60)
          to label %913 unwind label %927

913:                                              ; preds = %912
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %119) #7
  %914 = load i32, ptr %5, align 4, !tbaa !18
  %915 = load ptr, ptr %0, align 8, !tbaa !190
  %916 = getelementptr inbounds i8, ptr %915, i64 152
  %917 = load ptr, ptr %916, align 8
  invoke void %917(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %119, ptr noundef nonnull align 8 dereferenceable(12482) %0, ptr noundef nonnull align 8 dereferenceable(336) %150, i32 noundef %914)
          to label %918 unwind label %929

918:                                              ; preds = %913
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %116, ptr noundef nonnull align 8 dereferenceable(32) %117, ptr noundef nonnull align 8 dereferenceable(32) %119)
          to label %919 unwind label %931

919:                                              ; preds = %918
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %115, ptr noundef nonnull align 8 dereferenceable(32) %116, ptr noundef nonnull @.str.1189)
          to label %920 unwind label %933

920:                                              ; preds = %919
  %921 = getelementptr inbounds i8, ptr %.0254417, i64 16
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %114, ptr noundef nonnull align 8 dereferenceable(32) %115, ptr noundef nonnull align 8 dereferenceable(32) %921)
          to label %922 unwind label %935

922:                                              ; preds = %920
  %923 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull align 8 dereferenceable(32) %114)
          to label %924 unwind label %937

924:                                              ; preds = %922
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %114) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %115) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %116) #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 nonnull %119) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %117) #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 nonnull %118) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %117) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %116) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %115) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %114) #7
  br label %967

925:                                              ; preds = %910, %906
  %926 = landingpad { ptr, i32 }
          cleanup
  br label %944

927:                                              ; preds = %912
  %928 = landingpad { ptr, i32 }
          cleanup
  br label %943

929:                                              ; preds = %913
  %930 = landingpad { ptr, i32 }
          cleanup
  br label %942

931:                                              ; preds = %918
  %932 = landingpad { ptr, i32 }
          cleanup
  br label %941

933:                                              ; preds = %919
  %934 = landingpad { ptr, i32 }
          cleanup
  br label %940

935:                                              ; preds = %920
  %936 = landingpad { ptr, i32 }
          cleanup
  br label %939

937:                                              ; preds = %922
  %938 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %114) #7
  br label %939

939:                                              ; preds = %937, %935
  %.pn392 = phi { ptr, i32 } [ %938, %937 ], [ %936, %935 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %115) #7
  br label %940

940:                                              ; preds = %939, %933
  %.pn392.pn = phi { ptr, i32 } [ %.pn392, %939 ], [ %934, %933 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %116) #7
  br label %941

941:                                              ; preds = %940, %931
  %.pn392.pn.pn = phi { ptr, i32 } [ %.pn392.pn, %940 ], [ %932, %931 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %119) #7
  br label %942

942:                                              ; preds = %941, %929
  %.pn392.pn.pn.pn = phi { ptr, i32 } [ %.pn392.pn.pn, %941 ], [ %930, %929 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %119) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %117) #7
  br label %943

943:                                              ; preds = %942, %927
  %.pn392.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn392.pn.pn.pn, %942 ], [ %928, %927 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %118) #7
  br label %944

944:                                              ; preds = %943, %925
  %.pn392.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn392.pn.pn.pn.pn, %943 ], [ %926, %925 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %118) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %117) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %116) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %115) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %114) #7
  br label %989

945:                                              ; preds = %902
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %120) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %121) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %122) #7
  %946 = load i32, ptr %5, align 4, !tbaa !18
  %947 = load ptr, ptr %0, align 8, !tbaa !190
  %948 = getelementptr inbounds i8, ptr %947, i64 152
  %949 = load ptr, ptr %948, align 8
  invoke void %949(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %122, ptr noundef nonnull align 8 dereferenceable(12482) %0, ptr noundef nonnull align 8 dereferenceable(336) %150, i32 noundef %946)
          to label %950 unwind label %956

950:                                              ; preds = %945
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %121, ptr noundef nonnull align 8 dereferenceable(32) %122, ptr noundef nonnull @.str.60)
          to label %951 unwind label %958

951:                                              ; preds = %950
  %952 = getelementptr inbounds i8, ptr %.0254417, i64 16
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %120, ptr noundef nonnull align 8 dereferenceable(32) %121, ptr noundef nonnull align 8 dereferenceable(32) %952)
          to label %953 unwind label %960

953:                                              ; preds = %951
  %954 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull align 8 dereferenceable(32) %120)
          to label %955 unwind label %962

955:                                              ; preds = %953
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %120) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %121) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %122) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %122) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %121) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %120) #7
  br label %967

956:                                              ; preds = %945
  %957 = landingpad { ptr, i32 }
          cleanup
  br label %966

958:                                              ; preds = %950
  %959 = landingpad { ptr, i32 }
          cleanup
  br label %965

960:                                              ; preds = %951
  %961 = landingpad { ptr, i32 }
          cleanup
  br label %964

962:                                              ; preds = %953
  %963 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %120) #7
  br label %964

964:                                              ; preds = %962, %960
  %.pn399 = phi { ptr, i32 } [ %963, %962 ], [ %961, %960 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %121) #7
  br label %965

965:                                              ; preds = %964, %958
  %.pn399.pn = phi { ptr, i32 } [ %.pn399, %964 ], [ %959, %958 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %122) #7
  br label %966

966:                                              ; preds = %965, %956
  %.pn399.pn.pn = phi { ptr, i32 } [ %.pn399.pn, %965 ], [ %957, %956 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %122) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %121) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %120) #7
  br label %989

967:                                              ; preds = %955, %924
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %123) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %124) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %125) #7
  %968 = getelementptr inbounds i8, ptr %.0254417, i64 52
  call void @_ZN11spirv_cross17convert_to_stringIjTnNSt9enable_ifIXntsr3std17is_floating_pointIT_EE5valueEiE4typeELi0EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS2_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %125, ptr noundef nonnull align 4 dereferenceable(4) %968)
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %124, ptr noundef nonnull @.str.1360, ptr noundef nonnull align 8 dereferenceable(32) %125)
          to label %969 unwind label %977

969:                                              ; preds = %967
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %123, ptr noundef nonnull align 8 dereferenceable(32) %124, ptr noundef nonnull @.str.53)
          to label %970 unwind label %979

970:                                              ; preds = %969
  %971 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull align 8 dereferenceable(32) %123)
          to label %972 unwind label %981

972:                                              ; preds = %970
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %123) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %124) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %125) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %125) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %124) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %123) #7
  %973 = invoke noundef i64 @_ZNKSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEE5countERKj(ptr noundef nonnull align 8 dereferenceable(56) %136, ptr noundef nonnull align 4 dereferenceable(4) %5)
          to label %974 unwind label %158

974:                                              ; preds = %972
  %.not406 = icmp eq i64 %973, 0
  br i1 %.not406, label %985, label %975

975:                                              ; preds = %974
  %976 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull @.str.1317)
          to label %985 unwind label %158

977:                                              ; preds = %967
  %978 = landingpad { ptr, i32 }
          cleanup
  br label %984

979:                                              ; preds = %969
  %980 = landingpad { ptr, i32 }
          cleanup
  br label %983

981:                                              ; preds = %970
  %982 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %123) #7
  br label %983

983:                                              ; preds = %981, %979
  %.pn403 = phi { ptr, i32 } [ %982, %981 ], [ %980, %979 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %124) #7
  br label %984

984:                                              ; preds = %983, %977
  %.pn403.pn = phi { ptr, i32 } [ %.pn403, %983 ], [ %978, %977 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %125) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %125) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %124) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %123) #7
  br label %989

985:                                              ; preds = %975, %974
  %986 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull @.str.1318)
          to label %987 unwind label %158

987:                                              ; preds = %730, %794, %163, %455, %549, %232, %985, %830, %878, %570, %594
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #7
  %988 = getelementptr inbounds i8, ptr %.0254417, i64 64
  %.not = icmp eq ptr %988, %134
  br i1 %.not, label %._crit_edge420, label %148

989:                                              ; preds = %.loopexit, %.loopexit.split-lp, %.loopexit411, %.loopexit.split-lp412, %808, %850, %858, %640, %645, %662, %675, %690, %718, %726, %762, %795, %764, %231, %245, %486, %487, %502, %530, %548, %365, %357, %331, %298, %277, %454, %374, %984, %966, %944, %897, %889, %602, %589, %581, %158
  %.pn407 = phi { ptr, i32 } [ %159, %158 ], [ %.pn403.pn, %984 ], [ %.pn399.pn.pn, %966 ], [ %.pn392.pn.pn.pn.pn.pn, %944 ], [ %.pn259.pn, %897 ], [ %.pn.pn.pn, %889 ], [ %.pn316.pn, %589 ], [ %.pn313.pn, %602 ], [ %.pn309.pn.pn, %581 ], [ %.pn388.pn, %231 ], [ %.pn374.pn, %548 ], [ %.pn369.pn.pn.pn, %502 ], [ %.pn364.pn.pn.pn, %530 ], [ %488, %487 ], [ %.pn360.pn, %486 ], [ %246, %245 ], [ %278, %277 ], [ %.pn354.pn, %365 ], [ %.pn351.pn, %357 ], [ %.pn344.pn.pn.pn.pn.pn, %298 ], [ %.pn337.pn.pn.pn.pn.pn, %331 ], [ %.pn334, %454 ], [ %375, %374 ], [ %763, %762 ], [ %.pn291.pn, %726 ], [ %.pn287.pn.pn, %718 ], [ %691, %690 ], [ %.pn283.pn, %662 ], [ %.pn280.pn, %675 ], [ %.pn278, %645 ], [ %.pn273.pn.pn, %640 ], [ %.pn305, %795 ], [ %765, %764 ], [ %.pn269.pn, %858 ], [ %.pn262.pn.pn.pn.pn.pn, %850 ], [ %809, %808 ], [ %lpad.loopexit413, %.loopexit411 ], [ %lpad.loopexit.split-lp414, %.loopexit.split-lp412 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #7
  br label %990

990:                                              ; preds = %156, %989, %146, %144
  %.pn407.pn.pn = phi { ptr, i32 } [ %147, %146 ], [ %145, %144 ], [ %.pn407, %989 ], [ %157, %156 ]
  call void @_ZN11spirv_cross11SmallVectorIZNS_11CompilerMSL37entry_point_args_discrete_descriptorsERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE8ResourceLm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(536) %3) #7
  call void @llvm.lifetime.end.p0(i64 536, ptr nonnull %3) #7
  resume { ptr, i32 } %.pn407.pn.pn

991:                                              ; preds = %689, %244
  unreachable
}

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZN11spirv_cross8ParsedIR17for_each_typed_idINS_12SPIRVariableEZNS_11CompilerMSL37entry_point_args_discrete_descriptorsERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE3$_0EEvRKT0_"(ptr noundef nonnull align 8 dereferenceable(1920), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZSt11stable_sortIPZN11spirv_cross11CompilerMSL37entry_point_args_discrete_descriptorsERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE8ResourceZNS1_37entry_point_args_discrete_descriptorsES8_E3$_1EvT_SC_T0_"(ptr noundef, ptr noundef) local_unnamed_addr #5

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11spirv_cross4joinIJRA18_KcjRA8_S1_jEEENSt7__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: mustprogress uwtable
declare dso_local void @_ZN11spirv_cross4joinIJRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERjEEES6_DpOT_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #2

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

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

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

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

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


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,ReassociatePass,SROAPass,SimplifyCFGPass