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

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

%"struct.spirv_cross::CompilerGLSL::ShaderSubgroupSupportHelper::Result" = type { [10 x i32] }
%"class.spirv_cross::SmallVector.313" = type { %"class.spirv_cross::VectorView.314", i64, %"class.spirv_cross::AlignedBuffer.315" }
%"class.spirv_cross::VectorView.314" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.315" = type { [40 x i8] }
%class.anon.361 = type { ptr, ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator.71" = type { i8 }
%"class.spirv_cross::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.spirv_cross::SmallVector.92" = type { %"class.spirv_cross::VectorView.93", i64, %"class.spirv_cross::AlignedBuffer.94" }
%"class.spirv_cross::VectorView.93" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.94" = type { [32 x i8] }
%"class.std::unordered_map.131" = type { %"class.std::_Hashtable.132" }
%"class.std::_Hashtable.132" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.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_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::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_set" = type { %"class.std::_Hashtable.74" }
%"class.std::_Hashtable.74" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.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.spirv_cross::TypedID.281" = type { i32 }

@.str.9 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.132 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.133 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.134 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.135 = external hidden unnamed_addr constant [2 x i8], align 1
@_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types = external hidden global [16 x ptr], align 16
@.str.810 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.811 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.812 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.813 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.814 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.815 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.816 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.817 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.818 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.819 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.820 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.821 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.822 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.823 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.824 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.825 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.826 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.827 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.828 = external hidden unnamed_addr constant [83 x i8], align 1
@.str.829 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.830 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.831 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.832 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.833 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.834 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.835 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.836 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.837 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.838 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.839 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.840 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.841 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.842 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.843 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.844 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.845 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.846 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.847 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.848 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.849 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.850 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.851 = external hidden unnamed_addr constant [160 x i8], align 1
@.str.852 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.853 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.854 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.855 = external hidden unnamed_addr constant [85 x i8], align 1
@.str.856 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.857 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.858 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.859 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.860 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.861 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.862 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.863 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.864 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.865 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.866 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.867 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.868 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.869 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.870 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.871 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.872 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.873 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.874 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.875 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.876 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.877 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.878 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.879 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.880 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.881 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.882 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.883 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.884 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.885 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.886 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.887 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.888 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.889 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.890 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.891 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.892 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.893 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.894 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.895 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.896 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.897 = external hidden unnamed_addr constant [24 x i8], align 1

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelE(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %1) #1 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca i32, align 4
  %5 = alloca %"struct.spirv_cross::CompilerGLSL::ShaderSubgroupSupportHelper::Result", align 4
  %6 = alloca %"class.spirv_cross::SmallVector.313", align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca ptr, align 8
  %15 = alloca %"class.spirv_cross::SmallVector.313", align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca %"class.spirv_cross::SmallVector.313", align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca %"class.spirv_cross::SmallVector.313", align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca %"class.spirv_cross::SmallVector.313", align 8
  %37 = alloca ptr, align 8
  %38 = alloca ptr, align 8
  %39 = alloca ptr, align 8
  %40 = alloca ptr, align 8
  %41 = alloca ptr, align 8
  %42 = alloca ptr, align 8
  %43 = alloca %"class.spirv_cross::SmallVector.313", align 8
  %44 = alloca ptr, align 8
  %45 = alloca ptr, align 8
  %46 = alloca ptr, align 8
  %47 = alloca i32, align 4
  %48 = alloca ptr, align 8
  %49 = alloca ptr, align 8
  %50 = alloca ptr, align 8
  %51 = alloca ptr, align 8
  %52 = alloca ptr, align 8
  %53 = alloca ptr, align 8
  %54 = alloca ptr, align 8
  %55 = alloca ptr, align 8
  %56 = alloca ptr, align 8
  %57 = alloca ptr, align 8
  %58 = alloca ptr, align 8
  %59 = alloca ptr, align 8
  %60 = alloca ptr, align 8
  %61 = alloca ptr, align 8
  %62 = alloca ptr, align 8
  %63 = alloca ptr, align 8
  %64 = alloca ptr, align 8
  %65 = alloca ptr, align 8
  %66 = alloca ptr, align 8
  %67 = alloca %"class.spirv_cross::SmallVector.313", align 8
  %68 = alloca ptr, align 8
  %69 = alloca ptr, align 8
  %70 = alloca ptr, align 8
  %71 = alloca ptr, align 8
  %72 = alloca ptr, align 8
  %73 = alloca ptr, align 8
  %74 = alloca %"class.spirv_cross::SmallVector.313", align 8
  %75 = alloca ptr, align 8
  %76 = alloca ptr, align 8
  %77 = alloca ptr, align 8
  %78 = alloca ptr, align 8
  %79 = alloca ptr, align 8
  %80 = alloca ptr, align 8
  %81 = alloca ptr, align 8
  %82 = alloca ptr, align 8
  %83 = alloca ptr, align 8
  %84 = alloca ptr, align 8
  %85 = alloca %"class.spirv_cross::SmallVector.313", align 8
  %86 = alloca ptr, align 8
  %87 = alloca ptr, align 8
  %88 = alloca ptr, align 8
  %89 = alloca ptr, align 8
  %90 = alloca ptr, align 8
  %91 = alloca ptr, align 8
  %92 = alloca %class.anon.361, align 8
  %93 = alloca %"class.std::__cxx11::basic_string", align 8
  %94 = alloca %"class.std::allocator.71", align 1
  %95 = alloca %"class.std::__cxx11::basic_string", align 8
  %96 = alloca %"class.std::allocator.71", align 1
  %97 = alloca %"class.std::__cxx11::basic_string", align 8
  %98 = alloca %"class.std::allocator.71", align 1
  %99 = alloca %"class.std::__cxx11::basic_string", align 8
  %100 = alloca %"class.std::allocator.71", align 1
  %101 = alloca %"class.std::__cxx11::basic_string", align 8
  %102 = alloca %"class.std::allocator.71", align 1
  %103 = alloca %"class.std::__cxx11::basic_string", align 8
  %104 = alloca %"class.std::allocator.71", align 1
  %105 = alloca %"class.std::__cxx11::basic_string", align 8
  %106 = alloca %"class.std::allocator.71", align 1
  %107 = alloca %"class.std::__cxx11::basic_string", align 8
  %108 = alloca %"class.std::allocator.71", align 1
  %109 = alloca %"class.std::__cxx11::basic_string", align 8
  %110 = alloca %"class.std::allocator.71", align 1
  %111 = alloca %"class.std::__cxx11::basic_string", align 8
  %112 = alloca %"class.std::allocator.71", align 1
  %113 = alloca %"class.std::__cxx11::basic_string", align 8
  %114 = alloca %"class.std::allocator.71", align 1
  %115 = alloca %"class.std::__cxx11::basic_string", align 8
  %116 = alloca %"class.std::allocator.71", align 1
  %117 = alloca ptr, align 8
  %118 = alloca ptr, align 8
  %119 = alloca ptr, align 8
  %120 = alloca ptr, align 8
  %121 = alloca ptr, align 8
  %122 = alloca %"class.std::__cxx11::basic_string", align 8
  %123 = alloca %"class.std::__cxx11::basic_string", align 8
  %124 = alloca %"class.std::__cxx11::basic_string", align 8
  %125 = alloca %"class.std::__cxx11::basic_string", align 8
  %126 = alloca %"class.std::__cxx11::basic_string", align 8
  %127 = alloca %"class.std::__cxx11::basic_string", align 8
  store ptr %0, ptr %3, align 8, !tbaa !5
  store i32 %1, ptr %4, align 4, !tbaa !9
  %128 = load ptr, ptr %3, align 8
  %129 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %128, i32 0, i32 9
  %130 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %129, i32 0, i32 4
  %131 = load i8, ptr %130, align 4, !tbaa !11, !range !121, !noundef !122
  %132 = trunc i8 %131 to i1
  br i1 %132, label %883, label %133

133:                                              ; preds = %2
  call void @llvm.lifetime.start.p0(i64 40, ptr %5) #5
  %134 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %128, i32 0, i32 27
  call void @_ZNK11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper7resolveEv(ptr dead_on_unwind writable sret(%"struct.spirv_cross::CompilerGLSL::ShaderSubgroupSupportHelper::Result") align 4 %5, ptr noundef nonnull align 4 dereferenceable(4) %134)
  %135 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %128, i32 0, i32 27
  %136 = call noundef zeroext i1 @_ZNK11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper20is_feature_requestedENS1_7FeatureE(ptr noundef nonnull align 4 dereferenceable(4) %135, i32 noundef 0)
  br i1 %136, label %137, label %195

137:                                              ; preds = %133
  call void @llvm.lifetime.start.p0(i64 64, ptr %6) #5
  call void @_ZN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper26get_candidates_for_featureENS1_7FeatureERKNS1_6ResultE(ptr dead_on_unwind writable sret(%"class.spirv_cross::SmallVector.313") align 8 %6, i32 noundef 0, ptr noundef nonnull align 4 dereferenceable(40) %5)
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #5
  store ptr %6, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #5
  %138 = load ptr, ptr %7, align 8, !tbaa !5
  %139 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %138) #5
  store ptr %139, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #5
  %140 = load ptr, ptr %7, align 8, !tbaa !5
  %141 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %140) #5
  store ptr %141, ptr %9, align 8, !tbaa !5
  br label %142

142:                                              ; preds = %183, %137
  %143 = load ptr, ptr %8, align 8, !tbaa !5
  %144 = load ptr, ptr %9, align 8, !tbaa !5
  %145 = icmp ne ptr %143, %144
  br i1 %145, label %147, label %146

146:                                              ; preds = %142
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #5
  br label %187

147:                                              ; preds = %142
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #5
  %148 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %148, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #5
  %149 = load ptr, ptr %10, align 8, !tbaa !5
  %150 = load i32, ptr %149, align 4, !tbaa !123
  %151 = invoke noundef ptr @_ZN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper18get_extension_nameENS1_9CandidateE(i32 noundef %150)
          to label %152 unwind label %161

152:                                              ; preds = %147
  store ptr %151, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #5
  %153 = load ptr, ptr %10, align 8, !tbaa !5
  %154 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE5frontEv(ptr noundef nonnull align 8 dereferenceable(16) %6) #5
  %155 = icmp eq ptr %153, %154
  %156 = zext i1 %155 to i64
  %157 = select i1 %155, ptr @.str.133, ptr @.str.132
  store ptr %157, ptr %14, align 8, !tbaa !5
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJPKcRA10_S2_RS3_RA2_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef nonnull align 1 dereferenceable(10) @.str.134, ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 1 dereferenceable(2) @.str.135)
          to label %158 unwind label %165

158:                                              ; preds = %152
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #5
  %159 = load ptr, ptr %10, align 8, !tbaa !5
  %160 = load i32, ptr %159, align 4, !tbaa !123
  switch i32 %160, label %181 [
    i32 5, label %169
    i32 7, label %175
  ]

161:                                              ; preds = %179, %178, %177, %176, %175, %173, %172, %171, %170, %169, %147
  %162 = landingpad { ptr, i32 }
          cleanup
  %163 = extractvalue { ptr, i32 } %162, 0
  store ptr %163, ptr %12, align 8
  %164 = extractvalue { ptr, i32 } %162, 1
  store i32 %164, ptr %13, align 4
  br label %186

165:                                              ; preds = %152
  %166 = landingpad { ptr, i32 }
          cleanup
  %167 = extractvalue { ptr, i32 } %166, 0
  store ptr %167, ptr %12, align 8
  %168 = extractvalue { ptr, i32 } %166, 1
  store i32 %168, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #5
  br label %186

169:                                              ; preds = %158
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA63_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(63) @.str.810)
          to label %170 unwind label %161

170:                                              ; preds = %169
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA63_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(63) @.str.811)
          to label %171 unwind label %161

171:                                              ; preds = %170
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA63_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(63) @.str.812)
          to label %172 unwind label %161

172:                                              ; preds = %171
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA63_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(63) @.str.813)
          to label %173 unwind label %161

173:                                              ; preds = %172
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA63_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(63) @.str.814)
          to label %174 unwind label %161

174:                                              ; preds = %173
  br label %182

175:                                              ; preds = %158
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA78_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(78) @.str.815)
          to label %176 unwind label %161

176:                                              ; preds = %175
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA78_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(78) @.str.816)
          to label %177 unwind label %161

177:                                              ; preds = %176
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA78_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(78) @.str.817)
          to label %178 unwind label %161

178:                                              ; preds = %177
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA78_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(78) @.str.818)
          to label %179 unwind label %161

179:                                              ; preds = %178
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA78_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(78) @.str.819)
          to label %180 unwind label %161

180:                                              ; preds = %179
  br label %182

181:                                              ; preds = %158
  br label %182

182:                                              ; preds = %181, %180, %174
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #5
  br label %183

183:                                              ; preds = %182
  %184 = load ptr, ptr %8, align 8, !tbaa !5
  %185 = getelementptr inbounds i32, ptr %184, i32 1
  store ptr %185, ptr %8, align 8, !tbaa !5
  br label %142

186:                                              ; preds = %165, %161
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #5
  br label %194

187:                                              ; preds = %146
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
          to label %188 unwind label %190

188:                                              ; preds = %187
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA1_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(1) @.str.9)
          to label %189 unwind label %190

189:                                              ; preds = %188
  call void @_ZN11spirv_cross11SmallVectorINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateELm10EED2Ev(ptr noundef nonnull align 8 dereferenceable(64) %6) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %6) #5
  br label %195

190:                                              ; preds = %188, %187
  %191 = landingpad { ptr, i32 }
          cleanup
  %192 = extractvalue { ptr, i32 } %191, 0
  store ptr %192, ptr %12, align 8
  %193 = extractvalue { ptr, i32 } %191, 1
  store i32 %193, ptr %13, align 4
  br label %194

194:                                              ; preds = %190, %186
  call void @_ZN11spirv_cross11SmallVectorINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateELm10EED2Ev(ptr noundef nonnull align 8 dereferenceable(64) %6) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %6) #5
  br label %882

195:                                              ; preds = %189, %133
  %196 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %128, i32 0, i32 27
  %197 = call noundef zeroext i1 @_ZNK11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper20is_feature_requestedENS1_7FeatureE(ptr noundef nonnull align 4 dereferenceable(4) %196, i32 noundef 1)
  br i1 %197, label %198, label %250

198:                                              ; preds = %195
  call void @llvm.lifetime.start.p0(i64 64, ptr %15) #5
  call void @_ZN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper26get_candidates_for_featureENS1_7FeatureERKNS1_6ResultE(ptr dead_on_unwind writable sret(%"class.spirv_cross::SmallVector.313") align 8 %15, i32 noundef 1, ptr noundef nonnull align 4 dereferenceable(40) %5)
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #5
  store ptr %15, ptr %16, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #5
  %199 = load ptr, ptr %16, align 8, !tbaa !5
  %200 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %199) #5
  store ptr %200, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #5
  %201 = load ptr, ptr %16, align 8, !tbaa !5
  %202 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %201) #5
  store ptr %202, ptr %18, align 8, !tbaa !5
  br label %203

203:                                              ; preds = %238, %198
  %204 = load ptr, ptr %17, align 8, !tbaa !5
  %205 = load ptr, ptr %18, align 8, !tbaa !5
  %206 = icmp ne ptr %204, %205
  br i1 %206, label %208, label %207

207:                                              ; preds = %203
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #5
  br label %242

208:                                              ; preds = %203
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #5
  %209 = load ptr, ptr %17, align 8, !tbaa !5
  store ptr %209, ptr %19, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #5
  %210 = load ptr, ptr %19, align 8, !tbaa !5
  %211 = load i32, ptr %210, align 4, !tbaa !123
  %212 = invoke noundef ptr @_ZN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper18get_extension_nameENS1_9CandidateE(i32 noundef %211)
          to label %213 unwind label %222

213:                                              ; preds = %208
  store ptr %212, ptr %20, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #5
  %214 = load ptr, ptr %19, align 8, !tbaa !5
  %215 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE5frontEv(ptr noundef nonnull align 8 dereferenceable(16) %15) #5
  %216 = icmp eq ptr %214, %215
  %217 = zext i1 %216 to i64
  %218 = select i1 %216, ptr @.str.133, ptr @.str.132
  store ptr %218, ptr %21, align 8, !tbaa !5
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJPKcRA10_S2_RS3_RA2_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull align 1 dereferenceable(10) @.str.134, ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 1 dereferenceable(2) @.str.135)
          to label %219 unwind label %226

219:                                              ; preds = %213
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #5
  %220 = load ptr, ptr %19, align 8, !tbaa !5
  %221 = load i32, ptr %220, align 4, !tbaa !123
  switch i32 %221, label %236 [
    i32 5, label %230
    i32 7, label %232
    i32 9, label %234
  ]

222:                                              ; preds = %234, %232, %230, %208
  %223 = landingpad { ptr, i32 }
          cleanup
  %224 = extractvalue { ptr, i32 } %223, 0
  store ptr %224, ptr %12, align 8
  %225 = extractvalue { ptr, i32 } %223, 1
  store i32 %225, ptr %13, align 4
  br label %241

226:                                              ; preds = %213
  %227 = landingpad { ptr, i32 }
          cleanup
  %228 = extractvalue { ptr, i32 } %227, 0
  store ptr %228, ptr %12, align 8
  %229 = extractvalue { ptr, i32 } %227, 1
  store i32 %229, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #5
  br label %241

230:                                              ; preds = %219
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA38_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(38) @.str.820)
          to label %231 unwind label %222

231:                                              ; preds = %230
  br label %237

232:                                              ; preds = %219
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA43_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(43) @.str.821)
          to label %233 unwind label %222

233:                                              ; preds = %232
  br label %237

234:                                              ; preds = %219
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA50_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(50) @.str.822)
          to label %235 unwind label %222

235:                                              ; preds = %234
  br label %237

236:                                              ; preds = %219
  br label %237

237:                                              ; preds = %236, %235, %233, %231
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #5
  br label %238

238:                                              ; preds = %237
  %239 = load ptr, ptr %17, align 8, !tbaa !5
  %240 = getelementptr inbounds i32, ptr %239, i32 1
  store ptr %240, ptr %17, align 8, !tbaa !5
  br label %203

241:                                              ; preds = %226, %222
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #5
  br label %249

242:                                              ; preds = %207
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
          to label %243 unwind label %245

243:                                              ; preds = %242
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA1_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(1) @.str.9)
          to label %244 unwind label %245

244:                                              ; preds = %243
  call void @_ZN11spirv_cross11SmallVectorINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateELm10EED2Ev(ptr noundef nonnull align 8 dereferenceable(64) %15) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %15) #5
  br label %250

245:                                              ; preds = %243, %242
  %246 = landingpad { ptr, i32 }
          cleanup
  %247 = extractvalue { ptr, i32 } %246, 0
  store ptr %247, ptr %12, align 8
  %248 = extractvalue { ptr, i32 } %246, 1
  store i32 %248, ptr %13, align 4
  br label %249

249:                                              ; preds = %245, %241
  call void @_ZN11spirv_cross11SmallVectorINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateELm10EED2Ev(ptr noundef nonnull align 8 dereferenceable(64) %15) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %15) #5
  br label %882

250:                                              ; preds = %244, %195
  %251 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %128, i32 0, i32 27
  %252 = call noundef zeroext i1 @_ZNK11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper20is_feature_requestedENS1_7FeatureE(ptr noundef nonnull align 4 dereferenceable(4) %251, i32 noundef 2)
  br i1 %252, label %253, label %303

253:                                              ; preds = %250
  call void @llvm.lifetime.start.p0(i64 64, ptr %22) #5
  call void @_ZN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper26get_candidates_for_featureENS1_7FeatureERKNS1_6ResultE(ptr dead_on_unwind writable sret(%"class.spirv_cross::SmallVector.313") align 8 %22, i32 noundef 2, ptr noundef nonnull align 4 dereferenceable(40) %5)
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #5
  store ptr %22, ptr %23, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #5
  %254 = load ptr, ptr %23, align 8, !tbaa !5
  %255 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %254) #5
  store ptr %255, ptr %24, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #5
  %256 = load ptr, ptr %23, align 8, !tbaa !5
  %257 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %256) #5
  store ptr %257, ptr %25, align 8, !tbaa !5
  br label %258

258:                                              ; preds = %291, %253
  %259 = load ptr, ptr %24, align 8, !tbaa !5
  %260 = load ptr, ptr %25, align 8, !tbaa !5
  %261 = icmp ne ptr %259, %260
  br i1 %261, label %263, label %262

262:                                              ; preds = %258
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #5
  br label %295

263:                                              ; preds = %258
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #5
  %264 = load ptr, ptr %24, align 8, !tbaa !5
  store ptr %264, ptr %26, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #5
  %265 = load ptr, ptr %26, align 8, !tbaa !5
  %266 = load i32, ptr %265, align 4, !tbaa !123
  %267 = invoke noundef ptr @_ZN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper18get_extension_nameENS1_9CandidateE(i32 noundef %266)
          to label %268 unwind label %277

268:                                              ; preds = %263
  store ptr %267, ptr %27, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #5
  %269 = load ptr, ptr %26, align 8, !tbaa !5
  %270 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE5frontEv(ptr noundef nonnull align 8 dereferenceable(16) %22) #5
  %271 = icmp eq ptr %269, %270
  %272 = zext i1 %271 to i64
  %273 = select i1 %271, ptr @.str.133, ptr @.str.132
  store ptr %273, ptr %28, align 8, !tbaa !5
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJPKcRA10_S2_RS3_RA2_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull align 1 dereferenceable(10) @.str.134, ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull align 1 dereferenceable(2) @.str.135)
          to label %274 unwind label %281

274:                                              ; preds = %268
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #5
  %275 = load ptr, ptr %26, align 8, !tbaa !5
  %276 = load i32, ptr %275, align 4, !tbaa !123
  switch i32 %276, label %289 [
    i32 5, label %285
    i32 7, label %287
  ]

277:                                              ; preds = %287, %285, %263
  %278 = landingpad { ptr, i32 }
          cleanup
  %279 = extractvalue { ptr, i32 } %278, 0
  store ptr %279, ptr %12, align 8
  %280 = extractvalue { ptr, i32 } %278, 1
  store i32 %280, ptr %13, align 4
  br label %294

281:                                              ; preds = %268
  %282 = landingpad { ptr, i32 }
          cleanup
  %283 = extractvalue { ptr, i32 } %282, 0
  store ptr %283, ptr %12, align 8
  %284 = extractvalue { ptr, i32 } %282, 1
  store i32 %284, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #5
  br label %294

285:                                              ; preds = %274
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA50_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(50) @.str.823)
          to label %286 unwind label %277

286:                                              ; preds = %285
  br label %290

287:                                              ; preds = %274
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA57_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(57) @.str.824)
          to label %288 unwind label %277

288:                                              ; preds = %287
  br label %290

289:                                              ; preds = %274
  br label %290

290:                                              ; preds = %289, %288, %286
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #5
  br label %291

291:                                              ; preds = %290
  %292 = load ptr, ptr %24, align 8, !tbaa !5
  %293 = getelementptr inbounds i32, ptr %292, i32 1
  store ptr %293, ptr %24, align 8, !tbaa !5
  br label %258

294:                                              ; preds = %281, %277
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #5
  br label %302

295:                                              ; preds = %262
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
          to label %296 unwind label %298

296:                                              ; preds = %295
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA1_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(1) @.str.9)
          to label %297 unwind label %298

297:                                              ; preds = %296
  call void @_ZN11spirv_cross11SmallVectorINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateELm10EED2Ev(ptr noundef nonnull align 8 dereferenceable(64) %22) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %22) #5
  br label %303

298:                                              ; preds = %296, %295
  %299 = landingpad { ptr, i32 }
          cleanup
  %300 = extractvalue { ptr, i32 } %299, 0
  store ptr %300, ptr %12, align 8
  %301 = extractvalue { ptr, i32 } %299, 1
  store i32 %301, ptr %13, align 4
  br label %302

302:                                              ; preds = %298, %294
  call void @_ZN11spirv_cross11SmallVectorINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateELm10EED2Ev(ptr noundef nonnull align 8 dereferenceable(64) %22) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %22) #5
  br label %882

303:                                              ; preds = %297, %250
  %304 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %128, i32 0, i32 27
  %305 = call noundef zeroext i1 @_ZNK11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper20is_feature_requestedENS1_7FeatureE(ptr noundef nonnull align 4 dereferenceable(4) %304, i32 noundef 3)
  br i1 %305, label %306, label %354

306:                                              ; preds = %303
  call void @llvm.lifetime.start.p0(i64 64, ptr %29) #5
  call void @_ZN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper26get_candidates_for_featureENS1_7FeatureERKNS1_6ResultE(ptr dead_on_unwind writable sret(%"class.spirv_cross::SmallVector.313") align 8 %29, i32 noundef 3, ptr noundef nonnull align 4 dereferenceable(40) %5)
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #5
  store ptr %29, ptr %30, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #5
  %307 = load ptr, ptr %30, align 8, !tbaa !5
  %308 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %307) #5
  store ptr %308, ptr %31, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #5
  %309 = load ptr, ptr %30, align 8, !tbaa !5
  %310 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %309) #5
  store ptr %310, ptr %32, align 8, !tbaa !5
  br label %311

311:                                              ; preds = %342, %306
  %312 = load ptr, ptr %31, align 8, !tbaa !5
  %313 = load ptr, ptr %32, align 8, !tbaa !5
  %314 = icmp ne ptr %312, %313
  br i1 %314, label %316, label %315

315:                                              ; preds = %311
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #5
  br label %346

316:                                              ; preds = %311
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #5
  %317 = load ptr, ptr %31, align 8, !tbaa !5
  store ptr %317, ptr %33, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #5
  %318 = load ptr, ptr %33, align 8, !tbaa !5
  %319 = load i32, ptr %318, align 4, !tbaa !123
  %320 = invoke noundef ptr @_ZN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper18get_extension_nameENS1_9CandidateE(i32 noundef %319)
          to label %321 unwind label %330

321:                                              ; preds = %316
  store ptr %320, ptr %34, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #5
  %322 = load ptr, ptr %33, align 8, !tbaa !5
  %323 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE5frontEv(ptr noundef nonnull align 8 dereferenceable(16) %29) #5
  %324 = icmp eq ptr %322, %323
  %325 = zext i1 %324 to i64
  %326 = select i1 %324, ptr @.str.133, ptr @.str.132
  store ptr %326, ptr %35, align 8, !tbaa !5
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJPKcRA10_S2_RS3_RA2_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull align 1 dereferenceable(10) @.str.134, ptr noundef nonnull align 8 dereferenceable(8) %34, ptr noundef nonnull align 1 dereferenceable(2) @.str.135)
          to label %327 unwind label %334

327:                                              ; preds = %321
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #5
  %328 = load ptr, ptr %33, align 8, !tbaa !5
  %329 = load i32, ptr %328, align 4, !tbaa !123
  switch i32 %329, label %340 [
    i32 5, label %338
  ]

330:                                              ; preds = %338, %316
  %331 = landingpad { ptr, i32 }
          cleanup
  %332 = extractvalue { ptr, i32 } %331, 0
  store ptr %332, ptr %12, align 8
  %333 = extractvalue { ptr, i32 } %331, 1
  store i32 %333, ptr %13, align 4
  br label %345

334:                                              ; preds = %321
  %335 = landingpad { ptr, i32 }
          cleanup
  %336 = extractvalue { ptr, i32 } %335, 0
  store ptr %336, ptr %12, align 8
  %337 = extractvalue { ptr, i32 } %335, 1
  store i32 %337, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #5
  br label %345

338:                                              ; preds = %327
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA34_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(34) @.str.825)
          to label %339 unwind label %330

339:                                              ; preds = %338
  br label %341

340:                                              ; preds = %327
  br label %341

341:                                              ; preds = %340, %339
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #5
  br label %342

342:                                              ; preds = %341
  %343 = load ptr, ptr %31, align 8, !tbaa !5
  %344 = getelementptr inbounds i32, ptr %343, i32 1
  store ptr %344, ptr %31, align 8, !tbaa !5
  br label %311

345:                                              ; preds = %334, %330
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #5
  br label %353

346:                                              ; preds = %315
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
          to label %347 unwind label %349

347:                                              ; preds = %346
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA1_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(1) @.str.9)
          to label %348 unwind label %349

348:                                              ; preds = %347
  call void @_ZN11spirv_cross11SmallVectorINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateELm10EED2Ev(ptr noundef nonnull align 8 dereferenceable(64) %29) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %29) #5
  br label %354

349:                                              ; preds = %347, %346
  %350 = landingpad { ptr, i32 }
          cleanup
  %351 = extractvalue { ptr, i32 } %350, 0
  store ptr %351, ptr %12, align 8
  %352 = extractvalue { ptr, i32 } %350, 1
  store i32 %352, ptr %13, align 4
  br label %353

353:                                              ; preds = %349, %345
  call void @_ZN11spirv_cross11SmallVectorINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateELm10EED2Ev(ptr noundef nonnull align 8 dereferenceable(64) %29) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %29) #5
  br label %882

354:                                              ; preds = %348, %303
  %355 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %128, i32 0, i32 27
  %356 = call noundef zeroext i1 @_ZNK11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper20is_feature_requestedENS1_7FeatureE(ptr noundef nonnull align 4 dereferenceable(4) %355, i32 noundef 4)
  br i1 %356, label %357, label %405

357:                                              ; preds = %354
  call void @llvm.lifetime.start.p0(i64 64, ptr %36) #5
  call void @_ZN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper26get_candidates_for_featureENS1_7FeatureERKNS1_6ResultE(ptr dead_on_unwind writable sret(%"class.spirv_cross::SmallVector.313") align 8 %36, i32 noundef 4, ptr noundef nonnull align 4 dereferenceable(40) %5)
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #5
  store ptr %36, ptr %37, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #5
  %358 = load ptr, ptr %37, align 8, !tbaa !5
  %359 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %358) #5
  store ptr %359, ptr %38, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #5
  %360 = load ptr, ptr %37, align 8, !tbaa !5
  %361 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %360) #5
  store ptr %361, ptr %39, align 8, !tbaa !5
  br label %362

362:                                              ; preds = %393, %357
  %363 = load ptr, ptr %38, align 8, !tbaa !5
  %364 = load ptr, ptr %39, align 8, !tbaa !5
  %365 = icmp ne ptr %363, %364
  br i1 %365, label %367, label %366

366:                                              ; preds = %362
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #5
  br label %397

367:                                              ; preds = %362
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #5
  %368 = load ptr, ptr %38, align 8, !tbaa !5
  store ptr %368, ptr %40, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #5
  %369 = load ptr, ptr %40, align 8, !tbaa !5
  %370 = load i32, ptr %369, align 4, !tbaa !123
  %371 = invoke noundef ptr @_ZN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper18get_extension_nameENS1_9CandidateE(i32 noundef %370)
          to label %372 unwind label %381

372:                                              ; preds = %367
  store ptr %371, ptr %41, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #5
  %373 = load ptr, ptr %40, align 8, !tbaa !5
  %374 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE5frontEv(ptr noundef nonnull align 8 dereferenceable(16) %36) #5
  %375 = icmp eq ptr %373, %374
  %376 = zext i1 %375 to i64
  %377 = select i1 %375, ptr @.str.133, ptr @.str.132
  store ptr %377, ptr %42, align 8, !tbaa !5
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJPKcRA10_S2_RS3_RA2_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 8 dereferenceable(8) %42, ptr noundef nonnull align 1 dereferenceable(10) @.str.134, ptr noundef nonnull align 8 dereferenceable(8) %41, ptr noundef nonnull align 1 dereferenceable(2) @.str.135)
          to label %378 unwind label %385

378:                                              ; preds = %372
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #5
  %379 = load ptr, ptr %40, align 8, !tbaa !5
  %380 = load i32, ptr %379, align 4, !tbaa !123
  switch i32 %380, label %391 [
    i32 5, label %389
  ]

381:                                              ; preds = %389, %367
  %382 = landingpad { ptr, i32 }
          cleanup
  %383 = extractvalue { ptr, i32 } %382, 0
  store ptr %383, ptr %12, align 8
  %384 = extractvalue { ptr, i32 } %382, 1
  store i32 %384, ptr %13, align 4
  br label %396

385:                                              ; preds = %372
  %386 = landingpad { ptr, i32 }
          cleanup
  %387 = extractvalue { ptr, i32 } %386, 0
  store ptr %387, ptr %12, align 8
  %388 = extractvalue { ptr, i32 } %386, 1
  store i32 %388, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #5
  br label %396

389:                                              ; preds = %378
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA40_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(40) @.str.826)
          to label %390 unwind label %381

390:                                              ; preds = %389
  br label %392

391:                                              ; preds = %378
  br label %392

392:                                              ; preds = %391, %390
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #5
  br label %393

393:                                              ; preds = %392
  %394 = load ptr, ptr %38, align 8, !tbaa !5
  %395 = getelementptr inbounds i32, ptr %394, i32 1
  store ptr %395, ptr %38, align 8, !tbaa !5
  br label %362

396:                                              ; preds = %385, %381
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #5
  br label %404

397:                                              ; preds = %366
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
          to label %398 unwind label %400

398:                                              ; preds = %397
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA1_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(1) @.str.9)
          to label %399 unwind label %400

399:                                              ; preds = %398
  call void @_ZN11spirv_cross11SmallVectorINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateELm10EED2Ev(ptr noundef nonnull align 8 dereferenceable(64) %36) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %36) #5
  br label %405

400:                                              ; preds = %398, %397
  %401 = landingpad { ptr, i32 }
          cleanup
  %402 = extractvalue { ptr, i32 } %401, 0
  store ptr %402, ptr %12, align 8
  %403 = extractvalue { ptr, i32 } %401, 1
  store i32 %403, ptr %13, align 4
  br label %404

404:                                              ; preds = %400, %396
  call void @_ZN11spirv_cross11SmallVectorINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateELm10EED2Ev(ptr noundef nonnull align 8 dereferenceable(64) %36) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %36) #5
  br label %882

405:                                              ; preds = %399, %354
  %406 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %128, i32 0, i32 27
  %407 = call noundef zeroext i1 @_ZNK11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper20is_feature_requestedENS1_7FeatureE(ptr noundef nonnull align 4 dereferenceable(4) %406, i32 noundef 5)
  br i1 %407, label %408, label %524

408:                                              ; preds = %405
  call void @llvm.lifetime.start.p0(i64 64, ptr %43) #5
  call void @_ZN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper26get_candidates_for_featureENS1_7FeatureERKNS1_6ResultE(ptr dead_on_unwind writable sret(%"class.spirv_cross::SmallVector.313") align 8 %43, i32 noundef 5, ptr noundef nonnull align 4 dereferenceable(40) %5)
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #5
  store ptr %43, ptr %44, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #5
  %409 = load ptr, ptr %44, align 8, !tbaa !5
  %410 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %409) #5
  store ptr %410, ptr %45, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #5
  %411 = load ptr, ptr %44, align 8, !tbaa !5
  %412 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %411) #5
  store ptr %412, ptr %46, align 8, !tbaa !5
  br label %413

413:                                              ; preds = %512, %408
  %414 = load ptr, ptr %45, align 8, !tbaa !5
  %415 = load ptr, ptr %46, align 8, !tbaa !5
  %416 = icmp ne ptr %414, %415
  br i1 %416, label %418, label %417

417:                                              ; preds = %413
  store i32 17, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #5
  br label %516

418:                                              ; preds = %413
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #5
  %419 = load ptr, ptr %45, align 8, !tbaa !5
  store ptr %419, ptr %48, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #5
  %420 = load ptr, ptr %48, align 8, !tbaa !5
  %421 = load i32, ptr %420, align 4, !tbaa !123
  %422 = invoke noundef ptr @_ZN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper18get_extension_nameENS1_9CandidateE(i32 noundef %421)
          to label %423 unwind label %432

423:                                              ; preds = %418
  store ptr %422, ptr %49, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #5
  %424 = load ptr, ptr %48, align 8, !tbaa !5
  %425 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE5frontEv(ptr noundef nonnull align 8 dereferenceable(16) %43) #5
  %426 = icmp eq ptr %424, %425
  %427 = zext i1 %426 to i64
  %428 = select i1 %426, ptr @.str.133, ptr @.str.132
  store ptr %428, ptr %50, align 8, !tbaa !5
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJPKcRA10_S2_RS3_RA2_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 8 dereferenceable(8) %50, ptr noundef nonnull align 1 dereferenceable(10) @.str.134, ptr noundef nonnull align 8 dereferenceable(8) %49, ptr noundef nonnull align 1 dereferenceable(2) @.str.135)
          to label %429 unwind label %436

429:                                              ; preds = %423
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #5
  %430 = load ptr, ptr %48, align 8, !tbaa !5
  %431 = load i32, ptr %430, align 4, !tbaa !123
  switch i32 %431, label %510 [
    i32 6, label %440
    i32 7, label %475
  ]

432:                                              ; preds = %418
  %433 = landingpad { ptr, i32 }
          cleanup
  %434 = extractvalue { ptr, i32 } %433, 0
  store ptr %434, ptr %12, align 8
  %435 = extractvalue { ptr, i32 } %433, 1
  store i32 %435, ptr %13, align 4
  br label %515

436:                                              ; preds = %423
  %437 = landingpad { ptr, i32 }
          cleanup
  %438 = extractvalue { ptr, i32 } %437, 0
  store ptr %438, ptr %12, align 8
  %439 = extractvalue { ptr, i32 } %437, 1
  store i32 %439, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #5
  br label %515

440:                                              ; preds = %429
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #5
  store ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, ptr %51, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #5
  store ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, ptr %52, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #5
  store ptr getelementptr inbounds (ptr, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 16), ptr %53, align 8, !tbaa !5
  br label %441

441:                                              ; preds = %450, %440
  %442 = load ptr, ptr %52, align 8, !tbaa !5
  %443 = load ptr, ptr %53, align 8, !tbaa !5
  %444 = icmp ne ptr %442, %443
  br i1 %444, label %446, label %445

445:                                              ; preds = %441
  store i32 20, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #5
  br label %457

446:                                              ; preds = %441
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #5
  %447 = load ptr, ptr %52, align 8, !tbaa !5
  %448 = load ptr, ptr %447, align 8, !tbaa !5
  store ptr %448, ptr %54, align 8, !tbaa !5
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA25_S2_S4_RA83_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 8 dereferenceable(8) %54, ptr noundef nonnull align 1 dereferenceable(25) @.str.827, ptr noundef nonnull align 8 dereferenceable(8) %54, ptr noundef nonnull align 1 dereferenceable(83) @.str.828)
          to label %449 unwind label %453

449:                                              ; preds = %446
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #5
  br label %450

450:                                              ; preds = %449
  %451 = load ptr, ptr %52, align 8, !tbaa !5
  %452 = getelementptr inbounds ptr, ptr %451, i32 1
  store ptr %452, ptr %52, align 8, !tbaa !5
  br label %441

453:                                              ; preds = %446
  %454 = landingpad { ptr, i32 }
          cleanup
  %455 = extractvalue { ptr, i32 } %454, 0
  store ptr %455, ptr %12, align 8
  %456 = extractvalue { ptr, i32 } %454, 1
  store i32 %456, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #5
  br label %515

457:                                              ; preds = %445
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #5
  store ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, ptr %55, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #5
  store ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, ptr %56, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #5
  store ptr getelementptr inbounds (ptr, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 16), ptr %57, align 8, !tbaa !5
  br label %458

458:                                              ; preds = %467, %457
  %459 = load ptr, ptr %56, align 8, !tbaa !5
  %460 = load ptr, ptr %57, align 8, !tbaa !5
  %461 = icmp ne ptr %459, %460
  br i1 %461, label %463, label %462

462:                                              ; preds = %458
  store i32 22, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #5
  br label %474

463:                                              ; preds = %458
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #5
  %464 = load ptr, ptr %56, align 8, !tbaa !5
  %465 = load ptr, ptr %464, align 8, !tbaa !5
  store ptr %465, ptr %58, align 8, !tbaa !5
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA20_S2_S4_RA65_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 8 dereferenceable(8) %58, ptr noundef nonnull align 1 dereferenceable(20) @.str.829, ptr noundef nonnull align 8 dereferenceable(8) %58, ptr noundef nonnull align 1 dereferenceable(65) @.str.830)
          to label %466 unwind label %470

466:                                              ; preds = %463
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #5
  br label %467

467:                                              ; preds = %466
  %468 = load ptr, ptr %56, align 8, !tbaa !5
  %469 = getelementptr inbounds ptr, ptr %468, i32 1
  store ptr %469, ptr %56, align 8, !tbaa !5
  br label %458

470:                                              ; preds = %463
  %471 = landingpad { ptr, i32 }
          cleanup
  %472 = extractvalue { ptr, i32 } %471, 0
  store ptr %472, ptr %12, align 8
  %473 = extractvalue { ptr, i32 } %471, 1
  store i32 %473, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #5
  br label %515

474:                                              ; preds = %462
  br label %511

475:                                              ; preds = %429
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #5
  store ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, ptr %59, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #5
  store ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, ptr %60, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #5
  store ptr getelementptr inbounds (ptr, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 16), ptr %61, align 8, !tbaa !5
  br label %476

476:                                              ; preds = %485, %475
  %477 = load ptr, ptr %60, align 8, !tbaa !5
  %478 = load ptr, ptr %61, align 8, !tbaa !5
  %479 = icmp ne ptr %477, %478
  br i1 %479, label %481, label %480

480:                                              ; preds = %476
  store i32 24, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #5
  br label %492

481:                                              ; preds = %476
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #5
  %482 = load ptr, ptr %60, align 8, !tbaa !5
  %483 = load ptr, ptr %482, align 8, !tbaa !5
  store ptr %483, ptr %62, align 8, !tbaa !5
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA25_S2_S4_RA50_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 8 dereferenceable(8) %62, ptr noundef nonnull align 1 dereferenceable(25) @.str.827, ptr noundef nonnull align 8 dereferenceable(8) %62, ptr noundef nonnull align 1 dereferenceable(50) @.str.831)
          to label %484 unwind label %488

484:                                              ; preds = %481
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #5
  br label %485

485:                                              ; preds = %484
  %486 = load ptr, ptr %60, align 8, !tbaa !5
  %487 = getelementptr inbounds ptr, ptr %486, i32 1
  store ptr %487, ptr %60, align 8, !tbaa !5
  br label %476

488:                                              ; preds = %481
  %489 = landingpad { ptr, i32 }
          cleanup
  %490 = extractvalue { ptr, i32 } %489, 0
  store ptr %490, ptr %12, align 8
  %491 = extractvalue { ptr, i32 } %489, 1
  store i32 %491, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #5
  br label %515

492:                                              ; preds = %480
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #5
  store ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, ptr %63, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #5
  store ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, ptr %64, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #5
  store ptr getelementptr inbounds (ptr, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 16), ptr %65, align 8, !tbaa !5
  br label %493

493:                                              ; preds = %502, %492
  %494 = load ptr, ptr %64, align 8, !tbaa !5
  %495 = load ptr, ptr %65, align 8, !tbaa !5
  %496 = icmp ne ptr %494, %495
  br i1 %496, label %498, label %497

497:                                              ; preds = %493
  store i32 26, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #5
  br label %509

498:                                              ; preds = %493
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #5
  %499 = load ptr, ptr %64, align 8, !tbaa !5
  %500 = load ptr, ptr %499, align 8, !tbaa !5
  store ptr %500, ptr %66, align 8, !tbaa !5
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA20_S2_S4_RA58_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 8 dereferenceable(8) %66, ptr noundef nonnull align 1 dereferenceable(20) @.str.829, ptr noundef nonnull align 8 dereferenceable(8) %66, ptr noundef nonnull align 1 dereferenceable(58) @.str.832)
          to label %501 unwind label %505

501:                                              ; preds = %498
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #5
  br label %502

502:                                              ; preds = %501
  %503 = load ptr, ptr %64, align 8, !tbaa !5
  %504 = getelementptr inbounds ptr, ptr %503, i32 1
  store ptr %504, ptr %64, align 8, !tbaa !5
  br label %493

505:                                              ; preds = %498
  %506 = landingpad { ptr, i32 }
          cleanup
  %507 = extractvalue { ptr, i32 } %506, 0
  store ptr %507, ptr %12, align 8
  %508 = extractvalue { ptr, i32 } %506, 1
  store i32 %508, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #5
  br label %515

509:                                              ; preds = %497
  br label %511

510:                                              ; preds = %429
  br label %511

511:                                              ; preds = %510, %509, %474
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #5
  br label %512

512:                                              ; preds = %511
  %513 = load ptr, ptr %45, align 8, !tbaa !5
  %514 = getelementptr inbounds i32, ptr %513, i32 1
  store ptr %514, ptr %45, align 8, !tbaa !5
  br label %413

515:                                              ; preds = %505, %488, %470, %453, %436, %432
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #5
  br label %523

516:                                              ; preds = %417
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
          to label %517 unwind label %519

517:                                              ; preds = %516
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA1_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(1) @.str.9)
          to label %518 unwind label %519

518:                                              ; preds = %517
  call void @_ZN11spirv_cross11SmallVectorINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateELm10EED2Ev(ptr noundef nonnull align 8 dereferenceable(64) %43) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %43) #5
  br label %524

519:                                              ; preds = %517, %516
  %520 = landingpad { ptr, i32 }
          cleanup
  %521 = extractvalue { ptr, i32 } %520, 0
  store ptr %521, ptr %12, align 8
  %522 = extractvalue { ptr, i32 } %520, 1
  store i32 %522, ptr %13, align 4
  br label %523

523:                                              ; preds = %519, %515
  call void @_ZN11spirv_cross11SmallVectorINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateELm10EED2Ev(ptr noundef nonnull align 8 dereferenceable(64) %43) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %43) #5
  br label %882

524:                                              ; preds = %518, %405
  %525 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %128, i32 0, i32 27
  %526 = call noundef zeroext i1 @_ZNK11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper20is_feature_requestedENS1_7FeatureE(ptr noundef nonnull align 4 dereferenceable(4) %525, i32 noundef 6)
  br i1 %526, label %527, label %587

527:                                              ; preds = %524
  call void @llvm.lifetime.start.p0(i64 64, ptr %67) #5
  call void @_ZN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper26get_candidates_for_featureENS1_7FeatureERKNS1_6ResultE(ptr dead_on_unwind writable sret(%"class.spirv_cross::SmallVector.313") align 8 %67, i32 noundef 6, ptr noundef nonnull align 4 dereferenceable(40) %5)
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #5
  store ptr %67, ptr %68, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #5
  %528 = load ptr, ptr %68, align 8, !tbaa !5
  %529 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %528) #5
  store ptr %529, ptr %69, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #5
  %530 = load ptr, ptr %68, align 8, !tbaa !5
  %531 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %530) #5
  store ptr %531, ptr %70, align 8, !tbaa !5
  br label %532

532:                                              ; preds = %564, %527
  %533 = load ptr, ptr %69, align 8, !tbaa !5
  %534 = load ptr, ptr %70, align 8, !tbaa !5
  %535 = icmp ne ptr %533, %534
  br i1 %535, label %537, label %536

536:                                              ; preds = %532
  store i32 28, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #5
  br label %568

537:                                              ; preds = %532
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #5
  %538 = load ptr, ptr %69, align 8, !tbaa !5
  store ptr %538, ptr %71, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #5
  %539 = load ptr, ptr %71, align 8, !tbaa !5
  %540 = load i32, ptr %539, align 4, !tbaa !123
  %541 = invoke noundef ptr @_ZN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper18get_extension_nameENS1_9CandidateE(i32 noundef %540)
          to label %542 unwind label %551

542:                                              ; preds = %537
  store ptr %541, ptr %72, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #5
  %543 = load ptr, ptr %71, align 8, !tbaa !5
  %544 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE5frontEv(ptr noundef nonnull align 8 dereferenceable(16) %67) #5
  %545 = icmp eq ptr %543, %544
  %546 = zext i1 %545 to i64
  %547 = select i1 %545, ptr @.str.133, ptr @.str.132
  store ptr %547, ptr %73, align 8, !tbaa !5
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJPKcRA10_S2_RS3_RA2_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 8 dereferenceable(8) %73, ptr noundef nonnull align 1 dereferenceable(10) @.str.134, ptr noundef nonnull align 8 dereferenceable(8) %72, ptr noundef nonnull align 1 dereferenceable(2) @.str.135)
          to label %548 unwind label %555

548:                                              ; preds = %542
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #5
  %549 = load ptr, ptr %71, align 8, !tbaa !5
  %550 = load i32, ptr %549, align 4, !tbaa !123
  switch i32 %550, label %562 [
    i32 5, label %559
  ]

551:                                              ; preds = %560, %559, %537
  %552 = landingpad { ptr, i32 }
          cleanup
  %553 = extractvalue { ptr, i32 } %552, 0
  store ptr %553, ptr %12, align 8
  %554 = extractvalue { ptr, i32 } %552, 1
  store i32 %554, ptr %13, align 4
  br label %567

555:                                              ; preds = %542
  %556 = landingpad { ptr, i32 }
          cleanup
  %557 = extractvalue { ptr, i32 } %556, 0
  store ptr %557, ptr %12, align 8
  %558 = extractvalue { ptr, i32 } %556, 1
  store i32 %558, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #5
  br label %567

559:                                              ; preds = %548
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA69_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(69) @.str.833)
          to label %560 unwind label %551

560:                                              ; preds = %559
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA69_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(69) @.str.834)
          to label %561 unwind label %551

561:                                              ; preds = %560
  br label %563

562:                                              ; preds = %548
  br label %563

563:                                              ; preds = %562, %561
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #5
  br label %564

564:                                              ; preds = %563
  %565 = load ptr, ptr %69, align 8, !tbaa !5
  %566 = getelementptr inbounds i32, ptr %565, i32 1
  store ptr %566, ptr %69, align 8, !tbaa !5
  br label %532

567:                                              ; preds = %555, %551
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #5
  br label %586

568:                                              ; preds = %536
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA6_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(6) @.str.84)
          to label %569 unwind label %582

569:                                              ; preds = %568
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA40_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(40) @.str.835)
          to label %570 unwind label %582

570:                                              ; preds = %569
  invoke void @_ZN11spirv_cross12CompilerGLSL11begin_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848) %128)
          to label %571 unwind label %582

571:                                              ; preds = %570
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA34_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(34) @.str.836)
          to label %572 unwind label %582

572:                                              ; preds = %571
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA68_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(68) @.str.837)
          to label %573 unwind label %582

573:                                              ; preds = %572
  invoke void @_ZN11spirv_cross12CompilerGLSL9end_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848) %128)
          to label %574 unwind label %582

574:                                              ; preds = %573
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA40_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(40) @.str.838)
          to label %575 unwind label %582

575:                                              ; preds = %574
  invoke void @_ZN11spirv_cross12CompilerGLSL11begin_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848) %128)
          to label %576 unwind label %582

576:                                              ; preds = %575
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA34_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(34) @.str.839)
          to label %577 unwind label %582

577:                                              ; preds = %576
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA68_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(68) @.str.840)
          to label %578 unwind label %582

578:                                              ; preds = %577
  invoke void @_ZN11spirv_cross12CompilerGLSL9end_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848) %128)
          to label %579 unwind label %582

579:                                              ; preds = %578
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
          to label %580 unwind label %582

580:                                              ; preds = %579
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA1_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(1) @.str.9)
          to label %581 unwind label %582

581:                                              ; preds = %580
  call void @_ZN11spirv_cross11SmallVectorINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateELm10EED2Ev(ptr noundef nonnull align 8 dereferenceable(64) %67) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %67) #5
  br label %587

582:                                              ; preds = %580, %579, %578, %577, %576, %575, %574, %573, %572, %571, %570, %569, %568
  %583 = landingpad { ptr, i32 }
          cleanup
  %584 = extractvalue { ptr, i32 } %583, 0
  store ptr %584, ptr %12, align 8
  %585 = extractvalue { ptr, i32 } %583, 1
  store i32 %585, ptr %13, align 4
  br label %586

586:                                              ; preds = %582, %567
  call void @_ZN11spirv_cross11SmallVectorINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateELm10EED2Ev(ptr noundef nonnull align 8 dereferenceable(64) %67) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %67) #5
  br label %882

587:                                              ; preds = %581, %524
  %588 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %128, i32 0, i32 27
  %589 = call noundef zeroext i1 @_ZNK11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper20is_feature_requestedENS1_7FeatureE(ptr noundef nonnull align 4 dereferenceable(4) %588, i32 noundef 7)
  br i1 %589, label %590, label %648

590:                                              ; preds = %587
  call void @llvm.lifetime.start.p0(i64 64, ptr %74) #5
  call void @_ZN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper26get_candidates_for_featureENS1_7FeatureERKNS1_6ResultE(ptr dead_on_unwind writable sret(%"class.spirv_cross::SmallVector.313") align 8 %74, i32 noundef 7, ptr noundef nonnull align 4 dereferenceable(40) %5)
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #5
  store ptr %74, ptr %75, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #5
  %591 = load ptr, ptr %75, align 8, !tbaa !5
  %592 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %591) #5
  store ptr %592, ptr %76, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #5
  %593 = load ptr, ptr %75, align 8, !tbaa !5
  %594 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %593) #5
  store ptr %594, ptr %77, align 8, !tbaa !5
  br label %595

595:                                              ; preds = %636, %590
  %596 = load ptr, ptr %76, align 8, !tbaa !5
  %597 = load ptr, ptr %77, align 8, !tbaa !5
  %598 = icmp ne ptr %596, %597
  br i1 %598, label %600, label %599

599:                                              ; preds = %595
  store i32 31, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #5
  br label %640

600:                                              ; preds = %595
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #5
  %601 = load ptr, ptr %76, align 8, !tbaa !5
  store ptr %601, ptr %78, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #5
  %602 = load ptr, ptr %78, align 8, !tbaa !5
  %603 = load i32, ptr %602, align 4, !tbaa !123
  %604 = invoke noundef ptr @_ZN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper18get_extension_nameENS1_9CandidateE(i32 noundef %603)
          to label %605 unwind label %614

605:                                              ; preds = %600
  store ptr %604, ptr %79, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #5
  %606 = load ptr, ptr %78, align 8, !tbaa !5
  %607 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE5frontEv(ptr noundef nonnull align 8 dereferenceable(16) %74) #5
  %608 = icmp eq ptr %606, %607
  %609 = zext i1 %608 to i64
  %610 = select i1 %608, ptr @.str.133, ptr @.str.132
  store ptr %610, ptr %80, align 8, !tbaa !5
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJPKcRA10_S2_RS3_RA2_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 8 dereferenceable(8) %80, ptr noundef nonnull align 1 dereferenceable(10) @.str.134, ptr noundef nonnull align 8 dereferenceable(8) %79, ptr noundef nonnull align 1 dereferenceable(2) @.str.135)
          to label %611 unwind label %618

611:                                              ; preds = %605
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #5
  %612 = load ptr, ptr %78, align 8, !tbaa !5
  %613 = load i32, ptr %612, align 4, !tbaa !123
  switch i32 %613, label %634 [
    i32 4, label %622
    i32 8, label %626
    i32 9, label %630
  ]

614:                                              ; preds = %632, %631, %630, %628, %627, %626, %624, %623, %622, %600
  %615 = landingpad { ptr, i32 }
          cleanup
  %616 = extractvalue { ptr, i32 } %615, 0
  store ptr %616, ptr %12, align 8
  %617 = extractvalue { ptr, i32 } %615, 1
  store i32 %617, ptr %13, align 4
  br label %639

618:                                              ; preds = %605
  %619 = landingpad { ptr, i32 }
          cleanup
  %620 = extractvalue { ptr, i32 } %619, 0
  store ptr %620, ptr %12, align 8
  %621 = extractvalue { ptr, i32 } %619, 1
  store i32 %621, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #5
  br label %639

622:                                              ; preds = %611
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA61_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(61) @.str.841)
          to label %623 unwind label %614

623:                                              ; preds = %622
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA60_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(60) @.str.842)
          to label %624 unwind label %614

624:                                              ; preds = %623
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA71_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(71) @.str.843)
          to label %625 unwind label %614

625:                                              ; preds = %624
  br label %635

626:                                              ; preds = %611
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA58_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(58) @.str.844)
          to label %627 unwind label %614

627:                                              ; preds = %626
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA57_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(57) @.str.845)
          to label %628 unwind label %614

628:                                              ; preds = %627
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA68_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(68) @.str.846)
          to label %629 unwind label %614

629:                                              ; preds = %628
  br label %635

630:                                              ; preds = %611
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA77_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(77) @.str.847)
          to label %631 unwind label %614

631:                                              ; preds = %630
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA66_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(66) @.str.848)
          to label %632 unwind label %614

632:                                              ; preds = %631
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA111_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(111) @.str.849)
          to label %633 unwind label %614

633:                                              ; preds = %632
  br label %635

634:                                              ; preds = %611
  br label %635

635:                                              ; preds = %634, %633, %629, %625
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #5
  br label %636

636:                                              ; preds = %635
  %637 = load ptr, ptr %76, align 8, !tbaa !5
  %638 = getelementptr inbounds i32, ptr %637, i32 1
  store ptr %638, ptr %76, align 8, !tbaa !5
  br label %595

639:                                              ; preds = %618, %614
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #5
  br label %647

640:                                              ; preds = %599
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
          to label %641 unwind label %643

641:                                              ; preds = %640
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA1_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(1) @.str.9)
          to label %642 unwind label %643

642:                                              ; preds = %641
  call void @_ZN11spirv_cross11SmallVectorINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateELm10EED2Ev(ptr noundef nonnull align 8 dereferenceable(64) %74) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %74) #5
  br label %648

643:                                              ; preds = %641, %640
  %644 = landingpad { ptr, i32 }
          cleanup
  %645 = extractvalue { ptr, i32 } %644, 0
  store ptr %645, ptr %12, align 8
  %646 = extractvalue { ptr, i32 } %644, 1
  store i32 %646, ptr %13, align 4
  br label %647

647:                                              ; preds = %643, %639
  call void @_ZN11spirv_cross11SmallVectorINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateELm10EED2Ev(ptr noundef nonnull align 8 dereferenceable(64) %74) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %74) #5
  br label %882

648:                                              ; preds = %642, %587
  %649 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %128, i32 0, i32 27
  %650 = call noundef zeroext i1 @_ZNK11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper20is_feature_requestedENS1_7FeatureE(ptr noundef nonnull align 4 dereferenceable(4) %649, i32 noundef 8)
  br i1 %650, label %651, label %664

651:                                              ; preds = %648
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA36_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(36) @.str.850)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA160_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(160) @.str.851)
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #5
  store ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, ptr %81, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #5
  store ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, ptr %82, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #5
  store ptr getelementptr inbounds (ptr, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 16), ptr %83, align 8, !tbaa !5
  br label %652

652:                                              ; preds = %660, %651
  %653 = load ptr, ptr %82, align 8, !tbaa !5
  %654 = load ptr, ptr %83, align 8, !tbaa !5
  %655 = icmp ne ptr %653, %654
  br i1 %655, label %657, label %656

656:                                              ; preds = %652
  store i32 34, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #5
  br label %663

657:                                              ; preds = %652
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #5
  %658 = load ptr, ptr %82, align 8, !tbaa !5
  %659 = load ptr, ptr %658, align 8, !tbaa !5
  store ptr %659, ptr %84, align 8, !tbaa !5
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA44_KcRPS2_RA2_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(44) @.str.852, ptr noundef nonnull align 8 dereferenceable(8) %84, ptr noundef nonnull align 1 dereferenceable(2) @.str.135)
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #5
  br label %660

660:                                              ; preds = %657
  %661 = load ptr, ptr %82, align 8, !tbaa !5
  %662 = getelementptr inbounds ptr, ptr %661, i32 1
  store ptr %662, ptr %82, align 8, !tbaa !5
  br label %652

663:                                              ; preds = %656
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA50_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(50) @.str.853)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA1_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(1) @.str.9)
  br label %664

664:                                              ; preds = %663, %648
  %665 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %128, i32 0, i32 27
  %666 = call noundef zeroext i1 @_ZNK11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper20is_feature_requestedENS1_7FeatureE(ptr noundef nonnull align 4 dereferenceable(4) %665, i32 noundef 12)
  br i1 %666, label %667, label %717

667:                                              ; preds = %664
  call void @llvm.lifetime.start.p0(i64 64, ptr %85) #5
  call void @_ZN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper26get_candidates_for_featureENS1_7FeatureERKNS1_6ResultE(ptr dead_on_unwind writable sret(%"class.spirv_cross::SmallVector.313") align 8 %85, i32 noundef 12, ptr noundef nonnull align 4 dereferenceable(40) %5)
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #5
  store ptr %85, ptr %86, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #5
  %668 = load ptr, ptr %86, align 8, !tbaa !5
  %669 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %668) #5
  store ptr %669, ptr %87, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #5
  %670 = load ptr, ptr %86, align 8, !tbaa !5
  %671 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %670) #5
  store ptr %671, ptr %88, align 8, !tbaa !5
  br label %672

672:                                              ; preds = %705, %667
  %673 = load ptr, ptr %87, align 8, !tbaa !5
  %674 = load ptr, ptr %88, align 8, !tbaa !5
  %675 = icmp ne ptr %673, %674
  br i1 %675, label %677, label %676

676:                                              ; preds = %672
  store i32 36, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #5
  br label %709

677:                                              ; preds = %672
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #5
  %678 = load ptr, ptr %87, align 8, !tbaa !5
  store ptr %678, ptr %89, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #5
  %679 = load ptr, ptr %89, align 8, !tbaa !5
  %680 = load i32, ptr %679, align 4, !tbaa !123
  %681 = invoke noundef ptr @_ZN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper18get_extension_nameENS1_9CandidateE(i32 noundef %680)
          to label %682 unwind label %691

682:                                              ; preds = %677
  store ptr %681, ptr %90, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #5
  %683 = load ptr, ptr %89, align 8, !tbaa !5
  %684 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE5frontEv(ptr noundef nonnull align 8 dereferenceable(16) %85) #5
  %685 = icmp eq ptr %683, %684
  %686 = zext i1 %685 to i64
  %687 = select i1 %685, ptr @.str.133, ptr @.str.132
  store ptr %687, ptr %91, align 8, !tbaa !5
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJPKcRA10_S2_RS3_RA2_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 8 dereferenceable(8) %91, ptr noundef nonnull align 1 dereferenceable(10) @.str.134, ptr noundef nonnull align 8 dereferenceable(8) %90, ptr noundef nonnull align 1 dereferenceable(2) @.str.135)
          to label %688 unwind label %695

688:                                              ; preds = %682
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #5
  %689 = load ptr, ptr %89, align 8, !tbaa !5
  %690 = load i32, ptr %689, align 4, !tbaa !123
  switch i32 %690, label %703 [
    i32 5, label %699
    i32 7, label %701
  ]

691:                                              ; preds = %701, %699, %677
  %692 = landingpad { ptr, i32 }
          cleanup
  %693 = extractvalue { ptr, i32 } %692, 0
  store ptr %693, ptr %12, align 8
  %694 = extractvalue { ptr, i32 } %692, 1
  store i32 %694, ptr %13, align 4
  br label %708

695:                                              ; preds = %682
  %696 = landingpad { ptr, i32 }
          cleanup
  %697 = extractvalue { ptr, i32 } %696, 0
  store ptr %697, ptr %12, align 8
  %698 = extractvalue { ptr, i32 } %696, 1
  store i32 %698, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #5
  br label %708

699:                                              ; preds = %688
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA78_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(78) @.str.854)
          to label %700 unwind label %691

700:                                              ; preds = %699
  br label %704

701:                                              ; preds = %688
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA85_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(85) @.str.855)
          to label %702 unwind label %691

702:                                              ; preds = %701
  br label %704

703:                                              ; preds = %688
  br label %704

704:                                              ; preds = %703, %702, %700
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #5
  br label %705

705:                                              ; preds = %704
  %706 = load ptr, ptr %87, align 8, !tbaa !5
  %707 = getelementptr inbounds i32, ptr %706, i32 1
  store ptr %707, ptr %87, align 8, !tbaa !5
  br label %672

708:                                              ; preds = %695, %691
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #5
  br label %716

709:                                              ; preds = %676
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
          to label %710 unwind label %712

710:                                              ; preds = %709
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA1_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(1) @.str.9)
          to label %711 unwind label %712

711:                                              ; preds = %710
  call void @_ZN11spirv_cross11SmallVectorINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateELm10EED2Ev(ptr noundef nonnull align 8 dereferenceable(64) %85) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %85) #5
  br label %717

712:                                              ; preds = %710, %709
  %713 = landingpad { ptr, i32 }
          cleanup
  %714 = extractvalue { ptr, i32 } %713, 0
  store ptr %714, ptr %12, align 8
  %715 = extractvalue { ptr, i32 } %713, 1
  store i32 %715, ptr %13, align 4
  br label %716

716:                                              ; preds = %712, %708
  call void @_ZN11spirv_cross11SmallVectorINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateELm10EED2Ev(ptr noundef nonnull align 8 dereferenceable(64) %85) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %85) #5
  br label %882

717:                                              ; preds = %711, %664
  %718 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %128, i32 0, i32 27
  %719 = call noundef zeroext i1 @_ZNK11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper20is_feature_requestedENS1_7FeatureE(ptr noundef nonnull align 4 dereferenceable(4) %718, i32 noundef 9)
  br i1 %719, label %720, label %721

720:                                              ; preds = %717
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA37_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(37) @.str.856)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA21_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(21) @.str.857)
  call void @_ZN11spirv_cross12CompilerGLSL11begin_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848) %128)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA41_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(41) @.str.858)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA52_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(52) @.str.859)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA45_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(45) @.str.860)
  call void @_ZN11spirv_cross12CompilerGLSL9end_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848) %128)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA1_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(1) @.str.9)
  br label %721

721:                                              ; preds = %720, %717
  %722 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %128, i32 0, i32 27
  %723 = call noundef zeroext i1 @_ZNK11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper20is_feature_requestedENS1_7FeatureE(ptr noundef nonnull align 4 dereferenceable(4) %722, i32 noundef 10)
  br i1 %723, label %724, label %725

724:                                              ; preds = %721
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA37_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(37) @.str.856)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA50_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(50) @.str.861)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA1_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(1) @.str.9)
  br label %725

725:                                              ; preds = %724, %721
  %726 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %128, i32 0, i32 27
  %727 = call noundef zeroext i1 @_ZNK11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper20is_feature_requestedENS1_7FeatureE(ptr noundef nonnull align 4 dereferenceable(4) %726, i32 noundef 11)
  br i1 %727, label %728, label %734

728:                                              ; preds = %725
  %729 = load i32, ptr %4, align 4, !tbaa !9
  %730 = icmp eq i32 %729, 5
  br i1 %730, label %731, label %732

731:                                              ; preds = %728
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA37_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(37) @.str.856)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA55_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(55) @.str.862)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA61_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(61) @.str.863)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA62_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(62) @.str.864)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA60_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(60) @.str.865)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
  br label %733

732:                                              ; preds = %728
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA37_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(37) @.str.856)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA50_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(50) @.str.866)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA62_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(62) @.str.867)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA60_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(60) @.str.868)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
  br label %733

733:                                              ; preds = %732, %731
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA1_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(1) @.str.9)
  br label %734

734:                                              ; preds = %733, %725
  %735 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %128, i32 0, i32 27
  %736 = call noundef zeroext i1 @_ZNK11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper20is_feature_requestedENS1_7FeatureE(ptr noundef nonnull align 4 dereferenceable(4) %735, i32 noundef 13)
  br i1 %736, label %737, label %738

737:                                              ; preds = %734
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA38_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(38) @.str.869)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA40_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(40) @.str.870)
  call void @_ZN11spirv_cross12CompilerGLSL11begin_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848) %128)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA66_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(66) @.str.871)
  call void @_ZN11spirv_cross12CompilerGLSL9end_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848) %128)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA50_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(50) @.str.872)
  call void @_ZN11spirv_cross12CompilerGLSL11begin_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848) %128)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA43_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(43) @.str.873)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA23_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(23) @.str.874)
  call void @_ZN11spirv_cross12CompilerGLSL19statement_no_indentIJRA33_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(33) @.str.875)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA18_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(18) @.str.876)
  call void @_ZN11spirv_cross12CompilerGLSL19statement_no_indentIJRA6_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(6) @.str.84)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA24_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(24) @.str.877)
  call void @_ZN11spirv_cross12CompilerGLSL19statement_no_indentIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
  call void @_ZN11spirv_cross12CompilerGLSL9end_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848) %128)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA50_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(50) @.str.878)
  call void @_ZN11spirv_cross12CompilerGLSL11begin_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848) %128)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA43_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(43) @.str.879)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA23_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(23) @.str.874)
  call void @_ZN11spirv_cross12CompilerGLSL19statement_no_indentIJRA33_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(33) @.str.875)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA18_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(18) @.str.876)
  call void @_ZN11spirv_cross12CompilerGLSL19statement_no_indentIJRA6_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(6) @.str.84)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA24_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(24) @.str.877)
  call void @_ZN11spirv_cross12CompilerGLSL19statement_no_indentIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
  call void @_ZN11spirv_cross12CompilerGLSL9end_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848) %128)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA1_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(1) @.str.9)
  br label %738

738:                                              ; preds = %737, %734
  %739 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %128, i32 0, i32 27
  %740 = call noundef zeroext i1 @_ZNK11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper20is_feature_requestedENS1_7FeatureE(ptr noundef nonnull align 4 dereferenceable(4) %739, i32 noundef 15)
  br i1 %740, label %741, label %742

741:                                              ; preds = %738
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA38_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(38) @.str.869)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA41_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(41) @.str.880)
  call void @_ZN11spirv_cross12CompilerGLSL11begin_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848) %128)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA30_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(30) @.str.881)
  call void @_ZN11spirv_cross12CompilerGLSL19statement_no_indentIJRA33_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(33) @.str.875)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA18_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(18) @.str.876)
  call void @_ZN11spirv_cross12CompilerGLSL19statement_no_indentIJRA6_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(6) @.str.84)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA24_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(24) @.str.877)
  call void @_ZN11spirv_cross12CompilerGLSL19statement_no_indentIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
  call void @_ZN11spirv_cross12CompilerGLSL9end_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848) %128)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA1_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(1) @.str.9)
  br label %742

742:                                              ; preds = %741, %738
  %743 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %128, i32 0, i32 27
  %744 = call noundef zeroext i1 @_ZNK11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper20is_feature_requestedENS1_7FeatureE(ptr noundef nonnull align 4 dereferenceable(4) %743, i32 noundef 14)
  br i1 %744, label %745, label %746

745:                                              ; preds = %742
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA38_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(38) @.str.869)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA55_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(55) @.str.882)
  call void @_ZN11spirv_cross12CompilerGLSL11begin_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848) %128)
  call void @_ZN11spirv_cross12CompilerGLSL19statement_no_indentIJRA33_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(33) @.str.875)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA33_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(33) @.str.883)
  call void @_ZN11spirv_cross12CompilerGLSL19statement_no_indentIJRA6_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(6) @.str.84)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA54_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(54) @.str.884)
  call void @_ZN11spirv_cross12CompilerGLSL19statement_no_indentIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA29_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(29) @.str.885)
  call void @_ZN11spirv_cross12CompilerGLSL9end_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848) %128)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA1_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(1) @.str.9)
  br label %746

746:                                              ; preds = %745, %742
  call void @llvm.lifetime.start.p0(i64 16, ptr %92) #5
  %747 = getelementptr inbounds %class.anon.361, ptr %92, i32 0, i32 0
  store ptr %128, ptr %747, align 8, !tbaa !125
  %748 = getelementptr inbounds %class.anon.361, ptr %92, i32 0, i32 1
  store ptr %5, ptr %748, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %94) #5
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %94) #5
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %93, ptr noundef @.str.886, ptr noundef nonnull align 1 dereferenceable(1) %94)
          to label %749 unwind label %773

749:                                              ; preds = %746
  invoke void @"_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEENK3$_0clENS0_27ShaderSubgroupSupportHelper7FeatureENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_2OpENS1_14GroupOperationE"(ptr noundef nonnull align 8 dereferenceable(16) %92, i32 noundef 16, ptr noundef %93, i32 noundef 349, i32 noundef 0)
          to label %750 unwind label %777

750:                                              ; preds = %749
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %93) #5
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %94) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %94) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %96) #5
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %96) #5
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %95, ptr noundef @.str.887, ptr noundef nonnull align 1 dereferenceable(1) %96)
          to label %751 unwind label %782

751:                                              ; preds = %750
  invoke void @"_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEENK3$_0clENS0_27ShaderSubgroupSupportHelper7FeatureENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_2OpENS1_14GroupOperationE"(ptr noundef nonnull align 8 dereferenceable(16) %92, i32 noundef 17, ptr noundef %95, i32 noundef 349, i32 noundef 2)
          to label %752 unwind label %786

752:                                              ; preds = %751
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %95) #5
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %96) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %96) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %98) #5
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %98) #5
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %97, ptr noundef @.str.888, ptr noundef nonnull align 1 dereferenceable(1) %98)
          to label %753 unwind label %791

753:                                              ; preds = %752
  invoke void @"_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEENK3$_0clENS0_27ShaderSubgroupSupportHelper7FeatureENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_2OpENS1_14GroupOperationE"(ptr noundef nonnull align 8 dereferenceable(16) %92, i32 noundef 18, ptr noundef %97, i32 noundef 349, i32 noundef 1)
          to label %754 unwind label %795

754:                                              ; preds = %753
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %97) #5
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %98) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %98) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %100) #5
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %100) #5
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %99, ptr noundef @.str.886, ptr noundef nonnull align 1 dereferenceable(1) %100)
          to label %755 unwind label %800

755:                                              ; preds = %754
  invoke void @"_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEENK3$_0clENS0_27ShaderSubgroupSupportHelper7FeatureENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_2OpENS1_14GroupOperationE"(ptr noundef nonnull align 8 dereferenceable(16) %92, i32 noundef 19, ptr noundef %99, i32 noundef 350, i32 noundef 0)
          to label %756 unwind label %804

756:                                              ; preds = %755
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %99) #5
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %100) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %100) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %102) #5
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %102) #5
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %101, ptr noundef @.str.887, ptr noundef nonnull align 1 dereferenceable(1) %102)
          to label %757 unwind label %809

757:                                              ; preds = %756
  invoke void @"_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEENK3$_0clENS0_27ShaderSubgroupSupportHelper7FeatureENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_2OpENS1_14GroupOperationE"(ptr noundef nonnull align 8 dereferenceable(16) %92, i32 noundef 20, ptr noundef %101, i32 noundef 350, i32 noundef 2)
          to label %758 unwind label %813

758:                                              ; preds = %757
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %101) #5
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %102) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %102) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %104) #5
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %104) #5
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %103, ptr noundef @.str.888, ptr noundef nonnull align 1 dereferenceable(1) %104)
          to label %759 unwind label %818

759:                                              ; preds = %758
  invoke void @"_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEENK3$_0clENS0_27ShaderSubgroupSupportHelper7FeatureENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_2OpENS1_14GroupOperationE"(ptr noundef nonnull align 8 dereferenceable(16) %92, i32 noundef 21, ptr noundef %103, i32 noundef 350, i32 noundef 1)
          to label %760 unwind label %822

760:                                              ; preds = %759
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %103) #5
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %104) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %104) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %106) #5
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %106) #5
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %105, ptr noundef @.str.889, ptr noundef nonnull align 1 dereferenceable(1) %106)
          to label %761 unwind label %827

761:                                              ; preds = %760
  invoke void @"_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEENK3$_0clENS0_27ShaderSubgroupSupportHelper7FeatureENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_2OpENS1_14GroupOperationE"(ptr noundef nonnull align 8 dereferenceable(16) %92, i32 noundef 22, ptr noundef %105, i32 noundef 351, i32 noundef 0)
          to label %762 unwind label %831

762:                                              ; preds = %761
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %105) #5
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %106) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %106) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %108) #5
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %108) #5
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %107, ptr noundef @.str.890, ptr noundef nonnull align 1 dereferenceable(1) %108)
          to label %763 unwind label %836

763:                                              ; preds = %762
  invoke void @"_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEENK3$_0clENS0_27ShaderSubgroupSupportHelper7FeatureENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_2OpENS1_14GroupOperationE"(ptr noundef nonnull align 8 dereferenceable(16) %92, i32 noundef 23, ptr noundef %107, i32 noundef 351, i32 noundef 2)
          to label %764 unwind label %840

764:                                              ; preds = %763
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %107) #5
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %108) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %108) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %110) #5
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %110) #5
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %109, ptr noundef @.str.891, ptr noundef nonnull align 1 dereferenceable(1) %110)
          to label %765 unwind label %845

765:                                              ; preds = %764
  invoke void @"_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEENK3$_0clENS0_27ShaderSubgroupSupportHelper7FeatureENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_2OpENS1_14GroupOperationE"(ptr noundef nonnull align 8 dereferenceable(16) %92, i32 noundef 24, ptr noundef %109, i32 noundef 351, i32 noundef 1)
          to label %766 unwind label %849

766:                                              ; preds = %765
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %109) #5
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %110) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %110) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %112) #5
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %112) #5
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %111, ptr noundef @.str.889, ptr noundef nonnull align 1 dereferenceable(1) %112)
          to label %767 unwind label %854

767:                                              ; preds = %766
  invoke void @"_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEENK3$_0clENS0_27ShaderSubgroupSupportHelper7FeatureENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_2OpENS1_14GroupOperationE"(ptr noundef nonnull align 8 dereferenceable(16) %92, i32 noundef 25, ptr noundef %111, i32 noundef 352, i32 noundef 0)
          to label %768 unwind label %858

768:                                              ; preds = %767
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %111) #5
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %112) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %112) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %114) #5
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %114) #5
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %113, ptr noundef @.str.890, ptr noundef nonnull align 1 dereferenceable(1) %114)
          to label %769 unwind label %863

769:                                              ; preds = %768
  invoke void @"_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEENK3$_0clENS0_27ShaderSubgroupSupportHelper7FeatureENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_2OpENS1_14GroupOperationE"(ptr noundef nonnull align 8 dereferenceable(16) %92, i32 noundef 26, ptr noundef %113, i32 noundef 352, i32 noundef 2)
          to label %770 unwind label %867

770:                                              ; preds = %769
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %113) #5
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %114) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %114) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %116) #5
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %116) #5
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %115, ptr noundef @.str.891, ptr noundef nonnull align 1 dereferenceable(1) %116)
          to label %771 unwind label %872

771:                                              ; preds = %770
  invoke void @"_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEENK3$_0clENS0_27ShaderSubgroupSupportHelper7FeatureENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_2OpENS1_14GroupOperationE"(ptr noundef nonnull align 8 dereferenceable(16) %92, i32 noundef 27, ptr noundef %115, i32 noundef 352, i32 noundef 1)
          to label %772 unwind label %876

772:                                              ; preds = %771
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %115) #5
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %116) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %116) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %92) #5
  call void @llvm.lifetime.end.p0(i64 40, ptr %5) #5
  br label %883

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

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

781:                                              ; preds = %777, %773
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %94) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %94) #5
  br label %881

782:                                              ; preds = %750
  %783 = landingpad { ptr, i32 }
          cleanup
  %784 = extractvalue { ptr, i32 } %783, 0
  store ptr %784, ptr %12, align 8
  %785 = extractvalue { ptr, i32 } %783, 1
  store i32 %785, ptr %13, align 4
  br label %790

786:                                              ; preds = %751
  %787 = landingpad { ptr, i32 }
          cleanup
  %788 = extractvalue { ptr, i32 } %787, 0
  store ptr %788, ptr %12, align 8
  %789 = extractvalue { ptr, i32 } %787, 1
  store i32 %789, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %95) #5
  br label %790

790:                                              ; preds = %786, %782
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %96) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %96) #5
  br label %881

791:                                              ; preds = %752
  %792 = landingpad { ptr, i32 }
          cleanup
  %793 = extractvalue { ptr, i32 } %792, 0
  store ptr %793, ptr %12, align 8
  %794 = extractvalue { ptr, i32 } %792, 1
  store i32 %794, ptr %13, align 4
  br label %799

795:                                              ; preds = %753
  %796 = landingpad { ptr, i32 }
          cleanup
  %797 = extractvalue { ptr, i32 } %796, 0
  store ptr %797, ptr %12, align 8
  %798 = extractvalue { ptr, i32 } %796, 1
  store i32 %798, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %97) #5
  br label %799

799:                                              ; preds = %795, %791
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %98) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %98) #5
  br label %881

800:                                              ; preds = %754
  %801 = landingpad { ptr, i32 }
          cleanup
  %802 = extractvalue { ptr, i32 } %801, 0
  store ptr %802, ptr %12, align 8
  %803 = extractvalue { ptr, i32 } %801, 1
  store i32 %803, ptr %13, align 4
  br label %808

804:                                              ; preds = %755
  %805 = landingpad { ptr, i32 }
          cleanup
  %806 = extractvalue { ptr, i32 } %805, 0
  store ptr %806, ptr %12, align 8
  %807 = extractvalue { ptr, i32 } %805, 1
  store i32 %807, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %99) #5
  br label %808

808:                                              ; preds = %804, %800
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %100) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %100) #5
  br label %881

809:                                              ; preds = %756
  %810 = landingpad { ptr, i32 }
          cleanup
  %811 = extractvalue { ptr, i32 } %810, 0
  store ptr %811, ptr %12, align 8
  %812 = extractvalue { ptr, i32 } %810, 1
  store i32 %812, ptr %13, align 4
  br label %817

813:                                              ; preds = %757
  %814 = landingpad { ptr, i32 }
          cleanup
  %815 = extractvalue { ptr, i32 } %814, 0
  store ptr %815, ptr %12, align 8
  %816 = extractvalue { ptr, i32 } %814, 1
  store i32 %816, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %101) #5
  br label %817

817:                                              ; preds = %813, %809
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %102) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %102) #5
  br label %881

818:                                              ; preds = %758
  %819 = landingpad { ptr, i32 }
          cleanup
  %820 = extractvalue { ptr, i32 } %819, 0
  store ptr %820, ptr %12, align 8
  %821 = extractvalue { ptr, i32 } %819, 1
  store i32 %821, ptr %13, align 4
  br label %826

822:                                              ; preds = %759
  %823 = landingpad { ptr, i32 }
          cleanup
  %824 = extractvalue { ptr, i32 } %823, 0
  store ptr %824, ptr %12, align 8
  %825 = extractvalue { ptr, i32 } %823, 1
  store i32 %825, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %103) #5
  br label %826

826:                                              ; preds = %822, %818
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %104) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %104) #5
  br label %881

827:                                              ; preds = %760
  %828 = landingpad { ptr, i32 }
          cleanup
  %829 = extractvalue { ptr, i32 } %828, 0
  store ptr %829, ptr %12, align 8
  %830 = extractvalue { ptr, i32 } %828, 1
  store i32 %830, ptr %13, align 4
  br label %835

831:                                              ; preds = %761
  %832 = landingpad { ptr, i32 }
          cleanup
  %833 = extractvalue { ptr, i32 } %832, 0
  store ptr %833, ptr %12, align 8
  %834 = extractvalue { ptr, i32 } %832, 1
  store i32 %834, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %105) #5
  br label %835

835:                                              ; preds = %831, %827
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %106) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %106) #5
  br label %881

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

840:                                              ; preds = %763
  %841 = landingpad { ptr, i32 }
          cleanup
  %842 = extractvalue { ptr, i32 } %841, 0
  store ptr %842, ptr %12, align 8
  %843 = extractvalue { ptr, i32 } %841, 1
  store i32 %843, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %107) #5
  br label %844

844:                                              ; preds = %840, %836
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %108) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %108) #5
  br label %881

845:                                              ; preds = %764
  %846 = landingpad { ptr, i32 }
          cleanup
  %847 = extractvalue { ptr, i32 } %846, 0
  store ptr %847, ptr %12, align 8
  %848 = extractvalue { ptr, i32 } %846, 1
  store i32 %848, ptr %13, align 4
  br label %853

849:                                              ; preds = %765
  %850 = landingpad { ptr, i32 }
          cleanup
  %851 = extractvalue { ptr, i32 } %850, 0
  store ptr %851, ptr %12, align 8
  %852 = extractvalue { ptr, i32 } %850, 1
  store i32 %852, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %109) #5
  br label %853

853:                                              ; preds = %849, %845
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %110) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %110) #5
  br label %881

854:                                              ; preds = %766
  %855 = landingpad { ptr, i32 }
          cleanup
  %856 = extractvalue { ptr, i32 } %855, 0
  store ptr %856, ptr %12, align 8
  %857 = extractvalue { ptr, i32 } %855, 1
  store i32 %857, ptr %13, align 4
  br label %862

858:                                              ; preds = %767
  %859 = landingpad { ptr, i32 }
          cleanup
  %860 = extractvalue { ptr, i32 } %859, 0
  store ptr %860, ptr %12, align 8
  %861 = extractvalue { ptr, i32 } %859, 1
  store i32 %861, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %111) #5
  br label %862

862:                                              ; preds = %858, %854
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %112) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %112) #5
  br label %881

863:                                              ; preds = %768
  %864 = landingpad { ptr, i32 }
          cleanup
  %865 = extractvalue { ptr, i32 } %864, 0
  store ptr %865, ptr %12, align 8
  %866 = extractvalue { ptr, i32 } %864, 1
  store i32 %866, ptr %13, align 4
  br label %871

867:                                              ; preds = %769
  %868 = landingpad { ptr, i32 }
          cleanup
  %869 = extractvalue { ptr, i32 } %868, 0
  store ptr %869, ptr %12, align 8
  %870 = extractvalue { ptr, i32 } %868, 1
  store i32 %870, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %113) #5
  br label %871

871:                                              ; preds = %867, %863
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %114) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %114) #5
  br label %881

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

876:                                              ; preds = %771
  %877 = landingpad { ptr, i32 }
          cleanup
  %878 = extractvalue { ptr, i32 } %877, 0
  store ptr %878, ptr %12, align 8
  %879 = extractvalue { ptr, i32 } %877, 1
  store i32 %879, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %115) #5
  br label %880

880:                                              ; preds = %876, %872
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %116) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %116) #5
  br label %881

881:                                              ; preds = %880, %871, %862, %853, %844, %835, %826, %817, %808, %799, %790, %781
  call void @llvm.lifetime.end.p0(i64 16, ptr %92) #5
  br label %882

882:                                              ; preds = %881, %716, %647, %586, %523, %404, %353, %302, %249, %194
  call void @llvm.lifetime.end.p0(i64 40, ptr %5) #5
  br label %975

883:                                              ; preds = %772, %2
  %884 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %128, i32 0, i32 32
  %885 = call noundef zeroext i1 @_ZNK11spirv_cross10VectorViewINS_7TypedIDILNS_5TypesE1EEEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %884) #5
  br i1 %885, label %974, label %886

886:                                              ; preds = %883
  call void @llvm.lifetime.start.p0(i64 8, ptr %117) #5
  %887 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %128, i32 0, i32 32
  store ptr %887, ptr %117, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %118) #5
  %888 = load ptr, ptr %117, align 8, !tbaa !5
  %889 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_7TypedIDILNS_5TypesE1EEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %888) #5
  store ptr %889, ptr %118, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %119) #5
  %890 = load ptr, ptr %117, align 8, !tbaa !5
  %891 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_7TypedIDILNS_5TypesE1EEEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %890) #5
  store ptr %891, ptr %119, align 8, !tbaa !5
  br label %892

892:                                              ; preds = %969, %886
  %893 = load ptr, ptr %118, align 8, !tbaa !5
  %894 = load ptr, ptr %119, align 8, !tbaa !5
  %895 = icmp ne ptr %893, %894
  br i1 %895, label %897, label %896

896:                                              ; preds = %892
  store i32 39, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %118) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #5
  br label %973

897:                                              ; preds = %892
  call void @llvm.lifetime.start.p0(i64 8, ptr %120) #5
  %898 = load ptr, ptr %118, align 8, !tbaa !5
  store ptr %898, ptr %120, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %121) #5
  %899 = load ptr, ptr %120, align 8, !tbaa !5
  %900 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE1EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %899)
  %901 = call noundef nonnull align 8 dereferenceable(336) ptr @_ZN11spirv_cross8Compiler3getINS_8SPIRTypeEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %128, i32 noundef %900)
  store ptr %901, ptr %121, align 8, !tbaa !5
  %902 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %128, i32 0, i32 9
  %903 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %902, i32 0, i32 1
  %904 = load i8, ptr %903, align 4, !tbaa !127, !range !121, !noundef !122
  %905 = trunc i8 %904 to i1
  br i1 %905, label %906, label %948

906:                                              ; preds = %897
  %907 = load ptr, ptr %121, align 8, !tbaa !5
  %908 = call noundef zeroext i1 @_ZNK11spirv_cross8Compiler9is_matrixERKNS_8SPIRTypeE(ptr noundef nonnull align 8 dereferenceable(3176) %128, ptr noundef nonnull align 8 dereferenceable(336) %907)
  br i1 %908, label %909, label %948

909:                                              ; preds = %906
  call void @llvm.lifetime.start.p0(i64 32, ptr %122) #5
  %910 = load ptr, ptr %121, align 8, !tbaa !5
  %911 = load ptr, ptr %128, align 8, !tbaa !128
  %912 = getelementptr inbounds ptr, ptr %911, i64 19
  %913 = load ptr, ptr %912, align 8
  call void %913(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %122, ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 8 dereferenceable(336) %910, i32 noundef 0)
  call void @llvm.lifetime.start.p0(i64 32, ptr %123) #5
  %914 = load ptr, ptr %121, align 8, !tbaa !5
  %915 = load ptr, ptr %128, align 8, !tbaa !128
  %916 = getelementptr inbounds ptr, ptr %915, i64 19
  %917 = load ptr, ptr %916, align 8
  invoke void %917(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %123, ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 8 dereferenceable(336) %914, i32 noundef 0)
          to label %918 unwind label %930

918:                                              ; preds = %909
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA30_S2_SA_RA24_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(7) @.str.892, ptr noundef nonnull align 8 dereferenceable(32) %122, ptr noundef nonnull align 1 dereferenceable(30) @.str.893, ptr noundef nonnull align 8 dereferenceable(32) %123, ptr noundef nonnull align 1 dereferenceable(24) @.str.894)
          to label %919 unwind label %934

919:                                              ; preds = %918
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %123) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %123) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %122) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %122) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr %124) #5
  %920 = load ptr, ptr %121, align 8, !tbaa !5
  %921 = load ptr, ptr %128, align 8, !tbaa !128
  %922 = getelementptr inbounds ptr, ptr %921, i64 19
  %923 = load ptr, ptr %922, align 8
  call void %923(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %124, ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 8 dereferenceable(336) %920, i32 noundef 0)
  call void @llvm.lifetime.start.p0(i64 32, ptr %125) #5
  %924 = load ptr, ptr %121, align 8, !tbaa !5
  %925 = load ptr, ptr %128, align 8, !tbaa !128
  %926 = getelementptr inbounds ptr, ptr %925, i64 19
  %927 = load ptr, ptr %926, align 8
  invoke void %927(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %125, ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 8 dereferenceable(336) %924, i32 noundef 0)
          to label %928 unwind label %939

928:                                              ; preds = %919
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA9_KcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA34_S2_SA_RA24_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(9) @.str.895, ptr noundef nonnull align 8 dereferenceable(32) %124, ptr noundef nonnull align 1 dereferenceable(34) @.str.896, ptr noundef nonnull align 8 dereferenceable(32) %125, ptr noundef nonnull align 1 dereferenceable(24) @.str.894)
          to label %929 unwind label %943

929:                                              ; preds = %928
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %125) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %125) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %124) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %124) #5
  br label %968

930:                                              ; preds = %909
  %931 = landingpad { ptr, i32 }
          cleanup
  %932 = extractvalue { ptr, i32 } %931, 0
  store ptr %932, ptr %12, align 8
  %933 = extractvalue { ptr, i32 } %931, 1
  store i32 %933, ptr %13, align 4
  br label %938

934:                                              ; preds = %918
  %935 = landingpad { ptr, i32 }
          cleanup
  %936 = extractvalue { ptr, i32 } %935, 0
  store ptr %936, ptr %12, align 8
  %937 = extractvalue { ptr, i32 } %935, 1
  store i32 %937, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %123) #5
  br label %938

938:                                              ; preds = %934, %930
  call void @llvm.lifetime.end.p0(i64 32, ptr %123) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %122) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %122) #5
  br label %972

939:                                              ; preds = %919
  %940 = landingpad { ptr, i32 }
          cleanup
  %941 = extractvalue { ptr, i32 } %940, 0
  store ptr %941, ptr %12, align 8
  %942 = extractvalue { ptr, i32 } %940, 1
  store i32 %942, ptr %13, align 4
  br label %947

943:                                              ; preds = %928
  %944 = landingpad { ptr, i32 }
          cleanup
  %945 = extractvalue { ptr, i32 } %944, 0
  store ptr %945, ptr %12, align 8
  %946 = extractvalue { ptr, i32 } %944, 1
  store i32 %946, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %125) #5
  br label %947

947:                                              ; preds = %943, %939
  call void @llvm.lifetime.end.p0(i64 32, ptr %125) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %124) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %124) #5
  br label %972

948:                                              ; preds = %906, %897
  call void @llvm.lifetime.start.p0(i64 32, ptr %126) #5
  %949 = load ptr, ptr %121, align 8, !tbaa !5
  %950 = load ptr, ptr %128, align 8, !tbaa !128
  %951 = getelementptr inbounds ptr, ptr %950, i64 19
  %952 = load ptr, ptr %951, align 8
  call void %952(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %126, ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 8 dereferenceable(336) %949, i32 noundef 0)
  call void @llvm.lifetime.start.p0(i64 32, ptr %127) #5
  %953 = load ptr, ptr %121, align 8, !tbaa !5
  %954 = load ptr, ptr %128, align 8, !tbaa !128
  %955 = getelementptr inbounds ptr, ptr %954, i64 19
  %956 = load ptr, ptr %955, align 8
  invoke void %956(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %127, ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 8 dereferenceable(336) %953, i32 noundef 0)
          to label %957 unwind label %959

957:                                              ; preds = %948
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA24_KcS7_SA_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 8 dereferenceable(32) %126, ptr noundef nonnull align 1 dereferenceable(24) @.str.897, ptr noundef nonnull align 8 dereferenceable(32) %127, ptr noundef nonnull align 1 dereferenceable(24) @.str.894)
          to label %958 unwind label %963

958:                                              ; preds = %957
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %127) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %127) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %126) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %126) #5
  br label %968

959:                                              ; preds = %948
  %960 = landingpad { ptr, i32 }
          cleanup
  %961 = extractvalue { ptr, i32 } %960, 0
  store ptr %961, ptr %12, align 8
  %962 = extractvalue { ptr, i32 } %960, 1
  store i32 %962, ptr %13, align 4
  br label %967

963:                                              ; preds = %957
  %964 = landingpad { ptr, i32 }
          cleanup
  %965 = extractvalue { ptr, i32 } %964, 0
  store ptr %965, ptr %12, align 8
  %966 = extractvalue { ptr, i32 } %964, 1
  store i32 %966, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %127) #5
  br label %967

967:                                              ; preds = %963, %959
  call void @llvm.lifetime.end.p0(i64 32, ptr %127) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %126) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %126) #5
  br label %972

968:                                              ; preds = %958, %929
  call void @llvm.lifetime.end.p0(i64 8, ptr %121) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %120) #5
  br label %969

969:                                              ; preds = %968
  %970 = load ptr, ptr %118, align 8, !tbaa !5
  %971 = getelementptr inbounds %"class.spirv_cross::TypedID.281", ptr %970, i32 1
  store ptr %971, ptr %118, align 8, !tbaa !5
  br label %892

972:                                              ; preds = %967, %947, %938
  call void @llvm.lifetime.end.p0(i64 8, ptr %121) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %120) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %118) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #5
  br label %975

973:                                              ; preds = %896
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA1_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %128, ptr noundef nonnull align 1 dereferenceable(1) @.str.9)
  br label %974

974:                                              ; preds = %973, %883
  ret void

975:                                              ; preds = %972, %882
  %976 = load ptr, ptr %12, align 8
  %977 = load i32, ptr %13, align 4
  %978 = insertvalue { ptr, i32 } poison, ptr %976, 0
  %979 = insertvalue { ptr, i32 } %978, i32 %977, 1
  resume { ptr, i32 } %979
}

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper18get_extension_nameENS1_9CandidateE(i32 noundef) #2 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper7resolveEv(ptr dead_on_unwind noalias writable sret(%"struct.spirv_cross::CompilerGLSL::ShaderSubgroupSupportHelper::Result") align 4, ptr noundef nonnull align 4 dereferenceable(4)) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper26get_candidates_for_featureENS1_7FeatureERKNS1_6ResultE(ptr dead_on_unwind noalias writable sret(%"class.spirv_cross::SmallVector.313") align 8, i32 noundef, ptr noundef nonnull align 4 dereferenceable(40)) #1 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEENK3$_0clENS0_27ShaderSubgroupSupportHelper7FeatureENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_2OpENS1_14GroupOperationE"(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef, ptr noundef, i32 noundef, i32 noundef) #3 align 2

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"_ZTSN3spv14ExecutionModelE", !7, i64 0}
!11 = !{!12, !55, i64 7648}
!12 = !{!"_ZTSN11spirv_cross12CompilerGLSLE", !13, i64 0, !6, i64 3176, !79, i64 3184, !55, i64 3272, !82, i64 3280, !6, i64 7616, !6, i64 7624, !55, i64 7632, !55, i64 7633, !87, i64 7636, !91, i64 7680, !91, i64 7736, !91, i64 7792, !91, i64 7848, !91, i64 7904, !91, i64 7960, !91, i64 8016, !93, i64 8072, !77, i64 8128, !55, i64 8184, !95, i64 8192, !53, i64 8416, !61, i64 8424, !61, i64 8480, !61, i64 8536, !97, i64 8592, !99, i64 8648, !100, i64 8656, !42, i64 8712, !42, i64 8992, !100, i64 9272, !102, i64 9328, !53, i64 9384, !53, i64 9388, !53, i64 9392, !55, i64 9396, !55, i64 9397, !105, i64 9400, !105, i64 9424, !109, i64 9448, !113, i64 9472, !100, i64 9496, !61, i64 9552, !61, i64 9608, !7, i64 9664, !117, i64 9672, !61, i64 9728, !6, i64 9784, !119, i64 9792}
!13 = !{!"_ZTSN11spirv_cross8CompilerE", !14, i64 8, !63, i64 1928, !63, i64 1984, !6, i64 2040, !6, i64 2048, !53, i64 2056, !66, i64 2064, !55, i64 2120, !61, i64 2128, !55, i64 2184, !55, i64 2185, !68, i64 2192, !63, i64 2312, !71, i64 2368, !61, i64 2400, !61, i64 2456, !61, i64 2512, !61, i64 2568, !61, i64 2624, !60, i64 2680, !60, i64 2744, !53, i64 2808, !53, i64 2812, !55, i64 2816, !61, i64 2824, !55, i64 2880, !55, i64 2881, !53, i64 2884, !73, i64 2888, !63, i64 2944, !75, i64 3000, !61, i64 3056, !55, i64 3112, !77, i64 3120}
!14 = !{!"_ZTSN11spirv_cross8ParsedIRE", !15, i64 0, !21, i64 8, !25, i64 32, !29, i64 248, !7, i64 304, !34, i64 1088, !34, i64 1144, !37, i64 1200, !39, i64 1256, !42, i64 1312, !45, i64 1592, !48, i64 1624, !50, i64 1680, !52, i64 1736, !54, i64 1740, !56, i64 1748, !57, i64 1752, !53, i64 1756, !53, i64 1760, !58, i64 1768, !60, i64 1800, !61, i64 1864}
!15 = !{!"_ZTSSt10unique_ptrIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EE", !16, i64 0}
!16 = !{!"_ZTSSt15__uniq_ptr_dataIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_ELb1ELb1EE", !17, i64 0}
!17 = !{!"_ZTSSt15__uniq_ptr_implIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EE", !18, i64 0}
!18 = !{!"_ZTSSt5tupleIJPN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EEE", !19, i64 0}
!19 = !{!"_ZTSSt11_Tuple_implILm0EJPN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EEE", !20, i64 0}
!20 = !{!"_ZTSSt10_Head_baseILm0EPN11spirv_cross15ObjectPoolGroupELb0EE", !6, i64 0}
!21 = !{!"_ZTSSt6vectorIjSaIjEE", !22, i64 0}
!22 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!25 = !{!"_ZTSN11spirv_cross11SmallVectorINS_7VariantELm8EEE", !26, i64 0, !27, i64 16, !28, i64 24}
!26 = !{!"_ZTSN11spirv_cross10VectorViewINS_7VariantEEE", !6, i64 0, !27, i64 8}
!27 = !{!"long", !7, i64 0}
!28 = !{!"_ZTSN11spirv_cross13AlignedBufferINS_7VariantELm8EEE", !7, i64 0}
!29 = !{!"_ZTSSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE0EEENS0_4MetaESt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S4_EEE", !30, i64 0}
!30 = !{!"_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, !27, i64 8, !31, i64 16, !27, i64 24, !32, i64 32, !6, i64 48}
!31 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!32 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !33, i64 0, !27, i64 8}
!33 = !{!"float", !7, i64 0}
!34 = !{!"_ZTSN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EEE", !35, i64 0, !27, i64 16, !36, i64 24}
!35 = !{!"_ZTSN11spirv_cross10VectorViewINS_7TypedIDILNS_5TypesE0EEEEE", !6, i64 0, !27, i64 8}
!36 = !{!"_ZTSN11spirv_cross13AlignedBufferINS_7TypedIDILNS_5TypesE0EEELm8EEE", !7, i64 0}
!37 = !{!"_ZTSSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE0EEEjSt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_jEEE", !38, i64 0}
!38 = !{!"_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, !27, i64 8, !31, i64 16, !27, i64 24, !32, i64 32, !6, i64 48}
!39 = !{!"_ZTSN11spirv_cross11SmallVectorIN3spv10CapabilityELm8EEE", !40, i64 0, !27, i64 16, !41, i64 24}
!40 = !{!"_ZTSN11spirv_cross10VectorViewIN3spv10CapabilityEEE", !6, i64 0, !27, i64 8}
!41 = !{!"_ZTSN11spirv_cross13AlignedBufferIN3spv10CapabilityELm8EEE", !7, i64 0}
!42 = !{!"_ZTSN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EEE", !43, i64 0, !27, i64 16, !44, i64 24}
!43 = !{!"_ZTSN11spirv_cross10VectorViewINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !6, i64 0, !27, i64 8}
!44 = !{!"_ZTSN11spirv_cross13AlignedBufferINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EEE", !7, i64 0}
!45 = !{!"_ZTSN11spirv_cross11SmallVectorIhLm8EEE", !46, i64 0, !27, i64 16, !47, i64 24}
!46 = !{!"_ZTSN11spirv_cross10VectorViewIhEE", !6, i64 0, !27, i64 8}
!47 = !{!"_ZTSN11spirv_cross13AlignedBufferIhLm8EEE", !7, i64 0}
!48 = !{!"_ZTSSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE6EEES3_St4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S3_EEE", !49, i64 0}
!49 = !{!"_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, !27, i64 8, !31, i64 16, !27, i64 24, !32, i64 32, !6, i64 48}
!50 = !{!"_ZTSSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE4EEENS0_14SPIREntryPointESt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S4_EEE", !51, i64 0}
!51 = !{!"_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, !27, i64 8, !31, i64 16, !27, i64 24, !32, i64 32, !6, i64 48}
!52 = !{!"_ZTSN11spirv_cross7TypedIDILNS_5TypesE4EEE", !53, i64 0}
!53 = !{!"int", !7, i64 0}
!54 = !{!"_ZTSN11spirv_cross8ParsedIR6SourceE", !53, i64 0, !55, i64 4, !55, i64 5, !55, i64 6}
!55 = !{!"bool", !7, i64 0}
!56 = !{!"_ZTSN3spv15AddressingModelE", !7, i64 0}
!57 = !{!"_ZTSN3spv11MemoryModelE", !7, i64 0}
!58 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !59, i64 0, !27, i64 8, !7, i64 16}
!59 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!60 = !{!"_ZTSN11spirv_cross6BitsetE", !27, i64 0, !61, i64 8}
!61 = !{!"_ZTSSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEE", !62, i64 0}
!62 = !{!"_ZTSSt10_HashtableIjjSaIjENSt8__detail9_IdentityESt8equal_toIjESt4hashIjENS1_18_Mod_range_hashingENS1_20_Default_ranged_hashENS1_20_Prime_rehash_policyENS1_17_Hashtable_traitsILb0ELb1ELb1EEEE", !6, i64 0, !27, i64 8, !31, i64 16, !27, i64 24, !32, i64 32, !6, i64 48}
!63 = !{!"_ZTSN11spirv_cross11SmallVectorIjLm8EEE", !64, i64 0, !27, i64 16, !65, i64 24}
!64 = !{!"_ZTSN11spirv_cross10VectorViewIjEE", !6, i64 0, !27, i64 8}
!65 = !{!"_ZTSN11spirv_cross13AlignedBufferIjLm8EEE", !7, i64 0}
!66 = !{!"_ZTSSt13unordered_setIN11spirv_cross7TypedIDILNS0_5TypesE2EEESt4hashIS3_ESt8equal_toIS3_ESaIS3_EE", !67, i64 0}
!67 = !{!"_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, !27, i64 8, !31, i64 16, !27, i64 24, !32, i64 32, !6, i64 48}
!68 = !{!"_ZTSN11spirv_cross11SmallVectorINS_20CombinedImageSamplerELm8EEE", !69, i64 0, !27, i64 16, !70, i64 24}
!69 = !{!"_ZTSN11spirv_cross10VectorViewINS_20CombinedImageSamplerEEE", !6, i64 0, !27, i64 8}
!70 = !{!"_ZTSN11spirv_cross13AlignedBufferINS_20CombinedImageSamplerELm8EEE", !7, i64 0}
!71 = !{!"_ZTSSt8functionIFvRKN11spirv_cross8SPIRTypeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERS9_EE", !72, i64 0, !6, i64 24}
!72 = !{!"_ZTSSt14_Function_base", !7, i64 0, !6, i64 16}
!73 = !{!"_ZTSSt13unordered_mapIjSt10unique_ptrIN11spirv_cross3CFGESt14default_deleteIS2_EESt4hashIjESt8equal_toIjESaISt4pairIKjS5_EEE", !74, i64 0}
!74 = !{!"_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, !27, i64 8, !31, i64 16, !27, i64 24, !32, i64 32, !6, i64 48}
!75 = !{!"_ZTSSt13unordered_mapIjN11spirv_cross8Compiler17PhysicalBlockMetaESt4hashIjESt8equal_toIjESaISt4pairIKjS2_EEE", !76, i64 0}
!76 = !{!"_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, !27, i64 8, !31, i64 16, !27, i64 24, !32, i64 32, !6, i64 48}
!77 = !{!"_ZTSSt13unordered_mapIjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4hashIjESt8equal_toIjESaISt4pairIKjS5_EEE", !78, i64 0}
!78 = !{!"_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, !27, i64 8, !31, i64 16, !27, i64 24, !32, i64 32, !6, i64 48}
!79 = !{!"_ZTSN11spirv_cross11SmallVectorIPNS_9SPIRBlockELm8EEE", !80, i64 0, !27, i64 16, !81, i64 24}
!80 = !{!"_ZTSN11spirv_cross10VectorViewIPNS_9SPIRBlockEEE", !6, i64 0, !27, i64 8}
!81 = !{!"_ZTSN11spirv_cross13AlignedBufferIPNS_9SPIRBlockELm8EEE", !7, i64 0}
!82 = !{!"_ZTSN11spirv_cross12StringStreamILm4096ELm4096EEE", !83, i64 0, !7, i64 24, !84, i64 4120}
!83 = !{!"_ZTSN11spirv_cross12StringStreamILm4096ELm4096EE6BufferE", !6, i64 0, !27, i64 8, !27, i64 16}
!84 = !{!"_ZTSN11spirv_cross11SmallVectorINS_12StringStreamILm4096ELm4096EE6BufferELm8EEE", !85, i64 0, !27, i64 16, !86, i64 24}
!85 = !{!"_ZTSN11spirv_cross10VectorViewINS_12StringStreamILm4096ELm4096EE6BufferEEE", !6, i64 0, !27, i64 8}
!86 = !{!"_ZTSN11spirv_cross13AlignedBufferINS_12StringStreamILm4096ELm4096EE6BufferELm8EEE", !7, i64 0}
!87 = !{!"_ZTSN11spirv_cross12CompilerGLSL7OptionsE", !53, i64 0, !55, i64 4, !55, i64 5, !53, i64 8, !55, i64 12, !55, i64 13, !55, i64 14, !55, i64 15, !55, i64 16, !55, i64 17, !55, i64 18, !55, i64 19, !55, i64 20, !55, i64 21, !55, i64 22, !55, i64 23, !53, i64 24, !88, i64 28, !89, i64 32}
!88 = !{!"_ZTSN11spirv_cross12CompilerGLSL7Options13VertexOptionsE", !55, i64 0, !55, i64 1, !55, i64 2}
!89 = !{!"_ZTSN11spirv_cross12CompilerGLSL7Options15FragmentOptionsE", !90, i64 0, !90, i64 4}
!90 = !{!"_ZTSN11spirv_cross12CompilerGLSL7Options9PrecisionE", !7, i64 0}
!91 = !{!"_ZTSSt13unordered_setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4hashIS5_ESt8equal_toIS5_ESaIS5_EE", !92, i64 0}
!92 = !{!"_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, !27, i64 8, !31, i64 16, !27, i64 24, !32, i64 32, !6, i64 48}
!93 = !{!"_ZTSSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt13unordered_setImSt4hashImESt8equal_toImESaImEES7_IS5_ES9_IS5_ESaISt4pairIKS5_SC_EEE", !94, i64 0}
!94 = !{!"_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, !27, i64 8, !31, i64 16, !27, i64 24, !32, i64 32, !6, i64 48}
!95 = !{!"_ZTSN11spirv_cross12CompilerGLSL17BackendVariationsE", !58, i64 0, !58, i64 32, !58, i64 64, !55, i64 96, !55, i64 97, !55, i64 98, !55, 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, !96, i64 184, !55, i64 188, !55, i64 189, !55, i64 190, !55, i64 191, !55, i64 192, !55, i64 193, !55, i64 194, !55, i64 195, !55, i64 196, !55, i64 197, !55, i64 198, !55, i64 199, !55, i64 200, !55, i64 201, !55, i64 202, !55, i64 203, !55, i64 204, !55, i64 205, !55, i64 206, !55, i64 207, !55, i64 208, !55, i64 209, !55, i64 210, !55, i64 211, !55, i64 212, !55, i64 213, !55, i64 214, !55, i64 215, !55, i64 216, !55, i64 217, !55, i64 218, !55, i64 219}
!96 = !{!"_ZTSN11spirv_cross8SPIRType8BaseTypeE", !7, i64 0}
!97 = !{!"_ZTSSt13unordered_mapIjbSt4hashIjESt8equal_toIjESaISt4pairIKjbEEE", !98, i64 0}
!98 = !{!"_ZTSSt10_HashtableIjSt4pairIKjbESaIS2_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !27, i64 8, !31, i64 16, !27, i64 24, !32, i64 32, !6, i64 48}
!99 = !{!"_ZTSN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelperE", !53, i64 0}
!100 = !{!"_ZTSSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEE", !101, i64 0}
!101 = !{!"_ZTSSt10_HashtableIjSt4pairIKjjESaIS2_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !27, i64 8, !31, i64 16, !27, i64 24, !32, i64 32, !6, i64 48}
!102 = !{!"_ZTSN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE1EEELm8EEE", !103, i64 0, !27, i64 16, !104, i64 24}
!103 = !{!"_ZTSN11spirv_cross10VectorViewINS_7TypedIDILNS_5TypesE1EEEEE", !6, i64 0, !27, i64 8}
!104 = !{!"_ZTSN11spirv_cross13AlignedBufferINS_7TypedIDILNS_5TypesE1EEELm8EEE", !7, i64 0}
!105 = !{!"_ZTSSt6vectorIN11spirv_cross8PlsRemapESaIS1_EE", !106, i64 0}
!106 = !{!"_ZTSSt12_Vector_baseIN11spirv_cross8PlsRemapESaIS1_EE", !107, i64 0}
!107 = !{!"_ZTSNSt12_Vector_baseIN11spirv_cross8PlsRemapESaIS1_EE12_Vector_implE", !108, i64 0}
!108 = !{!"_ZTSNSt12_Vector_baseIN11spirv_cross8PlsRemapESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!109 = !{!"_ZTSSt6vectorISt4pairIjjESaIS1_EE", !110, i64 0}
!110 = !{!"_ZTSSt12_Vector_baseISt4pairIjjESaIS1_EE", !111, i64 0}
!111 = !{!"_ZTSNSt12_Vector_baseISt4pairIjjESaIS1_EE12_Vector_implE", !112, i64 0}
!112 = !{!"_ZTSNSt12_Vector_baseISt4pairIjjESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!113 = !{!"_ZTSSt6vectorISt4pairIjbESaIS1_EE", !114, i64 0}
!114 = !{!"_ZTSSt12_Vector_baseISt4pairIjbESaIS1_EE", !115, i64 0}
!115 = !{!"_ZTSNSt12_Vector_baseISt4pairIjbESaIS1_EE12_Vector_implE", !116, i64 0}
!116 = !{!"_ZTSNSt12_Vector_baseISt4pairIjbESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!117 = !{!"_ZTSSt13unordered_setIN11spirv_cross21LocationComponentPairENS0_14InternalHasherESt8equal_toIS1_ESaIS1_EE", !118, i64 0}
!118 = !{!"_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, !27, i64 8, !31, i64 16, !27, i64 24, !32, i64 32, !6, i64 48}
!119 = !{!"_ZTSSt13unordered_mapIjN11spirv_cross11SmallVectorINS0_7TypedIDILNS0_5TypesE3EEELm8EEESt4hashIjESt8equal_toIjESaISt4pairIKjS5_EEE", !120, i64 0}
!120 = !{!"_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, !27, i64 8, !31, i64 16, !27, i64 24, !32, i64 32, !6, i64 48}
!121 = !{i8 0, i8 2}
!122 = !{}
!123 = !{!124, !124, i64 0}
!124 = !{!"_ZTSN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateE", !7, i64 0}
!125 = !{!126, !6, i64 0}
!126 = !{!"_ZTSZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE3$_0", !6, i64 0, !6, i64 8}
!127 = !{!12, !55, i64 7640}
!128 = !{!129, !129, i64 0}
!129 = !{!"vtable pointer", !8, 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"

%"struct.spirv_cross::CompilerGLSL::ShaderSubgroupSupportHelper::Result" = type { [10 x i32] }
%"class.spirv_cross::SmallVector.313" = type { %"class.spirv_cross::VectorView.314", i64, %"class.spirv_cross::AlignedBuffer.315" }
%"class.spirv_cross::VectorView.314" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.315" = type { [40 x i8] }
%class.anon.361 = type { ptr, ptr }
%"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 }

@.str.9 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.132 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.133 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.134 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.135 = external hidden unnamed_addr constant [2 x i8], align 1
@_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types = external hidden local_unnamed_addr global [16 x ptr], align 16
@.str.810 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.811 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.812 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.813 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.814 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.815 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.816 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.817 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.818 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.819 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.820 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.821 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.822 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.823 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.824 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.825 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.826 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.827 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.828 = external hidden unnamed_addr constant [83 x i8], align 1
@.str.829 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.830 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.831 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.832 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.833 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.834 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.835 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.836 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.837 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.838 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.839 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.840 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.841 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.842 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.843 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.844 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.845 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.846 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.847 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.848 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.849 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.850 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.851 = external hidden unnamed_addr constant [160 x i8], align 1
@.str.852 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.853 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.854 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.855 = external hidden unnamed_addr constant [85 x i8], align 1
@.str.856 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.857 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.858 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.859 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.860 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.861 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.862 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.863 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.864 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.865 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.866 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.867 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.868 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.869 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.870 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.871 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.872 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.873 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.874 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.875 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.876 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.877 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.878 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.879 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.880 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.881 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.882 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.883 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.884 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.885 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.886 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.887 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.888 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.889 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.890 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.891 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.892 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.893 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.894 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.895 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.896 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.897 = external hidden unnamed_addr constant [24 x i8], align 1

; 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 nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #0

declare i32 @__gxx_personality_v0(...)

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelE(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %1) local_unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca %"struct.spirv_cross::CompilerGLSL::ShaderSubgroupSupportHelper::Result", align 4
  %4 = alloca %"class.spirv_cross::SmallVector.313", align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca %"class.spirv_cross::SmallVector.313", align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca %"class.spirv_cross::SmallVector.313", align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca %"class.spirv_cross::SmallVector.313", align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca %"class.spirv_cross::SmallVector.313", align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca %"class.spirv_cross::SmallVector.313", align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca %"class.spirv_cross::SmallVector.313", align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca %"class.spirv_cross::SmallVector.313", align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca %"class.spirv_cross::SmallVector.313", align 8
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca %class.anon.361, align 8
  %37 = alloca %"class.std::__cxx11::basic_string", align 8
  %38 = alloca %"class.std::allocator.71", align 1
  %39 = alloca %"class.std::__cxx11::basic_string", align 8
  %40 = alloca %"class.std::allocator.71", align 1
  %41 = alloca %"class.std::__cxx11::basic_string", align 8
  %42 = alloca %"class.std::allocator.71", align 1
  %43 = alloca %"class.std::__cxx11::basic_string", align 8
  %44 = alloca %"class.std::allocator.71", align 1
  %45 = alloca %"class.std::__cxx11::basic_string", align 8
  %46 = alloca %"class.std::allocator.71", align 1
  %47 = alloca %"class.std::__cxx11::basic_string", align 8
  %48 = alloca %"class.std::allocator.71", align 1
  %49 = alloca %"class.std::__cxx11::basic_string", align 8
  %50 = alloca %"class.std::allocator.71", align 1
  %51 = alloca %"class.std::__cxx11::basic_string", align 8
  %52 = alloca %"class.std::allocator.71", align 1
  %53 = alloca %"class.std::__cxx11::basic_string", align 8
  %54 = alloca %"class.std::allocator.71", align 1
  %55 = alloca %"class.std::__cxx11::basic_string", align 8
  %56 = alloca %"class.std::allocator.71", align 1
  %57 = alloca %"class.std::__cxx11::basic_string", align 8
  %58 = alloca %"class.std::allocator.71", align 1
  %59 = alloca %"class.std::__cxx11::basic_string", align 8
  %60 = alloca %"class.std::allocator.71", align 1
  %61 = alloca %"class.std::__cxx11::basic_string", align 8
  %62 = alloca %"class.std::__cxx11::basic_string", align 8
  %63 = alloca %"class.std::__cxx11::basic_string", align 8
  %64 = alloca %"class.std::__cxx11::basic_string", align 8
  %65 = alloca %"class.std::__cxx11::basic_string", align 8
  %66 = alloca %"class.std::__cxx11::basic_string", align 8
  %67 = getelementptr inbounds i8, ptr %0, i64 7648
  %68 = load i8, ptr %67, align 8, !tbaa !5, !range !118, !noundef !119
  %69 = trunc nuw i8 %68 to i1
  br i1 %69, label %526, label %70

70:                                               ; preds = %2
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %3) #5
  %71 = getelementptr inbounds i8, ptr %0, i64 8648
  call void @_ZNK11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper7resolveEv(ptr dead_on_unwind nonnull writable sret(%"struct.spirv_cross::CompilerGLSL::ShaderSubgroupSupportHelper::Result") align 4 %3, ptr noundef nonnull align 4 dereferenceable(4) %71)
  %72 = call noundef zeroext i1 @_ZNK11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper20is_feature_requestedENS1_7FeatureE(ptr noundef nonnull align 4 dereferenceable(4) %71, i32 noundef 0)
  br i1 %72, label %73, label %105

73:                                               ; preds = %70
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %4) #5
  call void @_ZN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper26get_candidates_for_featureENS1_7FeatureERKNS1_6ResultE(ptr dead_on_unwind nonnull writable sret(%"class.spirv_cross::SmallVector.313") align 8 %4, i32 noundef 0, ptr noundef nonnull align 4 dereferenceable(40) %3)
  %74 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %4) #5
  %75 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %4) #5
  %.not250 = icmp eq ptr %74, %75
  br i1 %.not250, label %._crit_edge, label %.lr.ph

._crit_edge:                                      ; preds = %97, %73
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
          to label %100 unwind label %102

.lr.ph:                                           ; preds = %73, %97
  %.0251 = phi ptr [ %98, %97 ], [ %74, %73 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #5
  %76 = load i32, ptr %.0251, align 4, !tbaa !120
  %77 = call noundef ptr @_ZN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper18get_extension_nameENS1_9CandidateE(i32 noundef %76)
  store ptr %77, ptr %5, align 8, !tbaa !122
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #5
  %78 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE5frontEv(ptr noundef nonnull align 8 dereferenceable(16) %4) #5
  %79 = icmp eq ptr %.0251, %78
  %80 = select i1 %79, ptr @.str.133, ptr @.str.132
  store ptr %80, ptr %6, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJPKcRA10_S2_RS3_RA2_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 1 dereferenceable(10) @.str.134, ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 1 dereferenceable(2) @.str.135)
          to label %81 unwind label %85

81:                                               ; preds = %.lr.ph
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #5
  %82 = load i32, ptr %.0251, align 4, !tbaa !120
  switch i32 %82, label %97 [
    i32 5, label %87
    i32 7, label %92
  ]

83:                                               ; preds = %96, %95, %94, %93, %92, %91, %90, %89, %88, %87
  %84 = landingpad { ptr, i32 }
          cleanup
  br label %99

85:                                               ; preds = %.lr.ph
  %86 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #5
  br label %99

87:                                               ; preds = %81
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA63_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(63) @.str.810)
          to label %88 unwind label %83

88:                                               ; preds = %87
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA63_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(63) @.str.811)
          to label %89 unwind label %83

89:                                               ; preds = %88
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA63_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(63) @.str.812)
          to label %90 unwind label %83

90:                                               ; preds = %89
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA63_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(63) @.str.813)
          to label %91 unwind label %83

91:                                               ; preds = %90
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA63_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(63) @.str.814)
          to label %97 unwind label %83

92:                                               ; preds = %81
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA78_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(78) @.str.815)
          to label %93 unwind label %83

93:                                               ; preds = %92
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA78_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(78) @.str.816)
          to label %94 unwind label %83

94:                                               ; preds = %93
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA78_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(78) @.str.817)
          to label %95 unwind label %83

95:                                               ; preds = %94
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA78_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(78) @.str.818)
          to label %96 unwind label %83

96:                                               ; preds = %95
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA78_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(78) @.str.819)
          to label %97 unwind label %83

97:                                               ; preds = %81, %96, %91
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #5
  %98 = getelementptr inbounds i8, ptr %.0251, i64 4
  %.not = icmp eq ptr %98, %75
  br i1 %.not, label %._crit_edge, label %.lr.ph

99:                                               ; preds = %85, %83
  %.pn233 = phi { ptr, i32 } [ %84, %83 ], [ %86, %85 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #5
  br label %104

100:                                              ; preds = %._crit_edge
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA1_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(1) @.str.9)
          to label %101 unwind label %102

101:                                              ; preds = %100
  call void @_ZN11spirv_cross11SmallVectorINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateELm10EED2Ev(ptr noundef nonnull align 8 dereferenceable(64) %4) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %4) #5
  br label %105

102:                                              ; preds = %100, %._crit_edge
  %103 = landingpad { ptr, i32 }
          cleanup
  br label %104

104:                                              ; preds = %102, %99
  %.pn233.pn = phi { ptr, i32 } [ %.pn233, %99 ], [ %103, %102 ]
  call void @_ZN11spirv_cross11SmallVectorINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateELm10EED2Ev(ptr noundef nonnull align 8 dereferenceable(64) %4) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %4) #5
  br label %525

105:                                              ; preds = %101, %70
  %106 = call noundef zeroext i1 @_ZNK11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper20is_feature_requestedENS1_7FeatureE(ptr noundef nonnull align 4 dereferenceable(4) %71, i32 noundef 1)
  br i1 %106, label %107, label %132

107:                                              ; preds = %105
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %7) #5
  call void @_ZN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper26get_candidates_for_featureENS1_7FeatureERKNS1_6ResultE(ptr dead_on_unwind nonnull writable sret(%"class.spirv_cross::SmallVector.313") align 8 %7, i32 noundef 1, ptr noundef nonnull align 4 dereferenceable(40) %3)
  %108 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %7) #5
  %109 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %7) #5
  %.not172252 = icmp eq ptr %108, %109
  br i1 %.not172252, label %._crit_edge256, label %.lr.ph255

._crit_edge256:                                   ; preds = %124, %107
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
          to label %127 unwind label %129

.lr.ph255:                                        ; preds = %107, %124
  %.0159253 = phi ptr [ %125, %124 ], [ %108, %107 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #5
  %110 = load i32, ptr %.0159253, align 4, !tbaa !120
  %111 = call noundef ptr @_ZN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper18get_extension_nameENS1_9CandidateE(i32 noundef %110)
  store ptr %111, ptr %8, align 8, !tbaa !122
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #5
  %112 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE5frontEv(ptr noundef nonnull align 8 dereferenceable(16) %7) #5
  %113 = icmp eq ptr %.0159253, %112
  %114 = select i1 %113, ptr @.str.133, ptr @.str.132
  store ptr %114, ptr %9, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJPKcRA10_S2_RS3_RA2_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 1 dereferenceable(10) @.str.134, ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 1 dereferenceable(2) @.str.135)
          to label %115 unwind label %119

115:                                              ; preds = %.lr.ph255
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #5
  %116 = load i32, ptr %.0159253, align 4, !tbaa !120
  switch i32 %116, label %124 [
    i32 5, label %121
    i32 7, label %122
    i32 9, label %123
  ]

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

119:                                              ; preds = %.lr.ph255
  %120 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #5
  br label %126

121:                                              ; preds = %115
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA38_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(38) @.str.820)
          to label %124 unwind label %117

122:                                              ; preds = %115
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA43_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(43) @.str.821)
          to label %124 unwind label %117

123:                                              ; preds = %115
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA50_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(50) @.str.822)
          to label %124 unwind label %117

124:                                              ; preds = %115, %123, %122, %121
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #5
  %125 = getelementptr inbounds i8, ptr %.0159253, i64 4
  %.not172 = icmp eq ptr %125, %109
  br i1 %.not172, label %._crit_edge256, label %.lr.ph255

126:                                              ; preds = %119, %117
  %.pn230 = phi { ptr, i32 } [ %118, %117 ], [ %120, %119 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #5
  br label %131

127:                                              ; preds = %._crit_edge256
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA1_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(1) @.str.9)
          to label %128 unwind label %129

128:                                              ; preds = %127
  call void @_ZN11spirv_cross11SmallVectorINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateELm10EED2Ev(ptr noundef nonnull align 8 dereferenceable(64) %7) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %7) #5
  br label %132

129:                                              ; preds = %127, %._crit_edge256
  %130 = landingpad { ptr, i32 }
          cleanup
  br label %131

131:                                              ; preds = %129, %126
  %.pn230.pn = phi { ptr, i32 } [ %.pn230, %126 ], [ %130, %129 ]
  call void @_ZN11spirv_cross11SmallVectorINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateELm10EED2Ev(ptr noundef nonnull align 8 dereferenceable(64) %7) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %7) #5
  br label %525

132:                                              ; preds = %128, %105
  %133 = call noundef zeroext i1 @_ZNK11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper20is_feature_requestedENS1_7FeatureE(ptr noundef nonnull align 4 dereferenceable(4) %71, i32 noundef 2)
  br i1 %133, label %134, label %158

134:                                              ; preds = %132
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %10) #5
  call void @_ZN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper26get_candidates_for_featureENS1_7FeatureERKNS1_6ResultE(ptr dead_on_unwind nonnull writable sret(%"class.spirv_cross::SmallVector.313") align 8 %10, i32 noundef 2, ptr noundef nonnull align 4 dereferenceable(40) %3)
  %135 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %10) #5
  %136 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %10) #5
  %.not173257 = icmp eq ptr %135, %136
  br i1 %.not173257, label %._crit_edge261, label %.lr.ph260

._crit_edge261:                                   ; preds = %150, %134
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
          to label %153 unwind label %155

.lr.ph260:                                        ; preds = %134, %150
  %.0160258 = phi ptr [ %151, %150 ], [ %135, %134 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #5
  %137 = load i32, ptr %.0160258, align 4, !tbaa !120
  %138 = call noundef ptr @_ZN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper18get_extension_nameENS1_9CandidateE(i32 noundef %137)
  store ptr %138, ptr %11, align 8, !tbaa !122
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #5
  %139 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE5frontEv(ptr noundef nonnull align 8 dereferenceable(16) %10) #5
  %140 = icmp eq ptr %.0160258, %139
  %141 = select i1 %140, ptr @.str.133, ptr @.str.132
  store ptr %141, ptr %12, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJPKcRA10_S2_RS3_RA2_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 1 dereferenceable(10) @.str.134, ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 1 dereferenceable(2) @.str.135)
          to label %142 unwind label %146

142:                                              ; preds = %.lr.ph260
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #5
  %143 = load i32, ptr %.0160258, align 4, !tbaa !120
  switch i32 %143, label %150 [
    i32 5, label %148
    i32 7, label %149
  ]

144:                                              ; preds = %149, %148
  %145 = landingpad { ptr, i32 }
          cleanup
  br label %152

146:                                              ; preds = %.lr.ph260
  %147 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #5
  br label %152

148:                                              ; preds = %142
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA50_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(50) @.str.823)
          to label %150 unwind label %144

149:                                              ; preds = %142
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA57_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(57) @.str.824)
          to label %150 unwind label %144

150:                                              ; preds = %142, %149, %148
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #5
  %151 = getelementptr inbounds i8, ptr %.0160258, i64 4
  %.not173 = icmp eq ptr %151, %136
  br i1 %.not173, label %._crit_edge261, label %.lr.ph260

152:                                              ; preds = %146, %144
  %.pn227 = phi { ptr, i32 } [ %145, %144 ], [ %147, %146 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #5
  br label %157

153:                                              ; preds = %._crit_edge261
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA1_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(1) @.str.9)
          to label %154 unwind label %155

154:                                              ; preds = %153
  call void @_ZN11spirv_cross11SmallVectorINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateELm10EED2Ev(ptr noundef nonnull align 8 dereferenceable(64) %10) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %10) #5
  br label %158

155:                                              ; preds = %153, %._crit_edge261
  %156 = landingpad { ptr, i32 }
          cleanup
  br label %157

157:                                              ; preds = %155, %152
  %.pn227.pn = phi { ptr, i32 } [ %.pn227, %152 ], [ %156, %155 ]
  call void @_ZN11spirv_cross11SmallVectorINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateELm10EED2Ev(ptr noundef nonnull align 8 dereferenceable(64) %10) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %10) #5
  br label %525

158:                                              ; preds = %154, %132
  %159 = call noundef zeroext i1 @_ZNK11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper20is_feature_requestedENS1_7FeatureE(ptr noundef nonnull align 4 dereferenceable(4) %71, i32 noundef 3)
  br i1 %159, label %160, label %183

160:                                              ; preds = %158
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %13) #5
  call void @_ZN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper26get_candidates_for_featureENS1_7FeatureERKNS1_6ResultE(ptr dead_on_unwind nonnull writable sret(%"class.spirv_cross::SmallVector.313") align 8 %13, i32 noundef 3, ptr noundef nonnull align 4 dereferenceable(40) %3)
  %161 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %13) #5
  %162 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %13) #5
  %.not174262 = icmp eq ptr %161, %162
  br i1 %.not174262, label %._crit_edge266, label %.lr.ph265

._crit_edge266:                                   ; preds = %175, %160
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
          to label %178 unwind label %180

.lr.ph265:                                        ; preds = %160, %175
  %.0161263 = phi ptr [ %176, %175 ], [ %161, %160 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #5
  %163 = load i32, ptr %.0161263, align 4, !tbaa !120
  %164 = call noundef ptr @_ZN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper18get_extension_nameENS1_9CandidateE(i32 noundef %163)
  store ptr %164, ptr %14, align 8, !tbaa !122
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #5
  %165 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE5frontEv(ptr noundef nonnull align 8 dereferenceable(16) %13) #5
  %166 = icmp eq ptr %.0161263, %165
  %167 = select i1 %166, ptr @.str.133, ptr @.str.132
  store ptr %167, ptr %15, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJPKcRA10_S2_RS3_RA2_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 1 dereferenceable(10) @.str.134, ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef nonnull align 1 dereferenceable(2) @.str.135)
          to label %168 unwind label %172

168:                                              ; preds = %.lr.ph265
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #5
  %169 = load i32, ptr %.0161263, align 4, !tbaa !120
  %cond2 = icmp eq i32 %169, 5
  br i1 %cond2, label %174, label %175

170:                                              ; preds = %174
  %171 = landingpad { ptr, i32 }
          cleanup
  br label %177

172:                                              ; preds = %.lr.ph265
  %173 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #5
  br label %177

174:                                              ; preds = %168
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA34_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(34) @.str.825)
          to label %175 unwind label %170

175:                                              ; preds = %168, %174
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #5
  %176 = getelementptr inbounds i8, ptr %.0161263, i64 4
  %.not174 = icmp eq ptr %176, %162
  br i1 %.not174, label %._crit_edge266, label %.lr.ph265

177:                                              ; preds = %172, %170
  %.pn224 = phi { ptr, i32 } [ %171, %170 ], [ %173, %172 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #5
  br label %182

178:                                              ; preds = %._crit_edge266
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA1_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(1) @.str.9)
          to label %179 unwind label %180

179:                                              ; preds = %178
  call void @_ZN11spirv_cross11SmallVectorINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateELm10EED2Ev(ptr noundef nonnull align 8 dereferenceable(64) %13) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %13) #5
  br label %183

180:                                              ; preds = %178, %._crit_edge266
  %181 = landingpad { ptr, i32 }
          cleanup
  br label %182

182:                                              ; preds = %180, %177
  %.pn224.pn = phi { ptr, i32 } [ %.pn224, %177 ], [ %181, %180 ]
  call void @_ZN11spirv_cross11SmallVectorINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateELm10EED2Ev(ptr noundef nonnull align 8 dereferenceable(64) %13) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %13) #5
  br label %525

183:                                              ; preds = %179, %158
  %184 = call noundef zeroext i1 @_ZNK11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper20is_feature_requestedENS1_7FeatureE(ptr noundef nonnull align 4 dereferenceable(4) %71, i32 noundef 4)
  br i1 %184, label %185, label %208

185:                                              ; preds = %183
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %16) #5
  call void @_ZN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper26get_candidates_for_featureENS1_7FeatureERKNS1_6ResultE(ptr dead_on_unwind nonnull writable sret(%"class.spirv_cross::SmallVector.313") align 8 %16, i32 noundef 4, ptr noundef nonnull align 4 dereferenceable(40) %3)
  %186 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %16) #5
  %187 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %16) #5
  %.not175267 = icmp eq ptr %186, %187
  br i1 %.not175267, label %._crit_edge271, label %.lr.ph270

._crit_edge271:                                   ; preds = %200, %185
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
          to label %203 unwind label %205

.lr.ph270:                                        ; preds = %185, %200
  %.0163268 = phi ptr [ %201, %200 ], [ %186, %185 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #5
  %188 = load i32, ptr %.0163268, align 4, !tbaa !120
  %189 = call noundef ptr @_ZN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper18get_extension_nameENS1_9CandidateE(i32 noundef %188)
  store ptr %189, ptr %17, align 8, !tbaa !122
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #5
  %190 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE5frontEv(ptr noundef nonnull align 8 dereferenceable(16) %16) #5
  %191 = icmp eq ptr %.0163268, %190
  %192 = select i1 %191, ptr @.str.133, ptr @.str.132
  store ptr %192, ptr %18, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJPKcRA10_S2_RS3_RA2_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 1 dereferenceable(10) @.str.134, ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 1 dereferenceable(2) @.str.135)
          to label %193 unwind label %197

193:                                              ; preds = %.lr.ph270
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #5
  %194 = load i32, ptr %.0163268, align 4, !tbaa !120
  %cond1 = icmp eq i32 %194, 5
  br i1 %cond1, label %199, label %200

195:                                              ; preds = %199
  %196 = landingpad { ptr, i32 }
          cleanup
  br label %202

197:                                              ; preds = %.lr.ph270
  %198 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #5
  br label %202

199:                                              ; preds = %193
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA40_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(40) @.str.826)
          to label %200 unwind label %195

200:                                              ; preds = %193, %199
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #5
  %201 = getelementptr inbounds i8, ptr %.0163268, i64 4
  %.not175 = icmp eq ptr %201, %187
  br i1 %.not175, label %._crit_edge271, label %.lr.ph270

202:                                              ; preds = %197, %195
  %.pn221 = phi { ptr, i32 } [ %196, %195 ], [ %198, %197 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #5
  br label %207

203:                                              ; preds = %._crit_edge271
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA1_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(1) @.str.9)
          to label %204 unwind label %205

204:                                              ; preds = %203
  call void @_ZN11spirv_cross11SmallVectorINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateELm10EED2Ev(ptr noundef nonnull align 8 dereferenceable(64) %16) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %16) #5
  br label %208

205:                                              ; preds = %203, %._crit_edge271
  %206 = landingpad { ptr, i32 }
          cleanup
  br label %207

207:                                              ; preds = %205, %202
  %.pn221.pn = phi { ptr, i32 } [ %.pn221, %202 ], [ %206, %205 ]
  call void @_ZN11spirv_cross11SmallVectorINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateELm10EED2Ev(ptr noundef nonnull align 8 dereferenceable(64) %16) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %16) #5
  br label %525

208:                                              ; preds = %204, %183
  %209 = call noundef zeroext i1 @_ZNK11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper20is_feature_requestedENS1_7FeatureE(ptr noundef nonnull align 4 dereferenceable(4) %71, i32 noundef 5)
  br i1 %209, label %210, label %301

210:                                              ; preds = %208
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %19) #5
  call void @_ZN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper26get_candidates_for_featureENS1_7FeatureERKNS1_6ResultE(ptr dead_on_unwind nonnull writable sret(%"class.spirv_cross::SmallVector.313") align 8 %19, i32 noundef 5, ptr noundef nonnull align 4 dereferenceable(40) %3)
  %211 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %19) #5
  %212 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %19) #5
  %.not176276 = icmp eq ptr %211, %212
  br i1 %.not176276, label %._crit_edge280, label %.lr.ph279

._crit_edge280:                                   ; preds = %.loopexit, %210
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
          to label %296 unwind label %298

.lr.ph279:                                        ; preds = %210, %.loopexit
  %.0164277 = phi ptr [ %294, %.loopexit ], [ %211, %210 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #5
  %213 = load i32, ptr %.0164277, align 4, !tbaa !120
  %214 = call noundef ptr @_ZN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper18get_extension_nameENS1_9CandidateE(i32 noundef %213)
  store ptr %214, ptr %20, align 8, !tbaa !122
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #5
  %215 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE5frontEv(ptr noundef nonnull align 8 dereferenceable(16) %19) #5
  %216 = icmp eq ptr %.0164277, %215
  %217 = select i1 %216, ptr @.str.133, ptr @.str.132
  store ptr %217, ptr %21, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJPKcRA10_S2_RS3_RA2_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull align 1 dereferenceable(10) @.str.134, ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 1 dereferenceable(2) @.str.135)
          to label %218 unwind label %222

218:                                              ; preds = %.lr.ph279
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #5
  %219 = load i32, ptr %.0164277, align 4, !tbaa !120
  switch i32 %219, label %.loopexit [
    i32 6, label %.preheader246.preheader
    i32 7, label %.preheader249.preheader
  ]

.preheader249.preheader:                          ; preds = %218
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #5
  %220 = load ptr, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, align 16, !tbaa !122
  store ptr %220, ptr %24, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA25_S2_S4_RA50_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 1 dereferenceable(25) @.str.827, ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 1 dereferenceable(50) @.str.831)
          to label %.preheader249.1 unwind label %275

.preheader246.preheader:                          ; preds = %218
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #5
  %221 = load ptr, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, align 16, !tbaa !122
  store ptr %221, ptr %22, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA25_S2_S4_RA83_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 1 dereferenceable(25) @.str.827, ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 1 dereferenceable(83) @.str.828)
          to label %.preheader246.1 unwind label %240

222:                                              ; preds = %.lr.ph279
  %223 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #5
  br label %295

.preheader246.1:                                  ; preds = %.preheader246.preheader
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #5
  %224 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 8), align 8, !tbaa !122
  store ptr %224, ptr %22, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA25_S2_S4_RA83_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 1 dereferenceable(25) @.str.827, ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 1 dereferenceable(83) @.str.828)
          to label %.preheader246.2 unwind label %240

.preheader246.2:                                  ; preds = %.preheader246.1
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #5
  %225 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 16), align 16, !tbaa !122
  store ptr %225, ptr %22, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA25_S2_S4_RA83_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 1 dereferenceable(25) @.str.827, ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 1 dereferenceable(83) @.str.828)
          to label %.preheader246.3 unwind label %240

.preheader246.3:                                  ; preds = %.preheader246.2
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #5
  %226 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 24), align 8, !tbaa !122
  store ptr %226, ptr %22, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA25_S2_S4_RA83_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 1 dereferenceable(25) @.str.827, ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 1 dereferenceable(83) @.str.828)
          to label %.preheader246.4 unwind label %240

.preheader246.4:                                  ; preds = %.preheader246.3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #5
  %227 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 32), align 16, !tbaa !122
  store ptr %227, ptr %22, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA25_S2_S4_RA83_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 1 dereferenceable(25) @.str.827, ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 1 dereferenceable(83) @.str.828)
          to label %.preheader246.5 unwind label %240

.preheader246.5:                                  ; preds = %.preheader246.4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #5
  %228 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 40), align 8, !tbaa !122
  store ptr %228, ptr %22, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA25_S2_S4_RA83_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 1 dereferenceable(25) @.str.827, ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 1 dereferenceable(83) @.str.828)
          to label %.preheader246.6 unwind label %240

.preheader246.6:                                  ; preds = %.preheader246.5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #5
  %229 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 48), align 16, !tbaa !122
  store ptr %229, ptr %22, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA25_S2_S4_RA83_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 1 dereferenceable(25) @.str.827, ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 1 dereferenceable(83) @.str.828)
          to label %.preheader246.7 unwind label %240

.preheader246.7:                                  ; preds = %.preheader246.6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #5
  %230 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 56), align 8, !tbaa !122
  store ptr %230, ptr %22, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA25_S2_S4_RA83_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 1 dereferenceable(25) @.str.827, ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 1 dereferenceable(83) @.str.828)
          to label %.preheader246.8 unwind label %240

.preheader246.8:                                  ; preds = %.preheader246.7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #5
  %231 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 64), align 16, !tbaa !122
  store ptr %231, ptr %22, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA25_S2_S4_RA83_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 1 dereferenceable(25) @.str.827, ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 1 dereferenceable(83) @.str.828)
          to label %.preheader246.9 unwind label %240

.preheader246.9:                                  ; preds = %.preheader246.8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #5
  %232 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 72), align 8, !tbaa !122
  store ptr %232, ptr %22, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA25_S2_S4_RA83_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 1 dereferenceable(25) @.str.827, ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 1 dereferenceable(83) @.str.828)
          to label %.preheader246.10 unwind label %240

.preheader246.10:                                 ; preds = %.preheader246.9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #5
  %233 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 80), align 16, !tbaa !122
  store ptr %233, ptr %22, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA25_S2_S4_RA83_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 1 dereferenceable(25) @.str.827, ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 1 dereferenceable(83) @.str.828)
          to label %.preheader246.11 unwind label %240

.preheader246.11:                                 ; preds = %.preheader246.10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #5
  %234 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 88), align 8, !tbaa !122
  store ptr %234, ptr %22, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA25_S2_S4_RA83_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 1 dereferenceable(25) @.str.827, ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 1 dereferenceable(83) @.str.828)
          to label %.preheader246.12 unwind label %240

.preheader246.12:                                 ; preds = %.preheader246.11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #5
  %235 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 96), align 16, !tbaa !122
  store ptr %235, ptr %22, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA25_S2_S4_RA83_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 1 dereferenceable(25) @.str.827, ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 1 dereferenceable(83) @.str.828)
          to label %.preheader246.13 unwind label %240

.preheader246.13:                                 ; preds = %.preheader246.12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #5
  %236 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 104), align 8, !tbaa !122
  store ptr %236, ptr %22, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA25_S2_S4_RA83_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 1 dereferenceable(25) @.str.827, ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 1 dereferenceable(83) @.str.828)
          to label %.preheader246.14 unwind label %240

.preheader246.14:                                 ; preds = %.preheader246.13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #5
  %237 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 112), align 16, !tbaa !122
  store ptr %237, ptr %22, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA25_S2_S4_RA83_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 1 dereferenceable(25) @.str.827, ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 1 dereferenceable(83) @.str.828)
          to label %.preheader246.15 unwind label %240

.preheader246.15:                                 ; preds = %.preheader246.14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #5
  %238 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 120), align 8, !tbaa !122
  store ptr %238, ptr %22, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA25_S2_S4_RA83_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 1 dereferenceable(25) @.str.827, ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 1 dereferenceable(83) @.str.828)
          to label %.preheader.preheader unwind label %240

.preheader.preheader:                             ; preds = %.preheader246.15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #5
  %239 = load ptr, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, align 16, !tbaa !122
  store ptr %239, ptr %23, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA20_S2_S4_RA65_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 1 dereferenceable(20) @.str.829, ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 1 dereferenceable(65) @.str.830)
          to label %.preheader.1 unwind label %257

240:                                              ; preds = %.preheader246.15, %.preheader246.14, %.preheader246.13, %.preheader246.12, %.preheader246.11, %.preheader246.10, %.preheader246.9, %.preheader246.8, %.preheader246.7, %.preheader246.6, %.preheader246.5, %.preheader246.4, %.preheader246.3, %.preheader246.2, %.preheader246.1, %.preheader246.preheader
  %241 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #5
  br label %295

.preheader.1:                                     ; preds = %.preheader.preheader
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #5
  %242 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 8), align 8, !tbaa !122
  store ptr %242, ptr %23, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA20_S2_S4_RA65_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 1 dereferenceable(20) @.str.829, ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 1 dereferenceable(65) @.str.830)
          to label %.preheader.2 unwind label %257

.preheader.2:                                     ; preds = %.preheader.1
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #5
  %243 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 16), align 16, !tbaa !122
  store ptr %243, ptr %23, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA20_S2_S4_RA65_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 1 dereferenceable(20) @.str.829, ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 1 dereferenceable(65) @.str.830)
          to label %.preheader.3 unwind label %257

.preheader.3:                                     ; preds = %.preheader.2
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #5
  %244 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 24), align 8, !tbaa !122
  store ptr %244, ptr %23, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA20_S2_S4_RA65_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 1 dereferenceable(20) @.str.829, ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 1 dereferenceable(65) @.str.830)
          to label %.preheader.4 unwind label %257

.preheader.4:                                     ; preds = %.preheader.3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #5
  %245 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 32), align 16, !tbaa !122
  store ptr %245, ptr %23, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA20_S2_S4_RA65_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 1 dereferenceable(20) @.str.829, ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 1 dereferenceable(65) @.str.830)
          to label %.preheader.5 unwind label %257

.preheader.5:                                     ; preds = %.preheader.4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #5
  %246 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 40), align 8, !tbaa !122
  store ptr %246, ptr %23, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA20_S2_S4_RA65_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 1 dereferenceable(20) @.str.829, ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 1 dereferenceable(65) @.str.830)
          to label %.preheader.6 unwind label %257

.preheader.6:                                     ; preds = %.preheader.5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #5
  %247 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 48), align 16, !tbaa !122
  store ptr %247, ptr %23, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA20_S2_S4_RA65_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 1 dereferenceable(20) @.str.829, ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 1 dereferenceable(65) @.str.830)
          to label %.preheader.7 unwind label %257

.preheader.7:                                     ; preds = %.preheader.6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #5
  %248 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 56), align 8, !tbaa !122
  store ptr %248, ptr %23, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA20_S2_S4_RA65_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 1 dereferenceable(20) @.str.829, ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 1 dereferenceable(65) @.str.830)
          to label %.preheader.8 unwind label %257

.preheader.8:                                     ; preds = %.preheader.7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #5
  %249 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 64), align 16, !tbaa !122
  store ptr %249, ptr %23, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA20_S2_S4_RA65_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 1 dereferenceable(20) @.str.829, ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 1 dereferenceable(65) @.str.830)
          to label %.preheader.9 unwind label %257

.preheader.9:                                     ; preds = %.preheader.8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #5
  %250 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 72), align 8, !tbaa !122
  store ptr %250, ptr %23, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA20_S2_S4_RA65_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 1 dereferenceable(20) @.str.829, ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 1 dereferenceable(65) @.str.830)
          to label %.preheader.10 unwind label %257

.preheader.10:                                    ; preds = %.preheader.9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #5
  %251 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 80), align 16, !tbaa !122
  store ptr %251, ptr %23, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA20_S2_S4_RA65_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 1 dereferenceable(20) @.str.829, ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 1 dereferenceable(65) @.str.830)
          to label %.preheader.11 unwind label %257

.preheader.11:                                    ; preds = %.preheader.10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #5
  %252 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 88), align 8, !tbaa !122
  store ptr %252, ptr %23, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA20_S2_S4_RA65_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 1 dereferenceable(20) @.str.829, ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 1 dereferenceable(65) @.str.830)
          to label %.preheader.12 unwind label %257

.preheader.12:                                    ; preds = %.preheader.11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #5
  %253 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 96), align 16, !tbaa !122
  store ptr %253, ptr %23, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA20_S2_S4_RA65_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 1 dereferenceable(20) @.str.829, ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 1 dereferenceable(65) @.str.830)
          to label %.preheader.13 unwind label %257

.preheader.13:                                    ; preds = %.preheader.12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #5
  %254 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 104), align 8, !tbaa !122
  store ptr %254, ptr %23, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA20_S2_S4_RA65_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 1 dereferenceable(20) @.str.829, ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 1 dereferenceable(65) @.str.830)
          to label %.preheader.14 unwind label %257

.preheader.14:                                    ; preds = %.preheader.13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #5
  %255 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 112), align 16, !tbaa !122
  store ptr %255, ptr %23, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA20_S2_S4_RA65_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 1 dereferenceable(20) @.str.829, ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 1 dereferenceable(65) @.str.830)
          to label %.preheader.15 unwind label %257

.preheader.15:                                    ; preds = %.preheader.14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #5
  %256 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 120), align 8, !tbaa !122
  store ptr %256, ptr %23, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA20_S2_S4_RA65_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 1 dereferenceable(20) @.str.829, ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 1 dereferenceable(65) @.str.830)
          to label %.loopexit.loopexit unwind label %257

.loopexit.loopexit:                               ; preds = %.preheader.15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #5
  br label %.loopexit

257:                                              ; preds = %.preheader.15, %.preheader.14, %.preheader.13, %.preheader.12, %.preheader.11, %.preheader.10, %.preheader.9, %.preheader.8, %.preheader.7, %.preheader.6, %.preheader.5, %.preheader.4, %.preheader.3, %.preheader.2, %.preheader.1, %.preheader.preheader
  %258 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #5
  br label %295

.preheader249.1:                                  ; preds = %.preheader249.preheader
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #5
  %259 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 8), align 8, !tbaa !122
  store ptr %259, ptr %24, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA25_S2_S4_RA50_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 1 dereferenceable(25) @.str.827, ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 1 dereferenceable(50) @.str.831)
          to label %.preheader249.2 unwind label %275

.preheader249.2:                                  ; preds = %.preheader249.1
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #5
  %260 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 16), align 16, !tbaa !122
  store ptr %260, ptr %24, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA25_S2_S4_RA50_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 1 dereferenceable(25) @.str.827, ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 1 dereferenceable(50) @.str.831)
          to label %.preheader249.3 unwind label %275

.preheader249.3:                                  ; preds = %.preheader249.2
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #5
  %261 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 24), align 8, !tbaa !122
  store ptr %261, ptr %24, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA25_S2_S4_RA50_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 1 dereferenceable(25) @.str.827, ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 1 dereferenceable(50) @.str.831)
          to label %.preheader249.4 unwind label %275

.preheader249.4:                                  ; preds = %.preheader249.3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #5
  %262 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 32), align 16, !tbaa !122
  store ptr %262, ptr %24, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA25_S2_S4_RA50_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 1 dereferenceable(25) @.str.827, ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 1 dereferenceable(50) @.str.831)
          to label %.preheader249.5 unwind label %275

.preheader249.5:                                  ; preds = %.preheader249.4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #5
  %263 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 40), align 8, !tbaa !122
  store ptr %263, ptr %24, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA25_S2_S4_RA50_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 1 dereferenceable(25) @.str.827, ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 1 dereferenceable(50) @.str.831)
          to label %.preheader249.6 unwind label %275

.preheader249.6:                                  ; preds = %.preheader249.5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #5
  %264 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 48), align 16, !tbaa !122
  store ptr %264, ptr %24, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA25_S2_S4_RA50_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 1 dereferenceable(25) @.str.827, ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 1 dereferenceable(50) @.str.831)
          to label %.preheader249.7 unwind label %275

.preheader249.7:                                  ; preds = %.preheader249.6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #5
  %265 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 56), align 8, !tbaa !122
  store ptr %265, ptr %24, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA25_S2_S4_RA50_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 1 dereferenceable(25) @.str.827, ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 1 dereferenceable(50) @.str.831)
          to label %.preheader249.8 unwind label %275

.preheader249.8:                                  ; preds = %.preheader249.7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #5
  %266 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 64), align 16, !tbaa !122
  store ptr %266, ptr %24, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA25_S2_S4_RA50_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 1 dereferenceable(25) @.str.827, ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 1 dereferenceable(50) @.str.831)
          to label %.preheader249.9 unwind label %275

.preheader249.9:                                  ; preds = %.preheader249.8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #5
  %267 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 72), align 8, !tbaa !122
  store ptr %267, ptr %24, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA25_S2_S4_RA50_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 1 dereferenceable(25) @.str.827, ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 1 dereferenceable(50) @.str.831)
          to label %.preheader249.10 unwind label %275

.preheader249.10:                                 ; preds = %.preheader249.9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #5
  %268 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 80), align 16, !tbaa !122
  store ptr %268, ptr %24, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA25_S2_S4_RA50_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 1 dereferenceable(25) @.str.827, ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 1 dereferenceable(50) @.str.831)
          to label %.preheader249.11 unwind label %275

.preheader249.11:                                 ; preds = %.preheader249.10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #5
  %269 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 88), align 8, !tbaa !122
  store ptr %269, ptr %24, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA25_S2_S4_RA50_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 1 dereferenceable(25) @.str.827, ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 1 dereferenceable(50) @.str.831)
          to label %.preheader249.12 unwind label %275

.preheader249.12:                                 ; preds = %.preheader249.11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #5
  %270 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 96), align 16, !tbaa !122
  store ptr %270, ptr %24, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA25_S2_S4_RA50_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 1 dereferenceable(25) @.str.827, ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 1 dereferenceable(50) @.str.831)
          to label %.preheader249.13 unwind label %275

.preheader249.13:                                 ; preds = %.preheader249.12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #5
  %271 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 104), align 8, !tbaa !122
  store ptr %271, ptr %24, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA25_S2_S4_RA50_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 1 dereferenceable(25) @.str.827, ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 1 dereferenceable(50) @.str.831)
          to label %.preheader249.14 unwind label %275

.preheader249.14:                                 ; preds = %.preheader249.13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #5
  %272 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 112), align 16, !tbaa !122
  store ptr %272, ptr %24, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA25_S2_S4_RA50_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 1 dereferenceable(25) @.str.827, ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 1 dereferenceable(50) @.str.831)
          to label %.preheader249.15 unwind label %275

.preheader249.15:                                 ; preds = %.preheader249.14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #5
  %273 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 120), align 8, !tbaa !122
  store ptr %273, ptr %24, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA25_S2_S4_RA50_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 1 dereferenceable(25) @.str.827, ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 1 dereferenceable(50) @.str.831)
          to label %.preheader247.preheader unwind label %275

.preheader247.preheader:                          ; preds = %.preheader249.15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #5
  %274 = load ptr, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, align 16, !tbaa !122
  store ptr %274, ptr %25, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA20_S2_S4_RA58_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 1 dereferenceable(20) @.str.829, ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 1 dereferenceable(58) @.str.832)
          to label %.preheader247.1 unwind label %292

275:                                              ; preds = %.preheader249.15, %.preheader249.14, %.preheader249.13, %.preheader249.12, %.preheader249.11, %.preheader249.10, %.preheader249.9, %.preheader249.8, %.preheader249.7, %.preheader249.6, %.preheader249.5, %.preheader249.4, %.preheader249.3, %.preheader249.2, %.preheader249.1, %.preheader249.preheader
  %276 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #5
  br label %295

.preheader247.1:                                  ; preds = %.preheader247.preheader
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #5
  %277 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 8), align 8, !tbaa !122
  store ptr %277, ptr %25, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA20_S2_S4_RA58_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 1 dereferenceable(20) @.str.829, ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 1 dereferenceable(58) @.str.832)
          to label %.preheader247.2 unwind label %292

.preheader247.2:                                  ; preds = %.preheader247.1
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #5
  %278 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 16), align 16, !tbaa !122
  store ptr %278, ptr %25, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA20_S2_S4_RA58_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 1 dereferenceable(20) @.str.829, ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 1 dereferenceable(58) @.str.832)
          to label %.preheader247.3 unwind label %292

.preheader247.3:                                  ; preds = %.preheader247.2
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #5
  %279 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 24), align 8, !tbaa !122
  store ptr %279, ptr %25, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA20_S2_S4_RA58_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 1 dereferenceable(20) @.str.829, ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 1 dereferenceable(58) @.str.832)
          to label %.preheader247.4 unwind label %292

.preheader247.4:                                  ; preds = %.preheader247.3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #5
  %280 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 32), align 16, !tbaa !122
  store ptr %280, ptr %25, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA20_S2_S4_RA58_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 1 dereferenceable(20) @.str.829, ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 1 dereferenceable(58) @.str.832)
          to label %.preheader247.5 unwind label %292

.preheader247.5:                                  ; preds = %.preheader247.4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #5
  %281 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 40), align 8, !tbaa !122
  store ptr %281, ptr %25, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA20_S2_S4_RA58_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 1 dereferenceable(20) @.str.829, ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 1 dereferenceable(58) @.str.832)
          to label %.preheader247.6 unwind label %292

.preheader247.6:                                  ; preds = %.preheader247.5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #5
  %282 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 48), align 16, !tbaa !122
  store ptr %282, ptr %25, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA20_S2_S4_RA58_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 1 dereferenceable(20) @.str.829, ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 1 dereferenceable(58) @.str.832)
          to label %.preheader247.7 unwind label %292

.preheader247.7:                                  ; preds = %.preheader247.6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #5
  %283 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 56), align 8, !tbaa !122
  store ptr %283, ptr %25, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA20_S2_S4_RA58_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 1 dereferenceable(20) @.str.829, ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 1 dereferenceable(58) @.str.832)
          to label %.preheader247.8 unwind label %292

.preheader247.8:                                  ; preds = %.preheader247.7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #5
  %284 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 64), align 16, !tbaa !122
  store ptr %284, ptr %25, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA20_S2_S4_RA58_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 1 dereferenceable(20) @.str.829, ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 1 dereferenceable(58) @.str.832)
          to label %.preheader247.9 unwind label %292

.preheader247.9:                                  ; preds = %.preheader247.8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #5
  %285 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 72), align 8, !tbaa !122
  store ptr %285, ptr %25, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA20_S2_S4_RA58_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 1 dereferenceable(20) @.str.829, ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 1 dereferenceable(58) @.str.832)
          to label %.preheader247.10 unwind label %292

.preheader247.10:                                 ; preds = %.preheader247.9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #5
  %286 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 80), align 16, !tbaa !122
  store ptr %286, ptr %25, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA20_S2_S4_RA58_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 1 dereferenceable(20) @.str.829, ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 1 dereferenceable(58) @.str.832)
          to label %.preheader247.11 unwind label %292

.preheader247.11:                                 ; preds = %.preheader247.10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #5
  %287 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 88), align 8, !tbaa !122
  store ptr %287, ptr %25, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA20_S2_S4_RA58_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 1 dereferenceable(20) @.str.829, ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 1 dereferenceable(58) @.str.832)
          to label %.preheader247.12 unwind label %292

.preheader247.12:                                 ; preds = %.preheader247.11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #5
  %288 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 96), align 16, !tbaa !122
  store ptr %288, ptr %25, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA20_S2_S4_RA58_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 1 dereferenceable(20) @.str.829, ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 1 dereferenceable(58) @.str.832)
          to label %.preheader247.13 unwind label %292

.preheader247.13:                                 ; preds = %.preheader247.12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #5
  %289 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 104), align 8, !tbaa !122
  store ptr %289, ptr %25, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA20_S2_S4_RA58_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 1 dereferenceable(20) @.str.829, ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 1 dereferenceable(58) @.str.832)
          to label %.preheader247.14 unwind label %292

.preheader247.14:                                 ; preds = %.preheader247.13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #5
  %290 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 112), align 16, !tbaa !122
  store ptr %290, ptr %25, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA20_S2_S4_RA58_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 1 dereferenceable(20) @.str.829, ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 1 dereferenceable(58) @.str.832)
          to label %.preheader247.15 unwind label %292

.preheader247.15:                                 ; preds = %.preheader247.14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #5
  %291 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 120), align 8, !tbaa !122
  store ptr %291, ptr %25, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA20_S2_S4_RA58_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 1 dereferenceable(20) @.str.829, ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 1 dereferenceable(58) @.str.832)
          to label %.loopexit.loopexit302 unwind label %292

.loopexit.loopexit302:                            ; preds = %.preheader247.15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #5
  br label %.loopexit

292:                                              ; preds = %.preheader247.15, %.preheader247.14, %.preheader247.13, %.preheader247.12, %.preheader247.11, %.preheader247.10, %.preheader247.9, %.preheader247.8, %.preheader247.7, %.preheader247.6, %.preheader247.5, %.preheader247.4, %.preheader247.3, %.preheader247.2, %.preheader247.1, %.preheader247.preheader
  %293 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #5
  br label %295

.loopexit:                                        ; preds = %.loopexit.loopexit302, %.loopexit.loopexit, %218
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #5
  %294 = getelementptr inbounds i8, ptr %.0164277, i64 4
  %.not176 = icmp eq ptr %294, %212
  br i1 %.not176, label %._crit_edge280, label %.lr.ph279

295:                                              ; preds = %292, %275, %257, %240, %222
  %.pn218 = phi { ptr, i32 } [ %276, %275 ], [ %293, %292 ], [ %241, %240 ], [ %258, %257 ], [ %223, %222 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #5
  br label %300

296:                                              ; preds = %._crit_edge280
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA1_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(1) @.str.9)
          to label %297 unwind label %298

297:                                              ; preds = %296
  call void @_ZN11spirv_cross11SmallVectorINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateELm10EED2Ev(ptr noundef nonnull align 8 dereferenceable(64) %19) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %19) #5
  br label %301

298:                                              ; preds = %296, %._crit_edge280
  %299 = landingpad { ptr, i32 }
          cleanup
  br label %300

300:                                              ; preds = %298, %295
  %.pn218.pn = phi { ptr, i32 } [ %.pn218, %295 ], [ %299, %298 ]
  call void @_ZN11spirv_cross11SmallVectorINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateELm10EED2Ev(ptr noundef nonnull align 8 dereferenceable(64) %19) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %19) #5
  br label %525

301:                                              ; preds = %297, %208
  %302 = call noundef zeroext i1 @_ZNK11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper20is_feature_requestedENS1_7FeatureE(ptr noundef nonnull align 4 dereferenceable(4) %71, i32 noundef 6)
  br i1 %302, label %303, label %338

303:                                              ; preds = %301
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %26) #5
  call void @_ZN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper26get_candidates_for_featureENS1_7FeatureERKNS1_6ResultE(ptr dead_on_unwind nonnull writable sret(%"class.spirv_cross::SmallVector.313") align 8 %26, i32 noundef 6, ptr noundef nonnull align 4 dereferenceable(40) %3)
  %304 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %26) #5
  %305 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %26) #5
  %.not177281 = icmp eq ptr %304, %305
  br i1 %.not177281, label %._crit_edge285, label %.lr.ph284

._crit_edge285:                                   ; preds = %319, %303
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA6_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(6) @.str.84)
          to label %322 unwind label %335

.lr.ph284:                                        ; preds = %303, %319
  %.0171282 = phi ptr [ %320, %319 ], [ %304, %303 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #5
  %306 = load i32, ptr %.0171282, align 4, !tbaa !120
  %307 = call noundef ptr @_ZN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper18get_extension_nameENS1_9CandidateE(i32 noundef %306)
  store ptr %307, ptr %27, align 8, !tbaa !122
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #5
  %308 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE5frontEv(ptr noundef nonnull align 8 dereferenceable(16) %26) #5
  %309 = icmp eq ptr %.0171282, %308
  %310 = select i1 %309, ptr @.str.133, ptr @.str.132
  store ptr %310, ptr %28, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJPKcRA10_S2_RS3_RA2_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull align 1 dereferenceable(10) @.str.134, ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull align 1 dereferenceable(2) @.str.135)
          to label %311 unwind label %315

311:                                              ; preds = %.lr.ph284
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #5
  %312 = load i32, ptr %.0171282, align 4, !tbaa !120
  %cond = icmp eq i32 %312, 5
  br i1 %cond, label %317, label %319

313:                                              ; preds = %318, %317
  %314 = landingpad { ptr, i32 }
          cleanup
  br label %321

315:                                              ; preds = %.lr.ph284
  %316 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #5
  br label %321

317:                                              ; preds = %311
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA69_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(69) @.str.833)
          to label %318 unwind label %313

318:                                              ; preds = %317
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA69_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(69) @.str.834)
          to label %319 unwind label %313

319:                                              ; preds = %311, %318
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #5
  %320 = getelementptr inbounds i8, ptr %.0171282, i64 4
  %.not177 = icmp eq ptr %320, %305
  br i1 %.not177, label %._crit_edge285, label %.lr.ph284

321:                                              ; preds = %315, %313
  %.pn211 = phi { ptr, i32 } [ %314, %313 ], [ %316, %315 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #5
  br label %337

322:                                              ; preds = %._crit_edge285
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA40_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(40) @.str.835)
          to label %323 unwind label %335

323:                                              ; preds = %322
  invoke void @_ZN11spirv_cross12CompilerGLSL11begin_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848) %0)
          to label %324 unwind label %335

324:                                              ; preds = %323
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA34_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(34) @.str.836)
          to label %325 unwind label %335

325:                                              ; preds = %324
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA68_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(68) @.str.837)
          to label %326 unwind label %335

326:                                              ; preds = %325
  invoke void @_ZN11spirv_cross12CompilerGLSL9end_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848) %0)
          to label %327 unwind label %335

327:                                              ; preds = %326
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA40_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(40) @.str.838)
          to label %328 unwind label %335

328:                                              ; preds = %327
  invoke void @_ZN11spirv_cross12CompilerGLSL11begin_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848) %0)
          to label %329 unwind label %335

329:                                              ; preds = %328
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA34_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(34) @.str.839)
          to label %330 unwind label %335

330:                                              ; preds = %329
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA68_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(68) @.str.840)
          to label %331 unwind label %335

331:                                              ; preds = %330
  invoke void @_ZN11spirv_cross12CompilerGLSL9end_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848) %0)
          to label %332 unwind label %335

332:                                              ; preds = %331
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
          to label %333 unwind label %335

333:                                              ; preds = %332
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA1_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(1) @.str.9)
          to label %334 unwind label %335

334:                                              ; preds = %333
  call void @_ZN11spirv_cross11SmallVectorINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateELm10EED2Ev(ptr noundef nonnull align 8 dereferenceable(64) %26) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %26) #5
  br label %338

335:                                              ; preds = %333, %332, %331, %330, %329, %328, %327, %326, %325, %324, %323, %322, %._crit_edge285
  %336 = landingpad { ptr, i32 }
          cleanup
  br label %337

337:                                              ; preds = %335, %321
  %.pn211.pn = phi { ptr, i32 } [ %.pn211, %321 ], [ %336, %335 ]
  call void @_ZN11spirv_cross11SmallVectorINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateELm10EED2Ev(ptr noundef nonnull align 8 dereferenceable(64) %26) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %26) #5
  br label %525

338:                                              ; preds = %334, %301
  %339 = call noundef zeroext i1 @_ZNK11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper20is_feature_requestedENS1_7FeatureE(ptr noundef nonnull align 4 dereferenceable(4) %71, i32 noundef 7)
  br i1 %339, label %340, label %371

340:                                              ; preds = %338
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %29) #5
  call void @_ZN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper26get_candidates_for_featureENS1_7FeatureERKNS1_6ResultE(ptr dead_on_unwind nonnull writable sret(%"class.spirv_cross::SmallVector.313") align 8 %29, i32 noundef 7, ptr noundef nonnull align 4 dereferenceable(40) %3)
  %341 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %29) #5
  %342 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %29) #5
  %.not178286 = icmp eq ptr %341, %342
  br i1 %.not178286, label %._crit_edge290, label %.lr.ph289

._crit_edge290:                                   ; preds = %363, %340
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
          to label %366 unwind label %368

.lr.ph289:                                        ; preds = %340, %363
  %.0168287 = phi ptr [ %364, %363 ], [ %341, %340 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #5
  %343 = load i32, ptr %.0168287, align 4, !tbaa !120
  %344 = call noundef ptr @_ZN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper18get_extension_nameENS1_9CandidateE(i32 noundef %343)
  store ptr %344, ptr %30, align 8, !tbaa !122
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #5
  %345 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE5frontEv(ptr noundef nonnull align 8 dereferenceable(16) %29) #5
  %346 = icmp eq ptr %.0168287, %345
  %347 = select i1 %346, ptr @.str.133, ptr @.str.132
  store ptr %347, ptr %31, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJPKcRA10_S2_RS3_RA2_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %31, ptr noundef nonnull align 1 dereferenceable(10) @.str.134, ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull align 1 dereferenceable(2) @.str.135)
          to label %348 unwind label %352

348:                                              ; preds = %.lr.ph289
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #5
  %349 = load i32, ptr %.0168287, align 4, !tbaa !120
  switch i32 %349, label %363 [
    i32 4, label %354
    i32 8, label %357
    i32 9, label %360
  ]

350:                                              ; preds = %362, %361, %360, %359, %358, %357, %356, %355, %354
  %351 = landingpad { ptr, i32 }
          cleanup
  br label %365

352:                                              ; preds = %.lr.ph289
  %353 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #5
  br label %365

354:                                              ; preds = %348
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA61_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(61) @.str.841)
          to label %355 unwind label %350

355:                                              ; preds = %354
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA60_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(60) @.str.842)
          to label %356 unwind label %350

356:                                              ; preds = %355
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA71_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(71) @.str.843)
          to label %363 unwind label %350

357:                                              ; preds = %348
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA58_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(58) @.str.844)
          to label %358 unwind label %350

358:                                              ; preds = %357
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA57_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(57) @.str.845)
          to label %359 unwind label %350

359:                                              ; preds = %358
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA68_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(68) @.str.846)
          to label %363 unwind label %350

360:                                              ; preds = %348
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA77_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(77) @.str.847)
          to label %361 unwind label %350

361:                                              ; preds = %360
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA66_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(66) @.str.848)
          to label %362 unwind label %350

362:                                              ; preds = %361
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA111_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(111) @.str.849)
          to label %363 unwind label %350

363:                                              ; preds = %348, %362, %359, %356
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #5
  %364 = getelementptr inbounds i8, ptr %.0168287, i64 4
  %.not178 = icmp eq ptr %364, %342
  br i1 %.not178, label %._crit_edge290, label %.lr.ph289

365:                                              ; preds = %352, %350
  %.pn208 = phi { ptr, i32 } [ %351, %350 ], [ %353, %352 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #5
  br label %370

366:                                              ; preds = %._crit_edge290
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA1_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(1) @.str.9)
          to label %367 unwind label %368

367:                                              ; preds = %366
  call void @_ZN11spirv_cross11SmallVectorINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateELm10EED2Ev(ptr noundef nonnull align 8 dereferenceable(64) %29) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %29) #5
  br label %371

368:                                              ; preds = %366, %._crit_edge290
  %369 = landingpad { ptr, i32 }
          cleanup
  br label %370

370:                                              ; preds = %368, %365
  %.pn208.pn = phi { ptr, i32 } [ %.pn208, %365 ], [ %369, %368 ]
  call void @_ZN11spirv_cross11SmallVectorINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateELm10EED2Ev(ptr noundef nonnull align 8 dereferenceable(64) %29) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %29) #5
  br label %525

371:                                              ; preds = %367, %338
  %372 = call noundef zeroext i1 @_ZNK11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper20is_feature_requestedENS1_7FeatureE(ptr noundef nonnull align 4 dereferenceable(4) %71, i32 noundef 8)
  br i1 %372, label %373, label %390

373:                                              ; preds = %371
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA36_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(36) @.str.850)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA160_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(160) @.str.851)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #5
  %374 = load ptr, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, align 16, !tbaa !122
  store ptr %374, ptr %32, align 8, !tbaa !122
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA44_KcRPS2_RA2_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(44) @.str.852, ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 1 dereferenceable(2) @.str.135)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #5
  %375 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 8), align 8, !tbaa !122
  store ptr %375, ptr %32, align 8, !tbaa !122
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA44_KcRPS2_RA2_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(44) @.str.852, ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 1 dereferenceable(2) @.str.135)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #5
  %376 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 16), align 16, !tbaa !122
  store ptr %376, ptr %32, align 8, !tbaa !122
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA44_KcRPS2_RA2_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(44) @.str.852, ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 1 dereferenceable(2) @.str.135)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #5
  %377 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 24), align 8, !tbaa !122
  store ptr %377, ptr %32, align 8, !tbaa !122
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA44_KcRPS2_RA2_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(44) @.str.852, ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 1 dereferenceable(2) @.str.135)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #5
  %378 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 32), align 16, !tbaa !122
  store ptr %378, ptr %32, align 8, !tbaa !122
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA44_KcRPS2_RA2_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(44) @.str.852, ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 1 dereferenceable(2) @.str.135)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #5
  %379 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 40), align 8, !tbaa !122
  store ptr %379, ptr %32, align 8, !tbaa !122
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA44_KcRPS2_RA2_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(44) @.str.852, ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 1 dereferenceable(2) @.str.135)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #5
  %380 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 48), align 16, !tbaa !122
  store ptr %380, ptr %32, align 8, !tbaa !122
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA44_KcRPS2_RA2_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(44) @.str.852, ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 1 dereferenceable(2) @.str.135)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #5
  %381 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 56), align 8, !tbaa !122
  store ptr %381, ptr %32, align 8, !tbaa !122
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA44_KcRPS2_RA2_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(44) @.str.852, ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 1 dereferenceable(2) @.str.135)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #5
  %382 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 64), align 16, !tbaa !122
  store ptr %382, ptr %32, align 8, !tbaa !122
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA44_KcRPS2_RA2_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(44) @.str.852, ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 1 dereferenceable(2) @.str.135)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #5
  %383 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 72), align 8, !tbaa !122
  store ptr %383, ptr %32, align 8, !tbaa !122
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA44_KcRPS2_RA2_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(44) @.str.852, ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 1 dereferenceable(2) @.str.135)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #5
  %384 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 80), align 16, !tbaa !122
  store ptr %384, ptr %32, align 8, !tbaa !122
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA44_KcRPS2_RA2_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(44) @.str.852, ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 1 dereferenceable(2) @.str.135)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #5
  %385 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 88), align 8, !tbaa !122
  store ptr %385, ptr %32, align 8, !tbaa !122
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA44_KcRPS2_RA2_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(44) @.str.852, ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 1 dereferenceable(2) @.str.135)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #5
  %386 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 96), align 16, !tbaa !122
  store ptr %386, ptr %32, align 8, !tbaa !122
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA44_KcRPS2_RA2_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(44) @.str.852, ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 1 dereferenceable(2) @.str.135)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #5
  %387 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 104), align 8, !tbaa !122
  store ptr %387, ptr %32, align 8, !tbaa !122
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA44_KcRPS2_RA2_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(44) @.str.852, ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 1 dereferenceable(2) @.str.135)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #5
  %388 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 112), align 16, !tbaa !122
  store ptr %388, ptr %32, align 8, !tbaa !122
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA44_KcRPS2_RA2_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(44) @.str.852, ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 1 dereferenceable(2) @.str.135)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #5
  %389 = load ptr, ptr getelementptr inbounds (i8, ptr @_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE16workaround_types, i64 120), align 8, !tbaa !122
  store ptr %389, ptr %32, align 8, !tbaa !122
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA44_KcRPS2_RA2_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(44) @.str.852, ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 1 dereferenceable(2) @.str.135)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #5
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA50_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(50) @.str.853)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA1_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(1) @.str.9)
  br label %390

390:                                              ; preds = %373, %371
  %391 = call noundef zeroext i1 @_ZNK11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper20is_feature_requestedENS1_7FeatureE(ptr noundef nonnull align 4 dereferenceable(4) %71, i32 noundef 12)
  br i1 %391, label %392, label %416

392:                                              ; preds = %390
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %33) #5
  call void @_ZN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper26get_candidates_for_featureENS1_7FeatureERKNS1_6ResultE(ptr dead_on_unwind nonnull writable sret(%"class.spirv_cross::SmallVector.313") align 8 %33, i32 noundef 12, ptr noundef nonnull align 4 dereferenceable(40) %3)
  %393 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %33) #5
  %394 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %33) #5
  %.not180292 = icmp eq ptr %393, %394
  br i1 %.not180292, label %._crit_edge296, label %.lr.ph295

._crit_edge296:                                   ; preds = %408, %392
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
          to label %411 unwind label %413

.lr.ph295:                                        ; preds = %392, %408
  %.0162293 = phi ptr [ %409, %408 ], [ %393, %392 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #5
  %395 = load i32, ptr %.0162293, align 4, !tbaa !120
  %396 = call noundef ptr @_ZN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper18get_extension_nameENS1_9CandidateE(i32 noundef %395)
  store ptr %396, ptr %34, align 8, !tbaa !122
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #5
  %397 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE5frontEv(ptr noundef nonnull align 8 dereferenceable(16) %33) #5
  %398 = icmp eq ptr %.0162293, %397
  %399 = select i1 %398, ptr @.str.133, ptr @.str.132
  store ptr %399, ptr %35, align 8, !tbaa !122
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJPKcRA10_S2_RS3_RA2_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull align 1 dereferenceable(10) @.str.134, ptr noundef nonnull align 8 dereferenceable(8) %34, ptr noundef nonnull align 1 dereferenceable(2) @.str.135)
          to label %400 unwind label %404

400:                                              ; preds = %.lr.ph295
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #5
  %401 = load i32, ptr %.0162293, align 4, !tbaa !120
  switch i32 %401, label %408 [
    i32 5, label %406
    i32 7, label %407
  ]

402:                                              ; preds = %407, %406
  %403 = landingpad { ptr, i32 }
          cleanup
  br label %410

404:                                              ; preds = %.lr.ph295
  %405 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #5
  br label %410

406:                                              ; preds = %400
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA78_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(78) @.str.854)
          to label %408 unwind label %402

407:                                              ; preds = %400
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA85_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(85) @.str.855)
          to label %408 unwind label %402

408:                                              ; preds = %400, %407, %406
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #5
  %409 = getelementptr inbounds i8, ptr %.0162293, i64 4
  %.not180 = icmp eq ptr %409, %394
  br i1 %.not180, label %._crit_edge296, label %.lr.ph295

410:                                              ; preds = %404, %402
  %.pn205 = phi { ptr, i32 } [ %403, %402 ], [ %405, %404 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #5
  br label %415

411:                                              ; preds = %._crit_edge296
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA1_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(1) @.str.9)
          to label %412 unwind label %413

412:                                              ; preds = %411
  call void @_ZN11spirv_cross11SmallVectorINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateELm10EED2Ev(ptr noundef nonnull align 8 dereferenceable(64) %33) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %33) #5
  br label %416

413:                                              ; preds = %411, %._crit_edge296
  %414 = landingpad { ptr, i32 }
          cleanup
  br label %415

415:                                              ; preds = %413, %410
  %.pn205.pn = phi { ptr, i32 } [ %.pn205, %410 ], [ %414, %413 ]
  call void @_ZN11spirv_cross11SmallVectorINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateELm10EED2Ev(ptr noundef nonnull align 8 dereferenceable(64) %33) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %33) #5
  br label %525

416:                                              ; preds = %412, %390
  %417 = call noundef zeroext i1 @_ZNK11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper20is_feature_requestedENS1_7FeatureE(ptr noundef nonnull align 4 dereferenceable(4) %71, i32 noundef 9)
  br i1 %417, label %418, label %419

418:                                              ; preds = %416
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA37_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(37) @.str.856)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA21_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(21) @.str.857)
  call void @_ZN11spirv_cross12CompilerGLSL11begin_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848) %0)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA41_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(41) @.str.858)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA52_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(52) @.str.859)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA45_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(45) @.str.860)
  call void @_ZN11spirv_cross12CompilerGLSL9end_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848) %0)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA1_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(1) @.str.9)
  br label %419

419:                                              ; preds = %418, %416
  %420 = call noundef zeroext i1 @_ZNK11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper20is_feature_requestedENS1_7FeatureE(ptr noundef nonnull align 4 dereferenceable(4) %71, i32 noundef 10)
  br i1 %420, label %421, label %422

421:                                              ; preds = %419
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA37_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(37) @.str.856)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA50_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(50) @.str.861)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA1_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(1) @.str.9)
  br label %422

422:                                              ; preds = %421, %419
  %423 = call noundef zeroext i1 @_ZNK11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper20is_feature_requestedENS1_7FeatureE(ptr noundef nonnull align 4 dereferenceable(4) %71, i32 noundef 11)
  br i1 %423, label %424, label %429

424:                                              ; preds = %422
  %425 = icmp eq i32 %1, 5
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA37_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(37) @.str.856)
  br i1 %425, label %426, label %427

426:                                              ; preds = %424
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA55_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(55) @.str.862)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA61_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(61) @.str.863)
  br label %428

427:                                              ; preds = %424
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA50_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(50) @.str.866)
  br label %428

428:                                              ; preds = %427, %426
  %.str.867.sink = phi ptr [ @.str.867, %427 ], [ @.str.864, %426 ]
  %.str.868.sink = phi ptr [ @.str.868, %427 ], [ @.str.865, %426 ]
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA62_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(62) %.str.867.sink)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA60_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(60) %.str.868.sink)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA1_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(1) @.str.9)
  br label %429

429:                                              ; preds = %428, %422
  %430 = call noundef zeroext i1 @_ZNK11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper20is_feature_requestedENS1_7FeatureE(ptr noundef nonnull align 4 dereferenceable(4) %71, i32 noundef 13)
  br i1 %430, label %431, label %432

431:                                              ; preds = %429
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA38_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(38) @.str.869)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA40_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(40) @.str.870)
  call void @_ZN11spirv_cross12CompilerGLSL11begin_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848) %0)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA66_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(66) @.str.871)
  call void @_ZN11spirv_cross12CompilerGLSL9end_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848) %0)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA50_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(50) @.str.872)
  call void @_ZN11spirv_cross12CompilerGLSL11begin_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848) %0)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA43_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(43) @.str.873)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA23_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(23) @.str.874)
  call void @_ZN11spirv_cross12CompilerGLSL19statement_no_indentIJRA33_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(33) @.str.875)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA18_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(18) @.str.876)
  call void @_ZN11spirv_cross12CompilerGLSL19statement_no_indentIJRA6_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(6) @.str.84)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA24_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(24) @.str.877)
  call void @_ZN11spirv_cross12CompilerGLSL19statement_no_indentIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
  call void @_ZN11spirv_cross12CompilerGLSL9end_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848) %0)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA50_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(50) @.str.878)
  call void @_ZN11spirv_cross12CompilerGLSL11begin_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848) %0)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA43_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(43) @.str.879)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA23_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(23) @.str.874)
  call void @_ZN11spirv_cross12CompilerGLSL19statement_no_indentIJRA33_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(33) @.str.875)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA18_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(18) @.str.876)
  call void @_ZN11spirv_cross12CompilerGLSL19statement_no_indentIJRA6_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(6) @.str.84)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA24_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(24) @.str.877)
  call void @_ZN11spirv_cross12CompilerGLSL19statement_no_indentIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
  call void @_ZN11spirv_cross12CompilerGLSL9end_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848) %0)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA1_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(1) @.str.9)
  br label %432

432:                                              ; preds = %431, %429
  %433 = call noundef zeroext i1 @_ZNK11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper20is_feature_requestedENS1_7FeatureE(ptr noundef nonnull align 4 dereferenceable(4) %71, i32 noundef 15)
  br i1 %433, label %434, label %435

434:                                              ; preds = %432
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA38_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(38) @.str.869)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA41_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(41) @.str.880)
  call void @_ZN11spirv_cross12CompilerGLSL11begin_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848) %0)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA30_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(30) @.str.881)
  call void @_ZN11spirv_cross12CompilerGLSL19statement_no_indentIJRA33_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(33) @.str.875)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA18_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(18) @.str.876)
  call void @_ZN11spirv_cross12CompilerGLSL19statement_no_indentIJRA6_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(6) @.str.84)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA24_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(24) @.str.877)
  call void @_ZN11spirv_cross12CompilerGLSL19statement_no_indentIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
  call void @_ZN11spirv_cross12CompilerGLSL9end_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848) %0)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA1_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(1) @.str.9)
  br label %435

435:                                              ; preds = %434, %432
  %436 = call noundef zeroext i1 @_ZNK11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper20is_feature_requestedENS1_7FeatureE(ptr noundef nonnull align 4 dereferenceable(4) %71, i32 noundef 14)
  br i1 %436, label %437, label %438

437:                                              ; preds = %435
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA38_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(38) @.str.869)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA55_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(55) @.str.882)
  call void @_ZN11spirv_cross12CompilerGLSL11begin_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848) %0)
  call void @_ZN11spirv_cross12CompilerGLSL19statement_no_indentIJRA33_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(33) @.str.875)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA33_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(33) @.str.883)
  call void @_ZN11spirv_cross12CompilerGLSL19statement_no_indentIJRA6_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(6) @.str.84)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA54_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(54) @.str.884)
  call void @_ZN11spirv_cross12CompilerGLSL19statement_no_indentIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA29_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(29) @.str.885)
  call void @_ZN11spirv_cross12CompilerGLSL9end_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848) %0)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA1_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(1) @.str.9)
  br label %438

438:                                              ; preds = %437, %435
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %36) #5
  store ptr %0, ptr %36, align 8, !tbaa !123
  %439 = getelementptr inbounds i8, ptr %36, i64 8
  store ptr %3, ptr %439, align 8, !tbaa !122
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %38) #5
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #5
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %37, ptr noundef nonnull @.str.886, ptr noundef nonnull align 1 dereferenceable(1) %38)
          to label %440 unwind label %464

440:                                              ; preds = %438
  invoke void @"_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEENK3$_0clENS0_27ShaderSubgroupSupportHelper7FeatureENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_2OpENS1_14GroupOperationE"(ptr noundef nonnull align 8 dereferenceable(16) %36, i32 noundef 16, ptr noundef nonnull %37, i32 noundef 349, i32 noundef 0)
          to label %441 unwind label %466

441:                                              ; preds = %440
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #5
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %38) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %40) #5
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #5
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %39, ptr noundef nonnull @.str.887, ptr noundef nonnull align 1 dereferenceable(1) %40)
          to label %442 unwind label %469

442:                                              ; preds = %441
  invoke void @"_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEENK3$_0clENS0_27ShaderSubgroupSupportHelper7FeatureENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_2OpENS1_14GroupOperationE"(ptr noundef nonnull align 8 dereferenceable(16) %36, i32 noundef 17, ptr noundef nonnull %39, i32 noundef 349, i32 noundef 2)
          to label %443 unwind label %471

443:                                              ; preds = %442
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #5
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %40) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %42) #5
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #5
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %41, ptr noundef nonnull @.str.888, ptr noundef nonnull align 1 dereferenceable(1) %42)
          to label %444 unwind label %474

444:                                              ; preds = %443
  invoke void @"_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEENK3$_0clENS0_27ShaderSubgroupSupportHelper7FeatureENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_2OpENS1_14GroupOperationE"(ptr noundef nonnull align 8 dereferenceable(16) %36, i32 noundef 18, ptr noundef nonnull %41, i32 noundef 349, i32 noundef 1)
          to label %445 unwind label %476

445:                                              ; preds = %444
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #5
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %42) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %44) #5
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #5
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %43, ptr noundef nonnull @.str.886, ptr noundef nonnull align 1 dereferenceable(1) %44)
          to label %446 unwind label %479

446:                                              ; preds = %445
  invoke void @"_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEENK3$_0clENS0_27ShaderSubgroupSupportHelper7FeatureENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_2OpENS1_14GroupOperationE"(ptr noundef nonnull align 8 dereferenceable(16) %36, i32 noundef 19, ptr noundef nonnull %43, i32 noundef 350, i32 noundef 0)
          to label %447 unwind label %481

447:                                              ; preds = %446
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #5
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %44) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %46) #5
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #5
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %45, ptr noundef nonnull @.str.887, ptr noundef nonnull align 1 dereferenceable(1) %46)
          to label %448 unwind label %484

448:                                              ; preds = %447
  invoke void @"_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEENK3$_0clENS0_27ShaderSubgroupSupportHelper7FeatureENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_2OpENS1_14GroupOperationE"(ptr noundef nonnull align 8 dereferenceable(16) %36, i32 noundef 20, ptr noundef nonnull %45, i32 noundef 350, i32 noundef 2)
          to label %449 unwind label %486

449:                                              ; preds = %448
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #5
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %46) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %48) #5
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #5
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef nonnull @.str.888, ptr noundef nonnull align 1 dereferenceable(1) %48)
          to label %450 unwind label %489

450:                                              ; preds = %449
  invoke void @"_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEENK3$_0clENS0_27ShaderSubgroupSupportHelper7FeatureENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_2OpENS1_14GroupOperationE"(ptr noundef nonnull align 8 dereferenceable(16) %36, i32 noundef 21, ptr noundef nonnull %47, i32 noundef 350, i32 noundef 1)
          to label %451 unwind label %491

451:                                              ; preds = %450
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #5
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %48) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %50) #5
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #5
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %49, ptr noundef nonnull @.str.889, ptr noundef nonnull align 1 dereferenceable(1) %50)
          to label %452 unwind label %494

452:                                              ; preds = %451
  invoke void @"_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEENK3$_0clENS0_27ShaderSubgroupSupportHelper7FeatureENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_2OpENS1_14GroupOperationE"(ptr noundef nonnull align 8 dereferenceable(16) %36, i32 noundef 22, ptr noundef nonnull %49, i32 noundef 351, i32 noundef 0)
          to label %453 unwind label %496

453:                                              ; preds = %452
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #5
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %50) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %52) #5
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #5
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %51, ptr noundef nonnull @.str.890, ptr noundef nonnull align 1 dereferenceable(1) %52)
          to label %454 unwind label %499

454:                                              ; preds = %453
  invoke void @"_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEENK3$_0clENS0_27ShaderSubgroupSupportHelper7FeatureENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_2OpENS1_14GroupOperationE"(ptr noundef nonnull align 8 dereferenceable(16) %36, i32 noundef 23, ptr noundef nonnull %51, i32 noundef 351, i32 noundef 2)
          to label %455 unwind label %501

455:                                              ; preds = %454
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #5
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %52) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %54) #5
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #5
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %53, ptr noundef nonnull @.str.891, ptr noundef nonnull align 1 dereferenceable(1) %54)
          to label %456 unwind label %504

456:                                              ; preds = %455
  invoke void @"_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEENK3$_0clENS0_27ShaderSubgroupSupportHelper7FeatureENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_2OpENS1_14GroupOperationE"(ptr noundef nonnull align 8 dereferenceable(16) %36, i32 noundef 24, ptr noundef nonnull %53, i32 noundef 351, i32 noundef 1)
          to label %457 unwind label %506

457:                                              ; preds = %456
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #5
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %54) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %56) #5
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %56) #5
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %55, ptr noundef nonnull @.str.889, ptr noundef nonnull align 1 dereferenceable(1) %56)
          to label %458 unwind label %509

458:                                              ; preds = %457
  invoke void @"_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEENK3$_0clENS0_27ShaderSubgroupSupportHelper7FeatureENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_2OpENS1_14GroupOperationE"(ptr noundef nonnull align 8 dereferenceable(16) %36, i32 noundef 25, ptr noundef nonnull %55, i32 noundef 352, i32 noundef 0)
          to label %459 unwind label %511

459:                                              ; preds = %458
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #5
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %56) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %56) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %58) #5
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #5
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %57, ptr noundef nonnull @.str.890, ptr noundef nonnull align 1 dereferenceable(1) %58)
          to label %460 unwind label %514

460:                                              ; preds = %459
  invoke void @"_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEENK3$_0clENS0_27ShaderSubgroupSupportHelper7FeatureENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_2OpENS1_14GroupOperationE"(ptr noundef nonnull align 8 dereferenceable(16) %36, i32 noundef 26, ptr noundef nonnull %57, i32 noundef 352, i32 noundef 2)
          to label %461 unwind label %516

461:                                              ; preds = %460
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #5
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %58) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %60) #5
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %60) #5
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %59, ptr noundef nonnull @.str.891, ptr noundef nonnull align 1 dereferenceable(1) %60)
          to label %462 unwind label %519

462:                                              ; preds = %461
  invoke void @"_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEENK3$_0clENS0_27ShaderSubgroupSupportHelper7FeatureENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_2OpENS1_14GroupOperationE"(ptr noundef nonnull align 8 dereferenceable(16) %36, i32 noundef 27, ptr noundef nonnull %59, i32 noundef 352, i32 noundef 1)
          to label %463 unwind label %521

463:                                              ; preds = %462
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #5
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %60) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %60) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %36) #5
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %3) #5
  br label %526

464:                                              ; preds = %438
  %465 = landingpad { ptr, i32 }
          cleanup
  br label %468

466:                                              ; preds = %440
  %467 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #5
  br label %468

468:                                              ; preds = %466, %464
  %.pn = phi { ptr, i32 } [ %467, %466 ], [ %465, %464 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %38) #5
  br label %524

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

471:                                              ; preds = %442
  %472 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #5
  br label %473

473:                                              ; preds = %471, %469
  %.pn182 = phi { ptr, i32 } [ %472, %471 ], [ %470, %469 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %40) #5
  br label %524

474:                                              ; preds = %443
  %475 = landingpad { ptr, i32 }
          cleanup
  br label %478

476:                                              ; preds = %444
  %477 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #5
  br label %478

478:                                              ; preds = %476, %474
  %.pn184 = phi { ptr, i32 } [ %477, %476 ], [ %475, %474 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %42) #5
  br label %524

479:                                              ; preds = %445
  %480 = landingpad { ptr, i32 }
          cleanup
  br label %483

481:                                              ; preds = %446
  %482 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #5
  br label %483

483:                                              ; preds = %481, %479
  %.pn186 = phi { ptr, i32 } [ %482, %481 ], [ %480, %479 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %44) #5
  br label %524

484:                                              ; preds = %447
  %485 = landingpad { ptr, i32 }
          cleanup
  br label %488

486:                                              ; preds = %448
  %487 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #5
  br label %488

488:                                              ; preds = %486, %484
  %.pn188 = phi { ptr, i32 } [ %487, %486 ], [ %485, %484 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %46) #5
  br label %524

489:                                              ; preds = %449
  %490 = landingpad { ptr, i32 }
          cleanup
  br label %493

491:                                              ; preds = %450
  %492 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #5
  br label %493

493:                                              ; preds = %491, %489
  %.pn190 = phi { ptr, i32 } [ %492, %491 ], [ %490, %489 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %48) #5
  br label %524

494:                                              ; preds = %451
  %495 = landingpad { ptr, i32 }
          cleanup
  br label %498

496:                                              ; preds = %452
  %497 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #5
  br label %498

498:                                              ; preds = %496, %494
  %.pn192 = phi { ptr, i32 } [ %497, %496 ], [ %495, %494 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %50) #5
  br label %524

499:                                              ; preds = %453
  %500 = landingpad { ptr, i32 }
          cleanup
  br label %503

501:                                              ; preds = %454
  %502 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #5
  br label %503

503:                                              ; preds = %501, %499
  %.pn194 = phi { ptr, i32 } [ %502, %501 ], [ %500, %499 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %52) #5
  br label %524

504:                                              ; preds = %455
  %505 = landingpad { ptr, i32 }
          cleanup
  br label %508

506:                                              ; preds = %456
  %507 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #5
  br label %508

508:                                              ; preds = %506, %504
  %.pn196 = phi { ptr, i32 } [ %507, %506 ], [ %505, %504 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %54) #5
  br label %524

509:                                              ; preds = %457
  %510 = landingpad { ptr, i32 }
          cleanup
  br label %513

511:                                              ; preds = %458
  %512 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #5
  br label %513

513:                                              ; preds = %511, %509
  %.pn198 = phi { ptr, i32 } [ %512, %511 ], [ %510, %509 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %56) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %56) #5
  br label %524

514:                                              ; preds = %459
  %515 = landingpad { ptr, i32 }
          cleanup
  br label %518

516:                                              ; preds = %460
  %517 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #5
  br label %518

518:                                              ; preds = %516, %514
  %.pn200 = phi { ptr, i32 } [ %517, %516 ], [ %515, %514 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %58) #5
  br label %524

519:                                              ; preds = %461
  %520 = landingpad { ptr, i32 }
          cleanup
  br label %523

521:                                              ; preds = %462
  %522 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #5
  br label %523

523:                                              ; preds = %521, %519
  %.pn202 = phi { ptr, i32 } [ %522, %521 ], [ %520, %519 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %60) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %60) #5
  br label %524

524:                                              ; preds = %523, %518, %513, %508, %503, %498, %493, %488, %483, %478, %473, %468
  %.pn202.pn = phi { ptr, i32 } [ %.pn202, %523 ], [ %.pn200, %518 ], [ %.pn198, %513 ], [ %.pn196, %508 ], [ %.pn194, %503 ], [ %.pn192, %498 ], [ %.pn190, %493 ], [ %.pn188, %488 ], [ %.pn186, %483 ], [ %.pn184, %478 ], [ %.pn182, %473 ], [ %.pn, %468 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %36) #5
  br label %525

525:                                              ; preds = %524, %415, %370, %337, %300, %207, %182, %157, %131, %104
  %.pn233.pn.pn = phi { ptr, i32 } [ %.pn233.pn, %104 ], [ %.pn230.pn, %131 ], [ %.pn227.pn, %157 ], [ %.pn224.pn, %182 ], [ %.pn221.pn, %207 ], [ %.pn218.pn, %300 ], [ %.pn211.pn, %337 ], [ %.pn208.pn, %370 ], [ %.pn205.pn, %415 ], [ %.pn202.pn, %524 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %3) #5
  br label %584

526:                                              ; preds = %463, %2
  %527 = getelementptr inbounds i8, ptr %0, i64 9328
  %528 = call noundef zeroext i1 @_ZNK11spirv_cross10VectorViewINS_7TypedIDILNS_5TypesE1EEEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %527) #5
  br i1 %528, label %583, label %529

529:                                              ; preds = %526
  %530 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_7TypedIDILNS_5TypesE1EEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %527) #5
  %531 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_7TypedIDILNS_5TypesE1EEEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %527) #5
  %.not237297 = icmp eq ptr %530, %531
  br i1 %.not237297, label %._crit_edge301, label %.lr.ph300

.lr.ph300:                                        ; preds = %529
  %532 = getelementptr inbounds i8, ptr %0, i64 7640
  br label %533

._crit_edge301:                                   ; preds = %581, %529
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA1_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(1) @.str.9)
  br label %583

533:                                              ; preds = %.lr.ph300, %581
  %.0158298 = phi ptr [ %530, %.lr.ph300 ], [ %582, %581 ]
  %534 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE1EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %.0158298)
  %535 = call noundef nonnull align 8 dereferenceable(336) ptr @_ZN11spirv_cross8Compiler3getINS_8SPIRTypeEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %534)
  %536 = load i8, ptr %532, align 8, !tbaa !125, !range !118, !noundef !119
  %537 = trunc nuw i8 %536 to i1
  br i1 %537, label %538, label %567

538:                                              ; preds = %533
  %539 = call noundef zeroext i1 @_ZNK11spirv_cross8Compiler9is_matrixERKNS_8SPIRTypeE(ptr noundef nonnull align 8 dereferenceable(3176) %0, ptr noundef nonnull align 8 dereferenceable(336) %535)
  br i1 %539, label %540, label %567

540:                                              ; preds = %538
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %61) #5
  %541 = load ptr, ptr %0, align 8, !tbaa !126
  %542 = getelementptr inbounds i8, ptr %541, i64 152
  %543 = load ptr, ptr %542, align 8
  call void %543(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %61, ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(336) %535, i32 noundef 0)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %62) #5
  %544 = load ptr, ptr %0, align 8, !tbaa !126
  %545 = getelementptr inbounds i8, ptr %544, i64 152
  %546 = load ptr, ptr %545, align 8
  invoke void %546(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %62, ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(336) %535, i32 noundef 0)
          to label %547 unwind label %557

547:                                              ; preds = %540
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA30_S2_SA_RA24_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(7) @.str.892, ptr noundef nonnull align 8 dereferenceable(32) %61, ptr noundef nonnull align 1 dereferenceable(30) @.str.893, ptr noundef nonnull align 8 dereferenceable(32) %62, ptr noundef nonnull align 1 dereferenceable(24) @.str.894)
          to label %548 unwind label %559

548:                                              ; preds = %547
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %62) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %61) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %63) #5
  %549 = load ptr, ptr %0, align 8, !tbaa !126
  %550 = getelementptr inbounds i8, ptr %549, i64 152
  %551 = load ptr, ptr %550, align 8
  call void %551(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %63, ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(336) %535, i32 noundef 0)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %64) #5
  %552 = load ptr, ptr %0, align 8, !tbaa !126
  %553 = getelementptr inbounds i8, ptr %552, i64 152
  %554 = load ptr, ptr %553, align 8
  invoke void %554(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %64, ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(336) %535, i32 noundef 0)
          to label %555 unwind label %562

555:                                              ; preds = %548
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA9_KcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA34_S2_SA_RA24_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(9) @.str.895, ptr noundef nonnull align 8 dereferenceable(32) %63, ptr noundef nonnull align 1 dereferenceable(34) @.str.896, ptr noundef nonnull align 8 dereferenceable(32) %64, ptr noundef nonnull align 1 dereferenceable(24) @.str.894)
          to label %556 unwind label %564

556:                                              ; preds = %555
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %64) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %63) #5
  br label %581

557:                                              ; preds = %540
  %558 = landingpad { ptr, i32 }
          cleanup
  br label %561

559:                                              ; preds = %547
  %560 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #5
  br label %561

561:                                              ; preds = %559, %557
  %.pn240 = phi { ptr, i32 } [ %560, %559 ], [ %558, %557 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %62) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %61) #5
  br label %584

562:                                              ; preds = %548
  %563 = landingpad { ptr, i32 }
          cleanup
  br label %566

564:                                              ; preds = %555
  %565 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #5
  br label %566

566:                                              ; preds = %564, %562
  %.pn242 = phi { ptr, i32 } [ %565, %564 ], [ %563, %562 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %64) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %63) #5
  br label %584

567:                                              ; preds = %538, %533
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %65) #5
  %568 = load ptr, ptr %0, align 8, !tbaa !126
  %569 = getelementptr inbounds i8, ptr %568, i64 152
  %570 = load ptr, ptr %569, align 8
  call void %570(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %65, ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(336) %535, i32 noundef 0)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %66) #5
  %571 = load ptr, ptr %0, align 8, !tbaa !126
  %572 = getelementptr inbounds i8, ptr %571, i64 152
  %573 = load ptr, ptr %572, align 8
  invoke void %573(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %66, ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(336) %535, i32 noundef 0)
          to label %574 unwind label %576

574:                                              ; preds = %567
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA24_KcS7_SA_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(32) %65, ptr noundef nonnull align 1 dereferenceable(24) @.str.897, ptr noundef nonnull align 8 dereferenceable(32) %66, ptr noundef nonnull align 1 dereferenceable(24) @.str.894)
          to label %575 unwind label %578

575:                                              ; preds = %574
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %66) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %65) #5
  br label %581

576:                                              ; preds = %567
  %577 = landingpad { ptr, i32 }
          cleanup
  br label %580

578:                                              ; preds = %574
  %579 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #5
  br label %580

580:                                              ; preds = %578, %576
  %.pn238 = phi { ptr, i32 } [ %579, %578 ], [ %577, %576 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %66) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %65) #5
  br label %584

581:                                              ; preds = %575, %556
  %582 = getelementptr inbounds i8, ptr %.0158298, i64 4
  %.not237 = icmp eq ptr %582, %531
  br i1 %.not237, label %._crit_edge301, label %533

583:                                              ; preds = %._crit_edge301, %526
  ret void

584:                                              ; preds = %561, %566, %580, %525
  %.pn242.pn.pn = phi { ptr, i32 } [ %.pn233.pn.pn, %525 ], [ %.pn242, %566 ], [ %.pn240, %561 ], [ %.pn238, %580 ]
  resume { ptr, i32 } %.pn242.pn.pn
}

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL11begin_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848)) local_unnamed_addr #1 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9end_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper18get_extension_nameENS1_9CandidateE(i32 noundef) local_unnamed_addr #2 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper7resolveEv(ptr dead_on_unwind noalias writable sret(%"struct.spirv_cross::CompilerGLSL::ShaderSubgroupSupportHelper::Result") align 4, ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper26get_candidates_for_featureENS1_7FeatureERKNS1_6ResultE(ptr dead_on_unwind noalias writable sret(%"class.spirv_cross::SmallVector.313") align 8, i32 noundef, ptr noundef nonnull align 4 dereferenceable(40)) local_unnamed_addr #1 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA25_S2_S4_RA83_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 1 dereferenceable(25), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 1 dereferenceable(83)) local_unnamed_addr #3 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJRPKcRA25_S2_S4_RA50_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 1 dereferenceable(25), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 1 dereferenceable(50)) local_unnamed_addr #3 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEENK3$_0clENS0_27ShaderSubgroupSupportHelper7FeatureENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_2OpENS1_14GroupOperationE"(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #3 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA30_S2_SA_RA24_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 1 dereferenceable(7), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(30), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(24)) local_unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJRA9_KcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA34_S2_SA_RA24_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 1 dereferenceable(9), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(34), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(24)) local_unnamed_addr #3 align 2

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

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

!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, !52, i64 7648}
!6 = !{!"_ZTSN11spirv_cross12CompilerGLSLE", !7, i64 0, !15, i64 3176, !76, i64 3184, !52, i64 3272, !79, i64 3280, !15, i64 7616, !15, i64 7624, !52, i64 7632, !52, i64 7633, !84, i64 7636, !88, i64 7680, !88, i64 7736, !88, i64 7792, !88, i64 7848, !88, i64 7904, !88, i64 7960, !88, i64 8016, !90, i64 8072, !74, i64 8128, !52, i64 8184, !92, i64 8192, !50, i64 8416, !58, i64 8424, !58, i64 8480, !58, i64 8536, !94, i64 8592, !96, i64 8648, !97, i64 8656, !39, i64 8712, !39, i64 8992, !97, i64 9272, !99, i64 9328, !50, i64 9384, !50, i64 9388, !50, i64 9392, !52, i64 9396, !52, i64 9397, !102, i64 9400, !102, i64 9424, !106, i64 9448, !110, i64 9472, !97, i64 9496, !58, i64 9552, !58, i64 9608, !16, i64 9664, !114, i64 9672, !58, i64 9728, !15, i64 9784, !116, i64 9792}
!7 = !{!"_ZTSN11spirv_cross8CompilerE", !8, i64 8, !60, i64 1928, !60, i64 1984, !15, i64 2040, !15, i64 2048, !50, i64 2056, !63, i64 2064, !52, i64 2120, !58, i64 2128, !52, i64 2184, !52, i64 2185, !65, i64 2192, !60, i64 2312, !68, i64 2368, !58, i64 2400, !58, i64 2456, !58, i64 2512, !58, i64 2568, !58, i64 2624, !57, i64 2680, !57, i64 2744, !50, i64 2808, !50, i64 2812, !52, i64 2816, !58, i64 2824, !52, i64 2880, !52, i64 2881, !50, i64 2884, !70, i64 2888, !60, i64 2944, !72, i64 3000, !58, i64 3056, !52, i64 3112, !74, i64 3120}
!8 = !{!"_ZTSN11spirv_cross8ParsedIRE", !9, i64 0, !18, i64 8, !22, i64 32, !26, i64 248, !16, i64 304, !31, i64 1088, !31, i64 1144, !34, i64 1200, !36, i64 1256, !39, i64 1312, !42, i64 1592, !45, i64 1624, !47, i64 1680, !49, i64 1736, !51, i64 1740, !53, i64 1748, !54, i64 1752, !50, i64 1756, !50, i64 1760, !55, i64 1768, !57, i64 1800, !58, i64 1864}
!9 = !{!"_ZTSSt10unique_ptrIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EE", !10, i64 0}
!10 = !{!"_ZTSSt15__uniq_ptr_dataIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_ELb1ELb1EE", !11, i64 0}
!11 = !{!"_ZTSSt15__uniq_ptr_implIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EE", !12, i64 0}
!12 = !{!"_ZTSSt5tupleIJPN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EEE", !13, i64 0}
!13 = !{!"_ZTSSt11_Tuple_implILm0EJPN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EEE", !14, i64 0}
!14 = !{!"_ZTSSt10_Head_baseILm0EPN11spirv_cross15ObjectPoolGroupELb0EE", !15, i64 0}
!15 = !{!"any pointer", !16, i64 0}
!16 = !{!"omnipotent char", !17, i64 0}
!17 = !{!"Simple C++ TBAA"}
!18 = !{!"_ZTSSt6vectorIjSaIjEE", !19, i64 0}
!19 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !15, i64 0, !15, i64 8, !15, i64 16}
!22 = !{!"_ZTSN11spirv_cross11SmallVectorINS_7VariantELm8EEE", !23, i64 0, !24, i64 16, !25, i64 24}
!23 = !{!"_ZTSN11spirv_cross10VectorViewINS_7VariantEEE", !15, i64 0, !24, i64 8}
!24 = !{!"long", !16, i64 0}
!25 = !{!"_ZTSN11spirv_cross13AlignedBufferINS_7VariantELm8EEE", !16, i64 0}
!26 = !{!"_ZTSSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE0EEENS0_4MetaESt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S4_EEE", !27, i64 0}
!27 = !{!"_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", !15, i64 0, !24, i64 8, !28, i64 16, !24, i64 24, !29, i64 32, !15, i64 48}
!28 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !15, i64 0}
!29 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !30, i64 0, !24, i64 8}
!30 = !{!"float", !16, i64 0}
!31 = !{!"_ZTSN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EEE", !32, i64 0, !24, i64 16, !33, i64 24}
!32 = !{!"_ZTSN11spirv_cross10VectorViewINS_7TypedIDILNS_5TypesE0EEEEE", !15, i64 0, !24, i64 8}
!33 = !{!"_ZTSN11spirv_cross13AlignedBufferINS_7TypedIDILNS_5TypesE0EEELm8EEE", !16, i64 0}
!34 = !{!"_ZTSSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE0EEEjSt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_jEEE", !35, i64 0}
!35 = !{!"_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", !15, i64 0, !24, i64 8, !28, i64 16, !24, i64 24, !29, i64 32, !15, i64 48}
!36 = !{!"_ZTSN11spirv_cross11SmallVectorIN3spv10CapabilityELm8EEE", !37, i64 0, !24, i64 16, !38, i64 24}
!37 = !{!"_ZTSN11spirv_cross10VectorViewIN3spv10CapabilityEEE", !15, i64 0, !24, i64 8}
!38 = !{!"_ZTSN11spirv_cross13AlignedBufferIN3spv10CapabilityELm8EEE", !16, i64 0}
!39 = !{!"_ZTSN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EEE", !40, i64 0, !24, i64 16, !41, i64 24}
!40 = !{!"_ZTSN11spirv_cross10VectorViewINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !15, i64 0, !24, i64 8}
!41 = !{!"_ZTSN11spirv_cross13AlignedBufferINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EEE", !16, i64 0}
!42 = !{!"_ZTSN11spirv_cross11SmallVectorIhLm8EEE", !43, i64 0, !24, i64 16, !44, i64 24}
!43 = !{!"_ZTSN11spirv_cross10VectorViewIhEE", !15, i64 0, !24, i64 8}
!44 = !{!"_ZTSN11spirv_cross13AlignedBufferIhLm8EEE", !16, i64 0}
!45 = !{!"_ZTSSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE6EEES3_St4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S3_EEE", !46, i64 0}
!46 = !{!"_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", !15, i64 0, !24, i64 8, !28, i64 16, !24, i64 24, !29, i64 32, !15, i64 48}
!47 = !{!"_ZTSSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE4EEENS0_14SPIREntryPointESt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S4_EEE", !48, i64 0}
!48 = !{!"_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", !15, i64 0, !24, i64 8, !28, i64 16, !24, i64 24, !29, i64 32, !15, i64 48}
!49 = !{!"_ZTSN11spirv_cross7TypedIDILNS_5TypesE4EEE", !50, i64 0}
!50 = !{!"int", !16, i64 0}
!51 = !{!"_ZTSN11spirv_cross8ParsedIR6SourceE", !50, i64 0, !52, i64 4, !52, i64 5, !52, i64 6}
!52 = !{!"bool", !16, i64 0}
!53 = !{!"_ZTSN3spv15AddressingModelE", !16, i64 0}
!54 = !{!"_ZTSN3spv11MemoryModelE", !16, i64 0}
!55 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !56, i64 0, !24, i64 8, !16, i64 16}
!56 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !15, i64 0}
!57 = !{!"_ZTSN11spirv_cross6BitsetE", !24, i64 0, !58, i64 8}
!58 = !{!"_ZTSSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEE", !59, i64 0}
!59 = !{!"_ZTSSt10_HashtableIjjSaIjENSt8__detail9_IdentityESt8equal_toIjESt4hashIjENS1_18_Mod_range_hashingENS1_20_Default_ranged_hashENS1_20_Prime_rehash_policyENS1_17_Hashtable_traitsILb0ELb1ELb1EEEE", !15, i64 0, !24, i64 8, !28, i64 16, !24, i64 24, !29, i64 32, !15, i64 48}
!60 = !{!"_ZTSN11spirv_cross11SmallVectorIjLm8EEE", !61, i64 0, !24, i64 16, !62, i64 24}
!61 = !{!"_ZTSN11spirv_cross10VectorViewIjEE", !15, i64 0, !24, i64 8}
!62 = !{!"_ZTSN11spirv_cross13AlignedBufferIjLm8EEE", !16, i64 0}
!63 = !{!"_ZTSSt13unordered_setIN11spirv_cross7TypedIDILNS0_5TypesE2EEESt4hashIS3_ESt8equal_toIS3_ESaIS3_EE", !64, i64 0}
!64 = !{!"_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", !15, i64 0, !24, i64 8, !28, i64 16, !24, i64 24, !29, i64 32, !15, i64 48}
!65 = !{!"_ZTSN11spirv_cross11SmallVectorINS_20CombinedImageSamplerELm8EEE", !66, i64 0, !24, i64 16, !67, i64 24}
!66 = !{!"_ZTSN11spirv_cross10VectorViewINS_20CombinedImageSamplerEEE", !15, i64 0, !24, i64 8}
!67 = !{!"_ZTSN11spirv_cross13AlignedBufferINS_20CombinedImageSamplerELm8EEE", !16, i64 0}
!68 = !{!"_ZTSSt8functionIFvRKN11spirv_cross8SPIRTypeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERS9_EE", !69, i64 0, !15, i64 24}
!69 = !{!"_ZTSSt14_Function_base", !16, i64 0, !15, i64 16}
!70 = !{!"_ZTSSt13unordered_mapIjSt10unique_ptrIN11spirv_cross3CFGESt14default_deleteIS2_EESt4hashIjESt8equal_toIjESaISt4pairIKjS5_EEE", !71, i64 0}
!71 = !{!"_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", !15, i64 0, !24, i64 8, !28, i64 16, !24, i64 24, !29, i64 32, !15, i64 48}
!72 = !{!"_ZTSSt13unordered_mapIjN11spirv_cross8Compiler17PhysicalBlockMetaESt4hashIjESt8equal_toIjESaISt4pairIKjS2_EEE", !73, i64 0}
!73 = !{!"_ZTSSt10_HashtableIjSt4pairIKjN11spirv_cross8Compiler17PhysicalBlockMetaEESaIS5_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE", !15, i64 0, !24, i64 8, !28, i64 16, !24, i64 24, !29, i64 32, !15, i64 48}
!74 = !{!"_ZTSSt13unordered_mapIjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4hashIjESt8equal_toIjESaISt4pairIKjS5_EEE", !75, i64 0}
!75 = !{!"_ZTSSt10_HashtableIjSt4pairIKjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEESaIS8_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb0ELb0ELb1EEEE", !15, i64 0, !24, i64 8, !28, i64 16, !24, i64 24, !29, i64 32, !15, i64 48}
!76 = !{!"_ZTSN11spirv_cross11SmallVectorIPNS_9SPIRBlockELm8EEE", !77, i64 0, !24, i64 16, !78, i64 24}
!77 = !{!"_ZTSN11spirv_cross10VectorViewIPNS_9SPIRBlockEEE", !15, i64 0, !24, i64 8}
!78 = !{!"_ZTSN11spirv_cross13AlignedBufferIPNS_9SPIRBlockELm8EEE", !16, i64 0}
!79 = !{!"_ZTSN11spirv_cross12StringStreamILm4096ELm4096EEE", !80, i64 0, !16, i64 24, !81, i64 4120}
!80 = !{!"_ZTSN11spirv_cross12StringStreamILm4096ELm4096EE6BufferE", !15, i64 0, !24, i64 8, !24, i64 16}
!81 = !{!"_ZTSN11spirv_cross11SmallVectorINS_12StringStreamILm4096ELm4096EE6BufferELm8EEE", !82, i64 0, !24, i64 16, !83, i64 24}
!82 = !{!"_ZTSN11spirv_cross10VectorViewINS_12StringStreamILm4096ELm4096EE6BufferEEE", !15, i64 0, !24, i64 8}
!83 = !{!"_ZTSN11spirv_cross13AlignedBufferINS_12StringStreamILm4096ELm4096EE6BufferELm8EEE", !16, i64 0}
!84 = !{!"_ZTSN11spirv_cross12CompilerGLSL7OptionsE", !50, i64 0, !52, i64 4, !52, i64 5, !50, i64 8, !52, i64 12, !52, i64 13, !52, i64 14, !52, i64 15, !52, i64 16, !52, i64 17, !52, i64 18, !52, i64 19, !52, i64 20, !52, i64 21, !52, i64 22, !52, i64 23, !50, i64 24, !85, i64 28, !86, i64 32}
!85 = !{!"_ZTSN11spirv_cross12CompilerGLSL7Options13VertexOptionsE", !52, i64 0, !52, i64 1, !52, i64 2}
!86 = !{!"_ZTSN11spirv_cross12CompilerGLSL7Options15FragmentOptionsE", !87, i64 0, !87, i64 4}
!87 = !{!"_ZTSN11spirv_cross12CompilerGLSL7Options9PrecisionE", !16, i64 0}
!88 = !{!"_ZTSSt13unordered_setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4hashIS5_ESt8equal_toIS5_ESaIS5_EE", !89, i64 0}
!89 = !{!"_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", !15, i64 0, !24, i64 8, !28, i64 16, !24, i64 24, !29, i64 32, !15, i64 48}
!90 = !{!"_ZTSSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt13unordered_setImSt4hashImESt8equal_toImESaImEES7_IS5_ES9_IS5_ESaISt4pairIKS5_SC_EEE", !91, i64 0}
!91 = !{!"_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", !15, i64 0, !24, i64 8, !28, i64 16, !24, i64 24, !29, i64 32, !15, i64 48}
!92 = !{!"_ZTSN11spirv_cross12CompilerGLSL17BackendVariationsE", !55, i64 0, !55, i64 32, !55, i64 64, !52, i64 96, !52, i64 97, !52, i64 98, !52, i64 99, !15, i64 104, !15, i64 112, !15, i64 120, !15, i64 128, !15, i64 136, !15, i64 144, !15, i64 152, !15, i64 160, !15, i64 168, !15, i64 176, !93, i64 184, !52, i64 188, !52, i64 189, !52, i64 190, !52, i64 191, !52, i64 192, !52, i64 193, !52, i64 194, !52, i64 195, !52, i64 196, !52, i64 197, !52, i64 198, !52, i64 199, !52, i64 200, !52, i64 201, !52, i64 202, !52, i64 203, !52, i64 204, !52, i64 205, !52, i64 206, !52, i64 207, !52, i64 208, !52, i64 209, !52, i64 210, !52, i64 211, !52, i64 212, !52, i64 213, !52, i64 214, !52, i64 215, !52, i64 216, !52, i64 217, !52, i64 218, !52, i64 219}
!93 = !{!"_ZTSN11spirv_cross8SPIRType8BaseTypeE", !16, i64 0}
!94 = !{!"_ZTSSt13unordered_mapIjbSt4hashIjESt8equal_toIjESaISt4pairIKjbEEE", !95, i64 0}
!95 = !{!"_ZTSSt10_HashtableIjSt4pairIKjbESaIS2_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb0ELb1EEEE", !15, i64 0, !24, i64 8, !28, i64 16, !24, i64 24, !29, i64 32, !15, i64 48}
!96 = !{!"_ZTSN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelperE", !50, i64 0}
!97 = !{!"_ZTSSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEE", !98, i64 0}
!98 = !{!"_ZTSSt10_HashtableIjSt4pairIKjjESaIS2_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb0ELb1EEEE", !15, i64 0, !24, i64 8, !28, i64 16, !24, i64 24, !29, i64 32, !15, i64 48}
!99 = !{!"_ZTSN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE1EEELm8EEE", !100, i64 0, !24, i64 16, !101, i64 24}
!100 = !{!"_ZTSN11spirv_cross10VectorViewINS_7TypedIDILNS_5TypesE1EEEEE", !15, i64 0, !24, i64 8}
!101 = !{!"_ZTSN11spirv_cross13AlignedBufferINS_7TypedIDILNS_5TypesE1EEELm8EEE", !16, i64 0}
!102 = !{!"_ZTSSt6vectorIN11spirv_cross8PlsRemapESaIS1_EE", !103, i64 0}
!103 = !{!"_ZTSSt12_Vector_baseIN11spirv_cross8PlsRemapESaIS1_EE", !104, i64 0}
!104 = !{!"_ZTSNSt12_Vector_baseIN11spirv_cross8PlsRemapESaIS1_EE12_Vector_implE", !105, i64 0}
!105 = !{!"_ZTSNSt12_Vector_baseIN11spirv_cross8PlsRemapESaIS1_EE17_Vector_impl_dataE", !15, i64 0, !15, i64 8, !15, i64 16}
!106 = !{!"_ZTSSt6vectorISt4pairIjjESaIS1_EE", !107, i64 0}
!107 = !{!"_ZTSSt12_Vector_baseISt4pairIjjESaIS1_EE", !108, i64 0}
!108 = !{!"_ZTSNSt12_Vector_baseISt4pairIjjESaIS1_EE12_Vector_implE", !109, i64 0}
!109 = !{!"_ZTSNSt12_Vector_baseISt4pairIjjESaIS1_EE17_Vector_impl_dataE", !15, i64 0, !15, i64 8, !15, i64 16}
!110 = !{!"_ZTSSt6vectorISt4pairIjbESaIS1_EE", !111, i64 0}
!111 = !{!"_ZTSSt12_Vector_baseISt4pairIjbESaIS1_EE", !112, i64 0}
!112 = !{!"_ZTSNSt12_Vector_baseISt4pairIjbESaIS1_EE12_Vector_implE", !113, i64 0}
!113 = !{!"_ZTSNSt12_Vector_baseISt4pairIjbESaIS1_EE17_Vector_impl_dataE", !15, i64 0, !15, i64 8, !15, i64 16}
!114 = !{!"_ZTSSt13unordered_setIN11spirv_cross21LocationComponentPairENS0_14InternalHasherESt8equal_toIS1_ESaIS1_EE", !115, i64 0}
!115 = !{!"_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", !15, i64 0, !24, i64 8, !28, i64 16, !24, i64 24, !29, i64 32, !15, i64 48}
!116 = !{!"_ZTSSt13unordered_mapIjN11spirv_cross11SmallVectorINS0_7TypedIDILNS0_5TypesE3EEELm8EEESt4hashIjESt8equal_toIjESaISt4pairIKjS5_EEE", !117, i64 0}
!117 = !{!"_ZTSSt10_HashtableIjSt4pairIKjN11spirv_cross11SmallVectorINS2_7TypedIDILNS2_5TypesE3EEELm8EEEESaIS8_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb0ELb0ELb1EEEE", !15, i64 0, !24, i64 8, !28, i64 16, !24, i64 24, !29, i64 32, !15, i64 48}
!118 = !{i8 0, i8 2}
!119 = !{}
!120 = !{!121, !121, i64 0}
!121 = !{!"_ZTSN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateE", !16, i64 0}
!122 = !{!15, !15, i64 0}
!123 = !{!124, !15, i64 0}
!124 = !{!"_ZTSZN11spirv_cross12CompilerGLSL26emit_extension_workaroundsEN3spv14ExecutionModelEE3$_0", !15, i64 0, !15, i64 8}
!125 = !{!6, !52, i64 7640}
!126 = !{!127, !127, i64 0}
!127 = !{!"vtable pointer", !17, i64 0}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,SROAPass,SimplifyCFGPass