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

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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator.71" = type { i8 }
%"struct.spirv_cross::Instruction" = type { i16, i16, i32, i32 }
%"class.spirv_cross::CompilerMSL" = type <{ %"class.spirv_cross::CompilerGLSL", %"class.std::unordered_map.277", i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i8, [2 x i8], %"struct.spirv_cross::CompilerMSL::Options", %"class.std::set", %"class.std::map", %"class.std::unordered_map.299", %"class.std::map", %"class.std::unordered_map.299", %"class.std::unordered_set", %"class.std::unordered_set", %"class.std::unordered_set", %"class.std::unordered_set", %"class.std::unordered_map.213", %"class.std::unordered_map.213", %"class.std::unordered_map.213", %"class.std::set.313", %"class.std::set.313", %"class.spirv_cross::SmallVector.92", %"class.std::unordered_map.319", %"class.std::unordered_map.336", i32, i32, i32, [8 x i32], %"class.spirv_cross::TypedID.350", %"class.spirv_cross::TypedID.350", %"class.spirv_cross::TypedID.350", %"class.spirv_cross::TypedID.350", %"class.spirv_cross::TypedID.350", %"class.spirv_cross::TypedID.350", %"class.spirv_cross::TypedID.350", %"class.spirv_cross::TypedID.350", %"class.spirv_cross::TypedID.350", %"class.spirv_cross::TypedID.350", %"class.spirv_cross::TypedID.350", i32, i32, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, [3 x i8], %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", i32, [4 x i8], %"class.std::map.351", %"class.std::unordered_map.357", %"class.std::unordered_set", %"class.spirv_cross::SmallVector.374", %"class.spirv_cross::SmallVector.92", %"class.std::unordered_set", %"class.std::unordered_set", %"class.std::unordered_set", %"class.spirv_cross::SmallVector.377", %"class.std::map.380", %"class.spirv_cross::SmallVector.92", %"class.std::unordered_set.386", [8 x i32], i32, i32, i8, i8, [6 x i8] }>
%"class.spirv_cross::CompilerGLSL" = type { %"class.spirv_cross::Compiler", ptr, %"class.spirv_cross::SmallVector.159", i8, %"class.spirv_cross::StringStream", ptr, ptr, i8, i8, %"struct.spirv_cross::CompilerGLSL::Options", %"class.std::unordered_set.165", %"class.std::unordered_set.165", %"class.std::unordered_set.165", %"class.std::unordered_set.165", %"class.std::unordered_set.165", %"class.std::unordered_set.165", %"class.std::unordered_set.165", %"class.std::unordered_map.185", %"class.std::unordered_map.145", i8, [7 x i8], %"struct.spirv_cross::CompilerGLSL::BackendVariations", i32, %"class.std::unordered_set", %"class.std::unordered_set", %"class.std::unordered_set", %"class.std::unordered_map.199", %"struct.spirv_cross::CompilerGLSL::ShaderSubgroupSupportHelper", %"class.std::unordered_map.213", %"class.spirv_cross::SmallVector.27", %"class.spirv_cross::SmallVector.27", %"class.std::unordered_map.213", %"class.spirv_cross::SmallVector.227", i32, i32, i32, i8, i8, %"class.std::vector.230", %"class.std::vector.230", %"class.std::vector.235", %"class.std::vector.240", %"class.std::unordered_map.213", %"class.std::unordered_set", %"class.std::unordered_set", i8, %"class.std::unordered_set.245", %"class.std::unordered_set", ptr, %"class.std::unordered_map.263" }
%"class.spirv_cross::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 }

@_ZTIN11spirv_cross13CompilerErrorE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.1581 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.1582 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.1583 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.1584 = external hidden unnamed_addr constant [84 x i8], align 1
@.str.1585 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.1586 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.1587 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.1588 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.1589 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.1590 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.1591 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.1592 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.1593 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.1594 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.1595 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.1596 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.1597 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.1598 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.1599 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.1600 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.1601 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.1602 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1603 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.1604 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.1605 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.1606 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.1607 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.1608 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.1609 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.1610 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.1611 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.1612 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.1613 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.1614 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.1615 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.1616 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.1617 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.1618 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.1619 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.1620 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.1621 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.1622 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.1623 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.1624 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.1625 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.1626 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.1627 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.1628 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.1629 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.1630 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.1631 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.1632 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.1633 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.1634 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.1635 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.1636 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.1637 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.1638 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.1639 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.1640 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.1641 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.1642 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.1643 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.1644 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.1645 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.1646 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.1647 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.1648 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.1649 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.1650 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.1651 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.1652 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.1653 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.1654 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.1655 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.1656 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.1657 = external hidden unnamed_addr constant [29 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

declare ptr @__cxa_allocate_exception(i64)

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

declare void @__cxa_free_exception(ptr)

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

declare void @__cxa_throw(ptr, ptr, ptr)

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef i32 @_ZN11spirv_crossL20to_unsigned_basetypeEj(i32 noundef) #4

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

declare noundef nonnull align 8 dereferenceable(236) ptr @_ZN11spirv_cross12CompilerGLSL7emit_opEjjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbb(ptr noundef nonnull align 8 dereferenceable(9848), i32 noundef, i32 noundef, ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext, i1 noundef zeroext) #5

declare noundef i32 @_ZNK11spirv_cross12CompilerGLSL33get_integer_width_for_instructionERKNS_11InstructionE(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 4 dereferenceable(12)) #5

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef i32 @_ZN11spirv_crossL18to_signed_basetypeEj(i32 noundef) #4

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11spirv_cross11CompilerMSL16emit_subgroup_opERKNS_11InstructionE(ptr noundef nonnull align 8 dereferenceable(12482) %0, ptr noundef nonnull align 4 dereferenceable(12) %1) unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca %"class.std::allocator.71", align 1
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"class.std::allocator.71", align 1
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca %"class.std::allocator.71", align 1
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca i32, align 4
  %54 = alloca i32, align 4
  %55 = alloca i32, align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  %56 = load ptr, ptr %3, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #6
  %57 = load ptr, ptr %4, align 8, !tbaa !5
  %58 = call noundef ptr @_ZNK11spirv_cross8Compiler6streamERKNS_11InstructionE(ptr noundef nonnull align 8 dereferenceable(3176) %56, ptr noundef nonnull align 4 dereferenceable(12) %57)
  store ptr %58, ptr %5, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #6
  %59 = load ptr, ptr %4, align 8, !tbaa !5
  %60 = getelementptr inbounds %"struct.spirv_cross::Instruction", ptr %59, i32 0, i32 0
  %61 = load i16, ptr %60, align 4, !tbaa !9
  %62 = zext i16 %61 to i32
  store i32 %62, ptr %6, align 4, !tbaa !13
  %63 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %56, i32 0, i32 37
  %64 = getelementptr inbounds %"struct.spirv_cross::CompilerMSL::Options", ptr %63, i32 0, i32 53
  %65 = load i8, ptr %64, align 2, !tbaa !15, !range !177, !noundef !178
  %66 = trunc i8 %65 to i1
  br i1 %66, label %67, label %96

67:                                               ; preds = %2
  %68 = load i32, ptr %6, align 4, !tbaa !13
  %69 = icmp ne i32 %68, 333
  br i1 %69, label %70, label %77

70:                                               ; preds = %67
  %71 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %71, ptr noundef @.str.1581)
          to label %72 unwind label %73

72:                                               ; preds = %70
  call void @__cxa_throw(ptr %71, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

73:                                               ; preds = %70
  %74 = landingpad { ptr, i32 }
          cleanup
  %75 = extractvalue { ptr, i32 } %74, 0
  store ptr %75, ptr %7, align 8
  %76 = extractvalue { ptr, i32 } %74, 1
  store i32 %76, ptr %8, align 4
  call void @__cxa_free_exception(ptr %71) #6
  br label %1775

77:                                               ; preds = %67
  %78 = load ptr, ptr %5, align 8, !tbaa !5
  %79 = getelementptr inbounds i32, ptr %78, i64 0
  %80 = load i32, ptr %79, align 4, !tbaa !179
  %81 = load ptr, ptr %5, align 8, !tbaa !5
  %82 = getelementptr inbounds i32, ptr %81, i64 1
  %83 = load i32, ptr %82, align 4, !tbaa !179
  call void @llvm.lifetime.start.p0(i64 32, ptr %9) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %10) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef @.str.1582, ptr noundef nonnull align 1 dereferenceable(1) %10)
          to label %84 unwind label %87

84:                                               ; preds = %77
  %85 = invoke noundef nonnull align 8 dereferenceable(236) ptr @_ZN11spirv_cross12CompilerGLSL7emit_opEjjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbb(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %80, i32 noundef %83, ptr noundef nonnull align 8 dereferenceable(32) %9, i1 noundef zeroext true, i1 noundef zeroext false)
          to label %86 unwind label %91

86:                                               ; preds = %84
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %9) #6
  store i32 1, ptr %11, align 4
  br label %1770

87:                                               ; preds = %77
  %88 = landingpad { ptr, i32 }
          cleanup
  %89 = extractvalue { ptr, i32 } %88, 0
  store ptr %89, ptr %7, align 8
  %90 = extractvalue { ptr, i32 } %88, 1
  store i32 %90, ptr %8, align 4
  br label %95

91:                                               ; preds = %84
  %92 = landingpad { ptr, i32 }
          cleanup
  %93 = extractvalue { ptr, i32 } %92, 0
  store ptr %93, ptr %7, align 8
  %94 = extractvalue { ptr, i32 } %92, 1
  store i32 %94, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #6
  br label %95

95:                                               ; preds = %91, %87
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %9) #6
  br label %1775

96:                                               ; preds = %2
  %97 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %56, i32 0, i32 37
  %98 = call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options20supports_msl_versionEjjj(ptr noundef nonnull align 4 dereferenceable(137) %97, i32 noundef 2, i32 noundef 0, i32 noundef 0)
  br i1 %98, label %106, label %99

99:                                               ; preds = %96
  %100 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %100, ptr noundef @.str.1583)
          to label %101 unwind label %102

101:                                              ; preds = %99
  call void @__cxa_throw(ptr %100, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

102:                                              ; preds = %99
  %103 = landingpad { ptr, i32 }
          cleanup
  %104 = extractvalue { ptr, i32 } %103, 0
  store ptr %104, ptr %7, align 8
  %105 = extractvalue { ptr, i32 } %103, 1
  store i32 %105, ptr %8, align 4
  call void @__cxa_free_exception(ptr %100) #6
  br label %1775

106:                                              ; preds = %96
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #6
  %107 = load ptr, ptr %4, align 8, !tbaa !5
  %108 = call noundef i32 @_ZNK11spirv_cross12CompilerGLSL33get_integer_width_for_instructionERKNS_11InstructionE(ptr noundef nonnull align 8 dereferenceable(9848) %56, ptr noundef nonnull align 4 dereferenceable(12) %107)
  store i32 %108, ptr %12, align 4, !tbaa !179
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #6
  %109 = load i32, ptr %12, align 4, !tbaa !179
  %110 = call noundef i32 @_ZN11spirv_crossL18to_signed_basetypeEj(i32 noundef %109)
  store i32 %110, ptr %13, align 4, !tbaa !180
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #6
  %111 = load i32, ptr %12, align 4, !tbaa !179
  %112 = call noundef i32 @_ZN11spirv_crossL20to_unsigned_basetypeEj(i32 noundef %111)
  store i32 %112, ptr %14, align 4, !tbaa !180
  %113 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %56, i32 0, i32 37
  %114 = call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options6is_iosEv(ptr noundef nonnull align 4 dereferenceable(137) %113)
  br i1 %114, label %115, label %167

115:                                              ; preds = %106
  %116 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %56, i32 0, i32 37
  %117 = call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options20supports_msl_versionEjjj(ptr noundef nonnull align 4 dereferenceable(137) %116, i32 noundef 2, i32 noundef 3, i32 noundef 0)
  br i1 %117, label %118, label %123

118:                                              ; preds = %115
  %119 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %56, i32 0, i32 37
  %120 = getelementptr inbounds %"struct.spirv_cross::CompilerMSL::Options", ptr %119, i32 0, i32 52
  %121 = load i8, ptr %120, align 1, !tbaa !181, !range !177, !noundef !178
  %122 = trunc i8 %121 to i1
  br i1 %122, label %167, label %123

123:                                              ; preds = %118, %115
  %124 = load i32, ptr %6, align 4, !tbaa !13
  switch i32 %124, label %125 [
    i32 338, label %132
    i32 333, label %143
    i32 335, label %154
    i32 334, label %154
    i32 336, label %154
    i32 339, label %154
    i32 340, label %154
    i32 341, label %154
    i32 343, label %154
    i32 344, label %154
    i32 342, label %154
    i32 4421, label %154
    i32 4428, label %154
    i32 4429, label %154
    i32 4430, label %154
    i32 337, label %165
    i32 345, label %165
    i32 346, label %165
    i32 347, label %165
    i32 348, label %165
    i32 366, label %165
    i32 365, label %165
    i32 4432, label %165
  ]

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

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

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

132:                                              ; preds = %123
  %133 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %56, i32 0, i32 37
  %134 = call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options20supports_msl_versionEjjj(ptr noundef nonnull align 4 dereferenceable(137) %133, i32 noundef 2, i32 noundef 2, i32 noundef 0)
  br i1 %134, label %142, label %135

135:                                              ; preds = %132
  %136 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %136, ptr noundef @.str.1585)
          to label %137 unwind label %138

137:                                              ; preds = %135
  call void @__cxa_throw(ptr %136, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

138:                                              ; preds = %135
  %139 = landingpad { ptr, i32 }
          cleanup
  %140 = extractvalue { ptr, i32 } %139, 0
  store ptr %140, ptr %7, align 8
  %141 = extractvalue { ptr, i32 } %139, 1
  store i32 %141, ptr %8, align 4
  call void @__cxa_free_exception(ptr %136) #6
  br label %1774

142:                                              ; preds = %132
  br label %166

143:                                              ; preds = %123
  %144 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %56, i32 0, i32 37
  %145 = call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options20supports_msl_versionEjjj(ptr noundef nonnull align 4 dereferenceable(137) %144, i32 noundef 2, i32 noundef 2, i32 noundef 0)
  br i1 %145, label %153, label %146

146:                                              ; preds = %143
  %147 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %147, ptr noundef @.str.1586)
          to label %148 unwind label %149

148:                                              ; preds = %146
  call void @__cxa_throw(ptr %147, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

149:                                              ; preds = %146
  %150 = landingpad { ptr, i32 }
          cleanup
  %151 = extractvalue { ptr, i32 } %150, 0
  store ptr %151, ptr %7, align 8
  %152 = extractvalue { ptr, i32 } %150, 1
  store i32 %152, ptr %8, align 4
  call void @__cxa_free_exception(ptr %147) #6
  br label %1774

153:                                              ; preds = %143
  br label %166

154:                                              ; preds = %123, %123, %123, %123, %123, %123, %123, %123, %123, %123, %123, %123, %123
  %155 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %56, i32 0, i32 37
  %156 = call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options20supports_msl_versionEjjj(ptr noundef nonnull align 4 dereferenceable(137) %155, i32 noundef 2, i32 noundef 2, i32 noundef 0)
  br i1 %156, label %164, label %157

157:                                              ; preds = %154
  %158 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %158, ptr noundef @.str.1587)
          to label %159 unwind label %160

159:                                              ; preds = %157
  call void @__cxa_throw(ptr %158, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

160:                                              ; preds = %157
  %161 = landingpad { ptr, i32 }
          cleanup
  %162 = extractvalue { ptr, i32 } %161, 0
  store ptr %162, ptr %7, align 8
  %163 = extractvalue { ptr, i32 } %161, 1
  store i32 %163, ptr %8, align 4
  call void @__cxa_free_exception(ptr %158) #6
  br label %1774

164:                                              ; preds = %154
  br label %166

165:                                              ; preds = %123, %123, %123, %123, %123, %123, %123, %123
  br label %166

166:                                              ; preds = %165, %164, %153, %142
  br label %167

167:                                              ; preds = %166, %118, %106
  %168 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %56, i32 0, i32 37
  %169 = call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options8is_macosEv(ptr noundef nonnull align 4 dereferenceable(137) %168)
  br i1 %169, label %170, label %184

170:                                              ; preds = %167
  %171 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %56, i32 0, i32 37
  %172 = call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options20supports_msl_versionEjjj(ptr noundef nonnull align 4 dereferenceable(137) %171, i32 noundef 2, i32 noundef 1, i32 noundef 0)
  br i1 %172, label %184, label %173

173:                                              ; preds = %170
  %174 = load i32, ptr %6, align 4, !tbaa !13
  switch i32 %174, label %175 [
    i32 337, label %182
    i32 345, label %182
    i32 346, label %182
    i32 347, label %182
    i32 348, label %182
    i32 4432, label %182
  ]

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

177:                                              ; preds = %175
  call void @__cxa_throw(ptr %176, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

178:                                              ; preds = %175
  %179 = landingpad { ptr, i32 }
          cleanup
  %180 = extractvalue { ptr, i32 } %179, 0
  store ptr %180, ptr %7, align 8
  %181 = extractvalue { ptr, i32 } %179, 1
  store i32 %181, ptr %8, align 4
  call void @__cxa_free_exception(ptr %176) #6
  br label %1774

182:                                              ; preds = %173, %173, %173, %173, %173, %173
  br label %183

183:                                              ; preds = %182
  br label %184

184:                                              ; preds = %183, %170, %167
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #6
  store i32 0, ptr %15, align 4, !tbaa !179
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #6
  %185 = load ptr, ptr %5, align 8, !tbaa !5
  %186 = load i32, ptr %15, align 4, !tbaa !179
  %187 = add i32 %186, 1
  store i32 %187, ptr %15, align 4, !tbaa !179
  %188 = zext i32 %186 to i64
  %189 = getelementptr inbounds i32, ptr %185, i64 %188
  %190 = load i32, ptr %189, align 4, !tbaa !179
  store i32 %190, ptr %16, align 4, !tbaa !179
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #6
  %191 = load ptr, ptr %5, align 8, !tbaa !5
  %192 = load i32, ptr %15, align 4, !tbaa !179
  %193 = add i32 %192, 1
  store i32 %193, ptr %15, align 4, !tbaa !179
  %194 = zext i32 %192 to i64
  %195 = getelementptr inbounds i32, ptr %191, i64 %194
  %196 = load i32, ptr %195, align 4, !tbaa !179
  store i32 %196, ptr %17, align 4, !tbaa !179
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #6
  %197 = load i32, ptr %6, align 4, !tbaa !13
  switch i32 %197, label %199 [
    i32 4421, label %198
    i32 4422, label %198
    i32 4432, label %198
    i32 4428, label %198
    i32 4429, label %198
    i32 4430, label %198
  ]

198:                                              ; preds = %184, %184, %184, %184, %184, %184
  store i32 3, ptr %18, align 4, !tbaa !182
  br label %207

199:                                              ; preds = %184
  %200 = load ptr, ptr %5, align 8, !tbaa !5
  %201 = load i32, ptr %15, align 4, !tbaa !179
  %202 = add i32 %201, 1
  store i32 %202, ptr %15, align 4, !tbaa !179
  %203 = zext i32 %201 to i64
  %204 = getelementptr inbounds i32, ptr %200, i64 %203
  %205 = load i32, ptr %204, align 4, !tbaa !179
  %206 = call noundef i32 @_ZNK11spirv_cross8Compiler21evaluate_constant_u32Ej(ptr noundef nonnull align 8 dereferenceable(3176) %56, i32 noundef %205)
  store i32 %206, ptr %18, align 4, !tbaa !182
  br label %207

207:                                              ; preds = %199, %198
  %208 = load i32, ptr %18, align 4, !tbaa !182
  %209 = icmp ne i32 %208, 3
  br i1 %209, label %210, label %217

210:                                              ; preds = %207
  %211 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %211, ptr noundef @.str.1589)
          to label %212 unwind label %213

212:                                              ; preds = %210
  call void @__cxa_throw(ptr %211, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

213:                                              ; preds = %210
  %214 = landingpad { ptr, i32 }
          cleanup
  %215 = extractvalue { ptr, i32 } %214, 0
  store ptr %215, ptr %7, align 8
  %216 = extractvalue { ptr, i32 } %214, 1
  store i32 %216, ptr %8, align 4
  call void @__cxa_free_exception(ptr %211) #6
  br label %1773

217:                                              ; preds = %207
  %218 = load i32, ptr %6, align 4, !tbaa !13
  switch i32 %218, label %1761 [
    i32 333, label %219
    i32 337, label %253
    i32 4432, label %253
    i32 338, label %267
    i32 4422, label %267
    i32 339, label %275
    i32 4421, label %275
    i32 340, label %283
    i32 341, label %293
    i32 343, label %307
    i32 344, label %317
    i32 342, label %327
    i32 345, label %373
    i32 346, label %387
    i32 347, label %401
    i32 348, label %415
    i32 334, label %429
    i32 4428, label %429
    i32 335, label %449
    i32 4429, label %449
    i32 336, label %469
    i32 4430, label %469
    i32 350, label %477
    i32 352, label %556
    i32 349, label %635
    i32 351, label %714
    i32 355, label %793
    i32 358, label %870
    i32 353, label %947
    i32 356, label %1028
    i32 354, label %1109
    i32 357, label %1190
    i32 359, label %1271
    i32 360, label %1348
    i32 361, label %1425
    i32 362, label %1502
    i32 363, label %1579
    i32 364, label %1656
    i32 366, label %1733
    i32 365, label %1747
  ]

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

222:                                              ; preds = %219
  %223 = load i32, ptr %16, align 4, !tbaa !179
  %224 = load i32, ptr %17, align 4, !tbaa !179
  call void @llvm.lifetime.start.p0(i64 32, ptr %19) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef @.str.1590, ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %225 unwind label %228

225:                                              ; preds = %222
  %226 = invoke noundef nonnull align 8 dereferenceable(236) ptr @_ZN11spirv_cross12CompilerGLSL7emit_opEjjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbb(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %223, i32 noundef %224, ptr noundef nonnull align 8 dereferenceable(32) %19, i1 noundef zeroext false, i1 noundef zeroext false)
          to label %227 unwind label %232

227:                                              ; preds = %225
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #6
  br label %252

228:                                              ; preds = %222
  %229 = landingpad { ptr, i32 }
          cleanup
  %230 = extractvalue { ptr, i32 } %229, 0
  store ptr %230, ptr %7, align 8
  %231 = extractvalue { ptr, i32 } %229, 1
  store i32 %231, ptr %8, align 4
  br label %236

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

236:                                              ; preds = %232, %228
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #6
  br label %1773

237:                                              ; preds = %219
  %238 = load i32, ptr %16, align 4, !tbaa !179
  %239 = load i32, ptr %17, align 4, !tbaa !179
  call void @llvm.lifetime.start.p0(i64 32, ptr %21) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %22) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef @.str.1591, ptr noundef nonnull align 1 dereferenceable(1) %22)
          to label %240 unwind label %243

240:                                              ; preds = %237
  %241 = invoke noundef nonnull align 8 dereferenceable(236) ptr @_ZN11spirv_cross12CompilerGLSL7emit_opEjjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbb(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %238, i32 noundef %239, ptr noundef nonnull align 8 dereferenceable(32) %21, i1 noundef zeroext false, i1 noundef zeroext false)
          to label %242 unwind label %247

242:                                              ; preds = %240
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #6
  br label %252

243:                                              ; preds = %237
  %244 = landingpad { ptr, i32 }
          cleanup
  %245 = extractvalue { ptr, i32 } %244, 0
  store ptr %245, ptr %7, align 8
  %246 = extractvalue { ptr, i32 } %244, 1
  store i32 %246, ptr %8, align 4
  br label %251

247:                                              ; preds = %240
  %248 = landingpad { ptr, i32 }
          cleanup
  %249 = extractvalue { ptr, i32 } %248, 0
  store ptr %249, ptr %7, align 8
  %250 = extractvalue { ptr, i32 } %248, 1
  store i32 %250, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #6
  br label %251

251:                                              ; preds = %247, %243
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #6
  br label %1773

252:                                              ; preds = %242, %227
  br label %1768

253:                                              ; preds = %217, %217
  %254 = load i32, ptr %16, align 4, !tbaa !179
  %255 = load i32, ptr %17, align 4, !tbaa !179
  %256 = load ptr, ptr %5, align 8, !tbaa !5
  %257 = load i32, ptr %15, align 4, !tbaa !179
  %258 = zext i32 %257 to i64
  %259 = getelementptr inbounds i32, ptr %256, i64 %258
  %260 = load i32, ptr %259, align 4, !tbaa !179
  %261 = load ptr, ptr %5, align 8, !tbaa !5
  %262 = load i32, ptr %15, align 4, !tbaa !179
  %263 = add i32 %262, 1
  %264 = zext i32 %263 to i64
  %265 = getelementptr inbounds i32, ptr %261, i64 %264
  %266 = load i32, ptr %265, align 4, !tbaa !179
  call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %254, i32 noundef %255, i32 noundef %260, i32 noundef %266, ptr noundef @.str.1592)
  br label %1768

267:                                              ; preds = %217, %217
  %268 = load i32, ptr %16, align 4, !tbaa !179
  %269 = load i32, ptr %17, align 4, !tbaa !179
  %270 = load ptr, ptr %5, align 8, !tbaa !5
  %271 = load i32, ptr %15, align 4, !tbaa !179
  %272 = zext i32 %271 to i64
  %273 = getelementptr inbounds i32, ptr %270, i64 %272
  %274 = load i32, ptr %273, align 4, !tbaa !179
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %268, i32 noundef %269, i32 noundef %274, ptr noundef @.str.1593)
  br label %1768

275:                                              ; preds = %217, %217
  %276 = load i32, ptr %16, align 4, !tbaa !179
  %277 = load i32, ptr %17, align 4, !tbaa !179
  %278 = load ptr, ptr %5, align 8, !tbaa !5
  %279 = load i32, ptr %15, align 4, !tbaa !179
  %280 = zext i32 %279 to i64
  %281 = getelementptr inbounds i32, ptr %278, i64 %280
  %282 = load i32, ptr %281, align 4, !tbaa !179
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %276, i32 noundef %277, i32 noundef %282, ptr noundef @.str.1594)
  br label %1768

283:                                              ; preds = %217
  %284 = load i32, ptr %16, align 4, !tbaa !179
  %285 = load i32, ptr %17, align 4, !tbaa !179
  %286 = load ptr, ptr %5, align 8, !tbaa !5
  %287 = load i32, ptr %15, align 4, !tbaa !179
  %288 = zext i32 %287 to i64
  %289 = getelementptr inbounds i32, ptr %286, i64 %288
  %290 = load i32, ptr %289, align 4, !tbaa !179
  %291 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %56, i32 0, i32 14
  %292 = load i32, ptr %291, align 8, !tbaa !184
  call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %284, i32 noundef %285, i32 noundef %290, i32 noundef %292, ptr noundef @.str.1595)
  br label %1768

293:                                              ; preds = %217
  %294 = load i32, ptr %16, align 4, !tbaa !179
  %295 = load i32, ptr %17, align 4, !tbaa !179
  %296 = load ptr, ptr %5, align 8, !tbaa !5
  %297 = load i32, ptr %15, align 4, !tbaa !179
  %298 = zext i32 %297 to i64
  %299 = getelementptr inbounds i32, ptr %296, i64 %298
  %300 = load i32, ptr %299, align 4, !tbaa !179
  %301 = load ptr, ptr %5, align 8, !tbaa !5
  %302 = load i32, ptr %15, align 4, !tbaa !179
  %303 = add i32 %302, 1
  %304 = zext i32 %303 to i64
  %305 = getelementptr inbounds i32, ptr %301, i64 %304
  %306 = load i32, ptr %305, align 4, !tbaa !179
  call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %294, i32 noundef %295, i32 noundef %300, i32 noundef %306, ptr noundef @.str.1595)
  br label %1768

307:                                              ; preds = %217
  %308 = load i32, ptr %16, align 4, !tbaa !179
  %309 = load i32, ptr %17, align 4, !tbaa !179
  %310 = load ptr, ptr %5, align 8, !tbaa !5
  %311 = load i32, ptr %15, align 4, !tbaa !179
  %312 = zext i32 %311 to i64
  %313 = getelementptr inbounds i32, ptr %310, i64 %312
  %314 = load i32, ptr %313, align 4, !tbaa !179
  %315 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %56, i32 0, i32 15
  %316 = load i32, ptr %315, align 4, !tbaa !185
  call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %308, i32 noundef %309, i32 noundef %314, i32 noundef %316, ptr noundef @.str.1596)
  br label %1768

317:                                              ; preds = %217
  %318 = load i32, ptr %16, align 4, !tbaa !179
  %319 = load i32, ptr %17, align 4, !tbaa !179
  %320 = load ptr, ptr %5, align 8, !tbaa !5
  %321 = load i32, ptr %15, align 4, !tbaa !179
  %322 = zext i32 %321 to i64
  %323 = getelementptr inbounds i32, ptr %320, i64 %322
  %324 = load i32, ptr %323, align 4, !tbaa !179
  %325 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %56, i32 0, i32 15
  %326 = load i32, ptr %325, align 4, !tbaa !185
  call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %318, i32 noundef %319, i32 noundef %324, i32 noundef %326, ptr noundef @.str.1597)
  br label %1768

327:                                              ; preds = %217
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #6
  %328 = load ptr, ptr %5, align 8, !tbaa !5
  %329 = load i32, ptr %15, align 4, !tbaa !179
  %330 = add i32 %329, 1
  store i32 %330, ptr %15, align 4, !tbaa !179
  %331 = zext i32 %329 to i64
  %332 = getelementptr inbounds i32, ptr %328, i64 %331
  %333 = load i32, ptr %332, align 4, !tbaa !179
  store i32 %333, ptr %23, align 4, !tbaa !186
  %334 = load i32, ptr %23, align 4, !tbaa !186
  switch i32 %334, label %365 [
    i32 0, label %335
    i32 1, label %345
    i32 2, label %355
  ]

335:                                              ; preds = %327
  %336 = load i32, ptr %16, align 4, !tbaa !179
  %337 = load i32, ptr %17, align 4, !tbaa !179
  %338 = load ptr, ptr %5, align 8, !tbaa !5
  %339 = load i32, ptr %15, align 4, !tbaa !179
  %340 = zext i32 %339 to i64
  %341 = getelementptr inbounds i32, ptr %338, i64 %340
  %342 = load i32, ptr %341, align 4, !tbaa !179
  %343 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %56, i32 0, i32 15
  %344 = load i32, ptr %343, align 4, !tbaa !185
  call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %336, i32 noundef %337, i32 noundef %342, i32 noundef %344, ptr noundef @.str.1598)
  br label %372

345:                                              ; preds = %327
  %346 = load i32, ptr %16, align 4, !tbaa !179
  %347 = load i32, ptr %17, align 4, !tbaa !179
  %348 = load ptr, ptr %5, align 8, !tbaa !5
  %349 = load i32, ptr %15, align 4, !tbaa !179
  %350 = zext i32 %349 to i64
  %351 = getelementptr inbounds i32, ptr %348, i64 %350
  %352 = load i32, ptr %351, align 4, !tbaa !179
  %353 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %56, i32 0, i32 14
  %354 = load i32, ptr %353, align 8, !tbaa !184
  call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %346, i32 noundef %347, i32 noundef %352, i32 noundef %354, ptr noundef @.str.1599)
  br label %372

355:                                              ; preds = %327
  %356 = load i32, ptr %16, align 4, !tbaa !179
  %357 = load i32, ptr %17, align 4, !tbaa !179
  %358 = load ptr, ptr %5, align 8, !tbaa !5
  %359 = load i32, ptr %15, align 4, !tbaa !179
  %360 = zext i32 %359 to i64
  %361 = getelementptr inbounds i32, ptr %358, i64 %360
  %362 = load i32, ptr %361, align 4, !tbaa !179
  %363 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %56, i32 0, i32 14
  %364 = load i32, ptr %363, align 8, !tbaa !184
  call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %356, i32 noundef %357, i32 noundef %362, i32 noundef %364, ptr noundef @.str.1600)
  br label %372

365:                                              ; preds = %327
  %366 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %366, ptr noundef @.str.1601)
          to label %367 unwind label %368

367:                                              ; preds = %365
  call void @__cxa_throw(ptr %366, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

368:                                              ; preds = %365
  %369 = landingpad { ptr, i32 }
          cleanup
  %370 = extractvalue { ptr, i32 } %369, 0
  store ptr %370, ptr %7, align 8
  %371 = extractvalue { ptr, i32 } %369, 1
  store i32 %371, ptr %8, align 4
  call void @__cxa_free_exception(ptr %366) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #6
  br label %1773

372:                                              ; preds = %355, %345, %335
  store i32 5, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #6
  br label %1768

373:                                              ; preds = %217
  %374 = load i32, ptr %16, align 4, !tbaa !179
  %375 = load i32, ptr %17, align 4, !tbaa !179
  %376 = load ptr, ptr %5, align 8, !tbaa !5
  %377 = load i32, ptr %15, align 4, !tbaa !179
  %378 = zext i32 %377 to i64
  %379 = getelementptr inbounds i32, ptr %376, i64 %378
  %380 = load i32, ptr %379, align 4, !tbaa !179
  %381 = load ptr, ptr %5, align 8, !tbaa !5
  %382 = load i32, ptr %15, align 4, !tbaa !179
  %383 = add i32 %382, 1
  %384 = zext i32 %383 to i64
  %385 = getelementptr inbounds i32, ptr %381, i64 %384
  %386 = load i32, ptr %385, align 4, !tbaa !179
  call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %374, i32 noundef %375, i32 noundef %380, i32 noundef %386, ptr noundef @.str.1602)
  br label %1768

387:                                              ; preds = %217
  %388 = load i32, ptr %16, align 4, !tbaa !179
  %389 = load i32, ptr %17, align 4, !tbaa !179
  %390 = load ptr, ptr %5, align 8, !tbaa !5
  %391 = load i32, ptr %15, align 4, !tbaa !179
  %392 = zext i32 %391 to i64
  %393 = getelementptr inbounds i32, ptr %390, i64 %392
  %394 = load i32, ptr %393, align 4, !tbaa !179
  %395 = load ptr, ptr %5, align 8, !tbaa !5
  %396 = load i32, ptr %15, align 4, !tbaa !179
  %397 = add i32 %396, 1
  %398 = zext i32 %397 to i64
  %399 = getelementptr inbounds i32, ptr %395, i64 %398
  %400 = load i32, ptr %399, align 4, !tbaa !179
  call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %388, i32 noundef %389, i32 noundef %394, i32 noundef %400, ptr noundef @.str.1603)
  br label %1768

401:                                              ; preds = %217
  %402 = load i32, ptr %16, align 4, !tbaa !179
  %403 = load i32, ptr %17, align 4, !tbaa !179
  %404 = load ptr, ptr %5, align 8, !tbaa !5
  %405 = load i32, ptr %15, align 4, !tbaa !179
  %406 = zext i32 %405 to i64
  %407 = getelementptr inbounds i32, ptr %404, i64 %406
  %408 = load i32, ptr %407, align 4, !tbaa !179
  %409 = load ptr, ptr %5, align 8, !tbaa !5
  %410 = load i32, ptr %15, align 4, !tbaa !179
  %411 = add i32 %410, 1
  %412 = zext i32 %411 to i64
  %413 = getelementptr inbounds i32, ptr %409, i64 %412
  %414 = load i32, ptr %413, align 4, !tbaa !179
  call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %402, i32 noundef %403, i32 noundef %408, i32 noundef %414, ptr noundef @.str.1604)
  br label %1768

415:                                              ; preds = %217
  %416 = load i32, ptr %16, align 4, !tbaa !179
  %417 = load i32, ptr %17, align 4, !tbaa !179
  %418 = load ptr, ptr %5, align 8, !tbaa !5
  %419 = load i32, ptr %15, align 4, !tbaa !179
  %420 = zext i32 %419 to i64
  %421 = getelementptr inbounds i32, ptr %418, i64 %420
  %422 = load i32, ptr %421, align 4, !tbaa !179
  %423 = load ptr, ptr %5, align 8, !tbaa !5
  %424 = load i32, ptr %15, align 4, !tbaa !179
  %425 = add i32 %424, 1
  %426 = zext i32 %425 to i64
  %427 = getelementptr inbounds i32, ptr %423, i64 %426
  %428 = load i32, ptr %427, align 4, !tbaa !179
  call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %416, i32 noundef %417, i32 noundef %422, i32 noundef %428, ptr noundef @.str.1605)
  br label %1768

429:                                              ; preds = %217, %217
  %430 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %56, i32 0, i32 37
  %431 = call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options23use_quadgroup_operationEv(ptr noundef nonnull align 4 dereferenceable(137) %430)
  br i1 %431, label %432, label %440

432:                                              ; preds = %429
  %433 = load i32, ptr %16, align 4, !tbaa !179
  %434 = load i32, ptr %17, align 4, !tbaa !179
  %435 = load ptr, ptr %5, align 8, !tbaa !5
  %436 = load i32, ptr %15, align 4, !tbaa !179
  %437 = zext i32 %436 to i64
  %438 = getelementptr inbounds i32, ptr %435, i64 %437
  %439 = load i32, ptr %438, align 4, !tbaa !179
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %433, i32 noundef %434, i32 noundef %439, ptr noundef @.str.1606)
  br label %448

440:                                              ; preds = %429
  %441 = load i32, ptr %16, align 4, !tbaa !179
  %442 = load i32, ptr %17, align 4, !tbaa !179
  %443 = load ptr, ptr %5, align 8, !tbaa !5
  %444 = load i32, ptr %15, align 4, !tbaa !179
  %445 = zext i32 %444 to i64
  %446 = getelementptr inbounds i32, ptr %443, i64 %445
  %447 = load i32, ptr %446, align 4, !tbaa !179
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %441, i32 noundef %442, i32 noundef %447, ptr noundef @.str.1607)
  br label %448

448:                                              ; preds = %440, %432
  br label %1768

449:                                              ; preds = %217, %217
  %450 = getelementptr inbounds %"class.spirv_cross::CompilerMSL", ptr %56, i32 0, i32 37
  %451 = call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options23use_quadgroup_operationEv(ptr noundef nonnull align 4 dereferenceable(137) %450)
  br i1 %451, label %452, label %460

452:                                              ; preds = %449
  %453 = load i32, ptr %16, align 4, !tbaa !179
  %454 = load i32, ptr %17, align 4, !tbaa !179
  %455 = load ptr, ptr %5, align 8, !tbaa !5
  %456 = load i32, ptr %15, align 4, !tbaa !179
  %457 = zext i32 %456 to i64
  %458 = getelementptr inbounds i32, ptr %455, i64 %457
  %459 = load i32, ptr %458, align 4, !tbaa !179
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %453, i32 noundef %454, i32 noundef %459, ptr noundef @.str.1608)
  br label %468

460:                                              ; preds = %449
  %461 = load i32, ptr %16, align 4, !tbaa !179
  %462 = load i32, ptr %17, align 4, !tbaa !179
  %463 = load ptr, ptr %5, align 8, !tbaa !5
  %464 = load i32, ptr %15, align 4, !tbaa !179
  %465 = zext i32 %464 to i64
  %466 = getelementptr inbounds i32, ptr %463, i64 %465
  %467 = load i32, ptr %466, align 4, !tbaa !179
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %461, i32 noundef %462, i32 noundef %467, ptr noundef @.str.1609)
  br label %468

468:                                              ; preds = %460, %452
  br label %1768

469:                                              ; preds = %217, %217
  %470 = load i32, ptr %16, align 4, !tbaa !179
  %471 = load i32, ptr %17, align 4, !tbaa !179
  %472 = load ptr, ptr %5, align 8, !tbaa !5
  %473 = load i32, ptr %15, align 4, !tbaa !179
  %474 = zext i32 %473 to i64
  %475 = getelementptr inbounds i32, ptr %472, i64 %474
  %476 = load i32, ptr %475, align 4, !tbaa !179
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %470, i32 noundef %471, i32 noundef %476, ptr noundef @.str.1610)
  br label %1768

477:                                              ; preds = %217
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #6
  %478 = load ptr, ptr %5, align 8, !tbaa !5
  %479 = load i32, ptr %15, align 4, !tbaa !179
  %480 = add i32 %479, 1
  store i32 %480, ptr %15, align 4, !tbaa !179
  %481 = zext i32 %479 to i64
  %482 = getelementptr inbounds i32, ptr %478, i64 %481
  %483 = load i32, ptr %482, align 4, !tbaa !179
  store i32 %483, ptr %24, align 4, !tbaa !186
  %484 = load i32, ptr %24, align 4, !tbaa !186
  %485 = icmp eq i32 %484, 0
  br i1 %485, label %486, label %494

486:                                              ; preds = %477
  %487 = load i32, ptr %16, align 4, !tbaa !179
  %488 = load i32, ptr %17, align 4, !tbaa !179
  %489 = load ptr, ptr %5, align 8, !tbaa !5
  %490 = load i32, ptr %15, align 4, !tbaa !179
  %491 = zext i32 %490 to i64
  %492 = getelementptr inbounds i32, ptr %489, i64 %491
  %493 = load i32, ptr %492, align 4, !tbaa !179
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %487, i32 noundef %488, i32 noundef %493, ptr noundef @.str.1611)
  br label %554

494:                                              ; preds = %477
  %495 = load i32, ptr %24, align 4, !tbaa !186
  %496 = icmp eq i32 %495, 1
  br i1 %496, label %497, label %505

497:                                              ; preds = %494
  %498 = load i32, ptr %16, align 4, !tbaa !179
  %499 = load i32, ptr %17, align 4, !tbaa !179
  %500 = load ptr, ptr %5, align 8, !tbaa !5
  %501 = load i32, ptr %15, align 4, !tbaa !179
  %502 = zext i32 %501 to i64
  %503 = getelementptr inbounds i32, ptr %500, i64 %502
  %504 = load i32, ptr %503, align 4, !tbaa !179
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %498, i32 noundef %499, i32 noundef %504, ptr noundef @.str.1612)
  br label %553

505:                                              ; preds = %494
  %506 = load i32, ptr %24, align 4, !tbaa !186
  %507 = icmp eq i32 %506, 2
  br i1 %507, label %508, label %516

508:                                              ; preds = %505
  %509 = load i32, ptr %16, align 4, !tbaa !179
  %510 = load i32, ptr %17, align 4, !tbaa !179
  %511 = load ptr, ptr %5, align 8, !tbaa !5
  %512 = load i32, ptr %15, align 4, !tbaa !179
  %513 = zext i32 %512 to i64
  %514 = getelementptr inbounds i32, ptr %511, i64 %513
  %515 = load i32, ptr %514, align 4, !tbaa !179
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %509, i32 noundef %510, i32 noundef %515, ptr noundef @.str.1613)
  br label %552

516:                                              ; preds = %505
  %517 = load i32, ptr %24, align 4, !tbaa !186
  %518 = icmp eq i32 %517, 3
  br i1 %518, label %519, label %544

519:                                              ; preds = %516
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #6
  %520 = load ptr, ptr %5, align 8, !tbaa !5
  %521 = load i32, ptr %15, align 4, !tbaa !179
  %522 = add i32 %521, 1
  %523 = zext i32 %522 to i64
  %524 = getelementptr inbounds i32, ptr %520, i64 %523
  %525 = load i32, ptr %524, align 4, !tbaa !179
  %526 = call noundef i32 @_ZNK11spirv_cross8Compiler21evaluate_constant_u32Ej(ptr noundef nonnull align 8 dereferenceable(3176) %56, i32 noundef %525)
  store i32 %526, ptr %25, align 4, !tbaa !179
  %527 = load i32, ptr %25, align 4, !tbaa !179
  %528 = icmp ne i32 %527, 4
  br i1 %528, label %529, label %536

529:                                              ; preds = %519
  %530 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %530, ptr noundef @.str.1614)
          to label %531 unwind label %532

531:                                              ; preds = %529
  call void @__cxa_throw(ptr %530, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

532:                                              ; preds = %529
  %533 = landingpad { ptr, i32 }
          cleanup
  %534 = extractvalue { ptr, i32 } %533, 0
  store ptr %534, ptr %7, align 8
  %535 = extractvalue { ptr, i32 } %533, 1
  store i32 %535, ptr %8, align 4
  call void @__cxa_free_exception(ptr %530) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #6
  br label %555

536:                                              ; preds = %519
  %537 = load i32, ptr %16, align 4, !tbaa !179
  %538 = load i32, ptr %17, align 4, !tbaa !179
  %539 = load ptr, ptr %5, align 8, !tbaa !5
  %540 = load i32, ptr %15, align 4, !tbaa !179
  %541 = zext i32 %540 to i64
  %542 = getelementptr inbounds i32, ptr %539, i64 %541
  %543 = load i32, ptr %542, align 4, !tbaa !179
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %537, i32 noundef %538, i32 noundef %543, ptr noundef @.str.1615)
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #6
  br label %551

544:                                              ; preds = %516
  %545 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %545, ptr noundef @.str.1616)
          to label %546 unwind label %547

546:                                              ; preds = %544
  call void @__cxa_throw(ptr %545, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

547:                                              ; preds = %544
  %548 = landingpad { ptr, i32 }
          cleanup
  %549 = extractvalue { ptr, i32 } %548, 0
  store ptr %549, ptr %7, align 8
  %550 = extractvalue { ptr, i32 } %548, 1
  store i32 %550, ptr %8, align 4
  call void @__cxa_free_exception(ptr %545) #6
  br label %555

551:                                              ; preds = %536
  br label %552

552:                                              ; preds = %551, %508
  br label %553

553:                                              ; preds = %552, %497
  br label %554

554:                                              ; preds = %553, %486
  store i32 5, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #6
  br label %1768

555:                                              ; preds = %547, %532
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #6
  br label %1773

556:                                              ; preds = %217
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #6
  %557 = load ptr, ptr %5, align 8, !tbaa !5
  %558 = load i32, ptr %15, align 4, !tbaa !179
  %559 = add i32 %558, 1
  store i32 %559, ptr %15, align 4, !tbaa !179
  %560 = zext i32 %558 to i64
  %561 = getelementptr inbounds i32, ptr %557, i64 %560
  %562 = load i32, ptr %561, align 4, !tbaa !179
  store i32 %562, ptr %26, align 4, !tbaa !186
  %563 = load i32, ptr %26, align 4, !tbaa !186
  %564 = icmp eq i32 %563, 0
  br i1 %564, label %565, label %573

565:                                              ; preds = %556
  %566 = load i32, ptr %16, align 4, !tbaa !179
  %567 = load i32, ptr %17, align 4, !tbaa !179
  %568 = load ptr, ptr %5, align 8, !tbaa !5
  %569 = load i32, ptr %15, align 4, !tbaa !179
  %570 = zext i32 %569 to i64
  %571 = getelementptr inbounds i32, ptr %568, i64 %570
  %572 = load i32, ptr %571, align 4, !tbaa !179
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %566, i32 noundef %567, i32 noundef %572, ptr noundef @.str.1617)
  br label %633

573:                                              ; preds = %556
  %574 = load i32, ptr %26, align 4, !tbaa !186
  %575 = icmp eq i32 %574, 1
  br i1 %575, label %576, label %584

576:                                              ; preds = %573
  %577 = load i32, ptr %16, align 4, !tbaa !179
  %578 = load i32, ptr %17, align 4, !tbaa !179
  %579 = load ptr, ptr %5, align 8, !tbaa !5
  %580 = load i32, ptr %15, align 4, !tbaa !179
  %581 = zext i32 %580 to i64
  %582 = getelementptr inbounds i32, ptr %579, i64 %581
  %583 = load i32, ptr %582, align 4, !tbaa !179
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %577, i32 noundef %578, i32 noundef %583, ptr noundef @.str.1618)
  br label %632

584:                                              ; preds = %573
  %585 = load i32, ptr %26, align 4, !tbaa !186
  %586 = icmp eq i32 %585, 2
  br i1 %586, label %587, label %595

587:                                              ; preds = %584
  %588 = load i32, ptr %16, align 4, !tbaa !179
  %589 = load i32, ptr %17, align 4, !tbaa !179
  %590 = load ptr, ptr %5, align 8, !tbaa !5
  %591 = load i32, ptr %15, align 4, !tbaa !179
  %592 = zext i32 %591 to i64
  %593 = getelementptr inbounds i32, ptr %590, i64 %592
  %594 = load i32, ptr %593, align 4, !tbaa !179
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %588, i32 noundef %589, i32 noundef %594, ptr noundef @.str.1619)
  br label %631

595:                                              ; preds = %584
  %596 = load i32, ptr %26, align 4, !tbaa !186
  %597 = icmp eq i32 %596, 3
  br i1 %597, label %598, label %623

598:                                              ; preds = %595
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #6
  %599 = load ptr, ptr %5, align 8, !tbaa !5
  %600 = load i32, ptr %15, align 4, !tbaa !179
  %601 = add i32 %600, 1
  %602 = zext i32 %601 to i64
  %603 = getelementptr inbounds i32, ptr %599, i64 %602
  %604 = load i32, ptr %603, align 4, !tbaa !179
  %605 = call noundef i32 @_ZNK11spirv_cross8Compiler21evaluate_constant_u32Ej(ptr noundef nonnull align 8 dereferenceable(3176) %56, i32 noundef %604)
  store i32 %605, ptr %27, align 4, !tbaa !179
  %606 = load i32, ptr %27, align 4, !tbaa !179
  %607 = icmp ne i32 %606, 4
  br i1 %607, label %608, label %615

608:                                              ; preds = %598
  %609 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %609, ptr noundef @.str.1614)
          to label %610 unwind label %611

610:                                              ; preds = %608
  call void @__cxa_throw(ptr %609, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

611:                                              ; preds = %608
  %612 = landingpad { ptr, i32 }
          cleanup
  %613 = extractvalue { ptr, i32 } %612, 0
  store ptr %613, ptr %7, align 8
  %614 = extractvalue { ptr, i32 } %612, 1
  store i32 %614, ptr %8, align 4
  call void @__cxa_free_exception(ptr %609) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #6
  br label %634

615:                                              ; preds = %598
  %616 = load i32, ptr %16, align 4, !tbaa !179
  %617 = load i32, ptr %17, align 4, !tbaa !179
  %618 = load ptr, ptr %5, align 8, !tbaa !5
  %619 = load i32, ptr %15, align 4, !tbaa !179
  %620 = zext i32 %619 to i64
  %621 = getelementptr inbounds i32, ptr %618, i64 %620
  %622 = load i32, ptr %621, align 4, !tbaa !179
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %616, i32 noundef %617, i32 noundef %622, ptr noundef @.str.1620)
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #6
  br label %630

623:                                              ; preds = %595
  %624 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %624, ptr noundef @.str.1616)
          to label %625 unwind label %626

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

626:                                              ; preds = %623
  %627 = landingpad { ptr, i32 }
          cleanup
  %628 = extractvalue { ptr, i32 } %627, 0
  store ptr %628, ptr %7, align 8
  %629 = extractvalue { ptr, i32 } %627, 1
  store i32 %629, ptr %8, align 4
  call void @__cxa_free_exception(ptr %624) #6
  br label %634

630:                                              ; preds = %615
  br label %631

631:                                              ; preds = %630, %587
  br label %632

632:                                              ; preds = %631, %576
  br label %633

633:                                              ; preds = %632, %565
  store i32 5, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #6
  br label %1768

634:                                              ; preds = %626, %611
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #6
  br label %1773

635:                                              ; preds = %217
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #6
  %636 = load ptr, ptr %5, align 8, !tbaa !5
  %637 = load i32, ptr %15, align 4, !tbaa !179
  %638 = add i32 %637, 1
  store i32 %638, ptr %15, align 4, !tbaa !179
  %639 = zext i32 %637 to i64
  %640 = getelementptr inbounds i32, ptr %636, i64 %639
  %641 = load i32, ptr %640, align 4, !tbaa !179
  store i32 %641, ptr %28, align 4, !tbaa !186
  %642 = load i32, ptr %28, align 4, !tbaa !186
  %643 = icmp eq i32 %642, 0
  br i1 %643, label %644, label %652

644:                                              ; preds = %635
  %645 = load i32, ptr %16, align 4, !tbaa !179
  %646 = load i32, ptr %17, align 4, !tbaa !179
  %647 = load ptr, ptr %5, align 8, !tbaa !5
  %648 = load i32, ptr %15, align 4, !tbaa !179
  %649 = zext i32 %648 to i64
  %650 = getelementptr inbounds i32, ptr %647, i64 %649
  %651 = load i32, ptr %650, align 4, !tbaa !179
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %645, i32 noundef %646, i32 noundef %651, ptr noundef @.str.1611)
  br label %712

652:                                              ; preds = %635
  %653 = load i32, ptr %28, align 4, !tbaa !186
  %654 = icmp eq i32 %653, 1
  br i1 %654, label %655, label %663

655:                                              ; preds = %652
  %656 = load i32, ptr %16, align 4, !tbaa !179
  %657 = load i32, ptr %17, align 4, !tbaa !179
  %658 = load ptr, ptr %5, align 8, !tbaa !5
  %659 = load i32, ptr %15, align 4, !tbaa !179
  %660 = zext i32 %659 to i64
  %661 = getelementptr inbounds i32, ptr %658, i64 %660
  %662 = load i32, ptr %661, align 4, !tbaa !179
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %656, i32 noundef %657, i32 noundef %662, ptr noundef @.str.1612)
  br label %711

663:                                              ; preds = %652
  %664 = load i32, ptr %28, align 4, !tbaa !186
  %665 = icmp eq i32 %664, 2
  br i1 %665, label %666, label %674

666:                                              ; preds = %663
  %667 = load i32, ptr %16, align 4, !tbaa !179
  %668 = load i32, ptr %17, align 4, !tbaa !179
  %669 = load ptr, ptr %5, align 8, !tbaa !5
  %670 = load i32, ptr %15, align 4, !tbaa !179
  %671 = zext i32 %670 to i64
  %672 = getelementptr inbounds i32, ptr %669, i64 %671
  %673 = load i32, ptr %672, align 4, !tbaa !179
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %667, i32 noundef %668, i32 noundef %673, ptr noundef @.str.1613)
  br label %710

674:                                              ; preds = %663
  %675 = load i32, ptr %28, align 4, !tbaa !186
  %676 = icmp eq i32 %675, 3
  br i1 %676, label %677, label %702

677:                                              ; preds = %674
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #6
  %678 = load ptr, ptr %5, align 8, !tbaa !5
  %679 = load i32, ptr %15, align 4, !tbaa !179
  %680 = add i32 %679, 1
  %681 = zext i32 %680 to i64
  %682 = getelementptr inbounds i32, ptr %678, i64 %681
  %683 = load i32, ptr %682, align 4, !tbaa !179
  %684 = call noundef i32 @_ZNK11spirv_cross8Compiler21evaluate_constant_u32Ej(ptr noundef nonnull align 8 dereferenceable(3176) %56, i32 noundef %683)
  store i32 %684, ptr %29, align 4, !tbaa !179
  %685 = load i32, ptr %29, align 4, !tbaa !179
  %686 = icmp ne i32 %685, 4
  br i1 %686, label %687, label %694

687:                                              ; preds = %677
  %688 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %688, ptr noundef @.str.1614)
          to label %689 unwind label %690

689:                                              ; preds = %687
  call void @__cxa_throw(ptr %688, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

690:                                              ; preds = %687
  %691 = landingpad { ptr, i32 }
          cleanup
  %692 = extractvalue { ptr, i32 } %691, 0
  store ptr %692, ptr %7, align 8
  %693 = extractvalue { ptr, i32 } %691, 1
  store i32 %693, ptr %8, align 4
  call void @__cxa_free_exception(ptr %688) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #6
  br label %713

694:                                              ; preds = %677
  %695 = load i32, ptr %16, align 4, !tbaa !179
  %696 = load i32, ptr %17, align 4, !tbaa !179
  %697 = load ptr, ptr %5, align 8, !tbaa !5
  %698 = load i32, ptr %15, align 4, !tbaa !179
  %699 = zext i32 %698 to i64
  %700 = getelementptr inbounds i32, ptr %697, i64 %699
  %701 = load i32, ptr %700, align 4, !tbaa !179
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %695, i32 noundef %696, i32 noundef %701, ptr noundef @.str.1615)
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #6
  br label %709

702:                                              ; preds = %674
  %703 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %703, ptr noundef @.str.1616)
          to label %704 unwind label %705

704:                                              ; preds = %702
  call void @__cxa_throw(ptr %703, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

705:                                              ; preds = %702
  %706 = landingpad { ptr, i32 }
          cleanup
  %707 = extractvalue { ptr, i32 } %706, 0
  store ptr %707, ptr %7, align 8
  %708 = extractvalue { ptr, i32 } %706, 1
  store i32 %708, ptr %8, align 4
  call void @__cxa_free_exception(ptr %703) #6
  br label %713

709:                                              ; preds = %694
  br label %710

710:                                              ; preds = %709, %666
  br label %711

711:                                              ; preds = %710, %655
  br label %712

712:                                              ; preds = %711, %644
  store i32 5, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #6
  br label %1768

713:                                              ; preds = %705, %690
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #6
  br label %1773

714:                                              ; preds = %217
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #6
  %715 = load ptr, ptr %5, align 8, !tbaa !5
  %716 = load i32, ptr %15, align 4, !tbaa !179
  %717 = add i32 %716, 1
  store i32 %717, ptr %15, align 4, !tbaa !179
  %718 = zext i32 %716 to i64
  %719 = getelementptr inbounds i32, ptr %715, i64 %718
  %720 = load i32, ptr %719, align 4, !tbaa !179
  store i32 %720, ptr %30, align 4, !tbaa !186
  %721 = load i32, ptr %30, align 4, !tbaa !186
  %722 = icmp eq i32 %721, 0
  br i1 %722, label %723, label %731

723:                                              ; preds = %714
  %724 = load i32, ptr %16, align 4, !tbaa !179
  %725 = load i32, ptr %17, align 4, !tbaa !179
  %726 = load ptr, ptr %5, align 8, !tbaa !5
  %727 = load i32, ptr %15, align 4, !tbaa !179
  %728 = zext i32 %727 to i64
  %729 = getelementptr inbounds i32, ptr %726, i64 %728
  %730 = load i32, ptr %729, align 4, !tbaa !179
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %724, i32 noundef %725, i32 noundef %730, ptr noundef @.str.1617)
  br label %791

731:                                              ; preds = %714
  %732 = load i32, ptr %30, align 4, !tbaa !186
  %733 = icmp eq i32 %732, 1
  br i1 %733, label %734, label %742

734:                                              ; preds = %731
  %735 = load i32, ptr %16, align 4, !tbaa !179
  %736 = load i32, ptr %17, align 4, !tbaa !179
  %737 = load ptr, ptr %5, align 8, !tbaa !5
  %738 = load i32, ptr %15, align 4, !tbaa !179
  %739 = zext i32 %738 to i64
  %740 = getelementptr inbounds i32, ptr %737, i64 %739
  %741 = load i32, ptr %740, align 4, !tbaa !179
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %735, i32 noundef %736, i32 noundef %741, ptr noundef @.str.1618)
  br label %790

742:                                              ; preds = %731
  %743 = load i32, ptr %30, align 4, !tbaa !186
  %744 = icmp eq i32 %743, 2
  br i1 %744, label %745, label %753

745:                                              ; preds = %742
  %746 = load i32, ptr %16, align 4, !tbaa !179
  %747 = load i32, ptr %17, align 4, !tbaa !179
  %748 = load ptr, ptr %5, align 8, !tbaa !5
  %749 = load i32, ptr %15, align 4, !tbaa !179
  %750 = zext i32 %749 to i64
  %751 = getelementptr inbounds i32, ptr %748, i64 %750
  %752 = load i32, ptr %751, align 4, !tbaa !179
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %746, i32 noundef %747, i32 noundef %752, ptr noundef @.str.1619)
  br label %789

753:                                              ; preds = %742
  %754 = load i32, ptr %30, align 4, !tbaa !186
  %755 = icmp eq i32 %754, 3
  br i1 %755, label %756, label %781

756:                                              ; preds = %753
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #6
  %757 = load ptr, ptr %5, align 8, !tbaa !5
  %758 = load i32, ptr %15, align 4, !tbaa !179
  %759 = add i32 %758, 1
  %760 = zext i32 %759 to i64
  %761 = getelementptr inbounds i32, ptr %757, i64 %760
  %762 = load i32, ptr %761, align 4, !tbaa !179
  %763 = call noundef i32 @_ZNK11spirv_cross8Compiler21evaluate_constant_u32Ej(ptr noundef nonnull align 8 dereferenceable(3176) %56, i32 noundef %762)
  store i32 %763, ptr %31, align 4, !tbaa !179
  %764 = load i32, ptr %31, align 4, !tbaa !179
  %765 = icmp ne i32 %764, 4
  br i1 %765, label %766, label %773

766:                                              ; preds = %756
  %767 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %767, ptr noundef @.str.1614)
          to label %768 unwind label %769

768:                                              ; preds = %766
  call void @__cxa_throw(ptr %767, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

769:                                              ; preds = %766
  %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
  call void @__cxa_free_exception(ptr %767) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #6
  br label %792

773:                                              ; preds = %756
  %774 = load i32, ptr %16, align 4, !tbaa !179
  %775 = load i32, ptr %17, align 4, !tbaa !179
  %776 = load ptr, ptr %5, align 8, !tbaa !5
  %777 = load i32, ptr %15, align 4, !tbaa !179
  %778 = zext i32 %777 to i64
  %779 = getelementptr inbounds i32, ptr %776, i64 %778
  %780 = load i32, ptr %779, align 4, !tbaa !179
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %774, i32 noundef %775, i32 noundef %780, ptr noundef @.str.1620)
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #6
  br label %788

781:                                              ; preds = %753
  %782 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %782, ptr noundef @.str.1616)
          to label %783 unwind label %784

783:                                              ; preds = %781
  call void @__cxa_throw(ptr %782, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

784:                                              ; preds = %781
  %785 = landingpad { ptr, i32 }
          cleanup
  %786 = extractvalue { ptr, i32 } %785, 0
  store ptr %786, ptr %7, align 8
  %787 = extractvalue { ptr, i32 } %785, 1
  store i32 %787, ptr %8, align 4
  call void @__cxa_free_exception(ptr %782) #6
  br label %792

788:                                              ; preds = %773
  br label %789

789:                                              ; preds = %788, %745
  br label %790

790:                                              ; preds = %789, %734
  br label %791

791:                                              ; preds = %790, %723
  store i32 5, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #6
  br label %1768

792:                                              ; preds = %784, %769
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #6
  br label %1773

793:                                              ; preds = %217
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #6
  %794 = load ptr, ptr %5, align 8, !tbaa !5
  %795 = load i32, ptr %15, align 4, !tbaa !179
  %796 = add i32 %795, 1
  store i32 %796, ptr %15, align 4, !tbaa !179
  %797 = zext i32 %795 to i64
  %798 = getelementptr inbounds i32, ptr %794, i64 %797
  %799 = load i32, ptr %798, align 4, !tbaa !179
  store i32 %799, ptr %32, align 4, !tbaa !186
  %800 = load i32, ptr %32, align 4, !tbaa !186
  %801 = icmp eq i32 %800, 0
  br i1 %801, label %802, label %810

802:                                              ; preds = %793
  %803 = load i32, ptr %16, align 4, !tbaa !179
  %804 = load i32, ptr %17, align 4, !tbaa !179
  %805 = load ptr, ptr %5, align 8, !tbaa !5
  %806 = load i32, ptr %15, align 4, !tbaa !179
  %807 = zext i32 %806 to i64
  %808 = getelementptr inbounds i32, ptr %805, i64 %807
  %809 = load i32, ptr %808, align 4, !tbaa !179
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %803, i32 noundef %804, i32 noundef %809, ptr noundef @.str.1621)
  br label %868

810:                                              ; preds = %793
  %811 = load i32, ptr %32, align 4, !tbaa !186
  %812 = icmp eq i32 %811, 1
  br i1 %812, label %813, label %820

813:                                              ; preds = %810
  %814 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %814, ptr noundef @.str.1622)
          to label %815 unwind label %816

815:                                              ; preds = %813
  call void @__cxa_throw(ptr %814, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

816:                                              ; preds = %813
  %817 = landingpad { ptr, i32 }
          cleanup
  %818 = extractvalue { ptr, i32 } %817, 0
  store ptr %818, ptr %7, align 8
  %819 = extractvalue { ptr, i32 } %817, 1
  store i32 %819, ptr %8, align 4
  call void @__cxa_free_exception(ptr %814) #6
  br label %869

820:                                              ; preds = %810
  %821 = load i32, ptr %32, align 4, !tbaa !186
  %822 = icmp eq i32 %821, 2
  br i1 %822, label %823, label %830

823:                                              ; preds = %820
  %824 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %824, ptr noundef @.str.1623)
          to label %825 unwind label %826

825:                                              ; preds = %823
  call void @__cxa_throw(ptr %824, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

826:                                              ; preds = %823
  %827 = landingpad { ptr, i32 }
          cleanup
  %828 = extractvalue { ptr, i32 } %827, 0
  store ptr %828, ptr %7, align 8
  %829 = extractvalue { ptr, i32 } %827, 1
  store i32 %829, ptr %8, align 4
  call void @__cxa_free_exception(ptr %824) #6
  br label %869

830:                                              ; preds = %820
  %831 = load i32, ptr %32, align 4, !tbaa !186
  %832 = icmp eq i32 %831, 3
  br i1 %832, label %833, label %858

833:                                              ; preds = %830
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #6
  %834 = load ptr, ptr %5, align 8, !tbaa !5
  %835 = load i32, ptr %15, align 4, !tbaa !179
  %836 = add i32 %835, 1
  %837 = zext i32 %836 to i64
  %838 = getelementptr inbounds i32, ptr %834, i64 %837
  %839 = load i32, ptr %838, align 4, !tbaa !179
  %840 = call noundef i32 @_ZNK11spirv_cross8Compiler21evaluate_constant_u32Ej(ptr noundef nonnull align 8 dereferenceable(3176) %56, i32 noundef %839)
  store i32 %840, ptr %33, align 4, !tbaa !179
  %841 = load i32, ptr %33, align 4, !tbaa !179
  %842 = icmp ne i32 %841, 4
  br i1 %842, label %843, label %850

843:                                              ; preds = %833
  %844 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %844, ptr noundef @.str.1614)
          to label %845 unwind label %846

845:                                              ; preds = %843
  call void @__cxa_throw(ptr %844, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

846:                                              ; preds = %843
  %847 = landingpad { ptr, i32 }
          cleanup
  %848 = extractvalue { ptr, i32 } %847, 0
  store ptr %848, ptr %7, align 8
  %849 = extractvalue { ptr, i32 } %847, 1
  store i32 %849, ptr %8, align 4
  call void @__cxa_free_exception(ptr %844) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #6
  br label %869

850:                                              ; preds = %833
  %851 = load i32, ptr %16, align 4, !tbaa !179
  %852 = load i32, ptr %17, align 4, !tbaa !179
  %853 = load ptr, ptr %5, align 8, !tbaa !5
  %854 = load i32, ptr %15, align 4, !tbaa !179
  %855 = zext i32 %854 to i64
  %856 = getelementptr inbounds i32, ptr %853, i64 %855
  %857 = load i32, ptr %856, align 4, !tbaa !179
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %851, i32 noundef %852, i32 noundef %857, ptr noundef @.str.1624)
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #6
  br label %865

858:                                              ; preds = %830
  %859 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %859, ptr noundef @.str.1616)
          to label %860 unwind label %861

860:                                              ; preds = %858
  call void @__cxa_throw(ptr %859, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

861:                                              ; preds = %858
  %862 = landingpad { ptr, i32 }
          cleanup
  %863 = extractvalue { ptr, i32 } %862, 0
  store ptr %863, ptr %7, align 8
  %864 = extractvalue { ptr, i32 } %862, 1
  store i32 %864, ptr %8, align 4
  call void @__cxa_free_exception(ptr %859) #6
  br label %869

865:                                              ; preds = %850
  br label %866

866:                                              ; preds = %865
  br label %867

867:                                              ; preds = %866
  br label %868

868:                                              ; preds = %867, %802
  store i32 5, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #6
  br label %1768

869:                                              ; preds = %861, %846, %826, %816
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #6
  br label %1773

870:                                              ; preds = %217
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #6
  %871 = load ptr, ptr %5, align 8, !tbaa !5
  %872 = load i32, ptr %15, align 4, !tbaa !179
  %873 = add i32 %872, 1
  store i32 %873, ptr %15, align 4, !tbaa !179
  %874 = zext i32 %872 to i64
  %875 = getelementptr inbounds i32, ptr %871, i64 %874
  %876 = load i32, ptr %875, align 4, !tbaa !179
  store i32 %876, ptr %34, align 4, !tbaa !186
  %877 = load i32, ptr %34, align 4, !tbaa !186
  %878 = icmp eq i32 %877, 0
  br i1 %878, label %879, label %887

879:                                              ; preds = %870
  %880 = load i32, ptr %16, align 4, !tbaa !179
  %881 = load i32, ptr %17, align 4, !tbaa !179
  %882 = load ptr, ptr %5, align 8, !tbaa !5
  %883 = load i32, ptr %15, align 4, !tbaa !179
  %884 = zext i32 %883 to i64
  %885 = getelementptr inbounds i32, ptr %882, i64 %884
  %886 = load i32, ptr %885, align 4, !tbaa !179
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %880, i32 noundef %881, i32 noundef %886, ptr noundef @.str.1625)
  br label %945

887:                                              ; preds = %870
  %888 = load i32, ptr %34, align 4, !tbaa !186
  %889 = icmp eq i32 %888, 1
  br i1 %889, label %890, label %897

890:                                              ; preds = %887
  %891 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %891, ptr noundef @.str.1626)
          to label %892 unwind label %893

892:                                              ; preds = %890
  call void @__cxa_throw(ptr %891, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

893:                                              ; preds = %890
  %894 = landingpad { ptr, i32 }
          cleanup
  %895 = extractvalue { ptr, i32 } %894, 0
  store ptr %895, ptr %7, align 8
  %896 = extractvalue { ptr, i32 } %894, 1
  store i32 %896, ptr %8, align 4
  call void @__cxa_free_exception(ptr %891) #6
  br label %946

897:                                              ; preds = %887
  %898 = load i32, ptr %34, align 4, !tbaa !186
  %899 = icmp eq i32 %898, 2
  br i1 %899, label %900, label %907

900:                                              ; preds = %897
  %901 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %901, ptr noundef @.str.1627)
          to label %902 unwind label %903

902:                                              ; preds = %900
  call void @__cxa_throw(ptr %901, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

903:                                              ; preds = %900
  %904 = landingpad { ptr, i32 }
          cleanup
  %905 = extractvalue { ptr, i32 } %904, 0
  store ptr %905, ptr %7, align 8
  %906 = extractvalue { ptr, i32 } %904, 1
  store i32 %906, ptr %8, align 4
  call void @__cxa_free_exception(ptr %901) #6
  br label %946

907:                                              ; preds = %897
  %908 = load i32, ptr %34, align 4, !tbaa !186
  %909 = icmp eq i32 %908, 3
  br i1 %909, label %910, label %935

910:                                              ; preds = %907
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #6
  %911 = load ptr, ptr %5, align 8, !tbaa !5
  %912 = load i32, ptr %15, align 4, !tbaa !179
  %913 = add i32 %912, 1
  %914 = zext i32 %913 to i64
  %915 = getelementptr inbounds i32, ptr %911, i64 %914
  %916 = load i32, ptr %915, align 4, !tbaa !179
  %917 = call noundef i32 @_ZNK11spirv_cross8Compiler21evaluate_constant_u32Ej(ptr noundef nonnull align 8 dereferenceable(3176) %56, i32 noundef %916)
  store i32 %917, ptr %35, align 4, !tbaa !179
  %918 = load i32, ptr %35, align 4, !tbaa !179
  %919 = icmp ne i32 %918, 4
  br i1 %919, label %920, label %927

920:                                              ; preds = %910
  %921 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %921, ptr noundef @.str.1614)
          to label %922 unwind label %923

922:                                              ; preds = %920
  call void @__cxa_throw(ptr %921, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

923:                                              ; preds = %920
  %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
  call void @__cxa_free_exception(ptr %921) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #6
  br label %946

927:                                              ; preds = %910
  %928 = load i32, ptr %16, align 4, !tbaa !179
  %929 = load i32, ptr %17, align 4, !tbaa !179
  %930 = load ptr, ptr %5, align 8, !tbaa !5
  %931 = load i32, ptr %15, align 4, !tbaa !179
  %932 = zext i32 %931 to i64
  %933 = getelementptr inbounds i32, ptr %930, i64 %932
  %934 = load i32, ptr %933, align 4, !tbaa !179
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %928, i32 noundef %929, i32 noundef %934, ptr noundef @.str.1628)
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #6
  br label %942

935:                                              ; preds = %907
  %936 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %936, ptr noundef @.str.1616)
          to label %937 unwind label %938

937:                                              ; preds = %935
  call void @__cxa_throw(ptr %936, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

938:                                              ; preds = %935
  %939 = landingpad { ptr, i32 }
          cleanup
  %940 = extractvalue { ptr, i32 } %939, 0
  store ptr %940, ptr %7, align 8
  %941 = extractvalue { ptr, i32 } %939, 1
  store i32 %941, ptr %8, align 4
  call void @__cxa_free_exception(ptr %936) #6
  br label %946

942:                                              ; preds = %927
  br label %943

943:                                              ; preds = %942
  br label %944

944:                                              ; preds = %943
  br label %945

945:                                              ; preds = %944, %879
  store i32 5, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #6
  br label %1768

946:                                              ; preds = %938, %923, %903, %893
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #6
  br label %1773

947:                                              ; preds = %217
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #6
  %948 = load ptr, ptr %5, align 8, !tbaa !5
  %949 = load i32, ptr %15, align 4, !tbaa !179
  %950 = add i32 %949, 1
  store i32 %950, ptr %15, align 4, !tbaa !179
  %951 = zext i32 %949 to i64
  %952 = getelementptr inbounds i32, ptr %948, i64 %951
  %953 = load i32, ptr %952, align 4, !tbaa !179
  store i32 %953, ptr %36, align 4, !tbaa !186
  %954 = load i32, ptr %36, align 4, !tbaa !186
  %955 = icmp eq i32 %954, 0
  br i1 %955, label %956, label %966

956:                                              ; preds = %947
  %957 = load i32, ptr %16, align 4, !tbaa !179
  %958 = load i32, ptr %17, align 4, !tbaa !179
  %959 = load ptr, ptr %5, align 8, !tbaa !5
  %960 = load i32, ptr %15, align 4, !tbaa !179
  %961 = zext i32 %960 to i64
  %962 = getelementptr inbounds i32, ptr %959, i64 %961
  %963 = load i32, ptr %962, align 4, !tbaa !179
  %964 = load i32, ptr %13, align 4, !tbaa !180
  %965 = load i32, ptr %13, align 4, !tbaa !180
  call void @_ZN11spirv_cross12CompilerGLSL23emit_unary_func_op_castEjjjPKcNS_8SPIRType8BaseTypeES4_(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %957, i32 noundef %958, i32 noundef %963, ptr noundef @.str.1621, i32 noundef %964, i32 noundef %965)
  br label %1026

966:                                              ; preds = %947
  %967 = load i32, ptr %36, align 4, !tbaa !186
  %968 = icmp eq i32 %967, 1
  br i1 %968, label %969, label %976

969:                                              ; preds = %966
  %970 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %970, ptr noundef @.str.1629)
          to label %971 unwind label %972

971:                                              ; preds = %969
  call void @__cxa_throw(ptr %970, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

972:                                              ; preds = %969
  %973 = landingpad { ptr, i32 }
          cleanup
  %974 = extractvalue { ptr, i32 } %973, 0
  store ptr %974, ptr %7, align 8
  %975 = extractvalue { ptr, i32 } %973, 1
  store i32 %975, ptr %8, align 4
  call void @__cxa_free_exception(ptr %970) #6
  br label %1027

976:                                              ; preds = %966
  %977 = load i32, ptr %36, align 4, !tbaa !186
  %978 = icmp eq i32 %977, 2
  br i1 %978, label %979, label %986

979:                                              ; preds = %976
  %980 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %980, ptr noundef @.str.1630)
          to label %981 unwind label %982

981:                                              ; preds = %979
  call void @__cxa_throw(ptr %980, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

982:                                              ; preds = %979
  %983 = landingpad { ptr, i32 }
          cleanup
  %984 = extractvalue { ptr, i32 } %983, 0
  store ptr %984, ptr %7, align 8
  %985 = extractvalue { ptr, i32 } %983, 1
  store i32 %985, ptr %8, align 4
  call void @__cxa_free_exception(ptr %980) #6
  br label %1027

986:                                              ; preds = %976
  %987 = load i32, ptr %36, align 4, !tbaa !186
  %988 = icmp eq i32 %987, 3
  br i1 %988, label %989, label %1016

989:                                              ; preds = %986
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #6
  %990 = load ptr, ptr %5, align 8, !tbaa !5
  %991 = load i32, ptr %15, align 4, !tbaa !179
  %992 = add i32 %991, 1
  %993 = zext i32 %992 to i64
  %994 = getelementptr inbounds i32, ptr %990, i64 %993
  %995 = load i32, ptr %994, align 4, !tbaa !179
  %996 = call noundef i32 @_ZNK11spirv_cross8Compiler21evaluate_constant_u32Ej(ptr noundef nonnull align 8 dereferenceable(3176) %56, i32 noundef %995)
  store i32 %996, ptr %37, align 4, !tbaa !179
  %997 = load i32, ptr %37, align 4, !tbaa !179
  %998 = icmp ne i32 %997, 4
  br i1 %998, label %999, label %1006

999:                                              ; preds = %989
  %1000 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1000, ptr noundef @.str.1614)
          to label %1001 unwind label %1002

1001:                                             ; preds = %999
  call void @__cxa_throw(ptr %1000, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1002:                                             ; preds = %999
  %1003 = landingpad { ptr, i32 }
          cleanup
  %1004 = extractvalue { ptr, i32 } %1003, 0
  store ptr %1004, ptr %7, align 8
  %1005 = extractvalue { ptr, i32 } %1003, 1
  store i32 %1005, ptr %8, align 4
  call void @__cxa_free_exception(ptr %1000) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #6
  br label %1027

1006:                                             ; preds = %989
  %1007 = load i32, ptr %16, align 4, !tbaa !179
  %1008 = load i32, ptr %17, align 4, !tbaa !179
  %1009 = load ptr, ptr %5, align 8, !tbaa !5
  %1010 = load i32, ptr %15, align 4, !tbaa !179
  %1011 = zext i32 %1010 to i64
  %1012 = getelementptr inbounds i32, ptr %1009, i64 %1011
  %1013 = load i32, ptr %1012, align 4, !tbaa !179
  %1014 = load i32, ptr %13, align 4, !tbaa !180
  %1015 = load i32, ptr %13, align 4, !tbaa !180
  call void @_ZN11spirv_cross12CompilerGLSL23emit_unary_func_op_castEjjjPKcNS_8SPIRType8BaseTypeES4_(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %1007, i32 noundef %1008, i32 noundef %1013, ptr noundef @.str.1624, i32 noundef %1014, i32 noundef %1015)
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #6
  br label %1023

1016:                                             ; preds = %986
  %1017 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1017, ptr noundef @.str.1616)
          to label %1018 unwind label %1019

1018:                                             ; preds = %1016
  call void @__cxa_throw(ptr %1017, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1019:                                             ; preds = %1016
  %1020 = landingpad { ptr, i32 }
          cleanup
  %1021 = extractvalue { ptr, i32 } %1020, 0
  store ptr %1021, ptr %7, align 8
  %1022 = extractvalue { ptr, i32 } %1020, 1
  store i32 %1022, ptr %8, align 4
  call void @__cxa_free_exception(ptr %1017) #6
  br label %1027

1023:                                             ; preds = %1006
  br label %1024

1024:                                             ; preds = %1023
  br label %1025

1025:                                             ; preds = %1024
  br label %1026

1026:                                             ; preds = %1025, %956
  store i32 5, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #6
  br label %1768

1027:                                             ; preds = %1019, %1002, %982, %972
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #6
  br label %1773

1028:                                             ; preds = %217
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #6
  %1029 = load ptr, ptr %5, align 8, !tbaa !5
  %1030 = load i32, ptr %15, align 4, !tbaa !179
  %1031 = add i32 %1030, 1
  store i32 %1031, ptr %15, align 4, !tbaa !179
  %1032 = zext i32 %1030 to i64
  %1033 = getelementptr inbounds i32, ptr %1029, i64 %1032
  %1034 = load i32, ptr %1033, align 4, !tbaa !179
  store i32 %1034, ptr %38, align 4, !tbaa !186
  %1035 = load i32, ptr %38, align 4, !tbaa !186
  %1036 = icmp eq i32 %1035, 0
  br i1 %1036, label %1037, label %1047

1037:                                             ; preds = %1028
  %1038 = load i32, ptr %16, align 4, !tbaa !179
  %1039 = load i32, ptr %17, align 4, !tbaa !179
  %1040 = load ptr, ptr %5, align 8, !tbaa !5
  %1041 = load i32, ptr %15, align 4, !tbaa !179
  %1042 = zext i32 %1041 to i64
  %1043 = getelementptr inbounds i32, ptr %1040, i64 %1042
  %1044 = load i32, ptr %1043, align 4, !tbaa !179
  %1045 = load i32, ptr %13, align 4, !tbaa !180
  %1046 = load i32, ptr %13, align 4, !tbaa !180
  call void @_ZN11spirv_cross12CompilerGLSL23emit_unary_func_op_castEjjjPKcNS_8SPIRType8BaseTypeES4_(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %1038, i32 noundef %1039, i32 noundef %1044, ptr noundef @.str.1625, i32 noundef %1045, i32 noundef %1046)
  br label %1107

1047:                                             ; preds = %1028
  %1048 = load i32, ptr %38, align 4, !tbaa !186
  %1049 = icmp eq i32 %1048, 1
  br i1 %1049, label %1050, label %1057

1050:                                             ; preds = %1047
  %1051 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1051, ptr noundef @.str.1631)
          to label %1052 unwind label %1053

1052:                                             ; preds = %1050
  call void @__cxa_throw(ptr %1051, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1053:                                             ; preds = %1050
  %1054 = landingpad { ptr, i32 }
          cleanup
  %1055 = extractvalue { ptr, i32 } %1054, 0
  store ptr %1055, ptr %7, align 8
  %1056 = extractvalue { ptr, i32 } %1054, 1
  store i32 %1056, ptr %8, align 4
  call void @__cxa_free_exception(ptr %1051) #6
  br label %1108

1057:                                             ; preds = %1047
  %1058 = load i32, ptr %38, align 4, !tbaa !186
  %1059 = icmp eq i32 %1058, 2
  br i1 %1059, label %1060, label %1067

1060:                                             ; preds = %1057
  %1061 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1061, ptr noundef @.str.1632)
          to label %1062 unwind label %1063

1062:                                             ; preds = %1060
  call void @__cxa_throw(ptr %1061, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1063:                                             ; preds = %1060
  %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
  call void @__cxa_free_exception(ptr %1061) #6
  br label %1108

1067:                                             ; preds = %1057
  %1068 = load i32, ptr %38, align 4, !tbaa !186
  %1069 = icmp eq i32 %1068, 3
  br i1 %1069, label %1070, label %1097

1070:                                             ; preds = %1067
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #6
  %1071 = load ptr, ptr %5, align 8, !tbaa !5
  %1072 = load i32, ptr %15, align 4, !tbaa !179
  %1073 = add i32 %1072, 1
  %1074 = zext i32 %1073 to i64
  %1075 = getelementptr inbounds i32, ptr %1071, i64 %1074
  %1076 = load i32, ptr %1075, align 4, !tbaa !179
  %1077 = call noundef i32 @_ZNK11spirv_cross8Compiler21evaluate_constant_u32Ej(ptr noundef nonnull align 8 dereferenceable(3176) %56, i32 noundef %1076)
  store i32 %1077, ptr %39, align 4, !tbaa !179
  %1078 = load i32, ptr %39, align 4, !tbaa !179
  %1079 = icmp ne i32 %1078, 4
  br i1 %1079, label %1080, label %1087

1080:                                             ; preds = %1070
  %1081 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1081, ptr noundef @.str.1614)
          to label %1082 unwind label %1083

1082:                                             ; preds = %1080
  call void @__cxa_throw(ptr %1081, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1083:                                             ; preds = %1080
  %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
  call void @__cxa_free_exception(ptr %1081) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #6
  br label %1108

1087:                                             ; preds = %1070
  %1088 = load i32, ptr %16, align 4, !tbaa !179
  %1089 = load i32, ptr %17, align 4, !tbaa !179
  %1090 = load ptr, ptr %5, align 8, !tbaa !5
  %1091 = load i32, ptr %15, align 4, !tbaa !179
  %1092 = zext i32 %1091 to i64
  %1093 = getelementptr inbounds i32, ptr %1090, i64 %1092
  %1094 = load i32, ptr %1093, align 4, !tbaa !179
  %1095 = load i32, ptr %13, align 4, !tbaa !180
  %1096 = load i32, ptr %13, align 4, !tbaa !180
  call void @_ZN11spirv_cross12CompilerGLSL23emit_unary_func_op_castEjjjPKcNS_8SPIRType8BaseTypeES4_(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %1088, i32 noundef %1089, i32 noundef %1094, ptr noundef @.str.1628, i32 noundef %1095, i32 noundef %1096)
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #6
  br label %1104

1097:                                             ; preds = %1067
  %1098 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1098, ptr noundef @.str.1616)
          to label %1099 unwind label %1100

1099:                                             ; preds = %1097
  call void @__cxa_throw(ptr %1098, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1100:                                             ; preds = %1097
  %1101 = landingpad { ptr, i32 }
          cleanup
  %1102 = extractvalue { ptr, i32 } %1101, 0
  store ptr %1102, ptr %7, align 8
  %1103 = extractvalue { ptr, i32 } %1101, 1
  store i32 %1103, ptr %8, align 4
  call void @__cxa_free_exception(ptr %1098) #6
  br label %1108

1104:                                             ; preds = %1087
  br label %1105

1105:                                             ; preds = %1104
  br label %1106

1106:                                             ; preds = %1105
  br label %1107

1107:                                             ; preds = %1106, %1037
  store i32 5, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #6
  br label %1768

1108:                                             ; preds = %1100, %1083, %1063, %1053
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #6
  br label %1773

1109:                                             ; preds = %217
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #6
  %1110 = load ptr, ptr %5, align 8, !tbaa !5
  %1111 = load i32, ptr %15, align 4, !tbaa !179
  %1112 = add i32 %1111, 1
  store i32 %1112, ptr %15, align 4, !tbaa !179
  %1113 = zext i32 %1111 to i64
  %1114 = getelementptr inbounds i32, ptr %1110, i64 %1113
  %1115 = load i32, ptr %1114, align 4, !tbaa !179
  store i32 %1115, ptr %40, align 4, !tbaa !186
  %1116 = load i32, ptr %40, align 4, !tbaa !186
  %1117 = icmp eq i32 %1116, 0
  br i1 %1117, label %1118, label %1128

1118:                                             ; preds = %1109
  %1119 = load i32, ptr %16, align 4, !tbaa !179
  %1120 = load i32, ptr %17, align 4, !tbaa !179
  %1121 = load ptr, ptr %5, align 8, !tbaa !5
  %1122 = load i32, ptr %15, align 4, !tbaa !179
  %1123 = zext i32 %1122 to i64
  %1124 = getelementptr inbounds i32, ptr %1121, i64 %1123
  %1125 = load i32, ptr %1124, align 4, !tbaa !179
  %1126 = load i32, ptr %14, align 4, !tbaa !180
  %1127 = load i32, ptr %14, align 4, !tbaa !180
  call void @_ZN11spirv_cross12CompilerGLSL23emit_unary_func_op_castEjjjPKcNS_8SPIRType8BaseTypeES4_(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %1119, i32 noundef %1120, i32 noundef %1125, ptr noundef @.str.1621, i32 noundef %1126, i32 noundef %1127)
  br label %1188

1128:                                             ; preds = %1109
  %1129 = load i32, ptr %40, align 4, !tbaa !186
  %1130 = icmp eq i32 %1129, 1
  br i1 %1130, label %1131, label %1138

1131:                                             ; preds = %1128
  %1132 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1132, ptr noundef @.str.1633)
          to label %1133 unwind label %1134

1133:                                             ; preds = %1131
  call void @__cxa_throw(ptr %1132, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1134:                                             ; preds = %1131
  %1135 = landingpad { ptr, i32 }
          cleanup
  %1136 = extractvalue { ptr, i32 } %1135, 0
  store ptr %1136, ptr %7, align 8
  %1137 = extractvalue { ptr, i32 } %1135, 1
  store i32 %1137, ptr %8, align 4
  call void @__cxa_free_exception(ptr %1132) #6
  br label %1189

1138:                                             ; preds = %1128
  %1139 = load i32, ptr %40, align 4, !tbaa !186
  %1140 = icmp eq i32 %1139, 2
  br i1 %1140, label %1141, label %1148

1141:                                             ; preds = %1138
  %1142 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1142, ptr noundef @.str.1634)
          to label %1143 unwind label %1144

1143:                                             ; preds = %1141
  call void @__cxa_throw(ptr %1142, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1144:                                             ; preds = %1141
  %1145 = landingpad { ptr, i32 }
          cleanup
  %1146 = extractvalue { ptr, i32 } %1145, 0
  store ptr %1146, ptr %7, align 8
  %1147 = extractvalue { ptr, i32 } %1145, 1
  store i32 %1147, ptr %8, align 4
  call void @__cxa_free_exception(ptr %1142) #6
  br label %1189

1148:                                             ; preds = %1138
  %1149 = load i32, ptr %40, align 4, !tbaa !186
  %1150 = icmp eq i32 %1149, 3
  br i1 %1150, label %1151, label %1178

1151:                                             ; preds = %1148
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #6
  %1152 = load ptr, ptr %5, align 8, !tbaa !5
  %1153 = load i32, ptr %15, align 4, !tbaa !179
  %1154 = add i32 %1153, 1
  %1155 = zext i32 %1154 to i64
  %1156 = getelementptr inbounds i32, ptr %1152, i64 %1155
  %1157 = load i32, ptr %1156, align 4, !tbaa !179
  %1158 = call noundef i32 @_ZNK11spirv_cross8Compiler21evaluate_constant_u32Ej(ptr noundef nonnull align 8 dereferenceable(3176) %56, i32 noundef %1157)
  store i32 %1158, ptr %41, align 4, !tbaa !179
  %1159 = load i32, ptr %41, align 4, !tbaa !179
  %1160 = icmp ne i32 %1159, 4
  br i1 %1160, label %1161, label %1168

1161:                                             ; preds = %1151
  %1162 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1162, ptr noundef @.str.1614)
          to label %1163 unwind label %1164

1163:                                             ; preds = %1161
  call void @__cxa_throw(ptr %1162, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1164:                                             ; preds = %1161
  %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 @__cxa_free_exception(ptr %1162) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #6
  br label %1189

1168:                                             ; preds = %1151
  %1169 = load i32, ptr %16, align 4, !tbaa !179
  %1170 = load i32, ptr %17, align 4, !tbaa !179
  %1171 = load ptr, ptr %5, align 8, !tbaa !5
  %1172 = load i32, ptr %15, align 4, !tbaa !179
  %1173 = zext i32 %1172 to i64
  %1174 = getelementptr inbounds i32, ptr %1171, i64 %1173
  %1175 = load i32, ptr %1174, align 4, !tbaa !179
  %1176 = load i32, ptr %14, align 4, !tbaa !180
  %1177 = load i32, ptr %14, align 4, !tbaa !180
  call void @_ZN11spirv_cross12CompilerGLSL23emit_unary_func_op_castEjjjPKcNS_8SPIRType8BaseTypeES4_(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %1169, i32 noundef %1170, i32 noundef %1175, ptr noundef @.str.1624, i32 noundef %1176, i32 noundef %1177)
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #6
  br label %1185

1178:                                             ; preds = %1148
  %1179 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1179, ptr noundef @.str.1616)
          to label %1180 unwind label %1181

1180:                                             ; preds = %1178
  call void @__cxa_throw(ptr %1179, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1181:                                             ; preds = %1178
  %1182 = landingpad { ptr, i32 }
          cleanup
  %1183 = extractvalue { ptr, i32 } %1182, 0
  store ptr %1183, ptr %7, align 8
  %1184 = extractvalue { ptr, i32 } %1182, 1
  store i32 %1184, ptr %8, align 4
  call void @__cxa_free_exception(ptr %1179) #6
  br label %1189

1185:                                             ; preds = %1168
  br label %1186

1186:                                             ; preds = %1185
  br label %1187

1187:                                             ; preds = %1186
  br label %1188

1188:                                             ; preds = %1187, %1118
  store i32 5, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #6
  br label %1768

1189:                                             ; preds = %1181, %1164, %1144, %1134
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #6
  br label %1773

1190:                                             ; preds = %217
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #6
  %1191 = load ptr, ptr %5, align 8, !tbaa !5
  %1192 = load i32, ptr %15, align 4, !tbaa !179
  %1193 = add i32 %1192, 1
  store i32 %1193, ptr %15, align 4, !tbaa !179
  %1194 = zext i32 %1192 to i64
  %1195 = getelementptr inbounds i32, ptr %1191, i64 %1194
  %1196 = load i32, ptr %1195, align 4, !tbaa !179
  store i32 %1196, ptr %42, align 4, !tbaa !186
  %1197 = load i32, ptr %42, align 4, !tbaa !186
  %1198 = icmp eq i32 %1197, 0
  br i1 %1198, label %1199, label %1209

1199:                                             ; preds = %1190
  %1200 = load i32, ptr %16, align 4, !tbaa !179
  %1201 = load i32, ptr %17, align 4, !tbaa !179
  %1202 = load ptr, ptr %5, align 8, !tbaa !5
  %1203 = load i32, ptr %15, align 4, !tbaa !179
  %1204 = zext i32 %1203 to i64
  %1205 = getelementptr inbounds i32, ptr %1202, i64 %1204
  %1206 = load i32, ptr %1205, align 4, !tbaa !179
  %1207 = load i32, ptr %14, align 4, !tbaa !180
  %1208 = load i32, ptr %14, align 4, !tbaa !180
  call void @_ZN11spirv_cross12CompilerGLSL23emit_unary_func_op_castEjjjPKcNS_8SPIRType8BaseTypeES4_(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %1200, i32 noundef %1201, i32 noundef %1206, ptr noundef @.str.1625, i32 noundef %1207, i32 noundef %1208)
  br label %1269

1209:                                             ; preds = %1190
  %1210 = load i32, ptr %42, align 4, !tbaa !186
  %1211 = icmp eq i32 %1210, 1
  br i1 %1211, label %1212, label %1219

1212:                                             ; preds = %1209
  %1213 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1213, ptr noundef @.str.1635)
          to label %1214 unwind label %1215

1214:                                             ; preds = %1212
  call void @__cxa_throw(ptr %1213, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1215:                                             ; preds = %1212
  %1216 = landingpad { ptr, i32 }
          cleanup
  %1217 = extractvalue { ptr, i32 } %1216, 0
  store ptr %1217, ptr %7, align 8
  %1218 = extractvalue { ptr, i32 } %1216, 1
  store i32 %1218, ptr %8, align 4
  call void @__cxa_free_exception(ptr %1213) #6
  br label %1270

1219:                                             ; preds = %1209
  %1220 = load i32, ptr %42, align 4, !tbaa !186
  %1221 = icmp eq i32 %1220, 2
  br i1 %1221, label %1222, label %1229

1222:                                             ; preds = %1219
  %1223 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1223, ptr noundef @.str.1636)
          to label %1224 unwind label %1225

1224:                                             ; preds = %1222
  call void @__cxa_throw(ptr %1223, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1225:                                             ; preds = %1222
  %1226 = landingpad { ptr, i32 }
          cleanup
  %1227 = extractvalue { ptr, i32 } %1226, 0
  store ptr %1227, ptr %7, align 8
  %1228 = extractvalue { ptr, i32 } %1226, 1
  store i32 %1228, ptr %8, align 4
  call void @__cxa_free_exception(ptr %1223) #6
  br label %1270

1229:                                             ; preds = %1219
  %1230 = load i32, ptr %42, align 4, !tbaa !186
  %1231 = icmp eq i32 %1230, 3
  br i1 %1231, label %1232, label %1259

1232:                                             ; preds = %1229
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #6
  %1233 = load ptr, ptr %5, align 8, !tbaa !5
  %1234 = load i32, ptr %15, align 4, !tbaa !179
  %1235 = add i32 %1234, 1
  %1236 = zext i32 %1235 to i64
  %1237 = getelementptr inbounds i32, ptr %1233, i64 %1236
  %1238 = load i32, ptr %1237, align 4, !tbaa !179
  %1239 = call noundef i32 @_ZNK11spirv_cross8Compiler21evaluate_constant_u32Ej(ptr noundef nonnull align 8 dereferenceable(3176) %56, i32 noundef %1238)
  store i32 %1239, ptr %43, align 4, !tbaa !179
  %1240 = load i32, ptr %43, align 4, !tbaa !179
  %1241 = icmp ne i32 %1240, 4
  br i1 %1241, label %1242, label %1249

1242:                                             ; preds = %1232
  %1243 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1243, ptr noundef @.str.1614)
          to label %1244 unwind label %1245

1244:                                             ; preds = %1242
  call void @__cxa_throw(ptr %1243, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1245:                                             ; preds = %1242
  %1246 = landingpad { ptr, i32 }
          cleanup
  %1247 = extractvalue { ptr, i32 } %1246, 0
  store ptr %1247, ptr %7, align 8
  %1248 = extractvalue { ptr, i32 } %1246, 1
  store i32 %1248, ptr %8, align 4
  call void @__cxa_free_exception(ptr %1243) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #6
  br label %1270

1249:                                             ; preds = %1232
  %1250 = load i32, ptr %16, align 4, !tbaa !179
  %1251 = load i32, ptr %17, align 4, !tbaa !179
  %1252 = load ptr, ptr %5, align 8, !tbaa !5
  %1253 = load i32, ptr %15, align 4, !tbaa !179
  %1254 = zext i32 %1253 to i64
  %1255 = getelementptr inbounds i32, ptr %1252, i64 %1254
  %1256 = load i32, ptr %1255, align 4, !tbaa !179
  %1257 = load i32, ptr %14, align 4, !tbaa !180
  %1258 = load i32, ptr %14, align 4, !tbaa !180
  call void @_ZN11spirv_cross12CompilerGLSL23emit_unary_func_op_castEjjjPKcNS_8SPIRType8BaseTypeES4_(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %1250, i32 noundef %1251, i32 noundef %1256, ptr noundef @.str.1628, i32 noundef %1257, i32 noundef %1258)
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #6
  br label %1266

1259:                                             ; preds = %1229
  %1260 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1260, ptr noundef @.str.1616)
          to label %1261 unwind label %1262

1261:                                             ; preds = %1259
  call void @__cxa_throw(ptr %1260, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1262:                                             ; preds = %1259
  %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
  call void @__cxa_free_exception(ptr %1260) #6
  br label %1270

1266:                                             ; preds = %1249
  br label %1267

1267:                                             ; preds = %1266
  br label %1268

1268:                                             ; preds = %1267
  br label %1269

1269:                                             ; preds = %1268, %1199
  store i32 5, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #6
  br label %1768

1270:                                             ; preds = %1262, %1245, %1225, %1215
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #6
  br label %1773

1271:                                             ; preds = %217
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #6
  %1272 = load ptr, ptr %5, align 8, !tbaa !5
  %1273 = load i32, ptr %15, align 4, !tbaa !179
  %1274 = add i32 %1273, 1
  store i32 %1274, ptr %15, align 4, !tbaa !179
  %1275 = zext i32 %1273 to i64
  %1276 = getelementptr inbounds i32, ptr %1272, i64 %1275
  %1277 = load i32, ptr %1276, align 4, !tbaa !179
  store i32 %1277, ptr %44, align 4, !tbaa !186
  %1278 = load i32, ptr %44, align 4, !tbaa !186
  %1279 = icmp eq i32 %1278, 0
  br i1 %1279, label %1280, label %1288

1280:                                             ; preds = %1271
  %1281 = load i32, ptr %16, align 4, !tbaa !179
  %1282 = load i32, ptr %17, align 4, !tbaa !179
  %1283 = load ptr, ptr %5, align 8, !tbaa !5
  %1284 = load i32, ptr %15, align 4, !tbaa !179
  %1285 = zext i32 %1284 to i64
  %1286 = getelementptr inbounds i32, ptr %1283, i64 %1285
  %1287 = load i32, ptr %1286, align 4, !tbaa !179
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %1281, i32 noundef %1282, i32 noundef %1287, ptr noundef @.str.1637)
  br label %1346

1288:                                             ; preds = %1271
  %1289 = load i32, ptr %44, align 4, !tbaa !186
  %1290 = icmp eq i32 %1289, 1
  br i1 %1290, label %1291, label %1298

1291:                                             ; preds = %1288
  %1292 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1292, ptr noundef @.str.1638)
          to label %1293 unwind label %1294

1293:                                             ; preds = %1291
  call void @__cxa_throw(ptr %1292, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1294:                                             ; preds = %1291
  %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
  call void @__cxa_free_exception(ptr %1292) #6
  br label %1347

1298:                                             ; preds = %1288
  %1299 = load i32, ptr %44, align 4, !tbaa !186
  %1300 = icmp eq i32 %1299, 2
  br i1 %1300, label %1301, label %1308

1301:                                             ; preds = %1298
  %1302 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1302, ptr noundef @.str.1639)
          to label %1303 unwind label %1304

1303:                                             ; preds = %1301
  call void @__cxa_throw(ptr %1302, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1304:                                             ; preds = %1301
  %1305 = landingpad { ptr, i32 }
          cleanup
  %1306 = extractvalue { ptr, i32 } %1305, 0
  store ptr %1306, ptr %7, align 8
  %1307 = extractvalue { ptr, i32 } %1305, 1
  store i32 %1307, ptr %8, align 4
  call void @__cxa_free_exception(ptr %1302) #6
  br label %1347

1308:                                             ; preds = %1298
  %1309 = load i32, ptr %44, align 4, !tbaa !186
  %1310 = icmp eq i32 %1309, 3
  br i1 %1310, label %1311, label %1336

1311:                                             ; preds = %1308
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #6
  %1312 = load ptr, ptr %5, align 8, !tbaa !5
  %1313 = load i32, ptr %15, align 4, !tbaa !179
  %1314 = add i32 %1313, 1
  %1315 = zext i32 %1314 to i64
  %1316 = getelementptr inbounds i32, ptr %1312, i64 %1315
  %1317 = load i32, ptr %1316, align 4, !tbaa !179
  %1318 = call noundef i32 @_ZNK11spirv_cross8Compiler21evaluate_constant_u32Ej(ptr noundef nonnull align 8 dereferenceable(3176) %56, i32 noundef %1317)
  store i32 %1318, ptr %45, align 4, !tbaa !179
  %1319 = load i32, ptr %45, align 4, !tbaa !179
  %1320 = icmp ne i32 %1319, 4
  br i1 %1320, label %1321, label %1328

1321:                                             ; preds = %1311
  %1322 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1322, ptr noundef @.str.1614)
          to label %1323 unwind label %1324

1323:                                             ; preds = %1321
  call void @__cxa_throw(ptr %1322, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1324:                                             ; preds = %1321
  %1325 = landingpad { ptr, i32 }
          cleanup
  %1326 = extractvalue { ptr, i32 } %1325, 0
  store ptr %1326, ptr %7, align 8
  %1327 = extractvalue { ptr, i32 } %1325, 1
  store i32 %1327, ptr %8, align 4
  call void @__cxa_free_exception(ptr %1322) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #6
  br label %1347

1328:                                             ; preds = %1311
  %1329 = load i32, ptr %16, align 4, !tbaa !179
  %1330 = load i32, ptr %17, align 4, !tbaa !179
  %1331 = load ptr, ptr %5, align 8, !tbaa !5
  %1332 = load i32, ptr %15, align 4, !tbaa !179
  %1333 = zext i32 %1332 to i64
  %1334 = getelementptr inbounds i32, ptr %1331, i64 %1333
  %1335 = load i32, ptr %1334, align 4, !tbaa !179
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %1329, i32 noundef %1330, i32 noundef %1335, ptr noundef @.str.1640)
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #6
  br label %1343

1336:                                             ; preds = %1308
  %1337 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1337, ptr noundef @.str.1616)
          to label %1338 unwind label %1339

1338:                                             ; preds = %1336
  call void @__cxa_throw(ptr %1337, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1339:                                             ; preds = %1336
  %1340 = landingpad { ptr, i32 }
          cleanup
  %1341 = extractvalue { ptr, i32 } %1340, 0
  store ptr %1341, ptr %7, align 8
  %1342 = extractvalue { ptr, i32 } %1340, 1
  store i32 %1342, ptr %8, align 4
  call void @__cxa_free_exception(ptr %1337) #6
  br label %1347

1343:                                             ; preds = %1328
  br label %1344

1344:                                             ; preds = %1343
  br label %1345

1345:                                             ; preds = %1344
  br label %1346

1346:                                             ; preds = %1345, %1280
  store i32 5, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #6
  br label %1768

1347:                                             ; preds = %1339, %1324, %1304, %1294
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #6
  br label %1773

1348:                                             ; preds = %217
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #6
  %1349 = load ptr, ptr %5, align 8, !tbaa !5
  %1350 = load i32, ptr %15, align 4, !tbaa !179
  %1351 = add i32 %1350, 1
  store i32 %1351, ptr %15, align 4, !tbaa !179
  %1352 = zext i32 %1350 to i64
  %1353 = getelementptr inbounds i32, ptr %1349, i64 %1352
  %1354 = load i32, ptr %1353, align 4, !tbaa !179
  store i32 %1354, ptr %46, align 4, !tbaa !186
  %1355 = load i32, ptr %46, align 4, !tbaa !186
  %1356 = icmp eq i32 %1355, 0
  br i1 %1356, label %1357, label %1365

1357:                                             ; preds = %1348
  %1358 = load i32, ptr %16, align 4, !tbaa !179
  %1359 = load i32, ptr %17, align 4, !tbaa !179
  %1360 = load ptr, ptr %5, align 8, !tbaa !5
  %1361 = load i32, ptr %15, align 4, !tbaa !179
  %1362 = zext i32 %1361 to i64
  %1363 = getelementptr inbounds i32, ptr %1360, i64 %1362
  %1364 = load i32, ptr %1363, align 4, !tbaa !179
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %1358, i32 noundef %1359, i32 noundef %1364, ptr noundef @.str.1641)
  br label %1423

1365:                                             ; preds = %1348
  %1366 = load i32, ptr %46, align 4, !tbaa !186
  %1367 = icmp eq i32 %1366, 1
  br i1 %1367, label %1368, label %1375

1368:                                             ; preds = %1365
  %1369 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1369, ptr noundef @.str.1642)
          to label %1370 unwind label %1371

1370:                                             ; preds = %1368
  call void @__cxa_throw(ptr %1369, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1371:                                             ; preds = %1368
  %1372 = landingpad { ptr, i32 }
          cleanup
  %1373 = extractvalue { ptr, i32 } %1372, 0
  store ptr %1373, ptr %7, align 8
  %1374 = extractvalue { ptr, i32 } %1372, 1
  store i32 %1374, ptr %8, align 4
  call void @__cxa_free_exception(ptr %1369) #6
  br label %1424

1375:                                             ; preds = %1365
  %1376 = load i32, ptr %46, align 4, !tbaa !186
  %1377 = icmp eq i32 %1376, 2
  br i1 %1377, label %1378, label %1385

1378:                                             ; preds = %1375
  %1379 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1379, ptr noundef @.str.1643)
          to label %1380 unwind label %1381

1380:                                             ; preds = %1378
  call void @__cxa_throw(ptr %1379, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1381:                                             ; preds = %1378
  %1382 = landingpad { ptr, i32 }
          cleanup
  %1383 = extractvalue { ptr, i32 } %1382, 0
  store ptr %1383, ptr %7, align 8
  %1384 = extractvalue { ptr, i32 } %1382, 1
  store i32 %1384, ptr %8, align 4
  call void @__cxa_free_exception(ptr %1379) #6
  br label %1424

1385:                                             ; preds = %1375
  %1386 = load i32, ptr %46, align 4, !tbaa !186
  %1387 = icmp eq i32 %1386, 3
  br i1 %1387, label %1388, label %1413

1388:                                             ; preds = %1385
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #6
  %1389 = load ptr, ptr %5, align 8, !tbaa !5
  %1390 = load i32, ptr %15, align 4, !tbaa !179
  %1391 = add i32 %1390, 1
  %1392 = zext i32 %1391 to i64
  %1393 = getelementptr inbounds i32, ptr %1389, i64 %1392
  %1394 = load i32, ptr %1393, align 4, !tbaa !179
  %1395 = call noundef i32 @_ZNK11spirv_cross8Compiler21evaluate_constant_u32Ej(ptr noundef nonnull align 8 dereferenceable(3176) %56, i32 noundef %1394)
  store i32 %1395, ptr %47, align 4, !tbaa !179
  %1396 = load i32, ptr %47, align 4, !tbaa !179
  %1397 = icmp ne i32 %1396, 4
  br i1 %1397, label %1398, label %1405

1398:                                             ; preds = %1388
  %1399 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1399, ptr noundef @.str.1614)
          to label %1400 unwind label %1401

1400:                                             ; preds = %1398
  call void @__cxa_throw(ptr %1399, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1401:                                             ; preds = %1398
  %1402 = landingpad { ptr, i32 }
          cleanup
  %1403 = extractvalue { ptr, i32 } %1402, 0
  store ptr %1403, ptr %7, align 8
  %1404 = extractvalue { ptr, i32 } %1402, 1
  store i32 %1404, ptr %8, align 4
  call void @__cxa_free_exception(ptr %1399) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #6
  br label %1424

1405:                                             ; preds = %1388
  %1406 = load i32, ptr %16, align 4, !tbaa !179
  %1407 = load i32, ptr %17, align 4, !tbaa !179
  %1408 = load ptr, ptr %5, align 8, !tbaa !5
  %1409 = load i32, ptr %15, align 4, !tbaa !179
  %1410 = zext i32 %1409 to i64
  %1411 = getelementptr inbounds i32, ptr %1408, i64 %1410
  %1412 = load i32, ptr %1411, align 4, !tbaa !179
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %1406, i32 noundef %1407, i32 noundef %1412, ptr noundef @.str.1644)
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #6
  br label %1420

1413:                                             ; preds = %1385
  %1414 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1414, ptr noundef @.str.1616)
          to label %1415 unwind label %1416

1415:                                             ; preds = %1413
  call void @__cxa_throw(ptr %1414, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1416:                                             ; preds = %1413
  %1417 = landingpad { ptr, i32 }
          cleanup
  %1418 = extractvalue { ptr, i32 } %1417, 0
  store ptr %1418, ptr %7, align 8
  %1419 = extractvalue { ptr, i32 } %1417, 1
  store i32 %1419, ptr %8, align 4
  call void @__cxa_free_exception(ptr %1414) #6
  br label %1424

1420:                                             ; preds = %1405
  br label %1421

1421:                                             ; preds = %1420
  br label %1422

1422:                                             ; preds = %1421
  br label %1423

1423:                                             ; preds = %1422, %1357
  store i32 5, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #6
  br label %1768

1424:                                             ; preds = %1416, %1401, %1381, %1371
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #6
  br label %1773

1425:                                             ; preds = %217
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #6
  %1426 = load ptr, ptr %5, align 8, !tbaa !5
  %1427 = load i32, ptr %15, align 4, !tbaa !179
  %1428 = add i32 %1427, 1
  store i32 %1428, ptr %15, align 4, !tbaa !179
  %1429 = zext i32 %1427 to i64
  %1430 = getelementptr inbounds i32, ptr %1426, i64 %1429
  %1431 = load i32, ptr %1430, align 4, !tbaa !179
  store i32 %1431, ptr %48, align 4, !tbaa !186
  %1432 = load i32, ptr %48, align 4, !tbaa !186
  %1433 = icmp eq i32 %1432, 0
  br i1 %1433, label %1434, label %1442

1434:                                             ; preds = %1425
  %1435 = load i32, ptr %16, align 4, !tbaa !179
  %1436 = load i32, ptr %17, align 4, !tbaa !179
  %1437 = load ptr, ptr %5, align 8, !tbaa !5
  %1438 = load i32, ptr %15, align 4, !tbaa !179
  %1439 = zext i32 %1438 to i64
  %1440 = getelementptr inbounds i32, ptr %1437, i64 %1439
  %1441 = load i32, ptr %1440, align 4, !tbaa !179
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %1435, i32 noundef %1436, i32 noundef %1441, ptr noundef @.str.1645)
  br label %1500

1442:                                             ; preds = %1425
  %1443 = load i32, ptr %48, align 4, !tbaa !186
  %1444 = icmp eq i32 %1443, 1
  br i1 %1444, label %1445, label %1452

1445:                                             ; preds = %1442
  %1446 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1446, ptr noundef @.str.1646)
          to label %1447 unwind label %1448

1447:                                             ; preds = %1445
  call void @__cxa_throw(ptr %1446, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1448:                                             ; preds = %1445
  %1449 = landingpad { ptr, i32 }
          cleanup
  %1450 = extractvalue { ptr, i32 } %1449, 0
  store ptr %1450, ptr %7, align 8
  %1451 = extractvalue { ptr, i32 } %1449, 1
  store i32 %1451, ptr %8, align 4
  call void @__cxa_free_exception(ptr %1446) #6
  br label %1501

1452:                                             ; preds = %1442
  %1453 = load i32, ptr %48, align 4, !tbaa !186
  %1454 = icmp eq i32 %1453, 2
  br i1 %1454, label %1455, label %1462

1455:                                             ; preds = %1452
  %1456 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1456, ptr noundef @.str.1647)
          to label %1457 unwind label %1458

1457:                                             ; preds = %1455
  call void @__cxa_throw(ptr %1456, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1458:                                             ; preds = %1455
  %1459 = landingpad { ptr, i32 }
          cleanup
  %1460 = extractvalue { ptr, i32 } %1459, 0
  store ptr %1460, ptr %7, align 8
  %1461 = extractvalue { ptr, i32 } %1459, 1
  store i32 %1461, ptr %8, align 4
  call void @__cxa_free_exception(ptr %1456) #6
  br label %1501

1462:                                             ; preds = %1452
  %1463 = load i32, ptr %48, align 4, !tbaa !186
  %1464 = icmp eq i32 %1463, 3
  br i1 %1464, label %1465, label %1490

1465:                                             ; preds = %1462
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #6
  %1466 = load ptr, ptr %5, align 8, !tbaa !5
  %1467 = load i32, ptr %15, align 4, !tbaa !179
  %1468 = add i32 %1467, 1
  %1469 = zext i32 %1468 to i64
  %1470 = getelementptr inbounds i32, ptr %1466, i64 %1469
  %1471 = load i32, ptr %1470, align 4, !tbaa !179
  %1472 = call noundef i32 @_ZNK11spirv_cross8Compiler21evaluate_constant_u32Ej(ptr noundef nonnull align 8 dereferenceable(3176) %56, i32 noundef %1471)
  store i32 %1472, ptr %49, align 4, !tbaa !179
  %1473 = load i32, ptr %49, align 4, !tbaa !179
  %1474 = icmp ne i32 %1473, 4
  br i1 %1474, label %1475, label %1482

1475:                                             ; preds = %1465
  %1476 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1476, ptr noundef @.str.1614)
          to label %1477 unwind label %1478

1477:                                             ; preds = %1475
  call void @__cxa_throw(ptr %1476, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1478:                                             ; preds = %1475
  %1479 = landingpad { ptr, i32 }
          cleanup
  %1480 = extractvalue { ptr, i32 } %1479, 0
  store ptr %1480, ptr %7, align 8
  %1481 = extractvalue { ptr, i32 } %1479, 1
  store i32 %1481, ptr %8, align 4
  call void @__cxa_free_exception(ptr %1476) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #6
  br label %1501

1482:                                             ; preds = %1465
  %1483 = load i32, ptr %16, align 4, !tbaa !179
  %1484 = load i32, ptr %17, align 4, !tbaa !179
  %1485 = load ptr, ptr %5, align 8, !tbaa !5
  %1486 = load i32, ptr %15, align 4, !tbaa !179
  %1487 = zext i32 %1486 to i64
  %1488 = getelementptr inbounds i32, ptr %1485, i64 %1487
  %1489 = load i32, ptr %1488, align 4, !tbaa !179
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %1483, i32 noundef %1484, i32 noundef %1489, ptr noundef @.str.1648)
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #6
  br label %1497

1490:                                             ; preds = %1462
  %1491 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1491, ptr noundef @.str.1616)
          to label %1492 unwind label %1493

1492:                                             ; preds = %1490
  call void @__cxa_throw(ptr %1491, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1493:                                             ; preds = %1490
  %1494 = landingpad { ptr, i32 }
          cleanup
  %1495 = extractvalue { ptr, i32 } %1494, 0
  store ptr %1495, ptr %7, align 8
  %1496 = extractvalue { ptr, i32 } %1494, 1
  store i32 %1496, ptr %8, align 4
  call void @__cxa_free_exception(ptr %1491) #6
  br label %1501

1497:                                             ; preds = %1482
  br label %1498

1498:                                             ; preds = %1497
  br label %1499

1499:                                             ; preds = %1498
  br label %1500

1500:                                             ; preds = %1499, %1434
  store i32 5, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #6
  br label %1768

1501:                                             ; preds = %1493, %1478, %1458, %1448
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #6
  br label %1773

1502:                                             ; preds = %217
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #6
  %1503 = load ptr, ptr %5, align 8, !tbaa !5
  %1504 = load i32, ptr %15, align 4, !tbaa !179
  %1505 = add i32 %1504, 1
  store i32 %1505, ptr %15, align 4, !tbaa !179
  %1506 = zext i32 %1504 to i64
  %1507 = getelementptr inbounds i32, ptr %1503, i64 %1506
  %1508 = load i32, ptr %1507, align 4, !tbaa !179
  store i32 %1508, ptr %50, align 4, !tbaa !186
  %1509 = load i32, ptr %50, align 4, !tbaa !186
  %1510 = icmp eq i32 %1509, 0
  br i1 %1510, label %1511, label %1519

1511:                                             ; preds = %1502
  %1512 = load i32, ptr %16, align 4, !tbaa !179
  %1513 = load i32, ptr %17, align 4, !tbaa !179
  %1514 = load ptr, ptr %5, align 8, !tbaa !5
  %1515 = load i32, ptr %15, align 4, !tbaa !179
  %1516 = zext i32 %1515 to i64
  %1517 = getelementptr inbounds i32, ptr %1514, i64 %1516
  %1518 = load i32, ptr %1517, align 4, !tbaa !179
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %1512, i32 noundef %1513, i32 noundef %1518, ptr noundef @.str.1637)
  br label %1577

1519:                                             ; preds = %1502
  %1520 = load i32, ptr %50, align 4, !tbaa !186
  %1521 = icmp eq i32 %1520, 1
  br i1 %1521, label %1522, label %1529

1522:                                             ; preds = %1519
  %1523 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1523, ptr noundef @.str.1649)
          to label %1524 unwind label %1525

1524:                                             ; preds = %1522
  call void @__cxa_throw(ptr %1523, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1525:                                             ; preds = %1522
  %1526 = landingpad { ptr, i32 }
          cleanup
  %1527 = extractvalue { ptr, i32 } %1526, 0
  store ptr %1527, ptr %7, align 8
  %1528 = extractvalue { ptr, i32 } %1526, 1
  store i32 %1528, ptr %8, align 4
  call void @__cxa_free_exception(ptr %1523) #6
  br label %1578

1529:                                             ; preds = %1519
  %1530 = load i32, ptr %50, align 4, !tbaa !186
  %1531 = icmp eq i32 %1530, 2
  br i1 %1531, label %1532, label %1539

1532:                                             ; preds = %1529
  %1533 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1533, ptr noundef @.str.1650)
          to label %1534 unwind label %1535

1534:                                             ; preds = %1532
  call void @__cxa_throw(ptr %1533, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1535:                                             ; preds = %1532
  %1536 = landingpad { ptr, i32 }
          cleanup
  %1537 = extractvalue { ptr, i32 } %1536, 0
  store ptr %1537, ptr %7, align 8
  %1538 = extractvalue { ptr, i32 } %1536, 1
  store i32 %1538, ptr %8, align 4
  call void @__cxa_free_exception(ptr %1533) #6
  br label %1578

1539:                                             ; preds = %1529
  %1540 = load i32, ptr %50, align 4, !tbaa !186
  %1541 = icmp eq i32 %1540, 3
  br i1 %1541, label %1542, label %1567

1542:                                             ; preds = %1539
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #6
  %1543 = load ptr, ptr %5, align 8, !tbaa !5
  %1544 = load i32, ptr %15, align 4, !tbaa !179
  %1545 = add i32 %1544, 1
  %1546 = zext i32 %1545 to i64
  %1547 = getelementptr inbounds i32, ptr %1543, i64 %1546
  %1548 = load i32, ptr %1547, align 4, !tbaa !179
  %1549 = call noundef i32 @_ZNK11spirv_cross8Compiler21evaluate_constant_u32Ej(ptr noundef nonnull align 8 dereferenceable(3176) %56, i32 noundef %1548)
  store i32 %1549, ptr %51, align 4, !tbaa !179
  %1550 = load i32, ptr %51, align 4, !tbaa !179
  %1551 = icmp ne i32 %1550, 4
  br i1 %1551, label %1552, label %1559

1552:                                             ; preds = %1542
  %1553 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1553, ptr noundef @.str.1614)
          to label %1554 unwind label %1555

1554:                                             ; preds = %1552
  call void @__cxa_throw(ptr %1553, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1555:                                             ; preds = %1552
  %1556 = landingpad { ptr, i32 }
          cleanup
  %1557 = extractvalue { ptr, i32 } %1556, 0
  store ptr %1557, ptr %7, align 8
  %1558 = extractvalue { ptr, i32 } %1556, 1
  store i32 %1558, ptr %8, align 4
  call void @__cxa_free_exception(ptr %1553) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #6
  br label %1578

1559:                                             ; preds = %1542
  %1560 = load i32, ptr %16, align 4, !tbaa !179
  %1561 = load i32, ptr %17, align 4, !tbaa !179
  %1562 = load ptr, ptr %5, align 8, !tbaa !5
  %1563 = load i32, ptr %15, align 4, !tbaa !179
  %1564 = zext i32 %1563 to i64
  %1565 = getelementptr inbounds i32, ptr %1562, i64 %1564
  %1566 = load i32, ptr %1565, align 4, !tbaa !179
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %1560, i32 noundef %1561, i32 noundef %1566, ptr noundef @.str.1640)
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #6
  br label %1574

1567:                                             ; preds = %1539
  %1568 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1568, ptr noundef @.str.1616)
          to label %1569 unwind label %1570

1569:                                             ; preds = %1567
  call void @__cxa_throw(ptr %1568, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1570:                                             ; preds = %1567
  %1571 = landingpad { ptr, i32 }
          cleanup
  %1572 = extractvalue { ptr, i32 } %1571, 0
  store ptr %1572, ptr %7, align 8
  %1573 = extractvalue { ptr, i32 } %1571, 1
  store i32 %1573, ptr %8, align 4
  call void @__cxa_free_exception(ptr %1568) #6
  br label %1578

1574:                                             ; preds = %1559
  br label %1575

1575:                                             ; preds = %1574
  br label %1576

1576:                                             ; preds = %1575
  br label %1577

1577:                                             ; preds = %1576, %1511
  store i32 5, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #6
  br label %1768

1578:                                             ; preds = %1570, %1555, %1535, %1525
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #6
  br label %1773

1579:                                             ; preds = %217
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #6
  %1580 = load ptr, ptr %5, align 8, !tbaa !5
  %1581 = load i32, ptr %15, align 4, !tbaa !179
  %1582 = add i32 %1581, 1
  store i32 %1582, ptr %15, align 4, !tbaa !179
  %1583 = zext i32 %1581 to i64
  %1584 = getelementptr inbounds i32, ptr %1580, i64 %1583
  %1585 = load i32, ptr %1584, align 4, !tbaa !179
  store i32 %1585, ptr %52, align 4, !tbaa !186
  %1586 = load i32, ptr %52, align 4, !tbaa !186
  %1587 = icmp eq i32 %1586, 0
  br i1 %1587, label %1588, label %1596

1588:                                             ; preds = %1579
  %1589 = load i32, ptr %16, align 4, !tbaa !179
  %1590 = load i32, ptr %17, align 4, !tbaa !179
  %1591 = load ptr, ptr %5, align 8, !tbaa !5
  %1592 = load i32, ptr %15, align 4, !tbaa !179
  %1593 = zext i32 %1592 to i64
  %1594 = getelementptr inbounds i32, ptr %1591, i64 %1593
  %1595 = load i32, ptr %1594, align 4, !tbaa !179
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %1589, i32 noundef %1590, i32 noundef %1595, ptr noundef @.str.1641)
  br label %1654

1596:                                             ; preds = %1579
  %1597 = load i32, ptr %52, align 4, !tbaa !186
  %1598 = icmp eq i32 %1597, 1
  br i1 %1598, label %1599, label %1606

1599:                                             ; preds = %1596
  %1600 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1600, ptr noundef @.str.1651)
          to label %1601 unwind label %1602

1601:                                             ; preds = %1599
  call void @__cxa_throw(ptr %1600, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1602:                                             ; preds = %1599
  %1603 = landingpad { ptr, i32 }
          cleanup
  %1604 = extractvalue { ptr, i32 } %1603, 0
  store ptr %1604, ptr %7, align 8
  %1605 = extractvalue { ptr, i32 } %1603, 1
  store i32 %1605, ptr %8, align 4
  call void @__cxa_free_exception(ptr %1600) #6
  br label %1655

1606:                                             ; preds = %1596
  %1607 = load i32, ptr %52, align 4, !tbaa !186
  %1608 = icmp eq i32 %1607, 2
  br i1 %1608, label %1609, label %1616

1609:                                             ; preds = %1606
  %1610 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1610, ptr noundef @.str.1652)
          to label %1611 unwind label %1612

1611:                                             ; preds = %1609
  call void @__cxa_throw(ptr %1610, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1612:                                             ; preds = %1609
  %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
  call void @__cxa_free_exception(ptr %1610) #6
  br label %1655

1616:                                             ; preds = %1606
  %1617 = load i32, ptr %52, align 4, !tbaa !186
  %1618 = icmp eq i32 %1617, 3
  br i1 %1618, label %1619, label %1644

1619:                                             ; preds = %1616
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #6
  %1620 = load ptr, ptr %5, align 8, !tbaa !5
  %1621 = load i32, ptr %15, align 4, !tbaa !179
  %1622 = add i32 %1621, 1
  %1623 = zext i32 %1622 to i64
  %1624 = getelementptr inbounds i32, ptr %1620, i64 %1623
  %1625 = load i32, ptr %1624, align 4, !tbaa !179
  %1626 = call noundef i32 @_ZNK11spirv_cross8Compiler21evaluate_constant_u32Ej(ptr noundef nonnull align 8 dereferenceable(3176) %56, i32 noundef %1625)
  store i32 %1626, ptr %53, align 4, !tbaa !179
  %1627 = load i32, ptr %53, align 4, !tbaa !179
  %1628 = icmp ne i32 %1627, 4
  br i1 %1628, label %1629, label %1636

1629:                                             ; preds = %1619
  %1630 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1630, ptr noundef @.str.1614)
          to label %1631 unwind label %1632

1631:                                             ; preds = %1629
  call void @__cxa_throw(ptr %1630, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1632:                                             ; preds = %1629
  %1633 = landingpad { ptr, i32 }
          cleanup
  %1634 = extractvalue { ptr, i32 } %1633, 0
  store ptr %1634, ptr %7, align 8
  %1635 = extractvalue { ptr, i32 } %1633, 1
  store i32 %1635, ptr %8, align 4
  call void @__cxa_free_exception(ptr %1630) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #6
  br label %1655

1636:                                             ; preds = %1619
  %1637 = load i32, ptr %16, align 4, !tbaa !179
  %1638 = load i32, ptr %17, align 4, !tbaa !179
  %1639 = load ptr, ptr %5, align 8, !tbaa !5
  %1640 = load i32, ptr %15, align 4, !tbaa !179
  %1641 = zext i32 %1640 to i64
  %1642 = getelementptr inbounds i32, ptr %1639, i64 %1641
  %1643 = load i32, ptr %1642, align 4, !tbaa !179
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %1637, i32 noundef %1638, i32 noundef %1643, ptr noundef @.str.1644)
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #6
  br label %1651

1644:                                             ; preds = %1616
  %1645 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1645, ptr noundef @.str.1616)
          to label %1646 unwind label %1647

1646:                                             ; preds = %1644
  call void @__cxa_throw(ptr %1645, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1647:                                             ; preds = %1644
  %1648 = landingpad { ptr, i32 }
          cleanup
  %1649 = extractvalue { ptr, i32 } %1648, 0
  store ptr %1649, ptr %7, align 8
  %1650 = extractvalue { ptr, i32 } %1648, 1
  store i32 %1650, ptr %8, align 4
  call void @__cxa_free_exception(ptr %1645) #6
  br label %1655

1651:                                             ; preds = %1636
  br label %1652

1652:                                             ; preds = %1651
  br label %1653

1653:                                             ; preds = %1652
  br label %1654

1654:                                             ; preds = %1653, %1588
  store i32 5, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #6
  br label %1768

1655:                                             ; preds = %1647, %1632, %1612, %1602
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #6
  br label %1773

1656:                                             ; preds = %217
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #6
  %1657 = load ptr, ptr %5, align 8, !tbaa !5
  %1658 = load i32, ptr %15, align 4, !tbaa !179
  %1659 = add i32 %1658, 1
  store i32 %1659, ptr %15, align 4, !tbaa !179
  %1660 = zext i32 %1658 to i64
  %1661 = getelementptr inbounds i32, ptr %1657, i64 %1660
  %1662 = load i32, ptr %1661, align 4, !tbaa !179
  store i32 %1662, ptr %54, align 4, !tbaa !186
  %1663 = load i32, ptr %54, align 4, !tbaa !186
  %1664 = icmp eq i32 %1663, 0
  br i1 %1664, label %1665, label %1673

1665:                                             ; preds = %1656
  %1666 = load i32, ptr %16, align 4, !tbaa !179
  %1667 = load i32, ptr %17, align 4, !tbaa !179
  %1668 = load ptr, ptr %5, align 8, !tbaa !5
  %1669 = load i32, ptr %15, align 4, !tbaa !179
  %1670 = zext i32 %1669 to i64
  %1671 = getelementptr inbounds i32, ptr %1668, i64 %1670
  %1672 = load i32, ptr %1671, align 4, !tbaa !179
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %1666, i32 noundef %1667, i32 noundef %1672, ptr noundef @.str.1645)
  br label %1731

1673:                                             ; preds = %1656
  %1674 = load i32, ptr %54, align 4, !tbaa !186
  %1675 = icmp eq i32 %1674, 1
  br i1 %1675, label %1676, label %1683

1676:                                             ; preds = %1673
  %1677 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1677, ptr noundef @.str.1653)
          to label %1678 unwind label %1679

1678:                                             ; preds = %1676
  call void @__cxa_throw(ptr %1677, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1679:                                             ; preds = %1676
  %1680 = landingpad { ptr, i32 }
          cleanup
  %1681 = extractvalue { ptr, i32 } %1680, 0
  store ptr %1681, ptr %7, align 8
  %1682 = extractvalue { ptr, i32 } %1680, 1
  store i32 %1682, ptr %8, align 4
  call void @__cxa_free_exception(ptr %1677) #6
  br label %1732

1683:                                             ; preds = %1673
  %1684 = load i32, ptr %54, align 4, !tbaa !186
  %1685 = icmp eq i32 %1684, 2
  br i1 %1685, label %1686, label %1693

1686:                                             ; preds = %1683
  %1687 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1687, ptr noundef @.str.1654)
          to label %1688 unwind label %1689

1688:                                             ; preds = %1686
  call void @__cxa_throw(ptr %1687, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1689:                                             ; preds = %1686
  %1690 = landingpad { ptr, i32 }
          cleanup
  %1691 = extractvalue { ptr, i32 } %1690, 0
  store ptr %1691, ptr %7, align 8
  %1692 = extractvalue { ptr, i32 } %1690, 1
  store i32 %1692, ptr %8, align 4
  call void @__cxa_free_exception(ptr %1687) #6
  br label %1732

1693:                                             ; preds = %1683
  %1694 = load i32, ptr %54, align 4, !tbaa !186
  %1695 = icmp eq i32 %1694, 3
  br i1 %1695, label %1696, label %1721

1696:                                             ; preds = %1693
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #6
  %1697 = load ptr, ptr %5, align 8, !tbaa !5
  %1698 = load i32, ptr %15, align 4, !tbaa !179
  %1699 = add i32 %1698, 1
  %1700 = zext i32 %1699 to i64
  %1701 = getelementptr inbounds i32, ptr %1697, i64 %1700
  %1702 = load i32, ptr %1701, align 4, !tbaa !179
  %1703 = call noundef i32 @_ZNK11spirv_cross8Compiler21evaluate_constant_u32Ej(ptr noundef nonnull align 8 dereferenceable(3176) %56, i32 noundef %1702)
  store i32 %1703, ptr %55, align 4, !tbaa !179
  %1704 = load i32, ptr %55, align 4, !tbaa !179
  %1705 = icmp ne i32 %1704, 4
  br i1 %1705, label %1706, label %1713

1706:                                             ; preds = %1696
  %1707 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1707, ptr noundef @.str.1614)
          to label %1708 unwind label %1709

1708:                                             ; preds = %1706
  call void @__cxa_throw(ptr %1707, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1709:                                             ; preds = %1706
  %1710 = landingpad { ptr, i32 }
          cleanup
  %1711 = extractvalue { ptr, i32 } %1710, 0
  store ptr %1711, ptr %7, align 8
  %1712 = extractvalue { ptr, i32 } %1710, 1
  store i32 %1712, ptr %8, align 4
  call void @__cxa_free_exception(ptr %1707) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #6
  br label %1732

1713:                                             ; preds = %1696
  %1714 = load i32, ptr %16, align 4, !tbaa !179
  %1715 = load i32, ptr %17, align 4, !tbaa !179
  %1716 = load ptr, ptr %5, align 8, !tbaa !5
  %1717 = load i32, ptr %15, align 4, !tbaa !179
  %1718 = zext i32 %1717 to i64
  %1719 = getelementptr inbounds i32, ptr %1716, i64 %1718
  %1720 = load i32, ptr %1719, align 4, !tbaa !179
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %1714, i32 noundef %1715, i32 noundef %1720, ptr noundef @.str.1648)
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #6
  br label %1728

1721:                                             ; preds = %1693
  %1722 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1722, ptr noundef @.str.1616)
          to label %1723 unwind label %1724

1723:                                             ; preds = %1721
  call void @__cxa_throw(ptr %1722, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1724:                                             ; preds = %1721
  %1725 = landingpad { ptr, i32 }
          cleanup
  %1726 = extractvalue { ptr, i32 } %1725, 0
  store ptr %1726, ptr %7, align 8
  %1727 = extractvalue { ptr, i32 } %1725, 1
  store i32 %1727, ptr %8, align 4
  call void @__cxa_free_exception(ptr %1722) #6
  br label %1732

1728:                                             ; preds = %1713
  br label %1729

1729:                                             ; preds = %1728
  br label %1730

1730:                                             ; preds = %1729
  br label %1731

1731:                                             ; preds = %1730, %1665
  store i32 5, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #6
  br label %1768

1732:                                             ; preds = %1724, %1709, %1689, %1679
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #6
  br label %1773

1733:                                             ; preds = %217
  %1734 = load i32, ptr %16, align 4, !tbaa !179
  %1735 = load i32, ptr %17, align 4, !tbaa !179
  %1736 = load ptr, ptr %5, align 8, !tbaa !5
  %1737 = load i32, ptr %15, align 4, !tbaa !179
  %1738 = zext i32 %1737 to i64
  %1739 = getelementptr inbounds i32, ptr %1736, i64 %1738
  %1740 = load i32, ptr %1739, align 4, !tbaa !179
  %1741 = load ptr, ptr %5, align 8, !tbaa !5
  %1742 = load i32, ptr %15, align 4, !tbaa !179
  %1743 = add i32 %1742, 1
  %1744 = zext i32 %1743 to i64
  %1745 = getelementptr inbounds i32, ptr %1741, i64 %1744
  %1746 = load i32, ptr %1745, align 4, !tbaa !179
  call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %1734, i32 noundef %1735, i32 noundef %1740, i32 noundef %1746, ptr noundef @.str.1655)
  br label %1768

1747:                                             ; preds = %217
  %1748 = load i32, ptr %16, align 4, !tbaa !179
  %1749 = load i32, ptr %17, align 4, !tbaa !179
  %1750 = load ptr, ptr %5, align 8, !tbaa !5
  %1751 = load i32, ptr %15, align 4, !tbaa !179
  %1752 = zext i32 %1751 to i64
  %1753 = getelementptr inbounds i32, ptr %1750, i64 %1752
  %1754 = load i32, ptr %1753, align 4, !tbaa !179
  %1755 = load ptr, ptr %5, align 8, !tbaa !5
  %1756 = load i32, ptr %15, align 4, !tbaa !179
  %1757 = add i32 %1756, 1
  %1758 = zext i32 %1757 to i64
  %1759 = getelementptr inbounds i32, ptr %1755, i64 %1758
  %1760 = load i32, ptr %1759, align 4, !tbaa !179
  call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %1748, i32 noundef %1749, i32 noundef %1754, i32 noundef %1760, ptr noundef @.str.1656)
  br label %1768

1761:                                             ; preds = %217
  %1762 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1762, ptr noundef @.str.1657)
          to label %1763 unwind label %1764

1763:                                             ; preds = %1761
  call void @__cxa_throw(ptr %1762, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1764:                                             ; preds = %1761
  %1765 = landingpad { ptr, i32 }
          cleanup
  %1766 = extractvalue { ptr, i32 } %1765, 0
  store ptr %1766, ptr %7, align 8
  %1767 = extractvalue { ptr, i32 } %1765, 1
  store i32 %1767, ptr %8, align 4
  call void @__cxa_free_exception(ptr %1762) #6
  br label %1773

1768:                                             ; preds = %1747, %1733, %1731, %1654, %1577, %1500, %1423, %1346, %1269, %1188, %1107, %1026, %945, %868, %791, %712, %633, %554, %469, %468, %448, %415, %401, %387, %373, %372, %317, %307, %293, %283, %275, %267, %253, %252
  %1769 = load i32, ptr %17, align 4, !tbaa !179
  call void @_ZN11spirv_cross12CompilerGLSL37register_control_dependent_expressionEj(ptr noundef nonnull align 8 dereferenceable(9848) %56, i32 noundef %1769)
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #6
  store i32 0, ptr %11, align 4
  br label %1770

1770:                                             ; preds = %1768, %86
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #6
  %1771 = load i32, ptr %11, align 4
  switch i32 %1771, label %1781 [
    i32 0, label %1772
    i32 1, label %1772
  ]

1772:                                             ; preds = %1770, %1770
  ret void

1773:                                             ; preds = %1764, %1732, %1655, %1578, %1501, %1424, %1347, %1270, %1189, %1108, %1027, %946, %869, %792, %713, %634, %555, %368, %251, %236, %213
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #6
  br label %1774

1774:                                             ; preds = %1773, %178, %160, %149, %138, %128
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #6
  br label %1775

1775:                                             ; preds = %1774, %102, %95, %73
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #6
  br label %1776

1776:                                             ; preds = %1775
  %1777 = load ptr, ptr %7, align 8
  %1778 = load i32, ptr %8, align 4
  %1779 = insertvalue { ptr, i32 } poison, ptr %1777, 0
  %1780 = insertvalue { ptr, i32 } %1779, i32 %1778, 1
  resume { ptr, i32 } %1780

1781:                                             ; preds = %1770
  unreachable
}

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

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

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

@_ZTIN11spirv_cross13CompilerErrorE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.1581 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.1582 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.1583 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.1584 = external hidden unnamed_addr constant [84 x i8], align 1
@.str.1585 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.1586 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.1587 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.1588 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.1589 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.1590 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.1591 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.1592 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.1593 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.1594 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.1595 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.1596 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.1597 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.1598 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.1599 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.1600 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.1601 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.1602 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1603 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.1604 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.1605 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.1606 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.1607 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.1608 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.1609 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.1610 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.1611 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.1612 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.1613 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.1614 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.1615 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.1616 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.1617 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.1618 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.1619 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.1620 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.1621 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.1622 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.1623 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.1624 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.1625 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.1626 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.1627 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.1628 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.1629 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.1630 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.1631 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.1632 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.1633 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.1634 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.1635 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.1636 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.1637 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.1638 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.1639 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.1640 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.1641 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.1642 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.1643 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.1644 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.1645 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.1646 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.1647 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.1648 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.1649 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.1650 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.1651 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.1652 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.1653 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.1654 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.1655 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.1656 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.1657 = external hidden unnamed_addr constant [29 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 nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options6is_iosEv(ptr noundef nonnull align 4 dereferenceable(137)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK11spirv_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 ptr @_ZNK11spirv_cross8Compiler6streamERKNS_11InstructionE(ptr noundef nonnull align 8 dereferenceable(3176), ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef i32 @_ZN11spirv_crossL20to_unsigned_basetypeEj(i32 noundef) local_unnamed_addr #4

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

declare noundef nonnull align 8 dereferenceable(236) ptr @_ZN11spirv_cross12CompilerGLSL7emit_opEjjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbb(ptr noundef nonnull align 8 dereferenceable(9848), i32 noundef, i32 noundef, ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext, i1 noundef zeroext) local_unnamed_addr #5

declare noundef i32 @_ZNK11spirv_cross12CompilerGLSL33get_integer_width_for_instructionERKNS_11InstructionE(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #5

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef i32 @_ZN11spirv_crossL18to_signed_basetypeEj(i32 noundef) local_unnamed_addr #4

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

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

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

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

; 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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11spirv_cross11CompilerMSL16emit_subgroup_opERKNS_11InstructionE(ptr noundef nonnull align 8 dereferenceable(12482) %0, ptr noundef nonnull align 4 dereferenceable(12) %1) unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca %"class.std::__cxx11::basic_string", align 8
  %4 = alloca %"class.std::allocator.71", align 1
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca %"class.std::allocator.71", align 1
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.std::allocator.71", align 1
  %9 = tail call noundef ptr @_ZNK11spirv_cross8Compiler6streamERKNS_11InstructionE(ptr noundef nonnull align 8 dereferenceable(3176) %0, ptr noundef nonnull align 4 dereferenceable(12) %1)
  %10 = load i16, ptr %1, align 4, !tbaa !5
  %11 = getelementptr inbounds i8, ptr %0, i64 10036
  %12 = getelementptr inbounds i8, ptr %0, i64 10154
  %13 = load i8, ptr %12, align 2, !tbaa !11, !range !175, !noundef !176
  %14 = trunc nuw i8 %13 to i1
  br i1 %14, label %15, label %33

15:                                               ; preds = %2
  %.not543 = icmp eq i16 %10, 333
  br i1 %.not543, label %21, label %16

16:                                               ; preds = %15
  %17 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef nonnull @.str.1581)
          to label %18 unwind label %19

18:                                               ; preds = %16
  tail call void @__cxa_throw(ptr nonnull %17, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

19:                                               ; preds = %16
  %20 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %17) #6
  br label %833

21:                                               ; preds = %15
  %22 = load i32, ptr %9, align 4, !tbaa !177
  %23 = getelementptr inbounds i8, ptr %9, i64 4
  %24 = load i32, ptr %23, align 4, !tbaa !177
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %4) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull @.str.1582, ptr noundef nonnull align 1 dereferenceable(1) %4)
          to label %25 unwind label %28

25:                                               ; preds = %21
  %26 = invoke noundef nonnull align 8 dereferenceable(236) ptr @_ZN11spirv_cross12CompilerGLSL7emit_opEjjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbb(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %22, i32 noundef %24, ptr noundef nonnull align 8 dereferenceable(32) %3, i1 noundef zeroext true, i1 noundef zeroext false)
          to label %27 unwind label %30

27:                                               ; preds = %25
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #6
  br label %832

28:                                               ; preds = %21
  %29 = landingpad { ptr, i32 }
          cleanup
  br label %32

30:                                               ; preds = %25
  %31 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #6
  br label %32

32:                                               ; preds = %30, %28
  %.pn544 = phi { ptr, i32 } [ %31, %30 ], [ %29, %28 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #6
  br label %833

33:                                               ; preds = %2
  %34 = tail call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options20supports_msl_versionEjjj(ptr noundef nonnull align 4 dereferenceable(137) %11, i32 noundef 2, i32 noundef 0, i32 noundef 0)
  br i1 %34, label %40, label %35

35:                                               ; preds = %33
  %36 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %36, ptr noundef nonnull @.str.1583)
          to label %37 unwind label %38

37:                                               ; preds = %35
  tail call void @__cxa_throw(ptr nonnull %36, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

38:                                               ; preds = %35
  %39 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %36) #6
  br label %833

40:                                               ; preds = %33
  %41 = tail call noundef i32 @_ZNK11spirv_cross12CompilerGLSL33get_integer_width_for_instructionERKNS_11InstructionE(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 4 dereferenceable(12) %1)
  %42 = tail call noundef i32 @_ZN11spirv_crossL18to_signed_basetypeEj(i32 noundef %41)
  %43 = tail call noundef i32 @_ZN11spirv_crossL20to_unsigned_basetypeEj(i32 noundef %41)
  %44 = tail call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options6is_iosEv(ptr noundef nonnull align 4 dereferenceable(137) %11)
  br i1 %44, label %45, label %78

45:                                               ; preds = %40
  %46 = tail call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options20supports_msl_versionEjjj(ptr noundef nonnull align 4 dereferenceable(137) %11, i32 noundef 2, i32 noundef 3, i32 noundef 0)
  br i1 %46, label %47, label %51

47:                                               ; preds = %45
  %48 = getelementptr inbounds i8, ptr %0, i64 10153
  %49 = load i8, ptr %48, align 1, !tbaa !178, !range !175, !noundef !176
  %50 = trunc nuw i8 %49 to i1
  br i1 %50, label %78, label %51

51:                                               ; preds = %47, %45
  switch i16 %10, label %52 [
    i16 338, label %57
    i16 333, label %64
    i16 335, label %71
    i16 334, label %71
    i16 336, label %71
    i16 339, label %71
    i16 340, label %71
    i16 341, label %71
    i16 343, label %71
    i16 344, label %71
    i16 342, label %71
    i16 4421, label %71
    i16 4428, label %71
    i16 4429, label %71
    i16 4430, label %71
    i16 337, label %78
    i16 345, label %78
    i16 346, label %78
    i16 347, label %78
    i16 348, label %78
    i16 366, label %78
    i16 365, label %78
    i16 4432, label %78
  ]

52:                                               ; preds = %51
  %53 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %53, ptr noundef nonnull @.str.1584)
          to label %54 unwind label %55

54:                                               ; preds = %52
  tail call void @__cxa_throw(ptr nonnull %53, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

55:                                               ; preds = %52
  %56 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %53) #6
  br label %833

57:                                               ; preds = %51
  %58 = tail call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options20supports_msl_versionEjjj(ptr noundef nonnull align 4 dereferenceable(137) %11, i32 noundef 2, i32 noundef 2, i32 noundef 0)
  br i1 %58, label %78, label %59

59:                                               ; preds = %57
  %60 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %60, ptr noundef nonnull @.str.1585)
          to label %61 unwind label %62

61:                                               ; preds = %59
  tail call void @__cxa_throw(ptr nonnull %60, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

62:                                               ; preds = %59
  %63 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %60) #6
  br label %833

64:                                               ; preds = %51
  %65 = tail call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options20supports_msl_versionEjjj(ptr noundef nonnull align 4 dereferenceable(137) %11, i32 noundef 2, i32 noundef 2, i32 noundef 0)
  br i1 %65, label %78, label %66

66:                                               ; preds = %64
  %67 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %67, ptr noundef nonnull @.str.1586)
          to label %68 unwind label %69

68:                                               ; preds = %66
  tail call void @__cxa_throw(ptr nonnull %67, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

69:                                               ; preds = %66
  %70 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %67) #6
  br label %833

71:                                               ; preds = %51, %51, %51, %51, %51, %51, %51, %51, %51, %51, %51, %51, %51
  %72 = tail call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options20supports_msl_versionEjjj(ptr noundef nonnull align 4 dereferenceable(137) %11, i32 noundef 2, i32 noundef 2, i32 noundef 0)
  br i1 %72, label %78, label %73

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

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

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

78:                                               ; preds = %57, %64, %71, %51, %51, %51, %51, %51, %51, %51, %51, %47, %40
  %79 = tail call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options8is_macosEv(ptr noundef nonnull align 4 dereferenceable(137) %11)
  br i1 %79, label %80, label %88

80:                                               ; preds = %78
  %81 = tail call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options20supports_msl_versionEjjj(ptr noundef nonnull align 4 dereferenceable(137) %11, i32 noundef 2, i32 noundef 1, i32 noundef 0)
  br i1 %81, label %88, label %82

82:                                               ; preds = %80
  switch i16 %10, label %83 [
    i16 337, label %88
    i16 345, label %88
    i16 346, label %88
    i16 347, label %88
    i16 348, label %88
    i16 4432, label %88
  ]

83:                                               ; preds = %82
  %84 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %84, ptr noundef nonnull @.str.1588)
          to label %85 unwind label %86

85:                                               ; preds = %83
  tail call void @__cxa_throw(ptr nonnull %84, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

86:                                               ; preds = %83
  %87 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %84) #6
  br label %833

88:                                               ; preds = %82, %82, %82, %82, %82, %82, %80, %78
  %89 = load i32, ptr %9, align 4, !tbaa !177
  %90 = getelementptr inbounds i8, ptr %9, i64 4
  %91 = load i32, ptr %90, align 4, !tbaa !177
  %switch.tableidx = add i16 %10, -4421
  %92 = icmp ult i16 %switch.tableidx, 12
  br i1 %92, label %switch.hole_check, label %93

93:                                               ; preds = %switch.hole_check, %88
  %94 = getelementptr inbounds i8, ptr %9, i64 8
  %95 = load i32, ptr %94, align 4, !tbaa !177
  %96 = tail call noundef i32 @_ZNK11spirv_cross8Compiler21evaluate_constant_u32Ej(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %95)
  %.not = icmp eq i32 %96, 3
  br i1 %.not, label %.thread, label %97

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

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

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

switch.hole_check:                                ; preds = %88
  %switch.shifted = lshr i16 2947, %switch.tableidx
  %switch.lobit = trunc i16 %switch.shifted to i1
  br i1 %switch.lobit, label %.thread, label %93

.thread:                                          ; preds = %switch.hole_check, %93
  %.0471551 = phi i32 [ 3, %93 ], [ 2, %switch.hole_check ]
  switch i16 %10, label %826 [
    i16 333, label %102
    i16 337, label %122
    i16 4432, label %122
    i16 338, label %128
    i16 4422, label %128
    i16 339, label %132
    i16 4421, label %132
    i16 340, label %136
    i16 341, label %142
    i16 343, label %148
    i16 344, label %154
    i16 342, label %160
    i16 345, label %188
    i16 346, label %194
    i16 347, label %200
    i16 348, label %206
    i16 334, label %212
    i16 4428, label %212
    i16 335, label %219
    i16 4429, label %219
    i16 336, label %226
    i16 4430, label %226
    i16 350, label %230
    i16 352, label %265
    i16 349, label %300
    i16 351, label %335
    i16 355, label %370
    i16 358, label %407
    i16 353, label %444
    i16 356, label %481
    i16 354, label %518
    i16 357, label %555
    i16 359, label %592
    i16 360, label %629
    i16 361, label %666
    i16 362, label %703
    i16 363, label %740
    i16 364, label %777
    i16 366, label %814
    i16 365, label %820
  ]

102:                                              ; preds = %.thread
  %103 = tail call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options23use_quadgroup_operationEv(ptr noundef nonnull align 4 dereferenceable(137) %11)
  br i1 %103, label %104, label %113

104:                                              ; preds = %102
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %6) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull @.str.1590, ptr noundef nonnull align 1 dereferenceable(1) %6)
          to label %105 unwind label %108

105:                                              ; preds = %104
  %106 = invoke noundef nonnull align 8 dereferenceable(236) ptr @_ZN11spirv_cross12CompilerGLSL7emit_opEjjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbb(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, ptr noundef nonnull align 8 dereferenceable(32) %5, i1 noundef zeroext false, i1 noundef zeroext false)
          to label %107 unwind label %110

107:                                              ; preds = %105
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #6
  br label %831

108:                                              ; preds = %104
  %109 = landingpad { ptr, i32 }
          cleanup
  br label %112

110:                                              ; preds = %105
  %111 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #6
  br label %112

112:                                              ; preds = %110, %108
  %.pn538 = phi { ptr, i32 } [ %111, %110 ], [ %109, %108 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #6
  br label %833

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

114:                                              ; preds = %113
  %115 = invoke noundef nonnull align 8 dereferenceable(236) ptr @_ZN11spirv_cross12CompilerGLSL7emit_opEjjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbb(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, ptr noundef nonnull align 8 dereferenceable(32) %7, i1 noundef zeroext false, i1 noundef zeroext false)
          to label %116 unwind label %119

116:                                              ; preds = %114
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #6
  br label %831

117:                                              ; preds = %113
  %118 = landingpad { ptr, i32 }
          cleanup
  br label %121

119:                                              ; preds = %114
  %120 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #6
  br label %121

121:                                              ; preds = %119, %117
  %.pn536 = phi { ptr, i32 } [ %120, %119 ], [ %118, %117 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #6
  br label %833

122:                                              ; preds = %.thread, %.thread
  %123 = zext nneg i32 %.0471551 to i64
  %124 = getelementptr inbounds i32, ptr %9, i64 %123
  %125 = load i32, ptr %124, align 4, !tbaa !177
  %126 = getelementptr inbounds i8, ptr %124, i64 4
  %127 = load i32, ptr %126, align 4, !tbaa !177
  tail call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %125, i32 noundef %127, ptr noundef nonnull @.str.1592)
  br label %831

128:                                              ; preds = %.thread, %.thread
  %129 = zext nneg i32 %.0471551 to i64
  %130 = getelementptr inbounds i32, ptr %9, i64 %129
  %131 = load i32, ptr %130, align 4, !tbaa !177
  tail call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %131, ptr noundef nonnull @.str.1593)
  br label %831

132:                                              ; preds = %.thread, %.thread
  %133 = zext nneg i32 %.0471551 to i64
  %134 = getelementptr inbounds i32, ptr %9, i64 %133
  %135 = load i32, ptr %134, align 4, !tbaa !177
  tail call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %135, ptr noundef nonnull @.str.1594)
  br label %831

136:                                              ; preds = %.thread
  %137 = zext nneg i32 %.0471551 to i64
  %138 = getelementptr inbounds i32, ptr %9, i64 %137
  %139 = load i32, ptr %138, align 4, !tbaa !177
  %140 = getelementptr inbounds i8, ptr %0, i64 9952
  %141 = load i32, ptr %140, align 8, !tbaa !179
  tail call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %139, i32 noundef %141, ptr noundef nonnull @.str.1595)
  br label %831

142:                                              ; preds = %.thread
  %143 = zext nneg i32 %.0471551 to i64
  %144 = getelementptr inbounds i32, ptr %9, i64 %143
  %145 = load i32, ptr %144, align 4, !tbaa !177
  %146 = getelementptr inbounds i8, ptr %144, i64 4
  %147 = load i32, ptr %146, align 4, !tbaa !177
  tail call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %145, i32 noundef %147, ptr noundef nonnull @.str.1595)
  br label %831

148:                                              ; preds = %.thread
  %149 = zext nneg i32 %.0471551 to i64
  %150 = getelementptr inbounds i32, ptr %9, i64 %149
  %151 = load i32, ptr %150, align 4, !tbaa !177
  %152 = getelementptr inbounds i8, ptr %0, i64 9956
  %153 = load i32, ptr %152, align 4, !tbaa !180
  tail call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %151, i32 noundef %153, ptr noundef nonnull @.str.1596)
  br label %831

154:                                              ; preds = %.thread
  %155 = zext nneg i32 %.0471551 to i64
  %156 = getelementptr inbounds i32, ptr %9, i64 %155
  %157 = load i32, ptr %156, align 4, !tbaa !177
  %158 = getelementptr inbounds i8, ptr %0, i64 9956
  %159 = load i32, ptr %158, align 4, !tbaa !180
  tail call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %157, i32 noundef %159, ptr noundef nonnull @.str.1597)
  br label %831

160:                                              ; preds = %.thread
  %161 = add nuw nsw i32 %.0471551, 1
  %162 = zext nneg i32 %.0471551 to i64
  %163 = getelementptr inbounds i32, ptr %9, i64 %162
  %164 = load i32, ptr %163, align 4, !tbaa !177
  switch i32 %164, label %183 [
    i32 0, label %165
    i32 1, label %171
    i32 2, label %177
  ]

165:                                              ; preds = %160
  %166 = zext nneg i32 %161 to i64
  %167 = getelementptr inbounds i32, ptr %9, i64 %166
  %168 = load i32, ptr %167, align 4, !tbaa !177
  %169 = getelementptr inbounds i8, ptr %0, i64 9956
  %170 = load i32, ptr %169, align 4, !tbaa !180
  tail call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %168, i32 noundef %170, ptr noundef nonnull @.str.1598)
  br label %831

171:                                              ; preds = %160
  %172 = zext nneg i32 %161 to i64
  %173 = getelementptr inbounds i32, ptr %9, i64 %172
  %174 = load i32, ptr %173, align 4, !tbaa !177
  %175 = getelementptr inbounds i8, ptr %0, i64 9952
  %176 = load i32, ptr %175, align 8, !tbaa !179
  tail call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %174, i32 noundef %176, ptr noundef nonnull @.str.1599)
  br label %831

177:                                              ; preds = %160
  %178 = zext nneg i32 %161 to i64
  %179 = getelementptr inbounds i32, ptr %9, i64 %178
  %180 = load i32, ptr %179, align 4, !tbaa !177
  %181 = getelementptr inbounds i8, ptr %0, i64 9952
  %182 = load i32, ptr %181, align 8, !tbaa !179
  tail call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %180, i32 noundef %182, ptr noundef nonnull @.str.1600)
  br label %831

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

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

186:                                              ; preds = %183
  %187 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %184) #6
  br label %833

188:                                              ; preds = %.thread
  %189 = zext nneg i32 %.0471551 to i64
  %190 = getelementptr inbounds i32, ptr %9, i64 %189
  %191 = load i32, ptr %190, align 4, !tbaa !177
  %192 = getelementptr inbounds i8, ptr %190, i64 4
  %193 = load i32, ptr %192, align 4, !tbaa !177
  tail call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %191, i32 noundef %193, ptr noundef nonnull @.str.1602)
  br label %831

194:                                              ; preds = %.thread
  %195 = zext nneg i32 %.0471551 to i64
  %196 = getelementptr inbounds i32, ptr %9, i64 %195
  %197 = load i32, ptr %196, align 4, !tbaa !177
  %198 = getelementptr inbounds i8, ptr %196, i64 4
  %199 = load i32, ptr %198, align 4, !tbaa !177
  tail call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %197, i32 noundef %199, ptr noundef nonnull @.str.1603)
  br label %831

200:                                              ; preds = %.thread
  %201 = zext nneg i32 %.0471551 to i64
  %202 = getelementptr inbounds i32, ptr %9, i64 %201
  %203 = load i32, ptr %202, align 4, !tbaa !177
  %204 = getelementptr inbounds i8, ptr %202, i64 4
  %205 = load i32, ptr %204, align 4, !tbaa !177
  tail call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %203, i32 noundef %205, ptr noundef nonnull @.str.1604)
  br label %831

206:                                              ; preds = %.thread
  %207 = zext nneg i32 %.0471551 to i64
  %208 = getelementptr inbounds i32, ptr %9, i64 %207
  %209 = load i32, ptr %208, align 4, !tbaa !177
  %210 = getelementptr inbounds i8, ptr %208, i64 4
  %211 = load i32, ptr %210, align 4, !tbaa !177
  tail call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %209, i32 noundef %211, ptr noundef nonnull @.str.1605)
  br label %831

212:                                              ; preds = %.thread, %.thread
  %213 = tail call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options23use_quadgroup_operationEv(ptr noundef nonnull align 4 dereferenceable(137) %11)
  %214 = zext nneg i32 %.0471551 to i64
  %215 = getelementptr inbounds i32, ptr %9, i64 %214
  %216 = load i32, ptr %215, align 4, !tbaa !177
  br i1 %213, label %217, label %218

217:                                              ; preds = %212
  tail call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %216, ptr noundef nonnull @.str.1606)
  br label %831

218:                                              ; preds = %212
  tail call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %216, ptr noundef nonnull @.str.1607)
  br label %831

219:                                              ; preds = %.thread, %.thread
  %220 = tail call noundef zeroext i1 @_ZNK11spirv_cross11CompilerMSL7Options23use_quadgroup_operationEv(ptr noundef nonnull align 4 dereferenceable(137) %11)
  %221 = zext nneg i32 %.0471551 to i64
  %222 = getelementptr inbounds i32, ptr %9, i64 %221
  %223 = load i32, ptr %222, align 4, !tbaa !177
  br i1 %220, label %224, label %225

224:                                              ; preds = %219
  tail call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %223, ptr noundef nonnull @.str.1608)
  br label %831

225:                                              ; preds = %219
  tail call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %223, ptr noundef nonnull @.str.1609)
  br label %831

226:                                              ; preds = %.thread, %.thread
  %227 = zext nneg i32 %.0471551 to i64
  %228 = getelementptr inbounds i32, ptr %9, i64 %227
  %229 = load i32, ptr %228, align 4, !tbaa !177
  tail call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %229, ptr noundef nonnull @.str.1610)
  br label %831

230:                                              ; preds = %.thread
  %231 = add nuw nsw i32 %.0471551, 1
  %232 = zext nneg i32 %.0471551 to i64
  %233 = getelementptr inbounds i32, ptr %9, i64 %232
  %234 = load i32, ptr %233, align 4, !tbaa !177
  switch i32 %234, label %260 [
    i32 0, label %235
    i32 1, label %239
    i32 2, label %243
    i32 3, label %247
  ]

235:                                              ; preds = %230
  %236 = zext nneg i32 %231 to i64
  %237 = getelementptr inbounds i32, ptr %9, i64 %236
  %238 = load i32, ptr %237, align 4, !tbaa !177
  tail call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %238, ptr noundef nonnull @.str.1611)
  br label %831

239:                                              ; preds = %230
  %240 = zext nneg i32 %231 to i64
  %241 = getelementptr inbounds i32, ptr %9, i64 %240
  %242 = load i32, ptr %241, align 4, !tbaa !177
  tail call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %242, ptr noundef nonnull @.str.1612)
  br label %831

243:                                              ; preds = %230
  %244 = zext nneg i32 %231 to i64
  %245 = getelementptr inbounds i32, ptr %9, i64 %244
  %246 = load i32, ptr %245, align 4, !tbaa !177
  tail call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %246, ptr noundef nonnull @.str.1613)
  br label %831

247:                                              ; preds = %230
  %248 = getelementptr inbounds i8, ptr %233, i64 8
  %249 = load i32, ptr %248, align 4, !tbaa !177
  %250 = tail call noundef i32 @_ZNK11spirv_cross8Compiler21evaluate_constant_u32Ej(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %249)
  %.not533 = icmp eq i32 %250, 4
  br i1 %.not533, label %256, label %251

251:                                              ; preds = %247
  %252 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %252, ptr noundef nonnull @.str.1614)
          to label %253 unwind label %254

253:                                              ; preds = %251
  tail call void @__cxa_throw(ptr nonnull %252, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

254:                                              ; preds = %251
  %255 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %252) #6
  br label %833

256:                                              ; preds = %247
  %257 = zext nneg i32 %231 to i64
  %258 = getelementptr inbounds i32, ptr %9, i64 %257
  %259 = load i32, ptr %258, align 4, !tbaa !177
  tail call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %259, ptr noundef nonnull @.str.1615)
  br label %831

260:                                              ; preds = %230
  %261 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %261, ptr noundef nonnull @.str.1616)
          to label %262 unwind label %263

262:                                              ; preds = %260
  tail call void @__cxa_throw(ptr nonnull %261, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

263:                                              ; preds = %260
  %264 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %261) #6
  br label %833

265:                                              ; preds = %.thread
  %266 = add nuw nsw i32 %.0471551, 1
  %267 = zext nneg i32 %.0471551 to i64
  %268 = getelementptr inbounds i32, ptr %9, i64 %267
  %269 = load i32, ptr %268, align 4, !tbaa !177
  switch i32 %269, label %295 [
    i32 0, label %270
    i32 1, label %274
    i32 2, label %278
    i32 3, label %282
  ]

270:                                              ; preds = %265
  %271 = zext nneg i32 %266 to i64
  %272 = getelementptr inbounds i32, ptr %9, i64 %271
  %273 = load i32, ptr %272, align 4, !tbaa !177
  tail call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %273, ptr noundef nonnull @.str.1617)
  br label %831

274:                                              ; preds = %265
  %275 = zext nneg i32 %266 to i64
  %276 = getelementptr inbounds i32, ptr %9, i64 %275
  %277 = load i32, ptr %276, align 4, !tbaa !177
  tail call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %277, ptr noundef nonnull @.str.1618)
  br label %831

278:                                              ; preds = %265
  %279 = zext nneg i32 %266 to i64
  %280 = getelementptr inbounds i32, ptr %9, i64 %279
  %281 = load i32, ptr %280, align 4, !tbaa !177
  tail call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %281, ptr noundef nonnull @.str.1619)
  br label %831

282:                                              ; preds = %265
  %283 = getelementptr inbounds i8, ptr %268, i64 8
  %284 = load i32, ptr %283, align 4, !tbaa !177
  %285 = tail call noundef i32 @_ZNK11spirv_cross8Compiler21evaluate_constant_u32Ej(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %284)
  %.not530 = icmp eq i32 %285, 4
  br i1 %.not530, label %291, label %286

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

288:                                              ; preds = %286
  tail call void @__cxa_throw(ptr nonnull %287, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

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

291:                                              ; preds = %282
  %292 = zext nneg i32 %266 to i64
  %293 = getelementptr inbounds i32, ptr %9, i64 %292
  %294 = load i32, ptr %293, align 4, !tbaa !177
  tail call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %294, ptr noundef nonnull @.str.1620)
  br label %831

295:                                              ; preds = %265
  %296 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %296, ptr noundef nonnull @.str.1616)
          to label %297 unwind label %298

297:                                              ; preds = %295
  tail call void @__cxa_throw(ptr nonnull %296, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

298:                                              ; preds = %295
  %299 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %296) #6
  br label %833

300:                                              ; preds = %.thread
  %301 = add nuw nsw i32 %.0471551, 1
  %302 = zext nneg i32 %.0471551 to i64
  %303 = getelementptr inbounds i32, ptr %9, i64 %302
  %304 = load i32, ptr %303, align 4, !tbaa !177
  switch i32 %304, label %330 [
    i32 0, label %305
    i32 1, label %309
    i32 2, label %313
    i32 3, label %317
  ]

305:                                              ; preds = %300
  %306 = zext nneg i32 %301 to i64
  %307 = getelementptr inbounds i32, ptr %9, i64 %306
  %308 = load i32, ptr %307, align 4, !tbaa !177
  tail call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %308, ptr noundef nonnull @.str.1611)
  br label %831

309:                                              ; preds = %300
  %310 = zext nneg i32 %301 to i64
  %311 = getelementptr inbounds i32, ptr %9, i64 %310
  %312 = load i32, ptr %311, align 4, !tbaa !177
  tail call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %312, ptr noundef nonnull @.str.1612)
  br label %831

313:                                              ; preds = %300
  %314 = zext nneg i32 %301 to i64
  %315 = getelementptr inbounds i32, ptr %9, i64 %314
  %316 = load i32, ptr %315, align 4, !tbaa !177
  tail call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %316, ptr noundef nonnull @.str.1613)
  br label %831

317:                                              ; preds = %300
  %318 = getelementptr inbounds i8, ptr %303, i64 8
  %319 = load i32, ptr %318, align 4, !tbaa !177
  %320 = tail call noundef i32 @_ZNK11spirv_cross8Compiler21evaluate_constant_u32Ej(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %319)
  %.not527 = icmp eq i32 %320, 4
  br i1 %.not527, label %326, label %321

321:                                              ; preds = %317
  %322 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %322, ptr noundef nonnull @.str.1614)
          to label %323 unwind label %324

323:                                              ; preds = %321
  tail call void @__cxa_throw(ptr nonnull %322, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

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

326:                                              ; preds = %317
  %327 = zext nneg i32 %301 to i64
  %328 = getelementptr inbounds i32, ptr %9, i64 %327
  %329 = load i32, ptr %328, align 4, !tbaa !177
  tail call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %329, ptr noundef nonnull @.str.1615)
  br label %831

330:                                              ; preds = %300
  %331 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %331, ptr noundef nonnull @.str.1616)
          to label %332 unwind label %333

332:                                              ; preds = %330
  tail call void @__cxa_throw(ptr nonnull %331, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

333:                                              ; preds = %330
  %334 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %331) #6
  br label %833

335:                                              ; preds = %.thread
  %336 = add nuw nsw i32 %.0471551, 1
  %337 = zext nneg i32 %.0471551 to i64
  %338 = getelementptr inbounds i32, ptr %9, i64 %337
  %339 = load i32, ptr %338, align 4, !tbaa !177
  switch i32 %339, label %365 [
    i32 0, label %340
    i32 1, label %344
    i32 2, label %348
    i32 3, label %352
  ]

340:                                              ; preds = %335
  %341 = zext nneg i32 %336 to i64
  %342 = getelementptr inbounds i32, ptr %9, i64 %341
  %343 = load i32, ptr %342, align 4, !tbaa !177
  tail call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %343, ptr noundef nonnull @.str.1617)
  br label %831

344:                                              ; preds = %335
  %345 = zext nneg i32 %336 to i64
  %346 = getelementptr inbounds i32, ptr %9, i64 %345
  %347 = load i32, ptr %346, align 4, !tbaa !177
  tail call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %347, ptr noundef nonnull @.str.1618)
  br label %831

348:                                              ; preds = %335
  %349 = zext nneg i32 %336 to i64
  %350 = getelementptr inbounds i32, ptr %9, i64 %349
  %351 = load i32, ptr %350, align 4, !tbaa !177
  tail call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %351, ptr noundef nonnull @.str.1619)
  br label %831

352:                                              ; preds = %335
  %353 = getelementptr inbounds i8, ptr %338, i64 8
  %354 = load i32, ptr %353, align 4, !tbaa !177
  %355 = tail call noundef i32 @_ZNK11spirv_cross8Compiler21evaluate_constant_u32Ej(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %354)
  %.not524 = icmp eq i32 %355, 4
  br i1 %.not524, label %361, label %356

356:                                              ; preds = %352
  %357 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %357, ptr noundef nonnull @.str.1614)
          to label %358 unwind label %359

358:                                              ; preds = %356
  tail call void @__cxa_throw(ptr nonnull %357, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

359:                                              ; preds = %356
  %360 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %357) #6
  br label %833

361:                                              ; preds = %352
  %362 = zext nneg i32 %336 to i64
  %363 = getelementptr inbounds i32, ptr %9, i64 %362
  %364 = load i32, ptr %363, align 4, !tbaa !177
  tail call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %364, ptr noundef nonnull @.str.1620)
  br label %831

365:                                              ; preds = %335
  %366 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %366, ptr noundef nonnull @.str.1616)
          to label %367 unwind label %368

367:                                              ; preds = %365
  tail call void @__cxa_throw(ptr nonnull %366, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

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

370:                                              ; preds = %.thread
  %371 = add nuw nsw i32 %.0471551, 1
  %372 = zext nneg i32 %.0471551 to i64
  %373 = getelementptr inbounds i32, ptr %9, i64 %372
  %374 = load i32, ptr %373, align 4, !tbaa !177
  switch i32 %374, label %402 [
    i32 0, label %375
    i32 1, label %379
    i32 2, label %384
    i32 3, label %389
  ]

375:                                              ; preds = %370
  %376 = zext nneg i32 %371 to i64
  %377 = getelementptr inbounds i32, ptr %9, i64 %376
  %378 = load i32, ptr %377, align 4, !tbaa !177
  tail call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %378, ptr noundef nonnull @.str.1621)
  br label %831

379:                                              ; preds = %370
  %380 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %380, ptr noundef nonnull @.str.1622)
          to label %381 unwind label %382

381:                                              ; preds = %379
  tail call void @__cxa_throw(ptr nonnull %380, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

382:                                              ; preds = %379
  %383 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %380) #6
  br label %833

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

386:                                              ; preds = %384
  tail call void @__cxa_throw(ptr nonnull %385, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

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

389:                                              ; preds = %370
  %390 = getelementptr inbounds i8, ptr %373, i64 8
  %391 = load i32, ptr %390, align 4, !tbaa !177
  %392 = tail call noundef i32 @_ZNK11spirv_cross8Compiler21evaluate_constant_u32Ej(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %391)
  %.not521 = icmp eq i32 %392, 4
  br i1 %.not521, label %398, label %393

393:                                              ; preds = %389
  %394 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %394, ptr noundef nonnull @.str.1614)
          to label %395 unwind label %396

395:                                              ; preds = %393
  tail call void @__cxa_throw(ptr nonnull %394, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

396:                                              ; preds = %393
  %397 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %394) #6
  br label %833

398:                                              ; preds = %389
  %399 = zext nneg i32 %371 to i64
  %400 = getelementptr inbounds i32, ptr %9, i64 %399
  %401 = load i32, ptr %400, align 4, !tbaa !177
  tail call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %401, ptr noundef nonnull @.str.1624)
  br label %831

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

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

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

407:                                              ; preds = %.thread
  %408 = add nuw nsw i32 %.0471551, 1
  %409 = zext nneg i32 %.0471551 to i64
  %410 = getelementptr inbounds i32, ptr %9, i64 %409
  %411 = load i32, ptr %410, align 4, !tbaa !177
  switch i32 %411, label %439 [
    i32 0, label %412
    i32 1, label %416
    i32 2, label %421
    i32 3, label %426
  ]

412:                                              ; preds = %407
  %413 = zext nneg i32 %408 to i64
  %414 = getelementptr inbounds i32, ptr %9, i64 %413
  %415 = load i32, ptr %414, align 4, !tbaa !177
  tail call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %415, ptr noundef nonnull @.str.1625)
  br label %831

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

418:                                              ; preds = %416
  tail call void @__cxa_throw(ptr nonnull %417, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

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

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

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

424:                                              ; preds = %421
  %425 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %422) #6
  br label %833

426:                                              ; preds = %407
  %427 = getelementptr inbounds i8, ptr %410, i64 8
  %428 = load i32, ptr %427, align 4, !tbaa !177
  %429 = tail call noundef i32 @_ZNK11spirv_cross8Compiler21evaluate_constant_u32Ej(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %428)
  %.not518 = icmp eq i32 %429, 4
  br i1 %.not518, label %435, label %430

430:                                              ; preds = %426
  %431 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %431, ptr noundef nonnull @.str.1614)
          to label %432 unwind label %433

432:                                              ; preds = %430
  tail call void @__cxa_throw(ptr nonnull %431, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

433:                                              ; preds = %430
  %434 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %431) #6
  br label %833

435:                                              ; preds = %426
  %436 = zext nneg i32 %408 to i64
  %437 = getelementptr inbounds i32, ptr %9, i64 %436
  %438 = load i32, ptr %437, align 4, !tbaa !177
  tail call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %438, ptr noundef nonnull @.str.1628)
  br label %831

439:                                              ; preds = %407
  %440 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %440, ptr noundef nonnull @.str.1616)
          to label %441 unwind label %442

441:                                              ; preds = %439
  tail call void @__cxa_throw(ptr nonnull %440, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

442:                                              ; preds = %439
  %443 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %440) #6
  br label %833

444:                                              ; preds = %.thread
  %445 = add nuw nsw i32 %.0471551, 1
  %446 = zext nneg i32 %.0471551 to i64
  %447 = getelementptr inbounds i32, ptr %9, i64 %446
  %448 = load i32, ptr %447, align 4, !tbaa !177
  switch i32 %448, label %476 [
    i32 0, label %449
    i32 1, label %453
    i32 2, label %458
    i32 3, label %463
  ]

449:                                              ; preds = %444
  %450 = zext nneg i32 %445 to i64
  %451 = getelementptr inbounds i32, ptr %9, i64 %450
  %452 = load i32, ptr %451, align 4, !tbaa !177
  tail call void @_ZN11spirv_cross12CompilerGLSL23emit_unary_func_op_castEjjjPKcNS_8SPIRType8BaseTypeES4_(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %452, ptr noundef nonnull @.str.1621, i32 noundef %42, i32 noundef %42)
  br label %831

453:                                              ; preds = %444
  %454 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %454, ptr noundef nonnull @.str.1629)
          to label %455 unwind label %456

455:                                              ; preds = %453
  tail call void @__cxa_throw(ptr nonnull %454, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

456:                                              ; preds = %453
  %457 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %454) #6
  br label %833

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

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

461:                                              ; preds = %458
  %462 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %459) #6
  br label %833

463:                                              ; preds = %444
  %464 = getelementptr inbounds i8, ptr %447, i64 8
  %465 = load i32, ptr %464, align 4, !tbaa !177
  %466 = tail call noundef i32 @_ZNK11spirv_cross8Compiler21evaluate_constant_u32Ej(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %465)
  %.not515 = icmp eq i32 %466, 4
  br i1 %.not515, label %472, label %467

467:                                              ; preds = %463
  %468 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %468, ptr noundef nonnull @.str.1614)
          to label %469 unwind label %470

469:                                              ; preds = %467
  tail call void @__cxa_throw(ptr nonnull %468, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

470:                                              ; preds = %467
  %471 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %468) #6
  br label %833

472:                                              ; preds = %463
  %473 = zext nneg i32 %445 to i64
  %474 = getelementptr inbounds i32, ptr %9, i64 %473
  %475 = load i32, ptr %474, align 4, !tbaa !177
  tail call void @_ZN11spirv_cross12CompilerGLSL23emit_unary_func_op_castEjjjPKcNS_8SPIRType8BaseTypeES4_(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %475, ptr noundef nonnull @.str.1624, i32 noundef %42, i32 noundef %42)
  br label %831

476:                                              ; preds = %444
  %477 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %477, ptr noundef nonnull @.str.1616)
          to label %478 unwind label %479

478:                                              ; preds = %476
  tail call void @__cxa_throw(ptr nonnull %477, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

479:                                              ; preds = %476
  %480 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %477) #6
  br label %833

481:                                              ; preds = %.thread
  %482 = add nuw nsw i32 %.0471551, 1
  %483 = zext nneg i32 %.0471551 to i64
  %484 = getelementptr inbounds i32, ptr %9, i64 %483
  %485 = load i32, ptr %484, align 4, !tbaa !177
  switch i32 %485, label %513 [
    i32 0, label %486
    i32 1, label %490
    i32 2, label %495
    i32 3, label %500
  ]

486:                                              ; preds = %481
  %487 = zext nneg i32 %482 to i64
  %488 = getelementptr inbounds i32, ptr %9, i64 %487
  %489 = load i32, ptr %488, align 4, !tbaa !177
  tail call void @_ZN11spirv_cross12CompilerGLSL23emit_unary_func_op_castEjjjPKcNS_8SPIRType8BaseTypeES4_(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %489, ptr noundef nonnull @.str.1625, i32 noundef %42, i32 noundef %42)
  br label %831

490:                                              ; preds = %481
  %491 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %491, ptr noundef nonnull @.str.1631)
          to label %492 unwind label %493

492:                                              ; preds = %490
  tail call void @__cxa_throw(ptr nonnull %491, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

493:                                              ; preds = %490
  %494 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %491) #6
  br label %833

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

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

498:                                              ; preds = %495
  %499 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %496) #6
  br label %833

500:                                              ; preds = %481
  %501 = getelementptr inbounds i8, ptr %484, i64 8
  %502 = load i32, ptr %501, align 4, !tbaa !177
  %503 = tail call noundef i32 @_ZNK11spirv_cross8Compiler21evaluate_constant_u32Ej(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %502)
  %.not512 = icmp eq i32 %503, 4
  br i1 %.not512, label %509, label %504

504:                                              ; preds = %500
  %505 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %505, ptr noundef nonnull @.str.1614)
          to label %506 unwind label %507

506:                                              ; preds = %504
  tail call void @__cxa_throw(ptr nonnull %505, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

507:                                              ; preds = %504
  %508 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %505) #6
  br label %833

509:                                              ; preds = %500
  %510 = zext nneg i32 %482 to i64
  %511 = getelementptr inbounds i32, ptr %9, i64 %510
  %512 = load i32, ptr %511, align 4, !tbaa !177
  tail call void @_ZN11spirv_cross12CompilerGLSL23emit_unary_func_op_castEjjjPKcNS_8SPIRType8BaseTypeES4_(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %512, ptr noundef nonnull @.str.1628, i32 noundef %42, i32 noundef %42)
  br label %831

513:                                              ; preds = %481
  %514 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %514, ptr noundef nonnull @.str.1616)
          to label %515 unwind label %516

515:                                              ; preds = %513
  tail call void @__cxa_throw(ptr nonnull %514, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

516:                                              ; preds = %513
  %517 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %514) #6
  br label %833

518:                                              ; preds = %.thread
  %519 = add nuw nsw i32 %.0471551, 1
  %520 = zext nneg i32 %.0471551 to i64
  %521 = getelementptr inbounds i32, ptr %9, i64 %520
  %522 = load i32, ptr %521, align 4, !tbaa !177
  switch i32 %522, label %550 [
    i32 0, label %523
    i32 1, label %527
    i32 2, label %532
    i32 3, label %537
  ]

523:                                              ; preds = %518
  %524 = zext nneg i32 %519 to i64
  %525 = getelementptr inbounds i32, ptr %9, i64 %524
  %526 = load i32, ptr %525, align 4, !tbaa !177
  tail call void @_ZN11spirv_cross12CompilerGLSL23emit_unary_func_op_castEjjjPKcNS_8SPIRType8BaseTypeES4_(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %526, ptr noundef nonnull @.str.1621, i32 noundef %43, i32 noundef %43)
  br label %831

527:                                              ; preds = %518
  %528 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %528, ptr noundef nonnull @.str.1633)
          to label %529 unwind label %530

529:                                              ; preds = %527
  tail call void @__cxa_throw(ptr nonnull %528, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

530:                                              ; preds = %527
  %531 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %528) #6
  br label %833

532:                                              ; preds = %518
  %533 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %533, ptr noundef nonnull @.str.1634)
          to label %534 unwind label %535

534:                                              ; preds = %532
  tail call void @__cxa_throw(ptr nonnull %533, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

535:                                              ; preds = %532
  %536 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %533) #6
  br label %833

537:                                              ; preds = %518
  %538 = getelementptr inbounds i8, ptr %521, i64 8
  %539 = load i32, ptr %538, align 4, !tbaa !177
  %540 = tail call noundef i32 @_ZNK11spirv_cross8Compiler21evaluate_constant_u32Ej(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %539)
  %.not509 = icmp eq i32 %540, 4
  br i1 %.not509, label %546, label %541

541:                                              ; preds = %537
  %542 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %542, ptr noundef nonnull @.str.1614)
          to label %543 unwind label %544

543:                                              ; preds = %541
  tail call void @__cxa_throw(ptr nonnull %542, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

544:                                              ; preds = %541
  %545 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %542) #6
  br label %833

546:                                              ; preds = %537
  %547 = zext nneg i32 %519 to i64
  %548 = getelementptr inbounds i32, ptr %9, i64 %547
  %549 = load i32, ptr %548, align 4, !tbaa !177
  tail call void @_ZN11spirv_cross12CompilerGLSL23emit_unary_func_op_castEjjjPKcNS_8SPIRType8BaseTypeES4_(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %549, ptr noundef nonnull @.str.1624, i32 noundef %43, i32 noundef %43)
  br label %831

550:                                              ; preds = %518
  %551 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %551, ptr noundef nonnull @.str.1616)
          to label %552 unwind label %553

552:                                              ; preds = %550
  tail call void @__cxa_throw(ptr nonnull %551, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

553:                                              ; preds = %550
  %554 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %551) #6
  br label %833

555:                                              ; preds = %.thread
  %556 = add nuw nsw i32 %.0471551, 1
  %557 = zext nneg i32 %.0471551 to i64
  %558 = getelementptr inbounds i32, ptr %9, i64 %557
  %559 = load i32, ptr %558, align 4, !tbaa !177
  switch i32 %559, label %587 [
    i32 0, label %560
    i32 1, label %564
    i32 2, label %569
    i32 3, label %574
  ]

560:                                              ; preds = %555
  %561 = zext nneg i32 %556 to i64
  %562 = getelementptr inbounds i32, ptr %9, i64 %561
  %563 = load i32, ptr %562, align 4, !tbaa !177
  tail call void @_ZN11spirv_cross12CompilerGLSL23emit_unary_func_op_castEjjjPKcNS_8SPIRType8BaseTypeES4_(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %563, ptr noundef nonnull @.str.1625, i32 noundef %43, i32 noundef %43)
  br label %831

564:                                              ; preds = %555
  %565 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %565, ptr noundef nonnull @.str.1635)
          to label %566 unwind label %567

566:                                              ; preds = %564
  tail call void @__cxa_throw(ptr nonnull %565, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

567:                                              ; preds = %564
  %568 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %565) #6
  br label %833

569:                                              ; preds = %555
  %570 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %570, ptr noundef nonnull @.str.1636)
          to label %571 unwind label %572

571:                                              ; preds = %569
  tail call void @__cxa_throw(ptr nonnull %570, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

572:                                              ; preds = %569
  %573 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %570) #6
  br label %833

574:                                              ; preds = %555
  %575 = getelementptr inbounds i8, ptr %558, i64 8
  %576 = load i32, ptr %575, align 4, !tbaa !177
  %577 = tail call noundef i32 @_ZNK11spirv_cross8Compiler21evaluate_constant_u32Ej(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %576)
  %.not506 = icmp eq i32 %577, 4
  br i1 %.not506, label %583, label %578

578:                                              ; preds = %574
  %579 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %579, ptr noundef nonnull @.str.1614)
          to label %580 unwind label %581

580:                                              ; preds = %578
  tail call void @__cxa_throw(ptr nonnull %579, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

581:                                              ; preds = %578
  %582 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %579) #6
  br label %833

583:                                              ; preds = %574
  %584 = zext nneg i32 %556 to i64
  %585 = getelementptr inbounds i32, ptr %9, i64 %584
  %586 = load i32, ptr %585, align 4, !tbaa !177
  tail call void @_ZN11spirv_cross12CompilerGLSL23emit_unary_func_op_castEjjjPKcNS_8SPIRType8BaseTypeES4_(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %586, ptr noundef nonnull @.str.1628, i32 noundef %43, i32 noundef %43)
  br label %831

587:                                              ; preds = %555
  %588 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %588, ptr noundef nonnull @.str.1616)
          to label %589 unwind label %590

589:                                              ; preds = %587
  tail call void @__cxa_throw(ptr nonnull %588, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

590:                                              ; preds = %587
  %591 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %588) #6
  br label %833

592:                                              ; preds = %.thread
  %593 = add nuw nsw i32 %.0471551, 1
  %594 = zext nneg i32 %.0471551 to i64
  %595 = getelementptr inbounds i32, ptr %9, i64 %594
  %596 = load i32, ptr %595, align 4, !tbaa !177
  switch i32 %596, label %624 [
    i32 0, label %597
    i32 1, label %601
    i32 2, label %606
    i32 3, label %611
  ]

597:                                              ; preds = %592
  %598 = zext nneg i32 %593 to i64
  %599 = getelementptr inbounds i32, ptr %9, i64 %598
  %600 = load i32, ptr %599, align 4, !tbaa !177
  tail call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %600, ptr noundef nonnull @.str.1637)
  br label %831

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

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

604:                                              ; preds = %601
  %605 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %602) #6
  br label %833

606:                                              ; preds = %592
  %607 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %607, ptr noundef nonnull @.str.1639)
          to label %608 unwind label %609

608:                                              ; preds = %606
  tail call void @__cxa_throw(ptr nonnull %607, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

609:                                              ; preds = %606
  %610 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %607) #6
  br label %833

611:                                              ; preds = %592
  %612 = getelementptr inbounds i8, ptr %595, i64 8
  %613 = load i32, ptr %612, align 4, !tbaa !177
  %614 = tail call noundef i32 @_ZNK11spirv_cross8Compiler21evaluate_constant_u32Ej(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %613)
  %.not503 = icmp eq i32 %614, 4
  br i1 %.not503, label %620, label %615

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

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

618:                                              ; preds = %615
  %619 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %616) #6
  br label %833

620:                                              ; preds = %611
  %621 = zext nneg i32 %593 to i64
  %622 = getelementptr inbounds i32, ptr %9, i64 %621
  %623 = load i32, ptr %622, align 4, !tbaa !177
  tail call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %623, ptr noundef nonnull @.str.1640)
  br label %831

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

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

627:                                              ; preds = %624
  %628 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %625) #6
  br label %833

629:                                              ; preds = %.thread
  %630 = add nuw nsw i32 %.0471551, 1
  %631 = zext nneg i32 %.0471551 to i64
  %632 = getelementptr inbounds i32, ptr %9, i64 %631
  %633 = load i32, ptr %632, align 4, !tbaa !177
  switch i32 %633, label %661 [
    i32 0, label %634
    i32 1, label %638
    i32 2, label %643
    i32 3, label %648
  ]

634:                                              ; preds = %629
  %635 = zext nneg i32 %630 to i64
  %636 = getelementptr inbounds i32, ptr %9, i64 %635
  %637 = load i32, ptr %636, align 4, !tbaa !177
  tail call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %637, ptr noundef nonnull @.str.1641)
  br label %831

638:                                              ; preds = %629
  %639 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %639, ptr noundef nonnull @.str.1642)
          to label %640 unwind label %641

640:                                              ; preds = %638
  tail call void @__cxa_throw(ptr nonnull %639, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

641:                                              ; preds = %638
  %642 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %639) #6
  br label %833

643:                                              ; preds = %629
  %644 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %644, ptr noundef nonnull @.str.1643)
          to label %645 unwind label %646

645:                                              ; preds = %643
  tail call void @__cxa_throw(ptr nonnull %644, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

646:                                              ; preds = %643
  %647 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %644) #6
  br label %833

648:                                              ; preds = %629
  %649 = getelementptr inbounds i8, ptr %632, i64 8
  %650 = load i32, ptr %649, align 4, !tbaa !177
  %651 = tail call noundef i32 @_ZNK11spirv_cross8Compiler21evaluate_constant_u32Ej(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %650)
  %.not500 = icmp eq i32 %651, 4
  br i1 %.not500, label %657, label %652

652:                                              ; preds = %648
  %653 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %653, ptr noundef nonnull @.str.1614)
          to label %654 unwind label %655

654:                                              ; preds = %652
  tail call void @__cxa_throw(ptr nonnull %653, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

655:                                              ; preds = %652
  %656 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %653) #6
  br label %833

657:                                              ; preds = %648
  %658 = zext nneg i32 %630 to i64
  %659 = getelementptr inbounds i32, ptr %9, i64 %658
  %660 = load i32, ptr %659, align 4, !tbaa !177
  tail call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %660, ptr noundef nonnull @.str.1644)
  br label %831

661:                                              ; preds = %629
  %662 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %662, ptr noundef nonnull @.str.1616)
          to label %663 unwind label %664

663:                                              ; preds = %661
  tail call void @__cxa_throw(ptr nonnull %662, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

664:                                              ; preds = %661
  %665 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %662) #6
  br label %833

666:                                              ; preds = %.thread
  %667 = add nuw nsw i32 %.0471551, 1
  %668 = zext nneg i32 %.0471551 to i64
  %669 = getelementptr inbounds i32, ptr %9, i64 %668
  %670 = load i32, ptr %669, align 4, !tbaa !177
  switch i32 %670, label %698 [
    i32 0, label %671
    i32 1, label %675
    i32 2, label %680
    i32 3, label %685
  ]

671:                                              ; preds = %666
  %672 = zext nneg i32 %667 to i64
  %673 = getelementptr inbounds i32, ptr %9, i64 %672
  %674 = load i32, ptr %673, align 4, !tbaa !177
  tail call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %674, ptr noundef nonnull @.str.1645)
  br label %831

675:                                              ; preds = %666
  %676 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %676, ptr noundef nonnull @.str.1646)
          to label %677 unwind label %678

677:                                              ; preds = %675
  tail call void @__cxa_throw(ptr nonnull %676, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

678:                                              ; preds = %675
  %679 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %676) #6
  br label %833

680:                                              ; preds = %666
  %681 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %681, ptr noundef nonnull @.str.1647)
          to label %682 unwind label %683

682:                                              ; preds = %680
  tail call void @__cxa_throw(ptr nonnull %681, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

683:                                              ; preds = %680
  %684 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %681) #6
  br label %833

685:                                              ; preds = %666
  %686 = getelementptr inbounds i8, ptr %669, i64 8
  %687 = load i32, ptr %686, align 4, !tbaa !177
  %688 = tail call noundef i32 @_ZNK11spirv_cross8Compiler21evaluate_constant_u32Ej(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %687)
  %.not497 = icmp eq i32 %688, 4
  br i1 %.not497, label %694, label %689

689:                                              ; preds = %685
  %690 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %690, ptr noundef nonnull @.str.1614)
          to label %691 unwind label %692

691:                                              ; preds = %689
  tail call void @__cxa_throw(ptr nonnull %690, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

692:                                              ; preds = %689
  %693 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %690) #6
  br label %833

694:                                              ; preds = %685
  %695 = zext nneg i32 %667 to i64
  %696 = getelementptr inbounds i32, ptr %9, i64 %695
  %697 = load i32, ptr %696, align 4, !tbaa !177
  tail call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %697, ptr noundef nonnull @.str.1648)
  br label %831

698:                                              ; preds = %666
  %699 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %699, ptr noundef nonnull @.str.1616)
          to label %700 unwind label %701

700:                                              ; preds = %698
  tail call void @__cxa_throw(ptr nonnull %699, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

701:                                              ; preds = %698
  %702 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %699) #6
  br label %833

703:                                              ; preds = %.thread
  %704 = add nuw nsw i32 %.0471551, 1
  %705 = zext nneg i32 %.0471551 to i64
  %706 = getelementptr inbounds i32, ptr %9, i64 %705
  %707 = load i32, ptr %706, align 4, !tbaa !177
  switch i32 %707, label %735 [
    i32 0, label %708
    i32 1, label %712
    i32 2, label %717
    i32 3, label %722
  ]

708:                                              ; preds = %703
  %709 = zext nneg i32 %704 to i64
  %710 = getelementptr inbounds i32, ptr %9, i64 %709
  %711 = load i32, ptr %710, align 4, !tbaa !177
  tail call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %711, ptr noundef nonnull @.str.1637)
  br label %831

712:                                              ; preds = %703
  %713 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %713, ptr noundef nonnull @.str.1649)
          to label %714 unwind label %715

714:                                              ; preds = %712
  tail call void @__cxa_throw(ptr nonnull %713, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

715:                                              ; preds = %712
  %716 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %713) #6
  br label %833

717:                                              ; preds = %703
  %718 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %718, ptr noundef nonnull @.str.1650)
          to label %719 unwind label %720

719:                                              ; preds = %717
  tail call void @__cxa_throw(ptr nonnull %718, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

720:                                              ; preds = %717
  %721 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %718) #6
  br label %833

722:                                              ; preds = %703
  %723 = getelementptr inbounds i8, ptr %706, i64 8
  %724 = load i32, ptr %723, align 4, !tbaa !177
  %725 = tail call noundef i32 @_ZNK11spirv_cross8Compiler21evaluate_constant_u32Ej(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %724)
  %.not494 = icmp eq i32 %725, 4
  br i1 %.not494, label %731, label %726

726:                                              ; preds = %722
  %727 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %727, ptr noundef nonnull @.str.1614)
          to label %728 unwind label %729

728:                                              ; preds = %726
  tail call void @__cxa_throw(ptr nonnull %727, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

729:                                              ; preds = %726
  %730 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %727) #6
  br label %833

731:                                              ; preds = %722
  %732 = zext nneg i32 %704 to i64
  %733 = getelementptr inbounds i32, ptr %9, i64 %732
  %734 = load i32, ptr %733, align 4, !tbaa !177
  tail call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %734, ptr noundef nonnull @.str.1640)
  br label %831

735:                                              ; preds = %703
  %736 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %736, ptr noundef nonnull @.str.1616)
          to label %737 unwind label %738

737:                                              ; preds = %735
  tail call void @__cxa_throw(ptr nonnull %736, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

738:                                              ; preds = %735
  %739 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %736) #6
  br label %833

740:                                              ; preds = %.thread
  %741 = add nuw nsw i32 %.0471551, 1
  %742 = zext nneg i32 %.0471551 to i64
  %743 = getelementptr inbounds i32, ptr %9, i64 %742
  %744 = load i32, ptr %743, align 4, !tbaa !177
  switch i32 %744, label %772 [
    i32 0, label %745
    i32 1, label %749
    i32 2, label %754
    i32 3, label %759
  ]

745:                                              ; preds = %740
  %746 = zext nneg i32 %741 to i64
  %747 = getelementptr inbounds i32, ptr %9, i64 %746
  %748 = load i32, ptr %747, align 4, !tbaa !177
  tail call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %748, ptr noundef nonnull @.str.1641)
  br label %831

749:                                              ; preds = %740
  %750 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %750, ptr noundef nonnull @.str.1651)
          to label %751 unwind label %752

751:                                              ; preds = %749
  tail call void @__cxa_throw(ptr nonnull %750, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

752:                                              ; preds = %749
  %753 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %750) #6
  br label %833

754:                                              ; preds = %740
  %755 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %755, ptr noundef nonnull @.str.1652)
          to label %756 unwind label %757

756:                                              ; preds = %754
  tail call void @__cxa_throw(ptr nonnull %755, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

757:                                              ; preds = %754
  %758 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %755) #6
  br label %833

759:                                              ; preds = %740
  %760 = getelementptr inbounds i8, ptr %743, i64 8
  %761 = load i32, ptr %760, align 4, !tbaa !177
  %762 = tail call noundef i32 @_ZNK11spirv_cross8Compiler21evaluate_constant_u32Ej(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %761)
  %.not491 = icmp eq i32 %762, 4
  br i1 %.not491, label %768, label %763

763:                                              ; preds = %759
  %764 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %764, ptr noundef nonnull @.str.1614)
          to label %765 unwind label %766

765:                                              ; preds = %763
  tail call void @__cxa_throw(ptr nonnull %764, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

766:                                              ; preds = %763
  %767 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %764) #6
  br label %833

768:                                              ; preds = %759
  %769 = zext nneg i32 %741 to i64
  %770 = getelementptr inbounds i32, ptr %9, i64 %769
  %771 = load i32, ptr %770, align 4, !tbaa !177
  tail call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %771, ptr noundef nonnull @.str.1644)
  br label %831

772:                                              ; preds = %740
  %773 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %773, ptr noundef nonnull @.str.1616)
          to label %774 unwind label %775

774:                                              ; preds = %772
  tail call void @__cxa_throw(ptr nonnull %773, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

775:                                              ; preds = %772
  %776 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %773) #6
  br label %833

777:                                              ; preds = %.thread
  %778 = add nuw nsw i32 %.0471551, 1
  %779 = zext nneg i32 %.0471551 to i64
  %780 = getelementptr inbounds i32, ptr %9, i64 %779
  %781 = load i32, ptr %780, align 4, !tbaa !177
  switch i32 %781, label %809 [
    i32 0, label %782
    i32 1, label %786
    i32 2, label %791
    i32 3, label %796
  ]

782:                                              ; preds = %777
  %783 = zext nneg i32 %778 to i64
  %784 = getelementptr inbounds i32, ptr %9, i64 %783
  %785 = load i32, ptr %784, align 4, !tbaa !177
  tail call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %785, ptr noundef nonnull @.str.1645)
  br label %831

786:                                              ; preds = %777
  %787 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %787, ptr noundef nonnull @.str.1653)
          to label %788 unwind label %789

788:                                              ; preds = %786
  tail call void @__cxa_throw(ptr nonnull %787, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

789:                                              ; preds = %786
  %790 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %787) #6
  br label %833

791:                                              ; preds = %777
  %792 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %792, ptr noundef nonnull @.str.1654)
          to label %793 unwind label %794

793:                                              ; preds = %791
  tail call void @__cxa_throw(ptr nonnull %792, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

794:                                              ; preds = %791
  %795 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %792) #6
  br label %833

796:                                              ; preds = %777
  %797 = getelementptr inbounds i8, ptr %780, i64 8
  %798 = load i32, ptr %797, align 4, !tbaa !177
  %799 = tail call noundef i32 @_ZNK11spirv_cross8Compiler21evaluate_constant_u32Ej(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %798)
  %.not489 = icmp eq i32 %799, 4
  br i1 %.not489, label %805, label %800

800:                                              ; preds = %796
  %801 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %801, ptr noundef nonnull @.str.1614)
          to label %802 unwind label %803

802:                                              ; preds = %800
  tail call void @__cxa_throw(ptr nonnull %801, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

803:                                              ; preds = %800
  %804 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %801) #6
  br label %833

805:                                              ; preds = %796
  %806 = zext nneg i32 %778 to i64
  %807 = getelementptr inbounds i32, ptr %9, i64 %806
  %808 = load i32, ptr %807, align 4, !tbaa !177
  tail call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %808, ptr noundef nonnull @.str.1648)
  br label %831

809:                                              ; preds = %777
  %810 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %810, ptr noundef nonnull @.str.1616)
          to label %811 unwind label %812

811:                                              ; preds = %809
  tail call void @__cxa_throw(ptr nonnull %810, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

812:                                              ; preds = %809
  %813 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %810) #6
  br label %833

814:                                              ; preds = %.thread
  %815 = zext nneg i32 %.0471551 to i64
  %816 = getelementptr inbounds i32, ptr %9, i64 %815
  %817 = load i32, ptr %816, align 4, !tbaa !177
  %818 = getelementptr inbounds i8, ptr %816, i64 4
  %819 = load i32, ptr %818, align 4, !tbaa !177
  tail call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %817, i32 noundef %819, ptr noundef nonnull @.str.1655)
  br label %831

820:                                              ; preds = %.thread
  %821 = zext nneg i32 %.0471551 to i64
  %822 = getelementptr inbounds i32, ptr %9, i64 %821
  %823 = load i32, ptr %822, align 4, !tbaa !177
  %824 = getelementptr inbounds i8, ptr %822, i64 4
  %825 = load i32, ptr %824, align 4, !tbaa !177
  tail call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %89, i32 noundef %91, i32 noundef %823, i32 noundef %825, ptr noundef nonnull @.str.1656)
  br label %831

826:                                              ; preds = %.thread
  %827 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %827, ptr noundef nonnull @.str.1657)
          to label %828 unwind label %829

828:                                              ; preds = %826
  tail call void @__cxa_throw(ptr nonnull %827, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

829:                                              ; preds = %826
  %830 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %827) #6
  br label %833

831:                                              ; preds = %782, %805, %745, %768, %708, %731, %671, %694, %634, %657, %597, %620, %560, %583, %523, %546, %486, %509, %449, %472, %412, %435, %375, %398, %340, %348, %361, %344, %305, %313, %326, %309, %270, %278, %291, %274, %235, %243, %256, %239, %165, %171, %177, %224, %225, %217, %218, %107, %116, %820, %814, %226, %206, %200, %194, %188, %154, %148, %142, %136, %132, %128, %122
  call void @_ZN11spirv_cross12CompilerGLSL37register_control_dependent_expressionEj(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %91)
  br label %832

832:                                              ; preds = %831, %27
  ret void

833:                                              ; preds = %55, %62, %69, %76, %86, %789, %794, %803, %812, %752, %757, %766, %775, %715, %720, %729, %738, %678, %683, %692, %701, %641, %646, %655, %664, %604, %609, %618, %627, %567, %572, %581, %590, %530, %535, %544, %553, %493, %498, %507, %516, %456, %461, %470, %479, %419, %424, %433, %442, %382, %387, %396, %405, %359, %368, %324, %333, %289, %298, %254, %263, %829, %186, %121, %112, %100, %38, %32, %19
  %.pn546 = phi { ptr, i32 } [ %20, %19 ], [ %.pn544, %32 ], [ %39, %38 ], [ %87, %86 ], [ %56, %55 ], [ %77, %76 ], [ %70, %69 ], [ %63, %62 ], [ %101, %100 ], [ %830, %829 ], [ %187, %186 ], [ %.pn538, %112 ], [ %.pn536, %121 ], [ %255, %254 ], [ %264, %263 ], [ %290, %289 ], [ %299, %298 ], [ %325, %324 ], [ %334, %333 ], [ %360, %359 ], [ %369, %368 ], [ %383, %382 ], [ %388, %387 ], [ %397, %396 ], [ %406, %405 ], [ %420, %419 ], [ %425, %424 ], [ %434, %433 ], [ %443, %442 ], [ %457, %456 ], [ %462, %461 ], [ %471, %470 ], [ %480, %479 ], [ %494, %493 ], [ %499, %498 ], [ %508, %507 ], [ %517, %516 ], [ %531, %530 ], [ %536, %535 ], [ %545, %544 ], [ %554, %553 ], [ %568, %567 ], [ %573, %572 ], [ %582, %581 ], [ %591, %590 ], [ %605, %604 ], [ %610, %609 ], [ %619, %618 ], [ %628, %627 ], [ %642, %641 ], [ %647, %646 ], [ %656, %655 ], [ %665, %664 ], [ %679, %678 ], [ %684, %683 ], [ %693, %692 ], [ %702, %701 ], [ %716, %715 ], [ %721, %720 ], [ %730, %729 ], [ %739, %738 ], [ %753, %752 ], [ %758, %757 ], [ %767, %766 ], [ %776, %775 ], [ %790, %789 ], [ %795, %794 ], [ %804, %803 ], [ %813, %812 ]
  resume { ptr, i32 } %.pn546
}

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

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

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


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