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

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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator.71" = type { i8 }
%"struct.spirv_cross::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.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] }
%"struct.spirv_cross::SpecializationConstant" = type { %"class.spirv_cross::TypedID.309", i32 }
%"class.spirv_cross::TypedID.309" = type { i32 }
%"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.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 }
%"struct.spirv_cross::SPIREntryPoint" = type <{ %"class.spirv_cross::TypedID", [4 x i8], %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.spirv_cross::SmallVector.293", %"class.spirv_cross::Bitset", %"struct.spirv_cross::SPIREntryPoint::WorkgroupSize", i32, i32, i32, i32, i8, [3 x i8] }>
%"class.spirv_cross::SmallVector.293" = type { %"class.spirv_cross::VectorView.294", i64, %"class.spirv_cross::AlignedBuffer.295" }
%"class.spirv_cross::VectorView.294" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.295" = type { [32 x i8] }
%"struct.spirv_cross::SPIREntryPoint::WorkgroupSize" = type { i32, i32, i32, i32, i32, i32, i32 }

@.str.9 = external hidden unnamed_addr constant [1 x i8], align 1
@_ZTIN11spirv_cross13CompilerErrorE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.64 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.86 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.89 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.90 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.91 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.92 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.93 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.94 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.95 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.96 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.97 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.98 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.99 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.100 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.101 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.102 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.103 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.104 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.105 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.106 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.107 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.108 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.109 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.110 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.111 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.112 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.113 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.114 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.115 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.116 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.117 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.118 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.119 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.120 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.121 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.122 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.123 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.124 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.125 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.126 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.127 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.128 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.129 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.130 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.131 = external hidden unnamed_addr constant [11 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
@.str.136 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.137 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.138 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.139 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.140 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.141 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.142 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.143 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.144 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.145 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.146 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.147 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.148 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.149 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.150 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.151 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.152 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.153 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.154 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.155 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.156 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.157 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.158 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.159 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.160 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.161 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.162 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.163 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.164 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.165 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.166 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.167 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.168 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.169 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.170 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.171 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.172 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.173 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.174 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.175 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.176 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.177 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.178 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.179 = external hidden unnamed_addr constant [7 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 ptr @__cxa_allocate_exception(i64)

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

declare i32 @__gxx_personality_v0(...)

declare void @__cxa_free_exception(ptr)

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

declare void @__cxa_throw(ptr, ptr, ptr)

declare noundef nonnull align 8 dereferenceable(237) ptr @_ZN11spirv_cross8Compiler15get_entry_pointEv(ptr noundef nonnull align 8 dereferenceable(3176)) #3

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #6

; 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)) #5 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)) #5 align 2

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper18get_extension_nameENS1_9CandidateE(i32 noundef) #4 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) #4 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11spirv_cross12CompilerGLSL11emit_headerEv(ptr noundef nonnull align 8 dereferenceable(9848) %0) unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca %"class.std::allocator.71", align 1
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca %"class.std::allocator.71", align 1
  %11 = alloca i8, align 1
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.std::allocator.71", align 1
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %"class.std::allocator.71", align 1
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca %"class.std::allocator.71", align 1
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca %"struct.spirv_cross::CompilerGLSL::ShaderSubgroupSupportHelper::Result", align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca %"class.spirv_cross::SmallVector.313", align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca %"class.spirv_cross::SmallVector.27", align 8
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca ptr, 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 ptr, align 8
  %44 = alloca %"class.spirv_cross::SmallVector.27", align 8
  %45 = alloca %"class.spirv_cross::SmallVector.27", align 8
  %46 = alloca %"class.std::__cxx11::basic_string", align 8
  %47 = alloca %"class.std::__cxx11::basic_string", align 8
  %48 = alloca %"class.std::__cxx11::basic_string", align 8
  %49 = alloca %"class.std::allocator.71", align 1
  %50 = alloca %"class.std::__cxx11::basic_string", align 8
  %51 = alloca %"class.std::allocator.71", align 1
  %52 = alloca %"class.std::__cxx11::basic_string", align 8
  %53 = alloca %"class.std::allocator.71", align 1
  %54 = alloca %"class.std::__cxx11::basic_string", align 8
  %55 = alloca %"class.std::allocator.71", align 1
  %56 = alloca %"class.std::__cxx11::basic_string", align 8
  %57 = alloca %"class.std::allocator.71", align 1
  %58 = alloca %"class.std::__cxx11::basic_string", align 8
  %59 = alloca %"class.std::__cxx11::basic_string", align 8
  %60 = alloca %"class.std::allocator.71", align 1
  %61 = alloca %"class.std::__cxx11::basic_string", align 8
  %62 = alloca %"class.std::allocator.71", align 1
  %63 = alloca %"class.std::__cxx11::basic_string", align 8
  %64 = alloca %"class.std::allocator.71", align 1
  %65 = alloca %"class.std::__cxx11::basic_string", align 8
  %66 = alloca %"class.std::__cxx11::basic_string", align 8
  %67 = alloca %"class.std::allocator.71", align 1
  %68 = alloca %"class.std::__cxx11::basic_string", align 8
  %69 = alloca %"class.std::allocator.71", align 1
  %70 = alloca %"class.std::__cxx11::basic_string", align 8
  %71 = alloca %"class.std::allocator.71", align 1
  %72 = alloca %"class.std::__cxx11::basic_string", align 8
  %73 = alloca %"class.std::allocator.71", align 1
  %74 = alloca %"class.std::__cxx11::basic_string", align 8
  %75 = alloca %"class.std::allocator.71", align 1
  %76 = alloca %"class.std::__cxx11::basic_string", align 8
  %77 = alloca %"class.std::allocator.71", align 1
  %78 = alloca %"class.std::__cxx11::basic_string", align 8
  %79 = alloca %"class.std::allocator.71", align 1
  %80 = alloca %"class.std::__cxx11::basic_string", align 8
  %81 = alloca %"class.std::allocator.71", align 1
  %82 = alloca %"class.std::__cxx11::basic_string", align 8
  %83 = alloca %"class.std::allocator.71", align 1
  %84 = alloca %"struct.spirv_cross::SpecializationConstant", align 4
  %85 = alloca %"struct.spirv_cross::SpecializationConstant", align 4
  %86 = alloca %"struct.spirv_cross::SpecializationConstant", align 4
  %87 = alloca %"class.spirv_cross::TypedID.309", align 4
  %88 = alloca %"class.spirv_cross::TypedID.309", align 4
  %89 = alloca %"class.spirv_cross::TypedID.309", align 4
  %90 = alloca %"class.std::__cxx11::basic_string", align 8
  %91 = alloca %"class.std::__cxx11::basic_string", align 8
  %92 = alloca %"class.std::__cxx11::basic_string", align 8
  %93 = alloca %"class.std::__cxx11::basic_string", align 8
  %94 = alloca %"class.std::__cxx11::basic_string", align 8
  %95 = alloca %"class.std::__cxx11::basic_string", align 8
  %96 = alloca %"class.std::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 ptr, align 8
  %106 = alloca ptr, align 8
  %107 = alloca ptr, align 8
  %108 = alloca ptr, align 8
  %109 = alloca %"class.std::__cxx11::basic_string", align 8
  %110 = alloca %"class.std::__cxx11::basic_string", align 8
  store ptr %0, ptr %2, align 8, !tbaa !5
  %111 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %3) #7
  %112 = call noundef nonnull align 8 dereferenceable(237) ptr @_ZN11spirv_cross8Compiler15get_entry_pointEv(ptr noundef nonnull align 8 dereferenceable(3176) %111)
  store ptr %112, ptr %3, align 8, !tbaa !5
  %113 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %111, i32 0, i32 9
  %114 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %113, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #7
  %115 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %111, i32 0, i32 9
  %116 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %115, i32 0, i32 1
  %117 = load i8, ptr %116, align 4, !tbaa !9, !range !119, !noundef !120
  %118 = trunc i8 %117 to i1
  br i1 %118, label %119, label %124

119:                                              ; preds = %1
  %120 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %111, i32 0, i32 9
  %121 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %120, i32 0, i32 0
  %122 = load i32, ptr %121, align 4, !tbaa !121
  %123 = icmp ugt i32 %122, 100
  br label %124

124:                                              ; preds = %119, %1
  %125 = phi i1 [ false, %1 ], [ %123, %119 ]
  %126 = zext i1 %125 to i64
  %127 = select i1 %125, ptr @.str.70, ptr @.str.9
  store ptr %127, ptr %4, align 8, !tbaa !5
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA10_KcRjPS2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(10) @.str.69, ptr noundef nonnull align 4 dereferenceable(4) %114, ptr noundef nonnull align 8 dereferenceable(8) %4)
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #7
  %128 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %111, i32 0, i32 9
  %129 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %128, i32 0, i32 1
  %130 = load i8, ptr %129, align 4, !tbaa !9, !range !119, !noundef !120
  %131 = trunc i8 %130 to i1
  br i1 %131, label %160, label %132

132:                                              ; preds = %124
  %133 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %111, i32 0, i32 9
  %134 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %133, i32 0, i32 0
  %135 = load i32, ptr %134, align 4, !tbaa !121
  %136 = icmp ult i32 %135, 420
  br i1 %136, label %137, label %160

137:                                              ; preds = %132
  %138 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %111, i32 0, i32 9
  %139 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %138, i32 0, i32 7
  %140 = load i8, ptr %139, align 1, !tbaa !122, !range !119, !noundef !120
  %141 = trunc i8 %140 to i1
  br i1 %141, label %142, label %143

142:                                              ; preds = %137
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA39_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(39) @.str.71)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA53_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(53) @.str.72)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
  br label %143

143:                                              ; preds = %142, %137
  %144 = load ptr, ptr %3, align 8, !tbaa !5
  %145 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %144, i32 0, i32 5
  %146 = call noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %145, i32 noundef 9)
  br i1 %146, label %147, label %159

147:                                              ; preds = %143
  call void @llvm.lifetime.start.p0(i64 32, ptr %5) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %6) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef @.str.74, ptr noundef nonnull align 1 dereferenceable(1) %6)
          to label %148 unwind label %150

148:                                              ; preds = %147
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %149 unwind label %154

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

150:                                              ; preds = %147
  %151 = landingpad { ptr, i32 }
          cleanup
  %152 = extractvalue { ptr, i32 } %151, 0
  store ptr %152, ptr %7, align 8
  %153 = extractvalue { ptr, i32 } %151, 1
  store i32 %153, ptr %8, align 4
  br label %158

154:                                              ; preds = %148
  %155 = landingpad { ptr, i32 }
          cleanup
  %156 = extractvalue { ptr, i32 } %155, 0
  store ptr %156, ptr %7, align 8
  %157 = extractvalue { ptr, i32 } %155, 1
  store i32 %157, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #7
  br label %158

158:                                              ; preds = %154, %150
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %6) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %5) #7
  br label %1101

159:                                              ; preds = %149, %143
  br label %160

160:                                              ; preds = %159, %132, %124
  %161 = load ptr, ptr %3, align 8, !tbaa !5
  %162 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %161, i32 0, i32 5
  %163 = call noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %162, i32 noundef 4446)
  br i1 %163, label %164, label %176

164:                                              ; preds = %160
  call void @llvm.lifetime.start.p0(i64 32, ptr %9) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %10) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef @.str.75, ptr noundef nonnull align 1 dereferenceable(1) %10)
          to label %165 unwind label %167

165:                                              ; preds = %164
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %166 unwind label %171

166:                                              ; preds = %165
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %9) #7
  br label %176

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

171:                                              ; preds = %165
  %172 = landingpad { ptr, i32 }
          cleanup
  %173 = extractvalue { ptr, i32 } %172, 0
  store ptr %173, ptr %7, align 8
  %174 = extractvalue { ptr, i32 } %172, 1
  store i32 %174, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #7
  br label %175

175:                                              ; preds = %171, %167
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %9) #7
  br label %1101

176:                                              ; preds = %166, %160
  call void @llvm.lifetime.start.p0(i64 1, ptr %11) #7
  %177 = load ptr, ptr %3, align 8, !tbaa !5
  %178 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %177, i32 0, i32 5
  %179 = call noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %178, i32 noundef 5366)
  br i1 %179, label %192, label %180

180:                                              ; preds = %176
  %181 = load ptr, ptr %3, align 8, !tbaa !5
  %182 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %181, i32 0, i32 5
  %183 = call noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %182, i32 noundef 5367)
  br i1 %183, label %192, label %184

184:                                              ; preds = %180
  %185 = load ptr, ptr %3, align 8, !tbaa !5
  %186 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %185, i32 0, i32 5
  %187 = call noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %186, i32 noundef 5368)
  br i1 %187, label %192, label %188

188:                                              ; preds = %184
  %189 = load ptr, ptr %3, align 8, !tbaa !5
  %190 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %189, i32 0, i32 5
  %191 = call noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %190, i32 noundef 5369)
  br label %192

192:                                              ; preds = %188, %184, %180, %176
  %193 = phi i1 [ true, %184 ], [ true, %180 ], [ true, %176 ], [ %191, %188 ]
  %194 = zext i1 %193 to i8
  store i8 %194, ptr %11, align 1, !tbaa !123
  %195 = load i8, ptr %11, align 1, !tbaa !123, !range !119, !noundef !120
  %196 = trunc i8 %195 to i1
  br i1 %196, label %197, label %256

197:                                              ; preds = %192
  %198 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %111, i32 0, i32 9
  %199 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %198, i32 0, i32 1
  %200 = load i8, ptr %199, align 4, !tbaa !9, !range !119, !noundef !120
  %201 = trunc i8 %200 to i1
  br i1 %201, label %202, label %226

202:                                              ; preds = %197
  %203 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %111, i32 0, i32 9
  %204 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %203, i32 0, i32 0
  %205 = load i32, ptr %204, align 4, !tbaa !121
  %206 = icmp ult i32 %205, 310
  br i1 %206, label %207, label %214

207:                                              ; preds = %202
  %208 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %208, ptr noundef @.str.76)
          to label %209 unwind label %210

209:                                              ; preds = %207
  call void @__cxa_throw(ptr %208, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #8
  unreachable

210:                                              ; preds = %207
  %211 = landingpad { ptr, i32 }
          cleanup
  %212 = extractvalue { ptr, i32 } %211, 0
  store ptr %212, ptr %7, align 8
  %213 = extractvalue { ptr, i32 } %211, 1
  store i32 %213, ptr %8, align 4
  call void @__cxa_free_exception(ptr %208) #7
  br label %1100

214:                                              ; preds = %202
  call void @llvm.lifetime.start.p0(i64 32, ptr %12) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef @.str.77, ptr noundef nonnull align 1 dereferenceable(1) %13)
          to label %215 unwind label %217

215:                                              ; preds = %214
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 8 dereferenceable(32) %12)
          to label %216 unwind label %221

216:                                              ; preds = %215
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %12) #7
  br label %255

217:                                              ; preds = %214
  %218 = landingpad { ptr, i32 }
          cleanup
  %219 = extractvalue { ptr, i32 } %218, 0
  store ptr %219, ptr %7, align 8
  %220 = extractvalue { ptr, i32 } %218, 1
  store i32 %220, ptr %8, align 4
  br label %225

221:                                              ; preds = %215
  %222 = landingpad { ptr, i32 }
          cleanup
  %223 = extractvalue { ptr, i32 } %222, 0
  store ptr %223, ptr %7, align 8
  %224 = extractvalue { ptr, i32 } %222, 1
  store i32 %224, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #7
  br label %225

225:                                              ; preds = %221, %217
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %12) #7
  br label %1100

226:                                              ; preds = %197
  %227 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %111, i32 0, i32 9
  %228 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %227, i32 0, i32 0
  %229 = load i32, ptr %228, align 4, !tbaa !121
  %230 = icmp ult i32 %229, 420
  br i1 %230, label %231, label %243

231:                                              ; preds = %226
  call void @llvm.lifetime.start.p0(i64 32, ptr %14) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %15) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef @.str.74, ptr noundef nonnull align 1 dereferenceable(1) %15)
          to label %232 unwind label %234

232:                                              ; preds = %231
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 8 dereferenceable(32) %14)
          to label %233 unwind label %238

233:                                              ; preds = %232
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %14) #7
  br label %243

234:                                              ; preds = %231
  %235 = landingpad { ptr, i32 }
          cleanup
  %236 = extractvalue { ptr, i32 } %235, 0
  store ptr %236, ptr %7, align 8
  %237 = extractvalue { ptr, i32 } %235, 1
  store i32 %237, ptr %8, align 4
  br label %242

238:                                              ; preds = %232
  %239 = landingpad { ptr, i32 }
          cleanup
  %240 = extractvalue { ptr, i32 } %239, 0
  store ptr %240, ptr %7, align 8
  %241 = extractvalue { ptr, i32 } %239, 1
  store i32 %241, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #7
  br label %242

242:                                              ; preds = %238, %234
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %14) #7
  br label %1100

243:                                              ; preds = %233, %226
  call void @llvm.lifetime.start.p0(i64 32, ptr %16) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef @.str.78, ptr noundef nonnull align 1 dereferenceable(1) %17)
          to label %244 unwind label %246

244:                                              ; preds = %243
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 8 dereferenceable(32) %16)
          to label %245 unwind label %250

245:                                              ; preds = %244
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #7
  br label %255

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

250:                                              ; preds = %244
  %251 = landingpad { ptr, i32 }
          cleanup
  %252 = extractvalue { ptr, i32 } %251, 0
  store ptr %252, ptr %7, align 8
  %253 = extractvalue { ptr, i32 } %251, 1
  store i32 %253, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #7
  br label %254

254:                                              ; preds = %250, %246
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #7
  br label %1100

255:                                              ; preds = %245, %216
  br label %256

256:                                              ; preds = %255, %192
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #7
  %257 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %111, i32 0, i32 29
  store ptr %257, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #7
  %258 = load ptr, ptr %18, align 8, !tbaa !5
  %259 = call noundef ptr @_ZN11spirv_cross10VectorViewINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %258) #7
  store ptr %259, ptr %19, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #7
  %260 = load ptr, ptr %18, align 8, !tbaa !5
  %261 = call noundef ptr @_ZN11spirv_cross10VectorViewINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %260) #7
  store ptr %261, ptr %20, align 8, !tbaa !5
  br label %262

262:                                              ; preds = %361, %256
  %263 = load ptr, ptr %19, align 8, !tbaa !5
  %264 = load ptr, ptr %20, align 8, !tbaa !5
  %265 = icmp ne ptr %263, %264
  br i1 %265, label %267, label %266

266:                                              ; preds = %262
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #7
  br label %364

267:                                              ; preds = %262
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #7
  %268 = load ptr, ptr %19, align 8, !tbaa !5
  store ptr %268, ptr %21, align 8, !tbaa !5
  %269 = load ptr, ptr %21, align 8, !tbaa !5
  %270 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %269, ptr noundef @.str.79)
  br i1 %270, label %271, label %283

271:                                              ; preds = %267
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA37_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(37) @.str.80)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA45_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(45) @.str.81)
  %272 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %111, i32 0, i32 9
  %273 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %272, i32 0, i32 4
  %274 = load i8, ptr %273, align 4, !tbaa !124, !range !119, !noundef !120
  %275 = trunc i8 %274 to i1
  br i1 %275, label %276, label %281

276:                                              ; preds = %271
  %277 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %111, i32 0, i32 9
  %278 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %277, i32 0, i32 1
  %279 = load i8, ptr %278, align 4, !tbaa !9, !range !119, !noundef !120
  %280 = trunc i8 %279 to i1
  br i1 %280, label %281, label %282

281:                                              ; preds = %276, %271
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA33_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(33) @.str.82)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA39_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(39) @.str.83)
  br label %282

282:                                              ; preds = %281, %276
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA6_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(6) @.str.84)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA51_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(51) @.str.85)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
  br label %360

283:                                              ; preds = %267
  %284 = load ptr, ptr %21, align 8, !tbaa !5
  %285 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %284, ptr noundef @.str.86)
  br i1 %285, label %286, label %294

286:                                              ; preds = %283
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA42_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(42) @.str.87)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA50_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(50) @.str.88)
  %287 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %111, i32 0, i32 9
  %288 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %287, i32 0, i32 4
  %289 = load i8, ptr %288, align 4, !tbaa !124, !range !119, !noundef !120
  %290 = trunc i8 %289 to i1
  br i1 %290, label %292, label %291

291:                                              ; preds = %286
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA33_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(33) @.str.82)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA39_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(39) @.str.83)
  br label %293

292:                                              ; preds = %286
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA63_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(63) @.str.89)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA69_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(69) @.str.90)
  br label %293

293:                                              ; preds = %292, %291
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA6_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(6) @.str.84)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA40_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(40) @.str.91)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
  br label %359

294:                                              ; preds = %283
  %295 = load ptr, ptr %21, align 8, !tbaa !5
  %296 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %295, ptr noundef @.str.92)
  br i1 %296, label %297, label %305

297:                                              ; preds = %294
  %298 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %111, i32 0, i32 9
  %299 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %298, i32 0, i32 4
  %300 = load i8, ptr %299, align 4, !tbaa !124, !range !119, !noundef !120
  %301 = trunc i8 %300 to i1
  br i1 %301, label %302, label %303

302:                                              ; preds = %297
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA66_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(66) @.str.93)
  br label %304

303:                                              ; preds = %297
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA58_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(58) @.str.94)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA66_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(66) @.str.93)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA33_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(33) @.str.82)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA39_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(39) @.str.83)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA6_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(6) @.str.84)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA40_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(40) @.str.95)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
  br label %304

304:                                              ; preds = %303, %302
  br label %358

305:                                              ; preds = %294
  %306 = load ptr, ptr %21, align 8, !tbaa !5
  %307 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %306, ptr noundef @.str.96)
  br i1 %307, label %308, label %316

308:                                              ; preds = %305
  %309 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %111, i32 0, i32 9
  %310 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %309, i32 0, i32 4
  %311 = load i8, ptr %310, align 4, !tbaa !124, !range !119, !noundef !120
  %312 = trunc i8 %311 to i1
  br i1 %312, label %313, label %314

313:                                              ; preds = %308
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA67_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(67) @.str.97)
  br label %315

314:                                              ; preds = %308
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA59_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(59) @.str.98)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA67_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(67) @.str.97)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA39_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(39) @.str.99)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA45_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(45) @.str.100)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA33_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(33) @.str.82)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA39_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(39) @.str.83)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA6_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(6) @.str.84)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA41_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(41) @.str.101)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
  br label %315

315:                                              ; preds = %314, %313
  br label %357

316:                                              ; preds = %305
  %317 = load ptr, ptr %21, align 8, !tbaa !5
  %318 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %317, ptr noundef @.str.75)
  br i1 %318, label %319, label %327

319:                                              ; preds = %316
  %320 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %111, i32 0, i32 9
  %321 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %320, i32 0, i32 1
  %322 = load i8, ptr %321, align 4, !tbaa !9, !range !119, !noundef !120
  %323 = trunc i8 %322 to i1
  br i1 %323, label %324, label %325

324:                                              ; preds = %319
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA48_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(48) @.str.102)
  br label %326

325:                                              ; preds = %319
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA39_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(39) @.str.103)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA48_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(48) @.str.104)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA6_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(6) @.str.84)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA48_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(48) @.str.102)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
  br label %326

326:                                              ; preds = %325, %324
  br label %356

327:                                              ; preds = %316
  %328 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %111, i32 0, i32 9
  %329 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %328, i32 0, i32 4
  %330 = load i8, ptr %329, align 4, !tbaa !124, !range !119, !noundef !120
  %331 = trunc i8 %330 to i1
  br i1 %331, label %338, label %332

332:                                              ; preds = %327
  %333 = load ptr, ptr %21, align 8, !tbaa !5
  %334 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %333, ptr noundef @.str.105)
  br i1 %334, label %335, label %338

335:                                              ; preds = %332
  %336 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA8_KcRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(8) @.str.106, ptr noundef nonnull align 8 dereferenceable(32) %336)
  %337 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA12_KcRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA10_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(12) @.str.107, ptr noundef nonnull align 8 dereferenceable(32) %337, ptr noundef nonnull align 1 dereferenceable(10) @.str.108)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
  br label %355

338:                                              ; preds = %332, %327
  %339 = load ptr, ptr %21, align 8, !tbaa !5
  %340 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %339, ptr noundef @.str.109)
  br i1 %340, label %341, label %342

341:                                              ; preds = %338
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA44_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(44) @.str.110)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA52_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(52) @.str.111)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA40_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(40) @.str.112)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA44_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(44) @.str.113)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA38_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(38) @.str.114)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA41_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(41) @.str.115)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA6_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(6) @.str.84)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA28_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(28) @.str.116)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA27_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(27) @.str.117)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA27_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(27) @.str.118)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA25_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(25) @.str.119)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
  br label %354

342:                                              ; preds = %338
  %343 = load ptr, ptr %21, align 8, !tbaa !5
  %344 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %343, ptr noundef @.str.77)
  br i1 %344, label %345, label %346

345:                                              ; preds = %342
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA53_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(53) @.str.120)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA76_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(76) @.str.121)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA72_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(72) @.str.122)
  br label %353

346:                                              ; preds = %342
  %347 = load ptr, ptr %21, align 8, !tbaa !5
  %348 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %347, ptr noundef @.str.78)
  br i1 %348, label %349, label %350

349:                                              ; preds = %346
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA40_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(40) @.str.123)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA53_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(53) @.str.124)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA77_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(77) @.str.125)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA73_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(73) @.str.126)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA49_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(49) @.str.127)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA54_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(54) @.str.128)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA82_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(82) @.str.129)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA45_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(45) @.str.130)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
  br label %352

350:                                              ; preds = %346
  %351 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA12_KcRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA11_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(12) @.str.107, ptr noundef nonnull align 8 dereferenceable(32) %351, ptr noundef nonnull align 1 dereferenceable(11) @.str.131)
  br label %352

352:                                              ; preds = %350, %349
  br label %353

353:                                              ; preds = %352, %345
  br label %354

354:                                              ; preds = %353, %341
  br label %355

355:                                              ; preds = %354, %335
  br label %356

356:                                              ; preds = %355, %326
  br label %357

357:                                              ; preds = %356, %315
  br label %358

358:                                              ; preds = %357, %304
  br label %359

359:                                              ; preds = %358, %293
  br label %360

360:                                              ; preds = %359, %282
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #7
  br label %361

361:                                              ; preds = %360
  %362 = load ptr, ptr %19, align 8, !tbaa !5
  %363 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %362, i32 1
  store ptr %363, ptr %19, align 8, !tbaa !5
  br label %262

364:                                              ; preds = %266
  %365 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %111, i32 0, i32 9
  %366 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %365, i32 0, i32 4
  %367 = load i8, ptr %366, align 4, !tbaa !124, !range !119, !noundef !120
  %368 = trunc i8 %367 to i1
  br i1 %368, label %492, label %369

369:                                              ; preds = %364
  call void @llvm.lifetime.start.p0(i64 40, ptr %22) #7
  %370 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %111, i32 0, i32 27
  call void @_ZNK11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper7resolveEv(ptr dead_on_unwind writable sret(%"struct.spirv_cross::CompilerGLSL::ShaderSubgroupSupportHelper::Result") align 4 %22, ptr noundef nonnull align 4 dereferenceable(4) %370)
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #7
  store i32 0, ptr %23, align 4, !tbaa !125
  br label %371

371:                                              ; preds = %487, %369
  %372 = load i32, ptr %23, align 4, !tbaa !125
  %373 = icmp ult i32 %372, 28
  br i1 %373, label %375, label %374

374:                                              ; preds = %371
  store i32 4, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #7
  br label %491

375:                                              ; preds = %371
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #7
  %376 = load i32, ptr %23, align 4, !tbaa !125
  store i32 %376, ptr %25, align 4, !tbaa !126
  %377 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %111, i32 0, i32 27
  %378 = load i32, ptr %25, align 4, !tbaa !126
  %379 = call noundef zeroext i1 @_ZNK11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper20is_feature_requestedENS1_7FeatureE(ptr noundef nonnull align 4 dereferenceable(4) %377, i32 noundef %378)
  br i1 %379, label %381, label %380

380:                                              ; preds = %375
  store i32 6, ptr %24, align 4
  br label %484

381:                                              ; preds = %375
  call void @llvm.lifetime.start.p0(i64 64, ptr %26) #7
  %382 = load i32, ptr %25, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper26get_candidates_for_featureENS1_7FeatureERKNS1_6ResultE(ptr dead_on_unwind writable sret(%"class.spirv_cross::SmallVector.313") align 8 %26, i32 noundef %382, ptr noundef nonnull align 4 dereferenceable(40) %22)
  %383 = call noundef zeroext i1 @_ZNK11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %26) #7
  br i1 %383, label %384, label %385

384:                                              ; preds = %381
  store i32 6, ptr %24, align 4
  br label %483

385:                                              ; preds = %381
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA1_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(1) @.str.9)
          to label %386 unwind label %396

386:                                              ; preds = %385
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #7
  store ptr %26, ptr %27, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #7
  %387 = load ptr, ptr %27, align 8, !tbaa !5
  %388 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %387) #7
  store ptr %388, ptr %28, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #7
  %389 = load ptr, ptr %27, align 8, !tbaa !5
  %390 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %389) #7
  store ptr %390, ptr %29, align 8, !tbaa !5
  br label %391

391:                                              ; preds = %463, %386
  %392 = load ptr, ptr %28, align 8, !tbaa !5
  %393 = load ptr, ptr %29, align 8, !tbaa !5
  %394 = icmp ne ptr %392, %393
  br i1 %394, label %400, label %395

395:                                              ; preds = %391
  store i32 7, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #7
  br label %474

396:                                              ; preds = %481, %479, %478, %474, %385
  %397 = landingpad { ptr, i32 }
          cleanup
  %398 = extractvalue { ptr, i32 } %397, 0
  store ptr %398, ptr %7, align 8
  %399 = extractvalue { ptr, i32 } %397, 1
  store i32 %399, ptr %8, align 4
  br label %490

400:                                              ; preds = %391
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #7
  %401 = load ptr, ptr %28, align 8, !tbaa !5
  store ptr %401, ptr %30, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #7
  %402 = load ptr, ptr %30, align 8, !tbaa !5
  %403 = load i32, ptr %402, align 4, !tbaa !128
  %404 = invoke noundef ptr @_ZN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper18get_extension_nameENS1_9CandidateE(i32 noundef %403)
          to label %405 unwind label %434

405:                                              ; preds = %400
  store ptr %404, ptr %31, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #7
  %406 = load ptr, ptr %30, align 8, !tbaa !5
  %407 = load i32, ptr %406, align 4, !tbaa !128
  %408 = invoke noundef ptr @_ZN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper38get_extra_required_extension_predicateENS1_9CandidateE(i32 noundef %407)
          to label %409 unwind label %438

409:                                              ; preds = %405
  store ptr %408, ptr %32, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 280, ptr %33) #7
  %410 = load ptr, ptr %30, align 8, !tbaa !5
  %411 = load i32, ptr %410, align 4, !tbaa !128
  invoke void @_ZN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper34get_extra_required_extension_namesB5cxx11ENS1_9CandidateE(ptr dead_on_unwind writable sret(%"class.spirv_cross::SmallVector.27") align 8 %33, i32 noundef %411)
          to label %412 unwind label %442

412:                                              ; preds = %409
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #7
  %413 = load ptr, ptr %30, align 8, !tbaa !5
  %414 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE5frontEv(ptr noundef nonnull align 8 dereferenceable(16) %26) #7
  %415 = icmp ne ptr %413, %414
  %416 = zext i1 %415 to i64
  %417 = select i1 %415, ptr @.str.132, ptr @.str.133
  store ptr %417, ptr %34, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #7
  %418 = load ptr, ptr %32, align 8, !tbaa !5
  %419 = load i8, ptr %418, align 1, !tbaa !130
  %420 = sext i8 %419 to i32
  %421 = icmp ne i32 %420, 0
  %422 = zext i1 %421 to i64
  %423 = select i1 %421, ptr @.str.136, ptr @.str.9
  store ptr %423, ptr %35, align 8, !tbaa !5
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJPKcRA10_S2_RS3_RA2_S2_S3_S6_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 8 dereferenceable(8) %34, ptr noundef nonnull align 1 dereferenceable(10) @.str.134, ptr noundef nonnull align 8 dereferenceable(8) %31, ptr noundef nonnull align 1 dereferenceable(2) @.str.135, ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull align 8 dereferenceable(8) %32)
          to label %424 unwind label %446

424:                                              ; preds = %412
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #7
  store ptr %33, ptr %36, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #7
  %425 = load ptr, ptr %36, align 8, !tbaa !5
  %426 = call noundef ptr @_ZN11spirv_cross10VectorViewINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %425) #7
  store ptr %426, ptr %37, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #7
  %427 = load ptr, ptr %36, align 8, !tbaa !5
  %428 = call noundef ptr @_ZN11spirv_cross10VectorViewINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %427) #7
  store ptr %428, ptr %38, align 8, !tbaa !5
  br label %429

429:                                              ; preds = %454, %424
  %430 = load ptr, ptr %37, align 8, !tbaa !5
  %431 = load ptr, ptr %38, align 8, !tbaa !5
  %432 = icmp ne ptr %430, %431
  br i1 %432, label %450, label %433

433:                                              ; preds = %429
  store i32 9, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #7
  br label %461

434:                                              ; preds = %400
  %435 = landingpad { ptr, i32 }
          cleanup
  %436 = extractvalue { ptr, i32 } %435, 0
  store ptr %436, ptr %7, align 8
  %437 = extractvalue { ptr, i32 } %435, 1
  store i32 %437, ptr %8, align 4
  br label %473

438:                                              ; preds = %405
  %439 = landingpad { ptr, i32 }
          cleanup
  %440 = extractvalue { ptr, i32 } %439, 0
  store ptr %440, ptr %7, align 8
  %441 = extractvalue { ptr, i32 } %439, 1
  store i32 %441, ptr %8, align 4
  br label %472

442:                                              ; preds = %409
  %443 = landingpad { ptr, i32 }
          cleanup
  %444 = extractvalue { ptr, i32 } %443, 0
  store ptr %444, ptr %7, align 8
  %445 = extractvalue { ptr, i32 } %443, 1
  store i32 %445, ptr %8, align 4
  br label %471

446:                                              ; preds = %412
  %447 = landingpad { ptr, i32 }
          cleanup
  %448 = extractvalue { ptr, i32 } %447, 0
  store ptr %448, ptr %7, align 8
  %449 = extractvalue { ptr, i32 } %447, 1
  store i32 %449, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #7
  br label %470

450:                                              ; preds = %429
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #7
  %451 = load ptr, ptr %37, align 8, !tbaa !5
  store ptr %451, ptr %39, align 8, !tbaa !5
  %452 = load ptr, ptr %39, align 8, !tbaa !5
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA12_KcRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA10_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(12) @.str.107, ptr noundef nonnull align 8 dereferenceable(32) %452, ptr noundef nonnull align 1 dereferenceable(10) @.str.108)
          to label %453 unwind label %457

453:                                              ; preds = %450
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #7
  br label %454

454:                                              ; preds = %453
  %455 = load ptr, ptr %37, align 8, !tbaa !5
  %456 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %455, i32 1
  store ptr %456, ptr %37, align 8, !tbaa !5
  br label %429

457:                                              ; preds = %450
  %458 = landingpad { ptr, i32 }
          cleanup
  %459 = extractvalue { ptr, i32 } %458, 0
  store ptr %459, ptr %7, align 8
  %460 = extractvalue { ptr, i32 } %458, 1
  store i32 %460, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #7
  br label %470

461:                                              ; preds = %433
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA12_KcRPS2_RA11_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(12) @.str.107, ptr noundef nonnull align 8 dereferenceable(8) %31, ptr noundef nonnull align 1 dereferenceable(11) @.str.131)
          to label %462 unwind label %466

462:                                              ; preds = %461
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(280) %33) #7
  call void @llvm.lifetime.end.p0(i64 280, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  br label %463

463:                                              ; preds = %462
  %464 = load ptr, ptr %28, align 8, !tbaa !5
  %465 = getelementptr inbounds i32, ptr %464, i32 1
  store ptr %465, ptr %28, align 8, !tbaa !5
  br label %391

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

470:                                              ; preds = %466, %457, %446
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(280) %33) #7
  br label %471

471:                                              ; preds = %470, %442
  call void @llvm.lifetime.end.p0(i64 280, ptr %33) #7
  br label %472

472:                                              ; preds = %471, %438
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #7
  br label %473

473:                                              ; preds = %472, %434
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #7
  br label %490

474:                                              ; preds = %395
  %475 = load i32, ptr %25, align 4, !tbaa !126
  %476 = invoke noundef zeroext i1 @_ZN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper45can_feature_be_implemented_without_extensionsENS1_7FeatureE(i32 noundef %475)
          to label %477 unwind label %396

477:                                              ; preds = %474
  br i1 %476, label %481, label %478

478:                                              ; preds = %477
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA6_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(6) @.str.84)
          to label %479 unwind label %396

479:                                              ; preds = %478
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA70_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(70) @.str.137)
          to label %480 unwind label %396

480:                                              ; preds = %479
  br label %481

481:                                              ; preds = %480, %477
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
          to label %482 unwind label %396

482:                                              ; preds = %481
  store i32 0, ptr %24, align 4
  br label %483

483:                                              ; preds = %482, %384
  call void @_ZN11spirv_cross11SmallVectorINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateELm10EED2Ev(ptr noundef nonnull align 8 dereferenceable(64) %26) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr %26) #7
  br label %484

484:                                              ; preds = %483, %380
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #7
  %485 = load i32, ptr %24, align 4
  switch i32 %485, label %1107 [
    i32 0, label %486
    i32 6, label %487
  ]

486:                                              ; preds = %484
  br label %487

487:                                              ; preds = %486, %484
  %488 = load i32, ptr %23, align 4, !tbaa !125
  %489 = add i32 %488, 1
  store i32 %489, ptr %23, align 4, !tbaa !125
  br label %371, !llvm.loop !131

490:                                              ; preds = %473, %396
  call void @_ZN11spirv_cross11SmallVectorINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateELm10EED2Ev(ptr noundef nonnull align 8 dereferenceable(64) %26) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %22) #7
  br label %1100

491:                                              ; preds = %374
  call void @llvm.lifetime.end.p0(i64 40, ptr %22) #7
  br label %492

492:                                              ; preds = %491, %364
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #7
  %493 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %111, i32 0, i32 30
  store ptr %493, ptr %40, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #7
  %494 = load ptr, ptr %40, align 8, !tbaa !5
  %495 = call noundef ptr @_ZN11spirv_cross10VectorViewINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %494) #7
  store ptr %495, ptr %41, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #7
  %496 = load ptr, ptr %40, align 8, !tbaa !5
  %497 = call noundef ptr @_ZN11spirv_cross10VectorViewINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %496) #7
  store ptr %497, ptr %42, align 8, !tbaa !5
  br label %498

498:                                              ; preds = %506, %492
  %499 = load ptr, ptr %41, align 8, !tbaa !5
  %500 = load ptr, ptr %42, align 8, !tbaa !5
  %501 = icmp ne ptr %499, %500
  br i1 %501, label %503, label %502

502:                                              ; preds = %498
  store i32 11, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #7
  br label %509

503:                                              ; preds = %498
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #7
  %504 = load ptr, ptr %41, align 8, !tbaa !5
  store ptr %504, ptr %43, align 8, !tbaa !5
  %505 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 8 dereferenceable(32) %505)
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #7
  br label %506

506:                                              ; preds = %503
  %507 = load ptr, ptr %41, align 8, !tbaa !5
  %508 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %507, i32 1
  store ptr %508, ptr %41, align 8, !tbaa !5
  br label %498

509:                                              ; preds = %502
  call void @llvm.lifetime.start.p0(i64 280, ptr %44) #7
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(280) %44) #7
  call void @llvm.lifetime.start.p0(i64 280, ptr %45) #7
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(280) %45) #7
  %510 = load ptr, ptr %3, align 8, !tbaa !5
  %511 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %510, i32 0, i32 10
  %512 = load i32, ptr %511, align 8, !tbaa !133
  switch i32 %512, label %1041 [
    i32 0, label %513
    i32 3, label %527
    i32 1, label %651
    i32 2, label %665
    i32 5, label %771
    i32 5364, label %771
    i32 5365, label %771
    i32 4, label %920
  ]

513:                                              ; preds = %509
  %514 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %111, i32 0, i32 9
  %515 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %514, i32 0, i32 16
  %516 = load i32, ptr %515, align 4, !tbaa !140
  %517 = icmp ne i32 %516, 0
  br i1 %517, label %518, label %526

518:                                              ; preds = %513
  call void @llvm.lifetime.start.p0(i64 32, ptr %46) #7
  %519 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %111, i32 0, i32 9
  %520 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %519, i32 0, i32 16
  invoke void @_ZN11spirv_cross4joinIJRA13_KcRjEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %46, ptr noundef nonnull align 1 dereferenceable(13) @.str.138, ptr noundef nonnull align 4 dereferenceable(4) %520)
          to label %521 unwind label %522

521:                                              ; preds = %518
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %44, ptr noundef nonnull align 8 dereferenceable(32) %46) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %46) #7
  br label %526

522:                                              ; preds = %518
  %523 = landingpad { ptr, i32 }
          cleanup
  %524 = extractvalue { ptr, i32 } %523, 0
  store ptr %524, ptr %7, align 8
  %525 = extractvalue { ptr, i32 } %523, 1
  store i32 %525, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %46) #7
  br label %1099

526:                                              ; preds = %521, %513
  br label %1042

527:                                              ; preds = %509
  %528 = load ptr, ptr %3, align 8, !tbaa !5
  %529 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %528, i32 0, i32 5
  %530 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %529, i32 noundef 0)
          to label %531 unwind label %541

531:                                              ; preds = %527
  br i1 %530, label %532, label %549

532:                                              ; preds = %531
  %533 = load ptr, ptr %3, align 8, !tbaa !5
  %534 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %533, i32 0, i32 7
  %535 = load i32, ptr %534, align 4, !tbaa !141
  %536 = icmp ne i32 %535, 1
  br i1 %536, label %537, label %549

537:                                              ; preds = %532
  call void @llvm.lifetime.start.p0(i64 32, ptr %47) #7
  %538 = load ptr, ptr %3, align 8, !tbaa !5
  %539 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %538, i32 0, i32 7
  invoke void @_ZN11spirv_cross4joinIJRA15_KcRjEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %47, ptr noundef nonnull align 1 dereferenceable(15) @.str.139, ptr noundef nonnull align 4 dereferenceable(4) %539)
          to label %540 unwind label %545

540:                                              ; preds = %537
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %44, ptr noundef nonnull align 8 dereferenceable(32) %47) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %47) #7
  br label %549

541:                                              ; preds = %1097, %1037, %1032, %1025, %1020, %1013, %1012, %1011, %1003, %998, %996, %991, %989, %984, %982, %977, %975, %961, %950, %946, %944, %942, %934, %932, %930, %905, %894, %875, %777, %759, %748, %737, %725, %714, %709, %698, %687, %676, %665, %651, %638, %627, %612, %593, %582, %571, %560, %549, %527
  %542 = landingpad { ptr, i32 }
          cleanup
  %543 = extractvalue { ptr, i32 } %542, 0
  store ptr %543, ptr %7, align 8
  %544 = extractvalue { ptr, i32 } %542, 1
  store i32 %544, ptr %8, align 4
  br label %1099

545:                                              ; preds = %537
  %546 = landingpad { ptr, i32 }
          cleanup
  %547 = extractvalue { ptr, i32 } %546, 0
  store ptr %547, ptr %7, align 8
  %548 = extractvalue { ptr, i32 } %546, 1
  store i32 %548, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %47) #7
  br label %1099

549:                                              ; preds = %540, %532, %531
  %550 = load ptr, ptr %3, align 8, !tbaa !5
  %551 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %550, i32 0, i32 5
  %552 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %551, i32 noundef 19)
          to label %553 unwind label %541

553:                                              ; preds = %549
  br i1 %552, label %554, label %560

554:                                              ; preds = %553
  call void @llvm.lifetime.start.p0(i64 32, ptr %48) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %49) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %48, ptr noundef @.str.140, ptr noundef nonnull align 1 dereferenceable(1) %49)
          to label %555 unwind label %556

555:                                              ; preds = %554
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %44, ptr noundef nonnull align 8 dereferenceable(32) %48) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %48) #7
  br label %560

556:                                              ; preds = %554
  %557 = landingpad { ptr, i32 }
          cleanup
  %558 = extractvalue { ptr, i32 } %557, 0
  store ptr %558, ptr %7, align 8
  %559 = extractvalue { ptr, i32 } %557, 1
  store i32 %559, ptr %8, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %48) #7
  br label %1099

560:                                              ; preds = %555, %553
  %561 = load ptr, ptr %3, align 8, !tbaa !5
  %562 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %561, i32 0, i32 5
  %563 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %562, i32 noundef 20)
          to label %564 unwind label %541

564:                                              ; preds = %560
  br i1 %563, label %565, label %571

565:                                              ; preds = %564
  call void @llvm.lifetime.start.p0(i64 32, ptr %50) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %51) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %50, ptr noundef @.str.141, ptr noundef nonnull align 1 dereferenceable(1) %51)
          to label %566 unwind label %567

566:                                              ; preds = %565
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %44, ptr noundef nonnull align 8 dereferenceable(32) %50) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %50) #7
  br label %571

567:                                              ; preds = %565
  %568 = landingpad { ptr, i32 }
          cleanup
  %569 = extractvalue { ptr, i32 } %568, 0
  store ptr %569, ptr %7, align 8
  %570 = extractvalue { ptr, i32 } %568, 1
  store i32 %570, ptr %8, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %50) #7
  br label %1099

571:                                              ; preds = %566, %564
  %572 = load ptr, ptr %3, align 8, !tbaa !5
  %573 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %572, i32 0, i32 5
  %574 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %573, i32 noundef 21)
          to label %575 unwind label %541

575:                                              ; preds = %571
  br i1 %574, label %576, label %582

576:                                              ; preds = %575
  call void @llvm.lifetime.start.p0(i64 32, ptr %52) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %53) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %52, ptr noundef @.str.142, ptr noundef nonnull align 1 dereferenceable(1) %53)
          to label %577 unwind label %578

577:                                              ; preds = %576
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %44, ptr noundef nonnull align 8 dereferenceable(32) %52) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %52) #7
  br label %582

578:                                              ; preds = %576
  %579 = landingpad { ptr, i32 }
          cleanup
  %580 = extractvalue { ptr, i32 } %579, 0
  store ptr %580, ptr %7, align 8
  %581 = extractvalue { ptr, i32 } %579, 1
  store i32 %581, ptr %8, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %52) #7
  br label %1099

582:                                              ; preds = %577, %575
  %583 = load ptr, ptr %3, align 8, !tbaa !5
  %584 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %583, i32 0, i32 5
  %585 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %584, i32 noundef 22)
          to label %586 unwind label %541

586:                                              ; preds = %582
  br i1 %585, label %587, label %593

587:                                              ; preds = %586
  call void @llvm.lifetime.start.p0(i64 32, ptr %54) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %55) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %54, ptr noundef @.str.143, ptr noundef nonnull align 1 dereferenceable(1) %55)
          to label %588 unwind label %589

588:                                              ; preds = %587
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %44, ptr noundef nonnull align 8 dereferenceable(32) %54) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %54) #7
  br label %593

589:                                              ; preds = %587
  %590 = landingpad { ptr, i32 }
          cleanup
  %591 = extractvalue { ptr, i32 } %590, 0
  store ptr %591, ptr %7, align 8
  %592 = extractvalue { ptr, i32 } %590, 1
  store i32 %592, ptr %8, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %54) #7
  br label %1099

593:                                              ; preds = %588, %586
  %594 = load ptr, ptr %3, align 8, !tbaa !5
  %595 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %594, i32 0, i32 5
  %596 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %595, i32 noundef 23)
          to label %597 unwind label %541

597:                                              ; preds = %593
  br i1 %596, label %598, label %604

598:                                              ; preds = %597
  call void @llvm.lifetime.start.p0(i64 32, ptr %56) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %57) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %56, ptr noundef @.str.144, ptr noundef nonnull align 1 dereferenceable(1) %57)
          to label %599 unwind label %600

599:                                              ; preds = %598
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %44, ptr noundef nonnull align 8 dereferenceable(32) %56) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %57) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %56) #7
  br label %604

600:                                              ; preds = %598
  %601 = landingpad { ptr, i32 }
          cleanup
  %602 = extractvalue { ptr, i32 } %601, 0
  store ptr %602, ptr %7, align 8
  %603 = extractvalue { ptr, i32 } %601, 1
  store i32 %603, ptr %8, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %57) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %56) #7
  br label %1099

604:                                              ; preds = %599, %597
  %605 = load ptr, ptr %3, align 8, !tbaa !5
  %606 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %605, i32 0, i32 11
  %607 = load i8, ptr %606, align 4, !tbaa !142, !range !119, !noundef !120
  %608 = trunc i8 %607 to i1
  br i1 %608, label %650, label %609

609:                                              ; preds = %604
  call void @llvm.lifetime.start.p0(i64 32, ptr %58) #7
  %610 = load ptr, ptr %3, align 8, !tbaa !5
  %611 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %610, i32 0, i32 8
  invoke void @_ZN11spirv_cross4joinIJRA16_KcRjEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %58, ptr noundef nonnull align 1 dereferenceable(16) @.str.145, ptr noundef nonnull align 4 dereferenceable(4) %611)
          to label %612 unwind label %619

612:                                              ; preds = %609
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %45, ptr noundef nonnull align 8 dereferenceable(32) %58) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %58) #7
  %613 = load ptr, ptr %3, align 8, !tbaa !5
  %614 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %613, i32 0, i32 5
  %615 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %614, i32 noundef 29)
          to label %616 unwind label %541

616:                                              ; preds = %612
  br i1 %615, label %617, label %627

617:                                              ; preds = %616
  call void @llvm.lifetime.start.p0(i64 32, ptr %59) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %60) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %60) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %59, ptr noundef @.str.146, ptr noundef nonnull align 1 dereferenceable(1) %60)
          to label %618 unwind label %623

618:                                              ; preds = %617
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %45, ptr noundef nonnull align 8 dereferenceable(32) %59) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %60) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %60) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %59) #7
  br label %627

619:                                              ; preds = %609
  %620 = landingpad { ptr, i32 }
          cleanup
  %621 = extractvalue { ptr, i32 } %620, 0
  store ptr %621, ptr %7, align 8
  %622 = extractvalue { ptr, i32 } %620, 1
  store i32 %622, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %58) #7
  br label %1099

623:                                              ; preds = %617
  %624 = landingpad { ptr, i32 }
          cleanup
  %625 = extractvalue { ptr, i32 } %624, 0
  store ptr %625, ptr %7, align 8
  %626 = extractvalue { ptr, i32 } %624, 1
  store i32 %626, ptr %8, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %60) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %60) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %59) #7
  br label %1099

627:                                              ; preds = %618, %616
  %628 = load ptr, ptr %3, align 8, !tbaa !5
  %629 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %628, i32 0, i32 5
  %630 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %629, i32 noundef 27)
          to label %631 unwind label %541

631:                                              ; preds = %627
  br i1 %630, label %632, label %638

632:                                              ; preds = %631
  call void @llvm.lifetime.start.p0(i64 32, ptr %61) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %62) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %61, ptr noundef @.str.140, ptr noundef nonnull align 1 dereferenceable(1) %62)
          to label %633 unwind label %634

633:                                              ; preds = %632
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %45, ptr noundef nonnull align 8 dereferenceable(32) %61) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %62) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %61) #7
  br label %638

634:                                              ; preds = %632
  %635 = landingpad { ptr, i32 }
          cleanup
  %636 = extractvalue { ptr, i32 } %635, 0
  store ptr %636, ptr %7, align 8
  %637 = extractvalue { ptr, i32 } %635, 1
  store i32 %637, ptr %8, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %62) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %61) #7
  br label %1099

638:                                              ; preds = %633, %631
  %639 = load ptr, ptr %3, align 8, !tbaa !5
  %640 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %639, i32 0, i32 5
  %641 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %640, i32 noundef 28)
          to label %642 unwind label %541

642:                                              ; preds = %638
  br i1 %641, label %643, label %649

643:                                              ; preds = %642
  call void @llvm.lifetime.start.p0(i64 32, ptr %63) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %64) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %64) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %63, ptr noundef @.str.147, ptr noundef nonnull align 1 dereferenceable(1) %64)
          to label %644 unwind label %645

644:                                              ; preds = %643
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %45, ptr noundef nonnull align 8 dereferenceable(32) %63) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %64) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %64) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %63) #7
  br label %649

645:                                              ; preds = %643
  %646 = landingpad { ptr, i32 }
          cleanup
  %647 = extractvalue { ptr, i32 } %646, 0
  store ptr %647, ptr %7, align 8
  %648 = extractvalue { ptr, i32 } %646, 1
  store i32 %648, ptr %8, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %64) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %64) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %63) #7
  br label %1099

649:                                              ; preds = %644, %642
  br label %650

650:                                              ; preds = %649, %604
  br label %1042

651:                                              ; preds = %509
  %652 = load ptr, ptr %3, align 8, !tbaa !5
  %653 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %652, i32 0, i32 5
  %654 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %653, i32 noundef 26)
          to label %655 unwind label %541

655:                                              ; preds = %651
  br i1 %654, label %656, label %664

656:                                              ; preds = %655
  call void @llvm.lifetime.start.p0(i64 32, ptr %65) #7
  %657 = load ptr, ptr %3, align 8, !tbaa !5
  %658 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %657, i32 0, i32 8
  invoke void @_ZN11spirv_cross4joinIJRA12_KcRjEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %65, ptr noundef nonnull align 1 dereferenceable(12) @.str.148, ptr noundef nonnull align 4 dereferenceable(4) %658)
          to label %659 unwind label %660

659:                                              ; preds = %656
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %45, ptr noundef nonnull align 8 dereferenceable(32) %65) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %65) #7
  br label %664

660:                                              ; preds = %656
  %661 = landingpad { ptr, i32 }
          cleanup
  %662 = extractvalue { ptr, i32 } %661, 0
  store ptr %662, ptr %7, align 8
  %663 = extractvalue { ptr, i32 } %661, 1
  store i32 %663, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %65) #7
  br label %1099

664:                                              ; preds = %659, %655
  br label %1042

665:                                              ; preds = %509
  %666 = load ptr, ptr %3, align 8, !tbaa !5
  %667 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %666, i32 0, i32 5
  %668 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %667, i32 noundef 24)
          to label %669 unwind label %541

669:                                              ; preds = %665
  br i1 %668, label %670, label %676

670:                                              ; preds = %669
  call void @llvm.lifetime.start.p0(i64 32, ptr %66) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %67) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %67) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %66, ptr noundef @.str.149, ptr noundef nonnull align 1 dereferenceable(1) %67)
          to label %671 unwind label %672

671:                                              ; preds = %670
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %44, ptr noundef nonnull align 8 dereferenceable(32) %66) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %67) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %67) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %66) #7
  br label %676

672:                                              ; preds = %670
  %673 = landingpad { ptr, i32 }
          cleanup
  %674 = extractvalue { ptr, i32 } %673, 0
  store ptr %674, ptr %7, align 8
  %675 = extractvalue { ptr, i32 } %673, 1
  store i32 %675, ptr %8, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %67) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %67) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %66) #7
  br label %1099

676:                                              ; preds = %671, %669
  %677 = load ptr, ptr %3, align 8, !tbaa !5
  %678 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %677, i32 0, i32 5
  %679 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %678, i32 noundef 22)
          to label %680 unwind label %541

680:                                              ; preds = %676
  br i1 %679, label %681, label %687

681:                                              ; preds = %680
  call void @llvm.lifetime.start.p0(i64 32, ptr %68) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %69) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %69) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %68, ptr noundef @.str.143, ptr noundef nonnull align 1 dereferenceable(1) %69)
          to label %682 unwind label %683

682:                                              ; preds = %681
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %44, ptr noundef nonnull align 8 dereferenceable(32) %68) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %69) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %69) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %68) #7
  br label %687

683:                                              ; preds = %681
  %684 = landingpad { ptr, i32 }
          cleanup
  %685 = extractvalue { ptr, i32 } %684, 0
  store ptr %685, ptr %7, align 8
  %686 = extractvalue { ptr, i32 } %684, 1
  store i32 %686, ptr %8, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %69) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %69) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %68) #7
  br label %1099

687:                                              ; preds = %682, %680
  %688 = load ptr, ptr %3, align 8, !tbaa !5
  %689 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %688, i32 0, i32 5
  %690 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %689, i32 noundef 25)
          to label %691 unwind label %541

691:                                              ; preds = %687
  br i1 %690, label %692, label %698

692:                                              ; preds = %691
  call void @llvm.lifetime.start.p0(i64 32, ptr %70) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %71) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %70, ptr noundef @.str.150, ptr noundef nonnull align 1 dereferenceable(1) %71)
          to label %693 unwind label %694

693:                                              ; preds = %692
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %44, ptr noundef nonnull align 8 dereferenceable(32) %70) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %71) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %70) #7
  br label %698

694:                                              ; preds = %692
  %695 = landingpad { ptr, i32 }
          cleanup
  %696 = extractvalue { ptr, i32 } %695, 0
  store ptr %696, ptr %7, align 8
  %697 = extractvalue { ptr, i32 } %695, 1
  store i32 %697, ptr %8, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %71) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %70) #7
  br label %1099

698:                                              ; preds = %693, %691
  %699 = load ptr, ptr %3, align 8, !tbaa !5
  %700 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %699, i32 0, i32 5
  %701 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %700, i32 noundef 10)
          to label %702 unwind label %541

702:                                              ; preds = %698
  br i1 %701, label %703, label %709

703:                                              ; preds = %702
  call void @llvm.lifetime.start.p0(i64 32, ptr %72) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %73) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %73) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %72, ptr noundef @.str.151, ptr noundef nonnull align 1 dereferenceable(1) %73)
          to label %704 unwind label %705

704:                                              ; preds = %703
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %44, ptr noundef nonnull align 8 dereferenceable(32) %72) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %73) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %72) #7
  br label %709

705:                                              ; preds = %703
  %706 = landingpad { ptr, i32 }
          cleanup
  %707 = extractvalue { ptr, i32 } %706, 0
  store ptr %707, ptr %7, align 8
  %708 = extractvalue { ptr, i32 } %706, 1
  store i32 %708, ptr %8, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %73) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %72) #7
  br label %1099

709:                                              ; preds = %704, %702
  %710 = load ptr, ptr %3, align 8, !tbaa !5
  %711 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %710, i32 0, i32 5
  %712 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %711, i32 noundef 25)
          to label %713 unwind label %541

713:                                              ; preds = %709
  br i1 %712, label %737, label %714

714:                                              ; preds = %713
  %715 = load ptr, ptr %3, align 8, !tbaa !5
  %716 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %715, i32 0, i32 5
  %717 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %716, i32 noundef 4)
          to label %718 unwind label %541

718:                                              ; preds = %714
  br i1 %717, label %719, label %725

719:                                              ; preds = %718
  call void @llvm.lifetime.start.p0(i64 32, ptr %74) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %75) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %75) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %74, ptr noundef @.str.152, ptr noundef nonnull align 1 dereferenceable(1) %75)
          to label %720 unwind label %721

720:                                              ; preds = %719
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %44, ptr noundef nonnull align 8 dereferenceable(32) %74) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %74) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %75) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %75) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %74) #7
  br label %725

721:                                              ; preds = %719
  %722 = landingpad { ptr, i32 }
          cleanup
  %723 = extractvalue { ptr, i32 } %722, 0
  store ptr %723, ptr %7, align 8
  %724 = extractvalue { ptr, i32 } %722, 1
  store i32 %724, ptr %8, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %75) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %75) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %74) #7
  br label %1099

725:                                              ; preds = %720, %718
  %726 = load ptr, ptr %3, align 8, !tbaa !5
  %727 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %726, i32 0, i32 5
  %728 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %727, i32 noundef 5)
          to label %729 unwind label %541

729:                                              ; preds = %725
  br i1 %728, label %730, label %736

730:                                              ; preds = %729
  call void @llvm.lifetime.start.p0(i64 32, ptr %76) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %77) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %77) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %76, ptr noundef @.str.153, ptr noundef nonnull align 1 dereferenceable(1) %77)
          to label %731 unwind label %732

731:                                              ; preds = %730
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %44, ptr noundef nonnull align 8 dereferenceable(32) %76) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %77) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %77) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %76) #7
  br label %736

732:                                              ; preds = %730
  %733 = landingpad { ptr, i32 }
          cleanup
  %734 = extractvalue { ptr, i32 } %733, 0
  store ptr %734, ptr %7, align 8
  %735 = extractvalue { ptr, i32 } %733, 1
  store i32 %735, ptr %8, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %77) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %77) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %76) #7
  br label %1099

736:                                              ; preds = %731, %729
  br label %737

737:                                              ; preds = %736, %713
  %738 = load ptr, ptr %3, align 8, !tbaa !5
  %739 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %738, i32 0, i32 5
  %740 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %739, i32 noundef 2)
          to label %741 unwind label %541

741:                                              ; preds = %737
  br i1 %740, label %742, label %748

742:                                              ; preds = %741
  call void @llvm.lifetime.start.p0(i64 32, ptr %78) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %79) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %79) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %78, ptr noundef @.str.154, ptr noundef nonnull align 1 dereferenceable(1) %79)
          to label %743 unwind label %744

743:                                              ; preds = %742
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %44, ptr noundef nonnull align 8 dereferenceable(32) %78) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %78) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %79) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %79) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %78) #7
  br label %748

744:                                              ; preds = %742
  %745 = landingpad { ptr, i32 }
          cleanup
  %746 = extractvalue { ptr, i32 } %745, 0
  store ptr %746, ptr %7, align 8
  %747 = extractvalue { ptr, i32 } %745, 1
  store i32 %747, ptr %8, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %79) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %79) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %78) #7
  br label %1099

748:                                              ; preds = %743, %741
  %749 = load ptr, ptr %3, align 8, !tbaa !5
  %750 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %749, i32 0, i32 5
  %751 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %750, i32 noundef 3)
          to label %752 unwind label %541

752:                                              ; preds = %748
  br i1 %751, label %753, label %759

753:                                              ; preds = %752
  call void @llvm.lifetime.start.p0(i64 32, ptr %80) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %81) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %81) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %80, ptr noundef @.str.155, ptr noundef nonnull align 1 dereferenceable(1) %81)
          to label %754 unwind label %755

754:                                              ; preds = %753
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %44, ptr noundef nonnull align 8 dereferenceable(32) %80) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %80) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %81) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %81) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %80) #7
  br label %759

755:                                              ; preds = %753
  %756 = landingpad { ptr, i32 }
          cleanup
  %757 = extractvalue { ptr, i32 } %756, 0
  store ptr %757, ptr %7, align 8
  %758 = extractvalue { ptr, i32 } %756, 1
  store i32 %758, ptr %8, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %81) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %81) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %80) #7
  br label %1099

759:                                              ; preds = %754, %752
  %760 = load ptr, ptr %3, align 8, !tbaa !5
  %761 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %760, i32 0, i32 5
  %762 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %761, i32 noundef 1)
          to label %763 unwind label %541

763:                                              ; preds = %759
  br i1 %762, label %764, label %770

764:                                              ; preds = %763
  call void @llvm.lifetime.start.p0(i64 32, ptr %82) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %83) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %83) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %82, ptr noundef @.str.156, ptr noundef nonnull align 1 dereferenceable(1) %83)
          to label %765 unwind label %766

765:                                              ; preds = %764
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %44, ptr noundef nonnull align 8 dereferenceable(32) %82) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %82) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %83) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %83) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %82) #7
  br label %770

766:                                              ; preds = %764
  %767 = landingpad { ptr, i32 }
          cleanup
  %768 = extractvalue { ptr, i32 } %767, 0
  store ptr %768, ptr %7, align 8
  %769 = extractvalue { ptr, i32 } %767, 1
  store i32 %769, ptr %8, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %83) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %83) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %82) #7
  br label %1099

770:                                              ; preds = %765, %763
  br label %1042

771:                                              ; preds = %509, %509, %509
  %772 = load ptr, ptr %3, align 8, !tbaa !5
  %773 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %772, i32 0, i32 6
  %774 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint::WorkgroupSize", ptr %773, i32 0, i32 6
  %775 = load i32, ptr %774, align 8, !tbaa !143
  %776 = icmp ne i32 %775, 0
  br i1 %776, label %782, label %777

777:                                              ; preds = %771
  %778 = load ptr, ptr %3, align 8, !tbaa !5
  %779 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %778, i32 0, i32 5
  %780 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %779, i32 noundef 38)
          to label %781 unwind label %541

781:                                              ; preds = %777
  br i1 %780, label %782, label %839

782:                                              ; preds = %781, %771
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #7
  call void @_ZN11spirv_cross22SpecializationConstantC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %84) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #7
  call void @_ZN11spirv_cross22SpecializationConstantC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %85) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #7
  call void @_ZN11spirv_cross22SpecializationConstantC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %86) #7
  %783 = invoke noundef i32 @_ZNK11spirv_cross8Compiler44get_work_group_size_specialization_constantsERNS_22SpecializationConstantES2_S2_(ptr noundef nonnull align 8 dereferenceable(3176) %111, ptr noundef nonnull align 4 dereferenceable(8) %84, ptr noundef nonnull align 4 dereferenceable(8) %85, ptr noundef nonnull align 4 dereferenceable(8) %86)
          to label %784 unwind label %819

784:                                              ; preds = %782
  %785 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %111, i32 0, i32 9
  %786 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %785, i32 0, i32 4
  %787 = load i8, ptr %786, align 4, !tbaa !124, !range !119, !noundef !120
  %788 = trunc i8 %787 to i1
  call void @llvm.lifetime.start.p0(i64 4, ptr %87) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %88) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %89) #7
  br i1 %788, label %815, label %789

789:                                              ; preds = %784
  %790 = getelementptr inbounds %"struct.spirv_cross::SpecializationConstant", ptr %84, i32 0, i32 0
  %791 = invoke noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE3EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %790)
          to label %792 unwind label %819

792:                                              ; preds = %789
  invoke void @_ZN11spirv_cross7TypedIDILNS_5TypesE3EEC2Ej(ptr noundef nonnull align 4 dereferenceable(4) %87, i32 noundef 0)
          to label %793 unwind label %823

793:                                              ; preds = %792
  %794 = invoke noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE3EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %87)
          to label %795 unwind label %823

795:                                              ; preds = %793
  %796 = icmp eq i32 %791, %794
  br i1 %796, label %797, label %813

797:                                              ; preds = %795
  %798 = getelementptr inbounds %"struct.spirv_cross::SpecializationConstant", ptr %85, i32 0, i32 0
  %799 = invoke noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE3EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %798)
          to label %800 unwind label %823

800:                                              ; preds = %797
  invoke void @_ZN11spirv_cross7TypedIDILNS_5TypesE3EEC2Ej(ptr noundef nonnull align 4 dereferenceable(4) %88, i32 noundef 0)
          to label %801 unwind label %827

801:                                              ; preds = %800
  %802 = invoke noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE3EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %88)
          to label %803 unwind label %827

803:                                              ; preds = %801
  %804 = icmp eq i32 %799, %802
  br i1 %804, label %805, label %813

805:                                              ; preds = %803
  %806 = getelementptr inbounds %"struct.spirv_cross::SpecializationConstant", ptr %86, i32 0, i32 0
  %807 = invoke noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE3EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %806)
          to label %808 unwind label %827

808:                                              ; preds = %805
  invoke void @_ZN11spirv_cross7TypedIDILNS_5TypesE3EEC2Ej(ptr noundef nonnull align 4 dereferenceable(4) %89, i32 noundef 0)
          to label %809 unwind label %831

809:                                              ; preds = %808
  %810 = invoke noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE3EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %89)
          to label %811 unwind label %831

811:                                              ; preds = %809
  %812 = icmp eq i32 %807, %810
  br label %813

813:                                              ; preds = %811, %803, %795
  %814 = phi i1 [ false, %803 ], [ false, %795 ], [ %812, %811 ]
  br label %815

815:                                              ; preds = %813, %784
  %816 = phi i1 [ true, %784 ], [ %814, %813 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %88) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #7
  br i1 %816, label %817, label %837

817:                                              ; preds = %815
  invoke void @_ZN11spirv_cross12CompilerGLSL20build_workgroup_sizeERNS_11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EEERKNS_22SpecializationConstantESC_SC_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 8 dereferenceable(280) %44, ptr noundef nonnull align 4 dereferenceable(8) %84, ptr noundef nonnull align 4 dereferenceable(8) %85, ptr noundef nonnull align 4 dereferenceable(8) %86)
          to label %818 unwind label %819

818:                                              ; preds = %817
  br label %837

819:                                              ; preds = %817, %789, %782
  %820 = landingpad { ptr, i32 }
          cleanup
  %821 = extractvalue { ptr, i32 } %820, 0
  store ptr %821, ptr %7, align 8
  %822 = extractvalue { ptr, i32 } %820, 1
  store i32 %822, ptr %8, align 4
  br label %838

823:                                              ; preds = %797, %793, %792
  %824 = landingpad { ptr, i32 }
          cleanup
  %825 = extractvalue { ptr, i32 } %824, 0
  store ptr %825, ptr %7, align 8
  %826 = extractvalue { ptr, i32 } %824, 1
  store i32 %826, ptr %8, align 4
  br label %836

827:                                              ; preds = %805, %801, %800
  %828 = landingpad { ptr, i32 }
          cleanup
  %829 = extractvalue { ptr, i32 } %828, 0
  store ptr %829, ptr %7, align 8
  %830 = extractvalue { ptr, i32 } %828, 1
  store i32 %830, ptr %8, align 4
  br label %835

831:                                              ; preds = %809, %808
  %832 = landingpad { ptr, i32 }
          cleanup
  %833 = extractvalue { ptr, i32 } %832, 0
  store ptr %833, ptr %7, align 8
  %834 = extractvalue { ptr, i32 } %832, 1
  store i32 %834, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #7
  br label %835

835:                                              ; preds = %831, %827
  call void @llvm.lifetime.end.p0(i64 4, ptr %88) #7
  br label %836

836:                                              ; preds = %835, %823
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #7
  br label %838

837:                                              ; preds = %818, %815
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #7
  br label %864

838:                                              ; preds = %836, %819
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #7
  br label %1099

839:                                              ; preds = %781
  call void @llvm.lifetime.start.p0(i64 32, ptr %90) #7
  %840 = load ptr, ptr %3, align 8, !tbaa !5
  %841 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %840, i32 0, i32 6
  %842 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint::WorkgroupSize", ptr %841, i32 0, i32 0
  invoke void @_ZN11spirv_cross4joinIJRA16_KcRjEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %90, ptr noundef nonnull align 1 dereferenceable(16) @.str.64, ptr noundef nonnull align 4 dereferenceable(4) %842)
          to label %843 unwind label %852

843:                                              ; preds = %839
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %44, ptr noundef nonnull align 8 dereferenceable(32) %90) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %90) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %90) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %91) #7
  %844 = load ptr, ptr %3, align 8, !tbaa !5
  %845 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %844, i32 0, i32 6
  %846 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint::WorkgroupSize", ptr %845, i32 0, i32 1
  invoke void @_ZN11spirv_cross4joinIJRA16_KcRjEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %91, ptr noundef nonnull align 1 dereferenceable(16) @.str.66, ptr noundef nonnull align 4 dereferenceable(4) %846)
          to label %847 unwind label %856

847:                                              ; preds = %843
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %44, ptr noundef nonnull align 8 dereferenceable(32) %91) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %91) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %91) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %92) #7
  %848 = load ptr, ptr %3, align 8, !tbaa !5
  %849 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %848, i32 0, i32 6
  %850 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint::WorkgroupSize", ptr %849, i32 0, i32 2
  invoke void @_ZN11spirv_cross4joinIJRA16_KcRjEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %92, ptr noundef nonnull align 1 dereferenceable(16) @.str.68, ptr noundef nonnull align 4 dereferenceable(4) %850)
          to label %851 unwind label %860

851:                                              ; preds = %847
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %44, ptr noundef nonnull align 8 dereferenceable(32) %92) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %92) #7
  br label %864

852:                                              ; preds = %839
  %853 = landingpad { ptr, i32 }
          cleanup
  %854 = extractvalue { ptr, i32 } %853, 0
  store ptr %854, ptr %7, align 8
  %855 = extractvalue { ptr, i32 } %853, 1
  store i32 %855, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %90) #7
  br label %1099

856:                                              ; preds = %843
  %857 = landingpad { ptr, i32 }
          cleanup
  %858 = extractvalue { ptr, i32 } %857, 0
  store ptr %858, ptr %7, align 8
  %859 = extractvalue { ptr, i32 } %857, 1
  store i32 %859, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %91) #7
  br label %1099

860:                                              ; preds = %847
  %861 = landingpad { ptr, i32 }
          cleanup
  %862 = extractvalue { ptr, i32 } %861, 0
  store ptr %862, ptr %7, align 8
  %863 = extractvalue { ptr, i32 } %861, 1
  store i32 %863, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %92) #7
  br label %1099

864:                                              ; preds = %851, %837
  %865 = load ptr, ptr %3, align 8, !tbaa !5
  %866 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %865, i32 0, i32 10
  %867 = load i32, ptr %866, align 8, !tbaa !133
  %868 = icmp eq i32 %867, 5365
  br i1 %868, label %869, label %919

869:                                              ; preds = %864
  call void @llvm.lifetime.start.p0(i64 32, ptr %93) #7
  %870 = load ptr, ptr %3, align 8, !tbaa !5
  %871 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %870, i32 0, i32 8
  invoke void @_ZN11spirv_cross4joinIJRA16_KcRjEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %93, ptr noundef nonnull align 1 dereferenceable(16) @.str.145, ptr noundef nonnull align 4 dereferenceable(4) %871)
          to label %872 unwind label %882

872:                                              ; preds = %869
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %45, ptr noundef nonnull align 8 dereferenceable(32) %93) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %93) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %93) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %94) #7
  %873 = load ptr, ptr %3, align 8, !tbaa !5
  %874 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %873, i32 0, i32 9
  invoke void @_ZN11spirv_cross4joinIJRA18_KcRjEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %94, ptr noundef nonnull align 1 dereferenceable(18) @.str.157, ptr noundef nonnull align 4 dereferenceable(4) %874)
          to label %875 unwind label %886

875:                                              ; preds = %872
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %45, ptr noundef nonnull align 8 dereferenceable(32) %94) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %94) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %94) #7
  %876 = load ptr, ptr %3, align 8, !tbaa !5
  %877 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %876, i32 0, i32 5
  %878 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %877, i32 noundef 5298)
          to label %879 unwind label %541

879:                                              ; preds = %875
  br i1 %878, label %880, label %894

880:                                              ; preds = %879
  call void @llvm.lifetime.start.p0(i64 32, ptr %95) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %96) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %96) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %95, ptr noundef @.str.143, ptr noundef nonnull align 1 dereferenceable(1) %96)
          to label %881 unwind label %890

881:                                              ; preds = %880
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %45, ptr noundef nonnull align 8 dereferenceable(32) %95) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %95) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %96) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %96) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %95) #7
  br label %918

882:                                              ; preds = %869
  %883 = landingpad { ptr, i32 }
          cleanup
  %884 = extractvalue { ptr, i32 } %883, 0
  store ptr %884, ptr %7, align 8
  %885 = extractvalue { ptr, i32 } %883, 1
  store i32 %885, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %93) #7
  br label %1099

886:                                              ; preds = %872
  %887 = landingpad { ptr, i32 }
          cleanup
  %888 = extractvalue { ptr, i32 } %887, 0
  store ptr %888, ptr %7, align 8
  %889 = extractvalue { ptr, i32 } %887, 1
  store i32 %889, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %94) #7
  br label %1099

890:                                              ; preds = %880
  %891 = landingpad { ptr, i32 }
          cleanup
  %892 = extractvalue { ptr, i32 } %891, 0
  store ptr %892, ptr %7, align 8
  %893 = extractvalue { ptr, i32 } %891, 1
  store i32 %893, ptr %8, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %96) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %96) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %95) #7
  br label %1099

894:                                              ; preds = %879
  %895 = load ptr, ptr %3, align 8, !tbaa !5
  %896 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %895, i32 0, i32 5
  %897 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %896, i32 noundef 5269)
          to label %898 unwind label %541

898:                                              ; preds = %894
  br i1 %897, label %899, label %905

899:                                              ; preds = %898
  call void @llvm.lifetime.start.p0(i64 32, ptr %97) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %98) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %98) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %97, ptr noundef @.str.141, ptr noundef nonnull align 1 dereferenceable(1) %98)
          to label %900 unwind label %901

900:                                              ; preds = %899
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %45, ptr noundef nonnull align 8 dereferenceable(32) %97) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %97) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %98) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %98) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %97) #7
  br label %917

901:                                              ; preds = %899
  %902 = landingpad { ptr, i32 }
          cleanup
  %903 = extractvalue { ptr, i32 } %902, 0
  store ptr %903, ptr %7, align 8
  %904 = extractvalue { ptr, i32 } %902, 1
  store i32 %904, ptr %8, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %98) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %98) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %97) #7
  br label %1099

905:                                              ; preds = %898
  %906 = load ptr, ptr %3, align 8, !tbaa !5
  %907 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %906, i32 0, i32 5
  %908 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %907, i32 noundef 27)
          to label %909 unwind label %541

909:                                              ; preds = %905
  br i1 %908, label %910, label %916

910:                                              ; preds = %909
  call void @llvm.lifetime.start.p0(i64 32, ptr %99) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %100) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %100) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %99, ptr noundef @.str.140, ptr noundef nonnull align 1 dereferenceable(1) %100)
          to label %911 unwind label %912

911:                                              ; preds = %910
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %45, ptr noundef nonnull align 8 dereferenceable(32) %99) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %99) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %100) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %100) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %99) #7
  br label %916

912:                                              ; preds = %910
  %913 = landingpad { ptr, i32 }
          cleanup
  %914 = extractvalue { ptr, i32 } %913, 0
  store ptr %914, ptr %7, align 8
  %915 = extractvalue { ptr, i32 } %913, 1
  store i32 %915, ptr %8, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %100) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %100) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %99) #7
  br label %1099

916:                                              ; preds = %911, %909
  br label %917

917:                                              ; preds = %916, %900
  br label %918

918:                                              ; preds = %917, %881
  br label %919

919:                                              ; preds = %918, %864
  br label %1042

920:                                              ; preds = %509
  %921 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %111, i32 0, i32 9
  %922 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %921, i32 0, i32 1
  %923 = load i8, ptr %922, align 4, !tbaa !9, !range !119, !noundef !120
  %924 = trunc i8 %923 to i1
  br i1 %924, label %925, label %950

925:                                              ; preds = %920
  %926 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %111, i32 0, i32 9
  %927 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %926, i32 0, i32 18
  %928 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options::FragmentOptions", ptr %927, i32 0, i32 0
  %929 = load i32, ptr %928, align 4, !tbaa !144
  switch i32 %929, label %936 [
    i32 1, label %930
    i32 2, label %932
    i32 3, label %934
  ]

930:                                              ; preds = %925
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA22_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(22) @.str.158)
          to label %931 unwind label %541

931:                                              ; preds = %930
  br label %937

932:                                              ; preds = %925
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA25_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(25) @.str.159)
          to label %933 unwind label %541

933:                                              ; preds = %932
  br label %937

934:                                              ; preds = %925
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA23_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(23) @.str.160)
          to label %935 unwind label %541

935:                                              ; preds = %934
  br label %937

936:                                              ; preds = %925
  br label %937

937:                                              ; preds = %936, %935, %933, %931
  %938 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %111, i32 0, i32 9
  %939 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %938, i32 0, i32 18
  %940 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options::FragmentOptions", ptr %939, i32 0, i32 1
  %941 = load i32, ptr %940, align 4, !tbaa !145
  switch i32 %941, label %948 [
    i32 1, label %942
    i32 2, label %944
    i32 3, label %946
  ]

942:                                              ; preds = %937
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA20_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(20) @.str.161)
          to label %943 unwind label %541

943:                                              ; preds = %942
  br label %949

944:                                              ; preds = %937
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA23_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(23) @.str.162)
          to label %945 unwind label %541

945:                                              ; preds = %944
  br label %949

946:                                              ; preds = %937
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA21_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(21) @.str.163)
          to label %947 unwind label %541

947:                                              ; preds = %946
  br label %949

948:                                              ; preds = %937
  br label %949

949:                                              ; preds = %948, %947, %945, %943
  br label %950

950:                                              ; preds = %949, %920
  %951 = load ptr, ptr %3, align 8, !tbaa !5
  %952 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %951, i32 0, i32 5
  %953 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %952, i32 noundef 9)
          to label %954 unwind label %541

954:                                              ; preds = %950
  br i1 %953, label %955, label %961

955:                                              ; preds = %954
  call void @llvm.lifetime.start.p0(i64 32, ptr %101) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %102) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %102) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %101, ptr noundef @.str.164, ptr noundef nonnull align 1 dereferenceable(1) %102)
          to label %956 unwind label %957

956:                                              ; preds = %955
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %44, ptr noundef nonnull align 8 dereferenceable(32) %101) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %101) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %102) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %102) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %101) #7
  br label %961

957:                                              ; preds = %955
  %958 = landingpad { ptr, i32 }
          cleanup
  %959 = extractvalue { ptr, i32 } %958, 0
  store ptr %959, ptr %7, align 8
  %960 = extractvalue { ptr, i32 } %958, 1
  store i32 %960, ptr %8, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %102) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %102) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %101) #7
  br label %1099

961:                                              ; preds = %956, %954
  %962 = load ptr, ptr %3, align 8, !tbaa !5
  %963 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %962, i32 0, i32 5
  %964 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %963, i32 noundef 4446)
          to label %965 unwind label %541

965:                                              ; preds = %961
  br i1 %964, label %966, label %972

966:                                              ; preds = %965
  call void @llvm.lifetime.start.p0(i64 32, ptr %103) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %104) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %104) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %103, ptr noundef @.str.165, ptr noundef nonnull align 1 dereferenceable(1) %104)
          to label %967 unwind label %968

967:                                              ; preds = %966
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %44, ptr noundef nonnull align 8 dereferenceable(32) %103) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %103) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %104) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %104) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %103) #7
  br label %972

968:                                              ; preds = %966
  %969 = landingpad { ptr, i32 }
          cleanup
  %970 = extractvalue { ptr, i32 } %969, 0
  store ptr %970, ptr %7, align 8
  %971 = extractvalue { ptr, i32 } %969, 1
  store i32 %971, ptr %8, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %104) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %104) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %103) #7
  br label %1099

972:                                              ; preds = %967, %965
  %973 = load i8, ptr %11, align 1, !tbaa !123, !range !119, !noundef !120
  %974 = trunc i8 %973 to i1
  br i1 %974, label %975, label %977

975:                                              ; preds = %972
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA46_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(46) @.str.166)
          to label %976 unwind label %541

976:                                              ; preds = %975
  br label %977

977:                                              ; preds = %976, %972
  %978 = load ptr, ptr %3, align 8, !tbaa !5
  %979 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %978, i32 0, i32 5
  %980 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %979, i32 noundef 5366)
          to label %981 unwind label %541

981:                                              ; preds = %977
  br i1 %980, label %982, label %984

982:                                              ; preds = %981
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA36_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(36) @.str.167)
          to label %983 unwind label %541

983:                                              ; preds = %982
  br label %1008

984:                                              ; preds = %981
  %985 = load ptr, ptr %3, align 8, !tbaa !5
  %986 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %985, i32 0, i32 5
  %987 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %986, i32 noundef 5367)
          to label %988 unwind label %541

988:                                              ; preds = %984
  br i1 %987, label %989, label %991

989:                                              ; preds = %988
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA38_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(38) @.str.168)
          to label %990 unwind label %541

990:                                              ; preds = %989
  br label %1007

991:                                              ; preds = %988
  %992 = load ptr, ptr %3, align 8, !tbaa !5
  %993 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %992, i32 0, i32 5
  %994 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %993, i32 noundef 5368)
          to label %995 unwind label %541

995:                                              ; preds = %991
  br i1 %994, label %996, label %998

996:                                              ; preds = %995
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA37_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(37) @.str.169)
          to label %997 unwind label %541

997:                                              ; preds = %996
  br label %1006

998:                                              ; preds = %995
  %999 = load ptr, ptr %3, align 8, !tbaa !5
  %1000 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %999, i32 0, i32 5
  %1001 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %1000, i32 noundef 5369)
          to label %1002 unwind label %541

1002:                                             ; preds = %998
  br i1 %1001, label %1003, label %1005

1003:                                             ; preds = %1002
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA39_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(39) @.str.170)
          to label %1004 unwind label %541

1004:                                             ; preds = %1003
  br label %1005

1005:                                             ; preds = %1004, %1002
  br label %1006

1006:                                             ; preds = %1005, %997
  br label %1007

1007:                                             ; preds = %1006, %990
  br label %1008

1008:                                             ; preds = %1007, %983
  %1009 = load i8, ptr %11, align 1, !tbaa !123, !range !119, !noundef !120
  %1010 = trunc i8 %1009 to i1
  br i1 %1010, label %1011, label %1015

1011:                                             ; preds = %1008
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA50_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(50) @.str.171)
          to label %1012 unwind label %541

1012:                                             ; preds = %1011
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA61_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(61) @.str.172)
          to label %1013 unwind label %541

1013:                                             ; preds = %1012
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
          to label %1014 unwind label %541

1014:                                             ; preds = %1013
  br label %1015

1015:                                             ; preds = %1014, %1008
  %1016 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %111, i32 0, i32 9
  %1017 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %1016, i32 0, i32 1
  %1018 = load i8, ptr %1017, align 4, !tbaa !9, !range !119, !noundef !120
  %1019 = trunc i8 %1018 to i1
  br i1 %1019, label %1027, label %1020

1020:                                             ; preds = %1015
  %1021 = load ptr, ptr %3, align 8, !tbaa !5
  %1022 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %1021, i32 0, i32 5
  %1023 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %1022, i32 noundef 14)
          to label %1024 unwind label %541

1024:                                             ; preds = %1020
  br i1 %1023, label %1025, label %1027

1025:                                             ; preds = %1024
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA46_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(46) @.str.173)
          to label %1026 unwind label %541

1026:                                             ; preds = %1025
  br label %1040

1027:                                             ; preds = %1024, %1015
  %1028 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %111, i32 0, i32 9
  %1029 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %1028, i32 0, i32 1
  %1030 = load i8, ptr %1029, align 4, !tbaa !9, !range !119, !noundef !120
  %1031 = trunc i8 %1030 to i1
  br i1 %1031, label %1039, label %1032

1032:                                             ; preds = %1027
  %1033 = load ptr, ptr %3, align 8, !tbaa !5
  %1034 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %1033, i32 0, i32 5
  %1035 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %1034, i32 noundef 15)
          to label %1036 unwind label %541

1036:                                             ; preds = %1032
  br i1 %1035, label %1037, label %1039

1037:                                             ; preds = %1036
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA43_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(43) @.str.174)
          to label %1038 unwind label %541

1038:                                             ; preds = %1037
  br label %1039

1039:                                             ; preds = %1038, %1036, %1027
  br label %1040

1040:                                             ; preds = %1039, %1026
  br label %1042

1041:                                             ; preds = %509
  br label %1042

1042:                                             ; preds = %1041, %1040, %919, %770, %664, %650, %526
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #7
  %1043 = getelementptr inbounds %"class.spirv_cross::Compiler", ptr %111, i32 0, i32 1
  %1044 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %1043, i32 0, i32 8
  store ptr %1044, ptr %105, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %106) #7
  %1045 = load ptr, ptr %105, align 8, !tbaa !5
  %1046 = call noundef ptr @_ZN11spirv_cross10VectorViewIN3spv10CapabilityEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %1045) #7
  store ptr %1046, ptr %106, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #7
  %1047 = load ptr, ptr %105, align 8, !tbaa !5
  %1048 = call noundef ptr @_ZN11spirv_cross10VectorViewIN3spv10CapabilityEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %1047) #7
  store ptr %1048, ptr %107, align 8, !tbaa !5
  br label %1049

1049:                                             ; preds = %1066, %1042
  %1050 = load ptr, ptr %106, align 8, !tbaa !5
  %1051 = load ptr, ptr %107, align 8, !tbaa !5
  %1052 = icmp ne ptr %1050, %1051
  br i1 %1052, label %1054, label %1053

1053:                                             ; preds = %1049
  store i32 16, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #7
  br label %1069

1054:                                             ; preds = %1049
  call void @llvm.lifetime.start.p0(i64 8, ptr %108) #7
  %1055 = load ptr, ptr %106, align 8, !tbaa !5
  store ptr %1055, ptr %108, align 8, !tbaa !5
  %1056 = load ptr, ptr %108, align 8, !tbaa !5
  %1057 = load i32, ptr %1056, align 4, !tbaa !146
  %1058 = icmp eq i32 %1057, 4478
  br i1 %1058, label %1059, label %1065

1059:                                             ; preds = %1054
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA27_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(27) @.str.175)
          to label %1060 unwind label %1061

1060:                                             ; preds = %1059
  br label %1065

1061:                                             ; preds = %1059
  %1062 = landingpad { ptr, i32 }
          cleanup
  %1063 = extractvalue { ptr, i32 } %1062, 0
  store ptr %1063, ptr %7, align 8
  %1064 = extractvalue { ptr, i32 } %1062, 1
  store i32 %1064, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #7
  br label %1099

1065:                                             ; preds = %1060, %1054
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #7
  br label %1066

1066:                                             ; preds = %1065
  %1067 = load ptr, ptr %106, align 8, !tbaa !5
  %1068 = getelementptr inbounds i32, ptr %1067, i32 1
  store ptr %1068, ptr %106, align 8, !tbaa !5
  br label %1049

1069:                                             ; preds = %1053
  %1070 = call noundef zeroext i1 @_ZNK11spirv_cross10VectorViewINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %44) #7
  br i1 %1070, label %1083, label %1071

1071:                                             ; preds = %1069
  call void @llvm.lifetime.start.p0(i64 32, ptr %109) #7
  invoke void @_ZN11spirv_cross5mergeERKNS_11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EEEPKc(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %109, ptr noundef nonnull align 8 dereferenceable(280) %44, ptr noundef @.str.177)
          to label %1072 unwind label %1074

1072:                                             ; preds = %1071
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA8_KcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA6_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(8) @.str.176, ptr noundef nonnull align 8 dereferenceable(32) %109, ptr noundef nonnull align 1 dereferenceable(6) @.str.178)
          to label %1073 unwind label %1078

1073:                                             ; preds = %1072
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %109) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %109) #7
  br label %1083

1074:                                             ; preds = %1071
  %1075 = landingpad { ptr, i32 }
          cleanup
  %1076 = extractvalue { ptr, i32 } %1075, 0
  store ptr %1076, ptr %7, align 8
  %1077 = extractvalue { ptr, i32 } %1075, 1
  store i32 %1077, ptr %8, align 4
  br label %1082

1078:                                             ; preds = %1072
  %1079 = landingpad { ptr, i32 }
          cleanup
  %1080 = extractvalue { ptr, i32 } %1079, 0
  store ptr %1080, ptr %7, align 8
  %1081 = extractvalue { ptr, i32 } %1079, 1
  store i32 %1081, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %109) #7
  br label %1082

1082:                                             ; preds = %1078, %1074
  call void @llvm.lifetime.end.p0(i64 32, ptr %109) #7
  br label %1099

1083:                                             ; preds = %1073, %1069
  %1084 = call noundef zeroext i1 @_ZNK11spirv_cross10VectorViewINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %45) #7
  br i1 %1084, label %1097, label %1085

1085:                                             ; preds = %1083
  call void @llvm.lifetime.start.p0(i64 32, ptr %110) #7
  invoke void @_ZN11spirv_cross5mergeERKNS_11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EEEPKc(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %110, ptr noundef nonnull align 8 dereferenceable(280) %45, ptr noundef @.str.177)
          to label %1086 unwind label %1088

1086:                                             ; preds = %1085
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA8_KcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA7_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(8) @.str.176, ptr noundef nonnull align 8 dereferenceable(32) %110, ptr noundef nonnull align 1 dereferenceable(7) @.str.179)
          to label %1087 unwind label %1092

1087:                                             ; preds = %1086
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %110) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %110) #7
  br label %1097

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

1092:                                             ; preds = %1086
  %1093 = landingpad { ptr, i32 }
          cleanup
  %1094 = extractvalue { ptr, i32 } %1093, 0
  store ptr %1094, ptr %7, align 8
  %1095 = extractvalue { ptr, i32 } %1093, 1
  store i32 %1095, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %110) #7
  br label %1096

1096:                                             ; preds = %1092, %1088
  call void @llvm.lifetime.end.p0(i64 32, ptr %110) #7
  br label %1099

1097:                                             ; preds = %1087, %1083
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA1_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %111, ptr noundef nonnull align 1 dereferenceable(1) @.str.9)
          to label %1098 unwind label %541

1098:                                             ; preds = %1097
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(280) %45) #7
  call void @llvm.lifetime.end.p0(i64 280, ptr %45) #7
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(280) %44) #7
  call void @llvm.lifetime.end.p0(i64 280, ptr %44) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #7
  ret void

1099:                                             ; preds = %1096, %1082, %1061, %968, %957, %912, %901, %890, %886, %882, %860, %856, %852, %838, %766, %755, %744, %732, %721, %705, %694, %683, %672, %660, %645, %634, %623, %619, %600, %589, %578, %567, %556, %545, %541, %522
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(280) %45) #7
  call void @llvm.lifetime.end.p0(i64 280, ptr %45) #7
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(280) %44) #7
  call void @llvm.lifetime.end.p0(i64 280, ptr %44) #7
  br label %1100

1100:                                             ; preds = %1099, %490, %254, %242, %225, %210
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #7
  br label %1101

1101:                                             ; preds = %1100, %175, %158
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #7
  br label %1102

1102:                                             ; preds = %1101
  %1103 = load ptr, ptr %7, align 8
  %1104 = load i32, ptr %8, align 4
  %1105 = insertvalue { ptr, i32 } poison, ptr %1103, 0
  %1106 = insertvalue { ptr, i32 } %1105, i32 %1104, 1
  resume { ptr, i32 } %1106

1107:                                             ; preds = %484
  unreachable
}

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJRA53_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 1 dereferenceable(53)) #5 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)) #5 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)) #5 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)) #5 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)) #5 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)) #5 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJRA42_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 1 dereferenceable(42)) #5 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)) #5 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)) #5 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)) #5 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)) #5 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)) #5 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJRA59_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 1 dereferenceable(59)) #5 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)) #5 align 2

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJRA44_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 1 dereferenceable(44)) #5 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)) #5 align 2

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJRA72_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 1 dereferenceable(72)) #5 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)) #5 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJRA49_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 1 dereferenceable(49)) #5 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)) #5 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJRA12_KcRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA11_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 1 dereferenceable(12), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(11)) #5 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: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16)) #4 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)) #5 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper34get_extra_required_extension_namesB5cxx11ENS1_9CandidateE(ptr dead_on_unwind noalias writable sret(%"class.spirv_cross::SmallVector.27") align 8, i32 noundef) #4 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJPKcRA10_S2_RS3_RA2_S2_S3_S6_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), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #5 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)) #4 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper45can_feature_be_implemented_without_extensionsENS1_7FeatureE(i32 noundef) #4 align 2

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN11spirv_cross22SpecializationConstantC2Ev(ptr noundef nonnull align 4 dereferenceable(8)) unnamed_addr #6 align 2

declare noundef i32 @_ZNK11spirv_cross8Compiler44get_work_group_size_specialization_constantsERNS_22SpecializationConstantES2_S2_(ptr noundef nonnull align 8 dereferenceable(3176), ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8)) #3

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJRA22_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 1 dereferenceable(22)) #5 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)) #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJRA20_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 1 dereferenceable(20)) #5 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)) #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJRA46_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 1 dereferenceable(46)) #5 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)) #5 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)) #5 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)) #5 align 2

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJRA8_KcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA7_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 1 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(7)) #5 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 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { "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 = { 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 #5 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nounwind }
attributes #8 = { noreturn }

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

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


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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator.71" = type { i8 }
%"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.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] }
%"struct.spirv_cross::SpecializationConstant" = type { %"class.spirv_cross::TypedID.309", i32 }
%"class.spirv_cross::TypedID.309" = type { i32 }

@.str.9 = external hidden unnamed_addr constant [1 x i8], align 1
@_ZTIN11spirv_cross13CompilerErrorE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.64 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.86 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.89 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.90 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.91 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.92 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.93 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.94 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.95 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.96 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.97 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.98 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.99 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.100 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.101 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.102 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.103 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.104 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.105 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.106 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.107 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.108 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.109 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.110 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.111 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.112 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.113 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.114 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.115 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.116 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.117 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.118 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.119 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.120 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.121 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.122 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.123 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.124 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.125 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.126 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.127 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.128 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.129 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.130 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.131 = external hidden unnamed_addr constant [11 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
@.str.136 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.137 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.138 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.139 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.140 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.141 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.142 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.143 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.144 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.145 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.146 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.147 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.148 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.149 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.150 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.151 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.152 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.153 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.154 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.155 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.156 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.157 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.158 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.159 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.160 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.161 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.162 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.163 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.164 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.165 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.166 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.167 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.168 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.169 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.170 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.171 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.172 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.173 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.174 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.175 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.176 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.177 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.178 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.179 = external hidden unnamed_addr constant [7 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 ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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

declare i32 @__gxx_personality_v0(...)

declare void @__cxa_free_exception(ptr) local_unnamed_addr

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

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

declare noundef nonnull align 8 dereferenceable(237) ptr @_ZN11spirv_cross8Compiler15get_entry_pointEv(ptr noundef nonnull align 8 dereferenceable(3176)) local_unnamed_addr #3

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #6

; 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 #5 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 #5 align 2

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper18get_extension_nameENS1_9CandidateE(i32 noundef) local_unnamed_addr #4 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 #4 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11spirv_cross12CompilerGLSL11emit_headerEv(ptr noundef nonnull align 8 dereferenceable(9848) %0) unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca %"class.std::__cxx11::basic_string", align 8
  %4 = alloca %"class.std::allocator.71", align 1
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca %"class.std::allocator.71", align 1
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.std::allocator.71", align 1
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca %"class.std::allocator.71", align 1
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::allocator.71", align 1
  %13 = alloca %"struct.spirv_cross::CompilerGLSL::ShaderSubgroupSupportHelper::Result", align 4
  %14 = alloca %"class.spirv_cross::SmallVector.313", align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca %"class.spirv_cross::SmallVector.27", align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca %"class.spirv_cross::SmallVector.27", align 8
  %21 = alloca %"class.spirv_cross::SmallVector.27", align 8
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.std::allocator.71", align 1
  %26 = alloca %"class.std::__cxx11::basic_string", align 8
  %27 = alloca %"class.std::allocator.71", align 1
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  %29 = alloca %"class.std::allocator.71", align 1
  %30 = alloca %"class.std::__cxx11::basic_string", align 8
  %31 = alloca %"class.std::allocator.71", align 1
  %32 = alloca %"class.std::__cxx11::basic_string", align 8
  %33 = alloca %"class.std::allocator.71", align 1
  %34 = alloca %"class.std::__cxx11::basic_string", align 8
  %35 = alloca %"class.std::__cxx11::basic_string", align 8
  %36 = alloca %"class.std::allocator.71", align 1
  %37 = alloca %"class.std::__cxx11::basic_string", align 8
  %38 = alloca %"class.std::allocator.71", align 1
  %39 = alloca %"class.std::__cxx11::basic_string", align 8
  %40 = alloca %"class.std::allocator.71", align 1
  %41 = alloca %"class.std::__cxx11::basic_string", align 8
  %42 = alloca %"class.std::__cxx11::basic_string", align 8
  %43 = alloca %"class.std::allocator.71", align 1
  %44 = alloca %"class.std::__cxx11::basic_string", align 8
  %45 = alloca %"class.std::allocator.71", align 1
  %46 = alloca %"class.std::__cxx11::basic_string", align 8
  %47 = alloca %"class.std::allocator.71", align 1
  %48 = alloca %"class.std::__cxx11::basic_string", align 8
  %49 = alloca %"class.std::allocator.71", align 1
  %50 = alloca %"class.std::__cxx11::basic_string", align 8
  %51 = alloca %"class.std::allocator.71", align 1
  %52 = alloca %"class.std::__cxx11::basic_string", align 8
  %53 = alloca %"class.std::allocator.71", align 1
  %54 = alloca %"class.std::__cxx11::basic_string", align 8
  %55 = alloca %"class.std::allocator.71", align 1
  %56 = alloca %"class.std::__cxx11::basic_string", align 8
  %57 = alloca %"class.std::allocator.71", align 1
  %58 = alloca %"class.std::__cxx11::basic_string", align 8
  %59 = alloca %"class.std::allocator.71", align 1
  %60 = alloca %"struct.spirv_cross::SpecializationConstant", align 4
  %61 = alloca %"struct.spirv_cross::SpecializationConstant", align 4
  %62 = alloca %"struct.spirv_cross::SpecializationConstant", align 4
  %63 = alloca %"class.spirv_cross::TypedID.309", align 4
  %64 = alloca %"class.spirv_cross::TypedID.309", align 4
  %65 = alloca %"class.spirv_cross::TypedID.309", align 4
  %66 = alloca %"class.std::__cxx11::basic_string", align 8
  %67 = alloca %"class.std::__cxx11::basic_string", align 8
  %68 = alloca %"class.std::__cxx11::basic_string", align 8
  %69 = alloca %"class.std::__cxx11::basic_string", align 8
  %70 = alloca %"class.std::__cxx11::basic_string", align 8
  %71 = alloca %"class.std::__cxx11::basic_string", align 8
  %72 = alloca %"class.std::allocator.71", align 1
  %73 = alloca %"class.std::__cxx11::basic_string", align 8
  %74 = alloca %"class.std::allocator.71", align 1
  %75 = alloca %"class.std::__cxx11::basic_string", align 8
  %76 = alloca %"class.std::allocator.71", align 1
  %77 = alloca %"class.std::__cxx11::basic_string", align 8
  %78 = alloca %"class.std::allocator.71", align 1
  %79 = alloca %"class.std::__cxx11::basic_string", align 8
  %80 = alloca %"class.std::allocator.71", align 1
  %81 = alloca %"class.std::__cxx11::basic_string", align 8
  %82 = alloca %"class.std::__cxx11::basic_string", align 8
  %83 = tail call noundef nonnull align 8 dereferenceable(237) ptr @_ZN11spirv_cross8Compiler15get_entry_pointEv(ptr noundef nonnull align 8 dereferenceable(3176) %0)
  %84 = getelementptr inbounds i8, ptr %0, i64 7636
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) #7
  %85 = getelementptr inbounds i8, ptr %0, i64 7640
  %86 = load i8, ptr %85, align 8, !tbaa !5, !range !118, !noundef !119
  %87 = trunc nuw i8 %86 to i1
  %88 = load i32, ptr %84, align 4
  %89 = icmp ugt i32 %88, 100
  %90 = select i1 %87, i1 %89, i1 false
  %91 = select i1 %90, ptr @.str.70, ptr @.str.9
  store ptr %91, ptr %2, align 8, !tbaa !120
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA10_KcRjPS2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(10) @.str.69, ptr noundef nonnull align 4 dereferenceable(4) %84, ptr noundef nonnull align 8 dereferenceable(8) %2)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #7
  %92 = load i8, ptr %85, align 8, !tbaa !5, !range !118, !noundef !119
  %93 = trunc nuw i8 %92 to i1
  %94 = load i32, ptr %84, align 4
  %95 = icmp ugt i32 %94, 419
  %or.cond.not = select i1 %93, i1 true, i1 %95
  br i1 %or.cond.not, label %112, label %96

96:                                               ; preds = %1
  %97 = getelementptr inbounds i8, ptr %0, i64 7651
  %98 = load i8, ptr %97, align 1, !tbaa !121, !range !118, !noundef !119
  %99 = trunc nuw i8 %98 to i1
  br i1 %99, label %100, label %101

100:                                              ; preds = %96
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA39_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(39) @.str.71)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA53_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(53) @.str.72)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
  br label %101

101:                                              ; preds = %100, %96
  %102 = getelementptr inbounds i8, ptr %83, i64 128
  %103 = call noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %102, i32 noundef 9)
  br i1 %103, label %104, label %112

104:                                              ; preds = %101
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %4) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull @.str.74, ptr noundef nonnull align 1 dereferenceable(1) %4)
          to label %105 unwind label %107

105:                                              ; preds = %104
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %106 unwind label %109

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

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

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

111:                                              ; preds = %109, %107
  %.pn = phi { ptr, i32 } [ %110, %109 ], [ %108, %107 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #7
  br label %612

112:                                              ; preds = %101, %106, %1
  %113 = getelementptr inbounds i8, ptr %83, i64 128
  %114 = call noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %113, i32 noundef 4446)
  br i1 %114, label %115, label %123

115:                                              ; preds = %112
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %6) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull @.str.75, ptr noundef nonnull align 1 dereferenceable(1) %6)
          to label %116 unwind label %118

116:                                              ; preds = %115
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %117 unwind label %120

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

118:                                              ; preds = %115
  %119 = landingpad { ptr, i32 }
          cleanup
  br label %122

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

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

123:                                              ; preds = %117, %112
  %124 = call noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %113, i32 noundef 5366)
  br i1 %124, label %.thread, label %125

125:                                              ; preds = %123
  %126 = call noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %113, i32 noundef 5367)
  br i1 %126, label %.thread, label %127

127:                                              ; preds = %125
  %128 = call noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %113, i32 noundef 5368)
  br i1 %128, label %.thread, label %129

129:                                              ; preds = %127
  %130 = call noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %113, i32 noundef 5369)
  br i1 %130, label %.thread, label %167

.thread:                                          ; preds = %123, %125, %127, %129
  %131 = load i8, ptr %85, align 8, !tbaa !5, !range !118, !noundef !119
  %132 = trunc nuw i8 %131 to i1
  %133 = load i32, ptr %84, align 4, !tbaa !122
  br i1 %132, label %134, label %149

134:                                              ; preds = %.thread
  %135 = icmp ult i32 %133, 310
  br i1 %135, label %136, label %141

136:                                              ; preds = %134
  %137 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %137, ptr noundef nonnull @.str.76)
          to label %138 unwind label %139

138:                                              ; preds = %136
  call void @__cxa_throw(ptr nonnull %137, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #8
  unreachable

139:                                              ; preds = %136
  %140 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %137) #7
  br label %612

141:                                              ; preds = %134
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %8) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull @.str.77, ptr noundef nonnull align 1 dereferenceable(1) %8)
          to label %142 unwind label %144

142:                                              ; preds = %141
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(32) %7)
          to label %143 unwind label %146

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

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

146:                                              ; preds = %142
  %147 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #7
  br label %148

148:                                              ; preds = %146, %144
  %.pn138 = phi { ptr, i32 } [ %147, %146 ], [ %145, %144 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #7
  br label %612

149:                                              ; preds = %.thread
  %150 = icmp ult i32 %133, 420
  br i1 %150, label %151, label %159

151:                                              ; preds = %149
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull @.str.74, ptr noundef nonnull align 1 dereferenceable(1) %10)
          to label %152 unwind label %154

152:                                              ; preds = %151
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %153 unwind label %156

153:                                              ; preds = %152
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #7
  br label %159

154:                                              ; preds = %151
  %155 = landingpad { ptr, i32 }
          cleanup
  br label %158

156:                                              ; preds = %152
  %157 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #7
  br label %158

158:                                              ; preds = %156, %154
  %.pn134 = phi { ptr, i32 } [ %157, %156 ], [ %155, %154 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #7
  br label %612

159:                                              ; preds = %153, %149
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %12) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull @.str.78, ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %160 unwind label %162

160:                                              ; preds = %159
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(32) %11)
          to label %161 unwind label %164

161:                                              ; preds = %160
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #7
  br label %167

162:                                              ; preds = %159
  %163 = landingpad { ptr, i32 }
          cleanup
  br label %166

164:                                              ; preds = %160
  %165 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #7
  br label %166

166:                                              ; preds = %164, %162
  %.pn136 = phi { ptr, i32 } [ %165, %164 ], [ %163, %162 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #7
  br label %612

167:                                              ; preds = %143, %161, %129
  %168 = phi i1 [ true, %143 ], [ true, %161 ], [ false, %129 ]
  %169 = getelementptr inbounds i8, ptr %0, i64 8712
  %170 = call noundef ptr @_ZN11spirv_cross10VectorViewINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %169) #7
  %171 = call noundef ptr @_ZN11spirv_cross10VectorViewINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %169) #7
  %.not164 = icmp eq ptr %170, %171
  br i1 %.not164, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %167
  %172 = getelementptr inbounds i8, ptr %0, i64 7648
  br label %176

._crit_edge:                                      ; preds = %231, %167
  %173 = getelementptr inbounds i8, ptr %0, i64 7648
  %174 = load i8, ptr %173, align 8, !tbaa !123, !range !118, !noundef !119
  %175 = trunc nuw i8 %174 to i1
  br i1 %175, label %278, label %233

176:                                              ; preds = %.lr.ph, %231
  %.0126165 = phi ptr [ %170, %.lr.ph ], [ %232, %231 ]
  %177 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %.0126165, ptr noundef nonnull @.str.79)
  br i1 %177, label %178, label %186

178:                                              ; preds = %176
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA37_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(37) @.str.80)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA45_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(45) @.str.81)
  %179 = load i8, ptr %172, align 8, !tbaa !123, !range !118, !noundef !119
  %180 = trunc nuw i8 %179 to i1
  br i1 %180, label %181, label %184

181:                                              ; preds = %178
  %182 = load i8, ptr %85, align 8, !tbaa !5, !range !118, !noundef !119
  %183 = trunc nuw i8 %182 to i1
  br i1 %183, label %184, label %185

184:                                              ; preds = %181, %178
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA33_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(33) @.str.82)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA39_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(39) @.str.83)
  br label %185

185:                                              ; preds = %184, %181
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA6_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(6) @.str.84)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA51_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(51) @.str.85)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
  br label %231

186:                                              ; preds = %176
  %187 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %.0126165, ptr noundef nonnull @.str.86)
  br i1 %187, label %188, label %194

188:                                              ; preds = %186
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA42_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(42) @.str.87)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA50_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(50) @.str.88)
  %189 = load i8, ptr %172, align 8, !tbaa !123, !range !118, !noundef !119
  %190 = trunc nuw i8 %189 to i1
  br i1 %190, label %192, label %191

191:                                              ; preds = %188
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA33_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(33) @.str.82)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA39_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(39) @.str.83)
  br label %193

192:                                              ; preds = %188
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA63_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(63) @.str.89)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA69_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(69) @.str.90)
  br label %193

193:                                              ; preds = %192, %191
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA6_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(6) @.str.84)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA40_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(40) @.str.91)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
  br label %231

194:                                              ; preds = %186
  %195 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %.0126165, ptr noundef nonnull @.str.92)
  br i1 %195, label %196, label %201

196:                                              ; preds = %194
  %197 = load i8, ptr %172, align 8, !tbaa !123, !range !118, !noundef !119
  %198 = trunc nuw i8 %197 to i1
  br i1 %198, label %199, label %200

199:                                              ; preds = %196
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA66_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(66) @.str.93)
  br label %231

200:                                              ; preds = %196
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA58_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(58) @.str.94)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA66_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(66) @.str.93)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA33_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(33) @.str.82)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA39_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(39) @.str.83)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA6_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(6) @.str.84)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA40_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(40) @.str.95)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
  br label %231

201:                                              ; preds = %194
  %202 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %.0126165, ptr noundef nonnull @.str.96)
  br i1 %202, label %203, label %208

203:                                              ; preds = %201
  %204 = load i8, ptr %172, align 8, !tbaa !123, !range !118, !noundef !119
  %205 = trunc nuw i8 %204 to i1
  br i1 %205, label %206, label %207

206:                                              ; preds = %203
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA67_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(67) @.str.97)
  br label %231

207:                                              ; preds = %203
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA59_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(59) @.str.98)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA67_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(67) @.str.97)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA39_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(39) @.str.99)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA45_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(45) @.str.100)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA33_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(33) @.str.82)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA39_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(39) @.str.83)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA6_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(6) @.str.84)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA41_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(41) @.str.101)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
  br label %231

208:                                              ; preds = %201
  %209 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %.0126165, ptr noundef nonnull @.str.75)
  br i1 %209, label %210, label %215

210:                                              ; preds = %208
  %211 = load i8, ptr %85, align 8, !tbaa !5, !range !118, !noundef !119
  %212 = trunc nuw i8 %211 to i1
  br i1 %212, label %213, label %214

213:                                              ; preds = %210
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA48_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(48) @.str.102)
  br label %231

214:                                              ; preds = %210
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA39_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(39) @.str.103)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA48_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(48) @.str.104)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA6_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(6) @.str.84)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA48_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(48) @.str.102)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
  br label %231

215:                                              ; preds = %208
  %216 = load i8, ptr %172, align 8, !tbaa !123, !range !118, !noundef !119
  %217 = trunc nuw i8 %216 to i1
  br i1 %217, label %221, label %218

218:                                              ; preds = %215
  %219 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %.0126165, ptr noundef nonnull @.str.105)
  br i1 %219, label %220, label %221

220:                                              ; preds = %218
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA8_KcRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(8) @.str.106, ptr noundef nonnull align 8 dereferenceable(32) %.0126165)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA12_KcRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA10_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(12) @.str.107, ptr noundef nonnull align 8 dereferenceable(32) %.0126165, ptr noundef nonnull align 1 dereferenceable(10) @.str.108)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
  br label %231

221:                                              ; preds = %218, %215
  %222 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %.0126165, ptr noundef nonnull @.str.109)
  br i1 %222, label %223, label %224

223:                                              ; preds = %221
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA44_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(44) @.str.110)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA52_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(52) @.str.111)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA40_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(40) @.str.112)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA44_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(44) @.str.113)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA38_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(38) @.str.114)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA41_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(41) @.str.115)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA6_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(6) @.str.84)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA28_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(28) @.str.116)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA27_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(27) @.str.117)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA27_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(27) @.str.118)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA25_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(25) @.str.119)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
  br label %231

224:                                              ; preds = %221
  %225 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %.0126165, ptr noundef nonnull @.str.77)
  br i1 %225, label %226, label %227

226:                                              ; preds = %224
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA53_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(53) @.str.120)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA76_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(76) @.str.121)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA72_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(72) @.str.122)
  br label %231

227:                                              ; preds = %224
  %228 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %.0126165, ptr noundef nonnull @.str.78)
  br i1 %228, label %229, label %230

229:                                              ; preds = %227
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA40_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(40) @.str.123)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA53_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(53) @.str.124)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA77_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(77) @.str.125)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA73_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(73) @.str.126)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA49_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(49) @.str.127)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA54_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(54) @.str.128)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA82_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(82) @.str.129)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA45_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(45) @.str.130)
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
  br label %231

230:                                              ; preds = %227
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA12_KcRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA11_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(12) @.str.107, ptr noundef nonnull align 8 dereferenceable(32) %.0126165, ptr noundef nonnull align 1 dereferenceable(11) @.str.131)
  br label %231

231:                                              ; preds = %193, %207, %206, %220, %226, %230, %229, %223, %213, %214, %199, %200, %185
  %232 = getelementptr inbounds i8, ptr %.0126165, i64 32
  %.not = icmp eq ptr %232, %171
  br i1 %.not, label %._crit_edge, label %176

233:                                              ; preds = %._crit_edge
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %13) #7
  %234 = 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 %13, ptr noundef nonnull align 4 dereferenceable(4) %234)
  br label %236

235:                                              ; preds = %275
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %13) #7
  br label %278

236:                                              ; preds = %233, %275
  %.0127176 = phi i32 [ 0, %233 ], [ %276, %275 ]
  %237 = call noundef zeroext i1 @_ZNK11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper20is_feature_requestedENS1_7FeatureE(ptr noundef nonnull align 4 dereferenceable(4) %234, i32 noundef %.0127176)
  br i1 %237, label %238, label %275

238:                                              ; preds = %236
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %14) #7
  call void @_ZN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper26get_candidates_for_featureENS1_7FeatureERKNS1_6ResultE(ptr dead_on_unwind nonnull writable sret(%"class.spirv_cross::SmallVector.313") align 8 %14, i32 noundef %.0127176, ptr noundef nonnull align 4 dereferenceable(40) %13)
  %239 = call noundef zeroext i1 @_ZNK11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %14) #7
  br i1 %239, label %274, label %240

240:                                              ; preds = %238
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA1_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(1) @.str.9)
          to label %241 unwind label %245

241:                                              ; preds = %240
  %242 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %14) #7
  %243 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %14) #7
  %.not140171 = icmp eq ptr %242, %243
  br i1 %.not140171, label %._crit_edge175, label %.lr.ph174

._crit_edge175:                                   ; preds = %266, %241
  %244 = call noundef zeroext i1 @_ZN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper45can_feature_be_implemented_without_extensionsENS1_7FeatureE(i32 noundef %.0127176)
  br i1 %244, label %273, label %271

245:                                              ; preds = %273, %272, %271, %240
  %246 = landingpad { ptr, i32 }
          cleanup
  br label %277

.lr.ph174:                                        ; preds = %241, %266
  %.0129172 = phi ptr [ %267, %266 ], [ %242, %241 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #7
  %247 = load i32, ptr %.0129172, align 4, !tbaa !124
  %248 = call noundef ptr @_ZN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper18get_extension_nameENS1_9CandidateE(i32 noundef %247)
  store ptr %248, ptr %15, align 8, !tbaa !120
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #7
  %249 = load i32, ptr %.0129172, align 4, !tbaa !124
  %250 = call noundef ptr @_ZN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper38get_extra_required_extension_predicateENS1_9CandidateE(i32 noundef %249)
  store ptr %250, ptr %16, align 8, !tbaa !120
  call void @llvm.lifetime.start.p0(i64 280, ptr nonnull %17) #7
  %251 = load i32, ptr %.0129172, align 4, !tbaa !124
  call void @_ZN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper34get_extra_required_extension_namesB5cxx11ENS1_9CandidateE(ptr dead_on_unwind nonnull writable sret(%"class.spirv_cross::SmallVector.27") align 8 %17, i32 noundef %251)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #7
  %252 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE5frontEv(ptr noundef nonnull align 8 dereferenceable(16) %14) #7
  %.not141 = icmp eq ptr %.0129172, %252
  %253 = select i1 %.not141, ptr @.str.133, ptr @.str.132
  store ptr %253, ptr %18, align 8, !tbaa !120
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #7
  %254 = load ptr, ptr %16, align 8, !tbaa !120
  %255 = load i8, ptr %254, align 1, !tbaa !126
  %.not142 = icmp eq i8 %255, 0
  %256 = select i1 %.not142, ptr @.str.9, ptr @.str.136
  store ptr %256, ptr %19, align 8, !tbaa !120
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJPKcRA10_S2_RS3_RA2_S2_S3_S6_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) %15, ptr noundef nonnull align 1 dereferenceable(2) @.str.135, ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(8) %16)
          to label %257 unwind label %260

257:                                              ; preds = %.lr.ph174
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #7
  %258 = call noundef ptr @_ZN11spirv_cross10VectorViewINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %17) #7
  %259 = call noundef ptr @_ZN11spirv_cross10VectorViewINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %17) #7
  %.not143166 = icmp eq ptr %258, %259
  br i1 %.not143166, label %._crit_edge170, label %.lr.ph169

._crit_edge170:                                   ; preds = %262, %257
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA12_KcRPS2_RA11_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(12) @.str.107, ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 1 dereferenceable(11) @.str.131)
          to label %266 unwind label %268

260:                                              ; preds = %.lr.ph174
  %261 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #7
  br label %270

.lr.ph169:                                        ; preds = %257, %262
  %.0130167 = phi ptr [ %263, %262 ], [ %258, %257 ]
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA12_KcRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA10_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(12) @.str.107, ptr noundef nonnull align 8 dereferenceable(32) %.0130167, ptr noundef nonnull align 1 dereferenceable(10) @.str.108)
          to label %262 unwind label %264

262:                                              ; preds = %.lr.ph169
  %263 = getelementptr inbounds i8, ptr %.0130167, i64 32
  %.not143 = icmp eq ptr %263, %259
  br i1 %.not143, label %._crit_edge170, label %.lr.ph169

264:                                              ; preds = %.lr.ph169
  %265 = landingpad { ptr, i32 }
          cleanup
  br label %270

266:                                              ; preds = %._crit_edge170
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(280) %17) #7
  call void @llvm.lifetime.end.p0(i64 280, ptr nonnull %17) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #7
  %267 = getelementptr inbounds i8, ptr %.0129172, i64 4
  %.not140 = icmp eq ptr %267, %243
  br i1 %.not140, label %._crit_edge175, label %.lr.ph174

268:                                              ; preds = %._crit_edge170
  %269 = landingpad { ptr, i32 }
          cleanup
  br label %270

270:                                              ; preds = %268, %264, %260
  %.pn144 = phi { ptr, i32 } [ %265, %264 ], [ %269, %268 ], [ %261, %260 ]
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(280) %17) #7
  call void @llvm.lifetime.end.p0(i64 280, ptr nonnull %17) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #7
  br label %277

271:                                              ; preds = %._crit_edge175
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA6_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(6) @.str.84)
          to label %272 unwind label %245

272:                                              ; preds = %271
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA70_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(70) @.str.137)
          to label %273 unwind label %245

273:                                              ; preds = %272, %._crit_edge175
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
          to label %274 unwind label %245

274:                                              ; preds = %273, %238
  call void @_ZN11spirv_cross11SmallVectorINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateELm10EED2Ev(ptr noundef nonnull align 8 dereferenceable(64) %14) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %14) #7
  br label %275

275:                                              ; preds = %236, %274
  %276 = add nuw nsw i32 %.0127176, 1
  %exitcond.not = icmp eq i32 %276, 28
  br i1 %exitcond.not, label %235, label %236, !llvm.loop !127

277:                                              ; preds = %270, %245
  %.pn144.pn = phi { ptr, i32 } [ %.pn144, %270 ], [ %246, %245 ]
  call void @_ZN11spirv_cross11SmallVectorINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateELm10EED2Ev(ptr noundef nonnull align 8 dereferenceable(64) %14) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %13) #7
  br label %612

278:                                              ; preds = %235, %._crit_edge
  %279 = getelementptr inbounds i8, ptr %0, i64 8992
  %280 = call noundef ptr @_ZN11spirv_cross10VectorViewINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %279) #7
  %281 = call noundef ptr @_ZN11spirv_cross10VectorViewINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %279) #7
  %.not147178 = icmp eq ptr %280, %281
  br i1 %.not147178, label %._crit_edge182, label %.lr.ph181

._crit_edge182:                                   ; preds = %.lr.ph181, %278
  call void @llvm.lifetime.start.p0(i64 280, ptr nonnull %20) #7
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(280) %20) #7
  call void @llvm.lifetime.start.p0(i64 280, ptr nonnull %21) #7
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(280) %21) #7
  %282 = getelementptr inbounds i8, ptr %83, i64 232
  %283 = load i32, ptr %282, align 8, !tbaa !129
  switch i32 %283, label %579 [
    i32 0, label %285
    i32 3, label %292
    i32 1, label %368
    i32 2, label %376
    i32 5, label %442
    i32 5364, label %442
    i32 5365, label %442
    i32 4, label %514
  ]

.lr.ph181:                                        ; preds = %278, %.lr.ph181
  %.0128179 = phi ptr [ %284, %.lr.ph181 ], [ %280, %278 ]
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(32) %.0128179)
  %284 = getelementptr inbounds i8, ptr %.0128179, i64 32
  %.not147 = icmp eq ptr %284, %281
  br i1 %.not147, label %._crit_edge182, label %.lr.ph181

285:                                              ; preds = %._crit_edge182
  %286 = getelementptr inbounds i8, ptr %0, i64 7660
  %287 = load i32, ptr %286, align 4, !tbaa !136
  %.not150 = icmp eq i32 %287, 0
  br i1 %.not150, label %579, label %288

288:                                              ; preds = %285
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %22) #7
  invoke void @_ZN11spirv_cross4joinIJRA13_KcRjEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %22, ptr noundef nonnull align 1 dereferenceable(13) @.str.138, ptr noundef nonnull align 4 dereferenceable(4) %286)
          to label %289 unwind label %290

289:                                              ; preds = %288
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %20, ptr noundef nonnull align 8 dereferenceable(32) %22) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #7
  br label %579

290:                                              ; preds = %288
  %291 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #7
  br label %611

292:                                              ; preds = %._crit_edge182
  %293 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %113, i32 noundef 0)
          to label %294 unwind label %300

294:                                              ; preds = %292
  br i1 %293, label %295, label %304

295:                                              ; preds = %294
  %296 = getelementptr inbounds i8, ptr %83, i64 220
  %297 = load i32, ptr %296, align 4, !tbaa !137
  %.not149 = icmp eq i32 %297, 1
  br i1 %.not149, label %304, label %298

298:                                              ; preds = %295
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %23) #7
  invoke void @_ZN11spirv_cross4joinIJRA15_KcRjEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %23, ptr noundef nonnull align 1 dereferenceable(15) @.str.139, ptr noundef nonnull align 4 dereferenceable(4) %296)
          to label %299 unwind label %302

299:                                              ; preds = %298
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %20, ptr noundef nonnull align 8 dereferenceable(32) %23) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #7
  br label %304

300:                                              ; preds = %609, %578, %575, %571, %568, %564, %563, %562, %560, %557, %556, %553, %552, %549, %548, %545, %544, %536, %529, %528, %527, %526, %522, %521, %520, %507, %500, %489, %446, %435, %428, %421, %414, %407, %404, %397, %390, %383, %376, %368, %361, %354, %345, %332, %325, %318, %311, %304, %292
  %301 = landingpad { ptr, i32 }
          cleanup
  br label %611

302:                                              ; preds = %298
  %303 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #7
  br label %611

304:                                              ; preds = %299, %295, %294
  %305 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %113, i32 noundef 19)
          to label %306 unwind label %300

306:                                              ; preds = %304
  br i1 %305, label %307, label %311

307:                                              ; preds = %306
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %24) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %25) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull @.str.140, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %308 unwind label %309

308:                                              ; preds = %307
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %20, ptr noundef nonnull align 8 dereferenceable(32) %24) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #7
  br label %311

309:                                              ; preds = %307
  %310 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #7
  br label %611

311:                                              ; preds = %308, %306
  %312 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %113, i32 noundef 20)
          to label %313 unwind label %300

313:                                              ; preds = %311
  br i1 %312, label %314, label %318

314:                                              ; preds = %313
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %26) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %27) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef nonnull @.str.141, ptr noundef nonnull align 1 dereferenceable(1) %27)
          to label %315 unwind label %316

315:                                              ; preds = %314
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %20, ptr noundef nonnull align 8 dereferenceable(32) %26) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #7
  br label %318

316:                                              ; preds = %314
  %317 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #7
  br label %611

318:                                              ; preds = %315, %313
  %319 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %113, i32 noundef 21)
          to label %320 unwind label %300

320:                                              ; preds = %318
  br i1 %319, label %321, label %325

321:                                              ; preds = %320
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %28) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %29) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef nonnull @.str.142, ptr noundef nonnull align 1 dereferenceable(1) %29)
          to label %322 unwind label %323

322:                                              ; preds = %321
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %20, ptr noundef nonnull align 8 dereferenceable(32) %28) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %29) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #7
  br label %325

323:                                              ; preds = %321
  %324 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %29) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #7
  br label %611

325:                                              ; preds = %322, %320
  %326 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %113, i32 noundef 22)
          to label %327 unwind label %300

327:                                              ; preds = %325
  br i1 %326, label %328, label %332

328:                                              ; preds = %327
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %30) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %31) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef nonnull @.str.143, ptr noundef nonnull align 1 dereferenceable(1) %31)
          to label %329 unwind label %330

329:                                              ; preds = %328
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %20, ptr noundef nonnull align 8 dereferenceable(32) %30) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %31) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #7
  br label %332

330:                                              ; preds = %328
  %331 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %31) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #7
  br label %611

332:                                              ; preds = %329, %327
  %333 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %113, i32 noundef 23)
          to label %334 unwind label %300

334:                                              ; preds = %332
  br i1 %333, label %335, label %339

335:                                              ; preds = %334
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %32) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %33) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef nonnull @.str.144, ptr noundef nonnull align 1 dereferenceable(1) %33)
          to label %336 unwind label %337

336:                                              ; preds = %335
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %20, ptr noundef nonnull align 8 dereferenceable(32) %32) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %33) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #7
  br label %339

337:                                              ; preds = %335
  %338 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %33) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #7
  br label %611

339:                                              ; preds = %336, %334
  %340 = getelementptr inbounds i8, ptr %83, i64 236
  %341 = load i8, ptr %340, align 4, !tbaa !138, !range !118, !noundef !119
  %342 = trunc nuw i8 %341 to i1
  br i1 %342, label %579, label %343

343:                                              ; preds = %339
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %34) #7
  %344 = getelementptr inbounds i8, ptr %83, i64 224
  invoke void @_ZN11spirv_cross4joinIJRA16_KcRjEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %34, ptr noundef nonnull align 1 dereferenceable(16) @.str.145, ptr noundef nonnull align 4 dereferenceable(4) %344)
          to label %345 unwind label %350

345:                                              ; preds = %343
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %21, ptr noundef nonnull align 8 dereferenceable(32) %34) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #7
  %346 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %113, i32 noundef 29)
          to label %347 unwind label %300

347:                                              ; preds = %345
  br i1 %346, label %348, label %354

348:                                              ; preds = %347
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %35) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %36) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef nonnull @.str.146, ptr noundef nonnull align 1 dereferenceable(1) %36)
          to label %349 unwind label %352

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

350:                                              ; preds = %343
  %351 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #7
  br label %611

352:                                              ; preds = %348
  %353 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %36) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %35) #7
  br label %611

354:                                              ; preds = %349, %347
  %355 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %113, i32 noundef 27)
          to label %356 unwind label %300

356:                                              ; preds = %354
  br i1 %355, label %357, label %361

357:                                              ; preds = %356
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %37) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %38) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %37, ptr noundef nonnull @.str.140, ptr noundef nonnull align 1 dereferenceable(1) %38)
          to label %358 unwind label %359

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

359:                                              ; preds = %357
  %360 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %38) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %37) #7
  br label %611

361:                                              ; preds = %358, %356
  %362 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %113, i32 noundef 28)
          to label %363 unwind label %300

363:                                              ; preds = %361
  br i1 %362, label %364, label %579

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

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

366:                                              ; preds = %364
  %367 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %40) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %39) #7
  br label %611

368:                                              ; preds = %._crit_edge182
  %369 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %113, i32 noundef 26)
          to label %370 unwind label %300

370:                                              ; preds = %368
  br i1 %369, label %371, label %579

371:                                              ; preds = %370
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %41) #7
  %372 = getelementptr inbounds i8, ptr %83, i64 224
  invoke void @_ZN11spirv_cross4joinIJRA12_KcRjEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %41, ptr noundef nonnull align 1 dereferenceable(12) @.str.148, ptr noundef nonnull align 4 dereferenceable(4) %372)
          to label %373 unwind label %374

373:                                              ; preds = %371
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %21, ptr noundef nonnull align 8 dereferenceable(32) %41) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %41) #7
  br label %579

374:                                              ; preds = %371
  %375 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %41) #7
  br label %611

376:                                              ; preds = %._crit_edge182
  %377 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %113, i32 noundef 24)
          to label %378 unwind label %300

378:                                              ; preds = %376
  br i1 %377, label %379, label %383

379:                                              ; preds = %378
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %42) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %43) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %42, ptr noundef nonnull @.str.149, ptr noundef nonnull align 1 dereferenceable(1) %43)
          to label %380 unwind label %381

380:                                              ; preds = %379
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %20, ptr noundef nonnull align 8 dereferenceable(32) %42) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %43) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %42) #7
  br label %383

381:                                              ; preds = %379
  %382 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %43) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %42) #7
  br label %611

383:                                              ; preds = %380, %378
  %384 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %113, i32 noundef 22)
          to label %385 unwind label %300

385:                                              ; preds = %383
  br i1 %384, label %386, label %390

386:                                              ; preds = %385
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %44) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %45) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %44, ptr noundef nonnull @.str.143, ptr noundef nonnull align 1 dereferenceable(1) %45)
          to label %387 unwind label %388

387:                                              ; preds = %386
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %20, ptr noundef nonnull align 8 dereferenceable(32) %44) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %45) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %44) #7
  br label %390

388:                                              ; preds = %386
  %389 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %45) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %44) #7
  br label %611

390:                                              ; preds = %387, %385
  %391 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %113, i32 noundef 25)
          to label %392 unwind label %300

392:                                              ; preds = %390
  br i1 %391, label %393, label %397

393:                                              ; preds = %392
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %46) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %47) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %46, ptr noundef nonnull @.str.150, ptr noundef nonnull align 1 dereferenceable(1) %47)
          to label %394 unwind label %395

394:                                              ; preds = %393
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %20, ptr noundef nonnull align 8 dereferenceable(32) %46) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %47) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %46) #7
  br label %397

395:                                              ; preds = %393
  %396 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %47) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %46) #7
  br label %611

397:                                              ; preds = %394, %392
  %398 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %113, i32 noundef 10)
          to label %399 unwind label %300

399:                                              ; preds = %397
  br i1 %398, label %400, label %404

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

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

402:                                              ; preds = %400
  %403 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %49) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %48) #7
  br label %611

404:                                              ; preds = %401, %399
  %405 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %113, i32 noundef 25)
          to label %406 unwind label %300

406:                                              ; preds = %404
  br i1 %405, label %421, label %407

407:                                              ; preds = %406
  %408 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %113, i32 noundef 4)
          to label %409 unwind label %300

409:                                              ; preds = %407
  br i1 %408, label %410, label %414

410:                                              ; preds = %409
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %50) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %51) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %50, ptr noundef nonnull @.str.152, ptr noundef nonnull align 1 dereferenceable(1) %51)
          to label %411 unwind label %412

411:                                              ; preds = %410
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %20, ptr noundef nonnull align 8 dereferenceable(32) %50) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %51) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %50) #7
  br label %414

412:                                              ; preds = %410
  %413 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %51) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %50) #7
  br label %611

414:                                              ; preds = %411, %409
  %415 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %113, i32 noundef 5)
          to label %416 unwind label %300

416:                                              ; preds = %414
  br i1 %415, label %417, label %421

417:                                              ; preds = %416
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %52) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %53) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %52, ptr noundef nonnull @.str.153, ptr noundef nonnull align 1 dereferenceable(1) %53)
          to label %418 unwind label %419

418:                                              ; preds = %417
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %20, ptr noundef nonnull align 8 dereferenceable(32) %52) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %53) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %52) #7
  br label %421

419:                                              ; preds = %417
  %420 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %53) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %52) #7
  br label %611

421:                                              ; preds = %416, %418, %406
  %422 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %113, i32 noundef 2)
          to label %423 unwind label %300

423:                                              ; preds = %421
  br i1 %422, label %424, label %428

424:                                              ; preds = %423
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %54) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %55) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %54, ptr noundef nonnull @.str.154, ptr noundef nonnull align 1 dereferenceable(1) %55)
          to label %425 unwind label %426

425:                                              ; preds = %424
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %20, ptr noundef nonnull align 8 dereferenceable(32) %54) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %55) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %54) #7
  br label %428

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

428:                                              ; preds = %425, %423
  %429 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %113, i32 noundef 3)
          to label %430 unwind label %300

430:                                              ; preds = %428
  br i1 %429, label %431, label %435

431:                                              ; preds = %430
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %56) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %57) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %56, ptr noundef nonnull @.str.155, ptr noundef nonnull align 1 dereferenceable(1) %57)
          to label %432 unwind label %433

432:                                              ; preds = %431
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %20, ptr noundef nonnull align 8 dereferenceable(32) %56) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %57) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %56) #7
  br label %435

433:                                              ; preds = %431
  %434 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %57) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %56) #7
  br label %611

435:                                              ; preds = %432, %430
  %436 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %113, i32 noundef 1)
          to label %437 unwind label %300

437:                                              ; preds = %435
  br i1 %436, label %438, label %579

438:                                              ; preds = %437
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %58) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %59) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %58, ptr noundef nonnull @.str.156, ptr noundef nonnull align 1 dereferenceable(1) %59)
          to label %439 unwind label %440

439:                                              ; preds = %438
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %20, ptr noundef nonnull align 8 dereferenceable(32) %58) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %59) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %58) #7
  br label %579

440:                                              ; preds = %438
  %441 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %59) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %58) #7
  br label %611

442:                                              ; preds = %._crit_edge182, %._crit_edge182, %._crit_edge182
  %443 = getelementptr inbounds i8, ptr %83, i64 192
  %444 = getelementptr inbounds i8, ptr %83, i64 216
  %445 = load i32, ptr %444, align 8, !tbaa !139
  %.not148 = icmp eq i32 %445, 0
  br i1 %.not148, label %446, label %449

446:                                              ; preds = %442
  %447 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %113, i32 noundef 38)
          to label %448 unwind label %300

448:                                              ; preds = %446
  br i1 %447, label %449, label %470

449:                                              ; preds = %448, %442
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %60) #7
  call void @_ZN11spirv_cross22SpecializationConstantC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %60) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %61) #7
  call void @_ZN11spirv_cross22SpecializationConstantC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %61) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %62) #7
  call void @_ZN11spirv_cross22SpecializationConstantC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %62) #7
  %450 = invoke noundef i32 @_ZNK11spirv_cross8Compiler44get_work_group_size_specialization_constantsERNS_22SpecializationConstantES2_S2_(ptr noundef nonnull align 8 dereferenceable(3176) %0, ptr noundef nonnull align 4 dereferenceable(8) %60, ptr noundef nonnull align 4 dereferenceable(8) %61, ptr noundef nonnull align 4 dereferenceable(8) %62)
          to label %451 unwind label %467

451:                                              ; preds = %449
  %452 = load i8, ptr %173, align 8, !tbaa !123, !range !118, !noundef !119
  %453 = trunc nuw i8 %452 to i1
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %63) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %64) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %65) #7
  br i1 %453, label %.critedge, label %454

454:                                              ; preds = %451
  %455 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE3EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %60)
  call void @_ZN11spirv_cross7TypedIDILNS_5TypesE3EEC2Ej(ptr noundef nonnull align 4 dereferenceable(4) %63, i32 noundef 0)
  %456 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE3EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %63)
  %457 = icmp eq i32 %455, %456
  br i1 %457, label %458, label %.critedge2

458:                                              ; preds = %454
  %459 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE3EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %61)
  call void @_ZN11spirv_cross7TypedIDILNS_5TypesE3EEC2Ej(ptr noundef nonnull align 4 dereferenceable(4) %64, i32 noundef 0)
  %460 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE3EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %64)
  %461 = icmp eq i32 %459, %460
  br i1 %461, label %462, label %.critedge2

462:                                              ; preds = %458
  %463 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE3EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %62)
  call void @_ZN11spirv_cross7TypedIDILNS_5TypesE3EEC2Ej(ptr noundef nonnull align 4 dereferenceable(4) %65, i32 noundef 0)
  %464 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE3EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %65)
  %465 = icmp eq i32 %463, %464
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %65) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %64) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %63) #7
  br i1 %465, label %466, label %469

.critedge:                                        ; preds = %451
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %65) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %64) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %63) #7
  br label %466

466:                                              ; preds = %.critedge, %462
  invoke void @_ZN11spirv_cross12CompilerGLSL20build_workgroup_sizeERNS_11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EEERKNS_22SpecializationConstantESC_SC_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(280) %20, ptr noundef nonnull align 4 dereferenceable(8) %60, ptr noundef nonnull align 4 dereferenceable(8) %61, ptr noundef nonnull align 4 dereferenceable(8) %62)
          to label %469 unwind label %467

467:                                              ; preds = %466, %449
  %468 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %62) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %61) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %60) #7
  br label %611

.critedge2:                                       ; preds = %454, %458
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %65) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %64) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %63) #7
  br label %469

469:                                              ; preds = %466, %.critedge2, %462
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %62) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %61) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %60) #7
  br label %482

470:                                              ; preds = %448
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %66) #7
  invoke void @_ZN11spirv_cross4joinIJRA16_KcRjEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %66, ptr noundef nonnull align 1 dereferenceable(16) @.str.64, ptr noundef nonnull align 4 dereferenceable(4) %443)
          to label %471 unwind label %476

471:                                              ; preds = %470
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %20, ptr noundef nonnull align 8 dereferenceable(32) %66) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %66) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %67) #7
  %472 = getelementptr inbounds i8, ptr %83, i64 196
  invoke void @_ZN11spirv_cross4joinIJRA16_KcRjEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %67, ptr noundef nonnull align 1 dereferenceable(16) @.str.66, ptr noundef nonnull align 4 dereferenceable(4) %472)
          to label %473 unwind label %478

473:                                              ; preds = %471
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %20, ptr noundef nonnull align 8 dereferenceable(32) %67) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %67) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %68) #7
  %474 = getelementptr inbounds i8, ptr %83, i64 200
  invoke void @_ZN11spirv_cross4joinIJRA16_KcRjEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %68, ptr noundef nonnull align 1 dereferenceable(16) @.str.68, ptr noundef nonnull align 4 dereferenceable(4) %474)
          to label %475 unwind label %480

475:                                              ; preds = %473
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %20, ptr noundef nonnull align 8 dereferenceable(32) %68) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %68) #7
  br label %482

476:                                              ; preds = %470
  %477 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %66) #7
  br label %611

478:                                              ; preds = %471
  %479 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %67) #7
  br label %611

480:                                              ; preds = %473
  %481 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %68) #7
  br label %611

482:                                              ; preds = %475, %469
  %483 = load i32, ptr %282, align 8, !tbaa !129
  %484 = icmp eq i32 %483, 5365
  br i1 %484, label %485, label %579

485:                                              ; preds = %482
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %69) #7
  %486 = getelementptr inbounds i8, ptr %83, i64 224
  invoke void @_ZN11spirv_cross4joinIJRA16_KcRjEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %69, ptr noundef nonnull align 1 dereferenceable(16) @.str.145, ptr noundef nonnull align 4 dereferenceable(4) %486)
          to label %487 unwind label %494

487:                                              ; preds = %485
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %21, ptr noundef nonnull align 8 dereferenceable(32) %69) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %69) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %70) #7
  %488 = getelementptr inbounds i8, ptr %83, i64 228
  invoke void @_ZN11spirv_cross4joinIJRA18_KcRjEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %70, ptr noundef nonnull align 1 dereferenceable(18) @.str.157, ptr noundef nonnull align 4 dereferenceable(4) %488)
          to label %489 unwind label %496

489:                                              ; preds = %487
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %21, ptr noundef nonnull align 8 dereferenceable(32) %70) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %70) #7
  %490 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %113, i32 noundef 5298)
          to label %491 unwind label %300

491:                                              ; preds = %489
  br i1 %490, label %492, label %500

492:                                              ; preds = %491
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %71) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %72) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %72) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %71, ptr noundef nonnull @.str.143, ptr noundef nonnull align 1 dereferenceable(1) %72)
          to label %493 unwind label %498

493:                                              ; preds = %492
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %21, ptr noundef nonnull align 8 dereferenceable(32) %71) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %72) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %72) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %71) #7
  br label %579

494:                                              ; preds = %485
  %495 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %69) #7
  br label %611

496:                                              ; preds = %487
  %497 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %70) #7
  br label %611

498:                                              ; preds = %492
  %499 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %72) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %72) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %71) #7
  br label %611

500:                                              ; preds = %491
  %501 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %113, i32 noundef 5269)
          to label %502 unwind label %300

502:                                              ; preds = %500
  br i1 %501, label %503, label %507

503:                                              ; preds = %502
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %73) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %74) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %74) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %73, ptr noundef nonnull @.str.141, ptr noundef nonnull align 1 dereferenceable(1) %74)
          to label %504 unwind label %505

504:                                              ; preds = %503
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %21, ptr noundef nonnull align 8 dereferenceable(32) %73) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %73) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %74) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %74) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %73) #7
  br label %579

505:                                              ; preds = %503
  %506 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %74) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %74) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %73) #7
  br label %611

507:                                              ; preds = %502
  %508 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %113, i32 noundef 27)
          to label %509 unwind label %300

509:                                              ; preds = %507
  br i1 %508, label %510, label %579

510:                                              ; preds = %509
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %75) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %76) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %76) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %75, ptr noundef nonnull @.str.140, ptr noundef nonnull align 1 dereferenceable(1) %76)
          to label %511 unwind label %512

511:                                              ; preds = %510
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %21, ptr noundef nonnull align 8 dereferenceable(32) %75) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %76) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %76) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %75) #7
  br label %579

512:                                              ; preds = %510
  %513 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %76) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %76) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %75) #7
  br label %611

514:                                              ; preds = %._crit_edge182
  %515 = load i8, ptr %85, align 8, !tbaa !5, !range !118, !noundef !119
  %516 = trunc nuw i8 %515 to i1
  br i1 %516, label %517, label %529

517:                                              ; preds = %514
  %518 = getelementptr inbounds i8, ptr %0, i64 7668
  %519 = load i32, ptr %518, align 4, !tbaa !140
  switch i32 %519, label %523 [
    i32 1, label %520
    i32 2, label %521
    i32 3, label %522
  ]

520:                                              ; preds = %517
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA22_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(22) @.str.158)
          to label %523 unwind label %300

521:                                              ; preds = %517
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA25_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(25) @.str.159)
          to label %523 unwind label %300

522:                                              ; preds = %517
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA23_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(23) @.str.160)
          to label %523 unwind label %300

523:                                              ; preds = %517, %522, %521, %520
  %524 = getelementptr inbounds i8, ptr %0, i64 7672
  %525 = load i32, ptr %524, align 8, !tbaa !141
  switch i32 %525, label %529 [
    i32 1, label %526
    i32 2, label %527
    i32 3, label %528
  ]

526:                                              ; preds = %523
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA20_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(20) @.str.161)
          to label %529 unwind label %300

527:                                              ; preds = %523
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA23_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(23) @.str.162)
          to label %529 unwind label %300

528:                                              ; preds = %523
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA21_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(21) @.str.163)
          to label %529 unwind label %300

529:                                              ; preds = %526, %527, %528, %523, %514
  %530 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %113, i32 noundef 9)
          to label %531 unwind label %300

531:                                              ; preds = %529
  br i1 %530, label %532, label %536

532:                                              ; preds = %531
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %77) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %78) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %78) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %77, ptr noundef nonnull @.str.164, ptr noundef nonnull align 1 dereferenceable(1) %78)
          to label %533 unwind label %534

533:                                              ; preds = %532
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %20, ptr noundef nonnull align 8 dereferenceable(32) %77) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %77) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %78) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %78) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %77) #7
  br label %536

534:                                              ; preds = %532
  %535 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %78) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %78) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %77) #7
  br label %611

536:                                              ; preds = %533, %531
  %537 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %113, i32 noundef 4446)
          to label %538 unwind label %300

538:                                              ; preds = %536
  br i1 %537, label %539, label %543

539:                                              ; preds = %538
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %79) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %80) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %80) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %79, ptr noundef nonnull @.str.165, ptr noundef nonnull align 1 dereferenceable(1) %80)
          to label %540 unwind label %541

540:                                              ; preds = %539
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %20, ptr noundef nonnull align 8 dereferenceable(32) %79) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %79) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %80) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %80) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %79) #7
  br label %543

541:                                              ; preds = %539
  %542 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %80) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %80) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %79) #7
  br label %611

543:                                              ; preds = %540, %538
  br i1 %168, label %544, label %545

544:                                              ; preds = %543
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA46_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(46) @.str.166)
          to label %545 unwind label %300

545:                                              ; preds = %544, %543
  %546 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %113, i32 noundef 5366)
          to label %547 unwind label %300

547:                                              ; preds = %545
  br i1 %546, label %548, label %549

548:                                              ; preds = %547
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA36_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(36) @.str.167)
          to label %561 unwind label %300

549:                                              ; preds = %547
  %550 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %113, i32 noundef 5367)
          to label %551 unwind label %300

551:                                              ; preds = %549
  br i1 %550, label %552, label %553

552:                                              ; preds = %551
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA38_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(38) @.str.168)
          to label %561 unwind label %300

553:                                              ; preds = %551
  %554 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %113, i32 noundef 5368)
          to label %555 unwind label %300

555:                                              ; preds = %553
  br i1 %554, label %556, label %557

556:                                              ; preds = %555
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA37_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(37) @.str.169)
          to label %561 unwind label %300

557:                                              ; preds = %555
  %558 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %113, i32 noundef 5369)
          to label %559 unwind label %300

559:                                              ; preds = %557
  br i1 %558, label %560, label %561

560:                                              ; preds = %559
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA39_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(39) @.str.170)
          to label %561 unwind label %300

561:                                              ; preds = %552, %559, %560, %556, %548
  br i1 %168, label %562, label %565

562:                                              ; preds = %561
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA50_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(50) @.str.171)
          to label %563 unwind label %300

563:                                              ; preds = %562
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA61_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(61) @.str.172)
          to label %564 unwind label %300

564:                                              ; preds = %563
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA7_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(7) @.str.73)
          to label %565 unwind label %300

565:                                              ; preds = %564, %561
  %566 = load i8, ptr %85, align 8, !tbaa !5, !range !118, !noundef !119
  %567 = trunc nuw i8 %566 to i1
  br i1 %567, label %572, label %568

568:                                              ; preds = %565
  %569 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %113, i32 noundef 14)
          to label %570 unwind label %300

570:                                              ; preds = %568
  br i1 %569, label %571, label %._crit_edge188

._crit_edge188:                                   ; preds = %570
  %.pre = load i8, ptr %85, align 8, !tbaa !5, !range !118
  br label %572

571:                                              ; preds = %570
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA46_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(46) @.str.173)
          to label %579 unwind label %300

572:                                              ; preds = %._crit_edge188, %565
  %573 = phi i8 [ %.pre, %._crit_edge188 ], [ %566, %565 ]
  %574 = trunc nuw i8 %573 to i1
  br i1 %574, label %579, label %575

575:                                              ; preds = %572
  %576 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %113, i32 noundef 15)
          to label %577 unwind label %300

577:                                              ; preds = %575
  br i1 %576, label %578, label %579

578:                                              ; preds = %577
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA43_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(43) @.str.174)
          to label %579 unwind label %300

579:                                              ; preds = %._crit_edge182, %571, %578, %577, %572, %482, %504, %511, %509, %493, %437, %439, %370, %373, %339, %365, %363, %285, %289
  %580 = getelementptr inbounds i8, ptr %0, i64 1264
  %581 = call noundef ptr @_ZN11spirv_cross10VectorViewIN3spv10CapabilityEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %580) #7
  %582 = call noundef ptr @_ZN11spirv_cross10VectorViewIN3spv10CapabilityEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %580) #7
  %.not151183 = icmp eq ptr %581, %582
  br i1 %.not151183, label %._crit_edge187, label %.lr.ph186

._crit_edge187:                                   ; preds = %589, %579
  %583 = call noundef zeroext i1 @_ZNK11spirv_cross10VectorViewINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %20) #7
  br i1 %583, label %599, label %591

.lr.ph186:                                        ; preds = %579, %589
  %.0125184 = phi ptr [ %590, %589 ], [ %581, %579 ]
  %584 = load i32, ptr %.0125184, align 4, !tbaa !142
  %585 = icmp eq i32 %584, 4478
  br i1 %585, label %586, label %589

586:                                              ; preds = %.lr.ph186
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA27_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(27) @.str.175)
          to label %589 unwind label %587

587:                                              ; preds = %586
  %588 = landingpad { ptr, i32 }
          cleanup
  br label %611

589:                                              ; preds = %586, %.lr.ph186
  %590 = getelementptr inbounds i8, ptr %.0125184, i64 4
  %.not151 = icmp eq ptr %590, %582
  br i1 %.not151, label %._crit_edge187, label %.lr.ph186

591:                                              ; preds = %._crit_edge187
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %81) #7
  invoke void @_ZN11spirv_cross5mergeERKNS_11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EEEPKc(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %81, ptr noundef nonnull align 8 dereferenceable(280) %20, ptr noundef nonnull @.str.177)
          to label %592 unwind label %594

592:                                              ; preds = %591
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA8_KcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA6_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(8) @.str.176, ptr noundef nonnull align 8 dereferenceable(32) %81, ptr noundef nonnull align 1 dereferenceable(6) @.str.178)
          to label %593 unwind label %596

593:                                              ; preds = %592
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %81) #7
  br label %599

594:                                              ; preds = %591
  %595 = landingpad { ptr, i32 }
          cleanup
  br label %598

596:                                              ; preds = %592
  %597 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #7
  br label %598

598:                                              ; preds = %596, %594
  %.pn152 = phi { ptr, i32 } [ %597, %596 ], [ %595, %594 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %81) #7
  br label %611

599:                                              ; preds = %593, %._crit_edge187
  %600 = call noundef zeroext i1 @_ZNK11spirv_cross10VectorViewINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %21) #7
  br i1 %600, label %609, label %601

601:                                              ; preds = %599
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %82) #7
  invoke void @_ZN11spirv_cross5mergeERKNS_11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EEEPKc(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %82, ptr noundef nonnull align 8 dereferenceable(280) %21, ptr noundef nonnull @.str.177)
          to label %602 unwind label %604

602:                                              ; preds = %601
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA8_KcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA7_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(8) @.str.176, ptr noundef nonnull align 8 dereferenceable(32) %82, ptr noundef nonnull align 1 dereferenceable(7) @.str.179)
          to label %603 unwind label %606

603:                                              ; preds = %602
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %82) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %82) #7
  br label %609

604:                                              ; preds = %601
  %605 = landingpad { ptr, i32 }
          cleanup
  br label %608

606:                                              ; preds = %602
  %607 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %82) #7
  br label %608

608:                                              ; preds = %606, %604
  %.pn154 = phi { ptr, i32 } [ %607, %606 ], [ %605, %604 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %82) #7
  br label %611

609:                                              ; preds = %603, %599
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA1_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(1) @.str.9)
          to label %610 unwind label %300

610:                                              ; preds = %609
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(280) %21) #7
  call void @llvm.lifetime.end.p0(i64 280, ptr nonnull %21) #7
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(280) %20) #7
  call void @llvm.lifetime.end.p0(i64 280, ptr nonnull %20) #7
  ret void

611:                                              ; preds = %608, %598, %587, %541, %534, %512, %505, %498, %496, %494, %480, %478, %476, %467, %440, %433, %426, %419, %412, %402, %395, %388, %381, %374, %366, %359, %352, %350, %337, %330, %323, %316, %309, %302, %300, %290
  %.pn156 = phi { ptr, i32 } [ %588, %587 ], [ %301, %300 ], [ %.pn154, %608 ], [ %.pn152, %598 ], [ %542, %541 ], [ %535, %534 ], [ %499, %498 ], [ %506, %505 ], [ %513, %512 ], [ %497, %496 ], [ %495, %494 ], [ %468, %467 ], [ %481, %480 ], [ %479, %478 ], [ %477, %476 ], [ %441, %440 ], [ %434, %433 ], [ %427, %426 ], [ %420, %419 ], [ %413, %412 ], [ %403, %402 ], [ %396, %395 ], [ %389, %388 ], [ %382, %381 ], [ %375, %374 ], [ %367, %366 ], [ %360, %359 ], [ %353, %352 ], [ %351, %350 ], [ %338, %337 ], [ %331, %330 ], [ %324, %323 ], [ %317, %316 ], [ %310, %309 ], [ %303, %302 ], [ %291, %290 ]
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(280) %21) #7
  call void @llvm.lifetime.end.p0(i64 280, ptr nonnull %21) #7
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(280) %20) #7
  call void @llvm.lifetime.end.p0(i64 280, ptr nonnull %20) #7
  br label %612

612:                                              ; preds = %139, %148, %158, %166, %277, %611, %122, %111
  %.pn158.pn = phi { ptr, i32 } [ %.pn132, %122 ], [ %.pn, %111 ], [ %140, %139 ], [ %.pn156, %611 ], [ %.pn144.pn, %277 ], [ %.pn138, %148 ], [ %.pn136, %166 ], [ %.pn134, %158 ]
  resume { ptr, i32 } %.pn158.pn
}

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJRA53_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 1 dereferenceable(53)) local_unnamed_addr #5 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 #5 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 #5 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 #5 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 #5 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 #5 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJRA42_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 1 dereferenceable(42)) local_unnamed_addr #5 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 #5 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 #5 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 #5 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 #5 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 #5 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJRA59_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 1 dereferenceable(59)) local_unnamed_addr #5 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 #5 align 2

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJRA44_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 1 dereferenceable(44)) local_unnamed_addr #5 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 #5 align 2

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJRA72_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 1 dereferenceable(72)) local_unnamed_addr #5 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 #5 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJRA49_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 1 dereferenceable(49)) local_unnamed_addr #5 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 #5 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJRA12_KcRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA11_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 1 dereferenceable(12), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(11)) local_unnamed_addr #5 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: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK11spirv_cross10VectorViewINS_12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #4 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 #5 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 #4 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 #4 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper34get_extra_required_extension_namesB5cxx11ENS1_9CandidateE(ptr dead_on_unwind noalias writable sret(%"class.spirv_cross::SmallVector.27") align 8, i32 noundef) local_unnamed_addr #4 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJPKcRA10_S2_RS3_RA2_S2_S3_S6_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), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5 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 #4 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper45can_feature_be_implemented_without_extensionsENS1_7FeatureE(i32 noundef) local_unnamed_addr #4 align 2

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN11spirv_cross22SpecializationConstantC2Ev(ptr noundef nonnull align 4 dereferenceable(8)) unnamed_addr #6 align 2

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJRA22_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 1 dereferenceable(22)) local_unnamed_addr #5 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 #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJRA20_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 1 dereferenceable(20)) local_unnamed_addr #5 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 #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJRA46_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 1 dereferenceable(46)) local_unnamed_addr #5 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 #5 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 #5 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 #5 align 2

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJRA8_KcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA7_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 1 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(7)) local_unnamed_addr #5 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 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { "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 = { 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 #5 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nounwind }
attributes #8 = { noreturn }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !52, i64 7640}
!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 = !{!15, !15, i64 0}
!121 = !{!6, !52, i64 7651}
!122 = !{!6, !50, i64 7636}
!123 = !{!6, !52, i64 7648}
!124 = !{!125, !125, i64 0}
!125 = !{!"_ZTSN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelper9CandidateE", !16, i64 0}
!126 = !{!16, !16, i64 0}
!127 = distinct !{!127, !128}
!128 = !{!"llvm.loop.mustprogress"}
!129 = !{!130, !135, i64 232}
!130 = !{!"_ZTSN11spirv_cross14SPIREntryPointE", !49, i64 0, !55, i64 8, !55, i64 40, !131, i64 72, !57, i64 128, !134, i64 192, !50, i64 220, !50, i64 224, !50, i64 228, !135, i64 232, !52, i64 236}
!131 = !{!"_ZTSN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE2EEELm8EEE", !132, i64 0, !24, i64 16, !133, i64 24}
!132 = !{!"_ZTSN11spirv_cross10VectorViewINS_7TypedIDILNS_5TypesE2EEEEE", !15, i64 0, !24, i64 8}
!133 = !{!"_ZTSN11spirv_cross13AlignedBufferINS_7TypedIDILNS_5TypesE2EEELm8EEE", !16, i64 0}
!134 = !{!"_ZTSN11spirv_cross14SPIREntryPoint13WorkgroupSizeE", !50, i64 0, !50, i64 4, !50, i64 8, !50, i64 12, !50, i64 16, !50, i64 20, !50, i64 24}
!135 = !{!"_ZTSN3spv14ExecutionModelE", !16, i64 0}
!136 = !{!6, !50, i64 7660}
!137 = !{!130, !50, i64 220}
!138 = !{!130, !52, i64 236}
!139 = !{!130, !50, i64 216}
!140 = !{!6, !87, i64 7668}
!141 = !{!6, !87, i64 7672}
!142 = !{!143, !143, i64 0}
!143 = !{!"_ZTSN3spv10CapabilityE", !16, i64 0}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,SROAPass,SimplifyCFGPass,TailCallElimPass