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

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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.spirv_cross::Bitset" = type { i64, %"class.std::unordered_set" }
%"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 }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"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.anon.336 = type { i8 }
%class.anon.338 = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.spirv_cross::SmallVector.27" = type { %"class.spirv_cross::VectorView.28", i64, %"class.spirv_cross::AlignedBuffer.29" }
%"class.spirv_cross::VectorView.28" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.29" = type { [256 x i8] }
%"class.std::allocator.71" = type { i8 }
%"struct.std::__detail::_Node_iterator.339" = type { %"struct.std::__detail::_Node_iterator_base.340" }
%"struct.std::__detail::_Node_iterator_base.340" = type { ptr }
%"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 }
%"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.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.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 }
%"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::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 }
%"struct.spirv_cross::CompilerGLSL::BackendVariations" = type <{ %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", i8, i8, i8, i8, [4 x i8], ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, [4 x i8] }>
%"class.std::unordered_map.199" = type { %"class.std::_Hashtable.200" }
%"class.std::_Hashtable.200" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.spirv_cross::CompilerGLSL::ShaderSubgroupSupportHelper" = type { i32 }
%"class.spirv_cross::SmallVector.227" = type { %"class.spirv_cross::VectorView.228", i64, %"class.spirv_cross::AlignedBuffer.229" }
%"class.spirv_cross::VectorView.228" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.229" = type { [32 x i8] }
%"class.std::vector.230" = type { %"struct.std::_Vector_base.231" }
%"struct.std::_Vector_base.231" = type { %"struct.std::_Vector_base<spirv_cross::PlsRemap, std::allocator<spirv_cross::PlsRemap>>::_Vector_impl" }
%"struct.std::_Vector_base<spirv_cross::PlsRemap, std::allocator<spirv_cross::PlsRemap>>::_Vector_impl" = type { %"struct.std::_Vector_base<spirv_cross::PlsRemap, std::allocator<spirv_cross::PlsRemap>>::_Vector_impl_data" }
%"struct.std::_Vector_base<spirv_cross::PlsRemap, std::allocator<spirv_cross::PlsRemap>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.235" = type { %"struct.std::_Vector_base.236" }
%"struct.std::_Vector_base.236" = type { %"struct.std::_Vector_base<std::pair<unsigned int, unsigned int>, std::allocator<std::pair<unsigned int, unsigned int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<unsigned int, unsigned int>, std::allocator<std::pair<unsigned int, unsigned int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<unsigned int, unsigned int>, std::allocator<std::pair<unsigned int, unsigned int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<unsigned int, unsigned int>, std::allocator<std::pair<unsigned int, unsigned int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.240" = type { %"struct.std::_Vector_base.241" }
%"struct.std::_Vector_base.241" = type { %"struct.std::_Vector_base<std::pair<unsigned int, bool>, std::allocator<std::pair<unsigned int, bool>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<unsigned int, bool>, std::allocator<std::pair<unsigned int, bool>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<unsigned int, bool>, std::allocator<std::pair<unsigned int, bool>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<unsigned int, bool>, std::allocator<std::pair<unsigned int, bool>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::unordered_set.245" = type { %"class.std::_Hashtable.246" }
%"class.std::_Hashtable.246" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.263" = type { %"class.std::_Hashtable.264" }
%"class.std::_Hashtable.264" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"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 }
%"struct.std::pair.341" = type { 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.176 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.177 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.205 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.206 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.268 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.270 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.271 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.272 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.273 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.308 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.309 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.713 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.726 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.727 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.728 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.729 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.730 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.731 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.732 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.733 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.734 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.735 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.736 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.737 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.738 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.739 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.740 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.741 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.742 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.743 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.744 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.745 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.746 = external hidden unnamed_addr constant [3 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

declare noundef i32 @_ZNK11spirv_cross8Compiler19get_execution_modelEv(ptr noundef nonnull align 8 dereferenceable(3176)) #3

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL11begin_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848)) #1 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: 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_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 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 void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(280)) unnamed_addr #4 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_cross12CompilerGLSL9statementIJRA36_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 1 dereferenceable(36)) #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_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: mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL14end_scope_declEv(ptr noundef nonnull align 8 dereferenceable(9848)) #1 align 2

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11spirv_cross12CompilerGLSL27emit_declared_builtin_blockEN3spv12StorageClassENS1_14ExecutionModelE(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %1, i32 noundef %2) #1 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca ptr, align 8
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca %"class.spirv_cross::Bitset", align 8
  %8 = alloca %"class.spirv_cross::Bitset", align 8
  %9 = alloca ptr, align 8
  %10 = alloca i8, align 1
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i8, align 1
  %14 = alloca i8, align 1
  %15 = alloca i8, align 1
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca %"class.std::unordered_map.213", align 8
  %20 = alloca %class.anon.336, align 1
  %21 = alloca %class.anon.338, align 8
  %22 = alloca ptr, align 8
  %23 = alloca i32, align 4
  %24 = alloca %"class.spirv_cross::Bitset", align 8
  %25 = alloca i32, align 4
  %26 = alloca %"class.spirv_cross::SmallVector.27", align 8
  %27 = alloca %"class.std::__cxx11::basic_string", align 8
  %28 = alloca %"class.std::allocator.71", align 1
  %29 = alloca %"class.std::__cxx11::basic_string", align 8
  %30 = alloca %"class.std::allocator.71", align 1
  %31 = alloca %"class.std::__cxx11::basic_string", align 8
  %32 = alloca %"class.std::__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 %"struct.std::__detail::_Node_iterator.339", align 8
  %37 = alloca i32, align 4
  %38 = alloca %"struct.std::__detail::_Node_iterator.339", align 8
  %39 = alloca %"struct.std::__detail::_Node_iterator.339", align 8
  %40 = alloca i32, align 4
  %41 = alloca %"struct.std::__detail::_Node_iterator.339", align 8
  %42 = alloca %"struct.std::__detail::_Node_iterator.339", align 8
  %43 = alloca i32, align 4
  %44 = alloca %"struct.std::__detail::_Node_iterator.339", align 8
  %45 = alloca %"struct.std::__detail::_Node_iterator.339", align 8
  %46 = alloca i32, align 4
  %47 = alloca %"struct.std::__detail::_Node_iterator.339", align 8
  %48 = alloca i8, align 1
  %49 = alloca ptr, align 8
  %50 = alloca %"class.std::__cxx11::basic_string", align 8
  %51 = alloca %"class.std::__cxx11::basic_string", align 8
  store ptr %0, ptr %4, align 8, !tbaa !5
  store i32 %1, ptr %5, align 4, !tbaa !9
  store i32 %2, ptr %6, align 4, !tbaa !11
  %52 = load ptr, ptr %4, align 8
  call void @llvm.lifetime.start.p0(i64 64, ptr %7) #7
  call void @_ZN11spirv_cross6BitsetC2Ev(ptr noundef nonnull align 8 dereferenceable(64) %7) #7
  call void @llvm.lifetime.start.p0(i64 64, ptr %8) #7
  call void @_ZN11spirv_cross6BitsetC2Ev(ptr noundef nonnull align 8 dereferenceable(64) %8) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #7
  store ptr null, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %10) #7
  store i8 0, ptr %10, align 1, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #7
  store i32 0, ptr %11, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #7
  store i32 0, ptr %12, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #7
  store i8 0, ptr %13, align 1, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #7
  store i8 0, ptr %14, align 1, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 1, ptr %15) #7
  store i8 0, ptr %15, align 1, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #7
  store i32 0, ptr %16, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #7
  store i32 0, ptr %17, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #7
  store i32 0, ptr %18, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 56, ptr %19) #7
  call void @_ZNSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %19) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #7
  %53 = getelementptr inbounds %"class.spirv_cross::Compiler", ptr %52, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 128, ptr %21) #7
  %54 = getelementptr inbounds %class.anon.338, ptr %21, i32 0, i32 0
  store ptr %52, ptr %54, align 8, !tbaa !17
  %55 = getelementptr inbounds %class.anon.338, ptr %21, i32 0, i32 1
  store ptr %5, ptr %55, align 8, !tbaa !5
  %56 = getelementptr inbounds %class.anon.338, ptr %21, i32 0, i32 2
  store ptr %20, ptr %56, align 8, !tbaa !5
  %57 = getelementptr inbounds %class.anon.338, ptr %21, i32 0, i32 3
  store ptr %11, ptr %57, align 8, !tbaa !5
  %58 = getelementptr inbounds %class.anon.338, ptr %21, i32 0, i32 4
  store ptr %12, ptr %58, align 8, !tbaa !5
  %59 = getelementptr inbounds %class.anon.338, ptr %21, i32 0, i32 5
  store ptr %15, ptr %59, align 8, !tbaa !5
  %60 = getelementptr inbounds %class.anon.338, ptr %21, i32 0, i32 6
  store ptr %19, ptr %60, align 8, !tbaa !5
  %61 = getelementptr inbounds %class.anon.338, ptr %21, i32 0, i32 7
  store ptr %14, ptr %61, align 8, !tbaa !5
  %62 = getelementptr inbounds %class.anon.338, ptr %21, i32 0, i32 8
  store ptr %18, ptr %62, align 8, !tbaa !5
  %63 = getelementptr inbounds %class.anon.338, ptr %21, i32 0, i32 9
  store ptr %13, ptr %63, align 8, !tbaa !5
  %64 = getelementptr inbounds %class.anon.338, ptr %21, i32 0, i32 10
  store ptr %17, ptr %64, align 8, !tbaa !5
  %65 = getelementptr inbounds %class.anon.338, ptr %21, i32 0, i32 11
  store ptr %16, ptr %65, align 8, !tbaa !5
  %66 = getelementptr inbounds %class.anon.338, ptr %21, i32 0, i32 12
  store ptr %8, ptr %66, align 8, !tbaa !5
  %67 = getelementptr inbounds %class.anon.338, ptr %21, i32 0, i32 13
  store ptr %10, ptr %67, align 8, !tbaa !5
  %68 = getelementptr inbounds %class.anon.338, ptr %21, i32 0, i32 14
  store ptr %7, ptr %68, align 8, !tbaa !5
  %69 = getelementptr inbounds %class.anon.338, ptr %21, i32 0, i32 15
  store ptr %9, ptr %69, align 8, !tbaa !5
  invoke void @"_ZN11spirv_cross8ParsedIR17for_each_typed_idINS_12SPIRVariableEZNS_12CompilerGLSL27emit_declared_builtin_blockEN3spv12StorageClassENS4_14ExecutionModelEE3$_1EEvRKT0_"(ptr noundef nonnull align 8 dereferenceable(1920) %53, ptr noundef nonnull align 8 dereferenceable(128) %21)
          to label %70 unwind label %81

70:                                               ; preds = %3
  call void @llvm.lifetime.end.p0(i64 128, ptr %21) #7
  call void @llvm.lifetime.start.p0(i64 64, ptr %24) #7
  %71 = invoke noundef i64 @_ZNK11spirv_cross6Bitset9get_lowerEv(ptr noundef nonnull align 8 dereferenceable(64) %8)
          to label %72 unwind label %85

72:                                               ; preds = %70
  %73 = and i64 %71, 27
  invoke void @_ZN11spirv_cross6BitsetC2Em(ptr noundef nonnull align 8 dereferenceable(64) %24, i64 noundef %73)
          to label %74 unwind label %85

74:                                               ; preds = %72
  %75 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZN11spirv_cross6BitsetaSEOS0_(ptr noundef nonnull align 8 dereferenceable(64) %8, ptr noundef nonnull align 8 dereferenceable(64) %24) #7
  call void @_ZN11spirv_cross6BitsetD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %24) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr %24) #7
  %76 = load i8, ptr %10, align 1, !tbaa !13, !range !19, !noundef !20
  %77 = trunc i8 %76 to i1
  br i1 %77, label %93, label %78

78:                                               ; preds = %74
  %79 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZN11spirv_cross6BitsetaSERKS0_(ptr noundef nonnull align 8 dereferenceable(64) %7, ptr noundef nonnull align 8 dereferenceable(64) %8)
          to label %80 unwind label %89

80:                                               ; preds = %78
  br label %93

81:                                               ; preds = %3
  %82 = landingpad { ptr, i32 }
          cleanup
  %83 = extractvalue { ptr, i32 } %82, 0
  store ptr %83, ptr %22, align 8
  %84 = extractvalue { ptr, i32 } %82, 1
  store i32 %84, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 128, ptr %21) #7
  br label %500

85:                                               ; preds = %72, %70
  %86 = landingpad { ptr, i32 }
          cleanup
  %87 = extractvalue { ptr, i32 } %86, 0
  store ptr %87, ptr %22, align 8
  %88 = extractvalue { ptr, i32 } %86, 1
  store i32 %88, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 64, ptr %24) #7
  br label %500

89:                                               ; preds = %383, %350, %317, %277, %276, %273, %271, %265, %93, %78
  %90 = landingpad { ptr, i32 }
          cleanup
  %91 = extractvalue { ptr, i32 } %90, 0
  store ptr %91, ptr %22, align 8
  %92 = extractvalue { ptr, i32 } %90, 1
  store i32 %92, ptr %23, align 4
  br label %500

93:                                               ; preds = %80, %74
  %94 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset5emptyEv(ptr noundef nonnull align 8 dereferenceable(64) %7)
          to label %95 unwind label %89

95:                                               ; preds = %93
  br i1 %94, label %96, label %97

96:                                               ; preds = %95
  store i32 1, ptr %25, align 4
  br label %496

97:                                               ; preds = %95
  %98 = load i32, ptr %5, align 4, !tbaa !9
  %99 = icmp eq i32 %98, 3
  br i1 %99, label %100, label %265

100:                                              ; preds = %97
  call void @llvm.lifetime.start.p0(i64 280, ptr %26) #7
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(280) %26) #7
  %101 = load i8, ptr %13, align 1, !tbaa !13, !range !19, !noundef !20
  %102 = trunc i8 %101 to i1
  br i1 %102, label %103, label %192

103:                                              ; preds = %100
  %104 = load i8, ptr %15, align 1, !tbaa !13, !range !19, !noundef !20
  %105 = trunc i8 %104 to i1
  br i1 %105, label %106, label %192

106:                                              ; preds = %103
  %107 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %52, i32 0, i32 9
  %108 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %107, i32 0, i32 1
  %109 = load i8, ptr %108, align 4, !tbaa !21, !range !19, !noundef !20
  %110 = trunc i8 %109 to i1
  br i1 %110, label %173, label %111

111:                                              ; preds = %106
  %112 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %52, i32 0, i32 9
  %113 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %112, i32 0, i32 0
  %114 = load i32, ptr %113, align 4, !tbaa !129
  %115 = icmp ult i32 %114, 440
  br i1 %115, label %116, label %133

116:                                              ; preds = %111
  %117 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %52, i32 0, i32 9
  %118 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %117, i32 0, i32 0
  %119 = load i32, ptr %118, align 4, !tbaa !129
  %120 = icmp uge i32 %119, 140
  br i1 %120, label %121, label %133

121:                                              ; preds = %116
  call void @llvm.lifetime.start.p0(i64 32, ptr %27) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %28) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef @.str.205, ptr noundef nonnull align 1 dereferenceable(1) %28)
          to label %122 unwind label %124

122:                                              ; preds = %121
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %52, ptr noundef nonnull align 8 dereferenceable(32) %27)
          to label %123 unwind label %128

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

124:                                              ; preds = %121
  %125 = landingpad { ptr, i32 }
          cleanup
  %126 = extractvalue { ptr, i32 } %125, 0
  store ptr %126, ptr %22, align 8
  %127 = extractvalue { ptr, i32 } %125, 1
  store i32 %127, ptr %23, align 4
  br label %132

128:                                              ; preds = %122
  %129 = landingpad { ptr, i32 }
          cleanup
  %130 = extractvalue { ptr, i32 } %129, 0
  store ptr %130, ptr %22, align 8
  %131 = extractvalue { ptr, i32 } %129, 1
  store i32 %131, ptr %23, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #7
  br label %132

132:                                              ; preds = %128, %124
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #7
  br label %264

133:                                              ; preds = %116, %111
  %134 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %52, i32 0, i32 9
  %135 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %134, i32 0, i32 0
  %136 = load i32, ptr %135, align 4, !tbaa !129
  %137 = icmp ult i32 %136, 140
  br i1 %137, label %138, label %149

138:                                              ; preds = %133
  %139 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %139, ptr noundef @.str.206)
          to label %140 unwind label %141

140:                                              ; preds = %138
  invoke void @__cxa_throw(ptr %139, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #8
          to label %506 unwind label %145

141:                                              ; preds = %138
  %142 = landingpad { ptr, i32 }
          cleanup
  %143 = extractvalue { ptr, i32 } %142, 0
  store ptr %143, ptr %22, align 8
  %144 = extractvalue { ptr, i32 } %142, 1
  store i32 %144, ptr %23, align 4
  call void @__cxa_free_exception(ptr %139) #7
  br label %264

145:                                              ; preds = %260, %244, %213, %201, %195, %180, %140
  %146 = landingpad { ptr, i32 }
          cleanup
  %147 = extractvalue { ptr, i32 } %146, 0
  store ptr %147, ptr %22, align 8
  %148 = extractvalue { ptr, i32 } %146, 1
  store i32 %148, ptr %23, align 4
  br label %264

149:                                              ; preds = %133
  br label %150

150:                                              ; preds = %149, %123
  %151 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %52, i32 0, i32 9
  %152 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %151, i32 0, i32 1
  %153 = load i8, ptr %152, align 4, !tbaa !21, !range !19, !noundef !20
  %154 = trunc i8 %153 to i1
  br i1 %154, label %172, label %155

155:                                              ; preds = %150
  %156 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %52, i32 0, i32 9
  %157 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %156, i32 0, i32 0
  %158 = load i32, ptr %157, align 4, !tbaa !129
  %159 = icmp ult i32 %158, 440
  br i1 %159, label %160, label %172

160:                                              ; preds = %155
  call void @llvm.lifetime.start.p0(i64 32, ptr %29) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %30) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef @.str.205, ptr noundef nonnull align 1 dereferenceable(1) %30)
          to label %161 unwind label %163

161:                                              ; preds = %160
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %52, ptr noundef nonnull align 8 dereferenceable(32) %29)
          to label %162 unwind label %167

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

163:                                              ; preds = %160
  %164 = landingpad { ptr, i32 }
          cleanup
  %165 = extractvalue { ptr, i32 } %164, 0
  store ptr %165, ptr %22, align 8
  %166 = extractvalue { ptr, i32 } %164, 1
  store i32 %166, ptr %23, align 4
  br label %171

167:                                              ; preds = %161
  %168 = landingpad { ptr, i32 }
          cleanup
  %169 = extractvalue { ptr, i32 } %168, 0
  store ptr %169, ptr %22, align 8
  %170 = extractvalue { ptr, i32 } %168, 1
  store i32 %170, ptr %23, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #7
  br label %171

171:                                              ; preds = %167, %163
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #7
  br label %264

172:                                              ; preds = %162, %155, %150
  br label %186

173:                                              ; preds = %106
  %174 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %52, i32 0, i32 9
  %175 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %174, i32 0, i32 1
  %176 = load i8, ptr %175, align 4, !tbaa !21, !range !19, !noundef !20
  %177 = trunc i8 %176 to i1
  br i1 %177, label %178, label %185

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

180:                                              ; preds = %178
  invoke void @__cxa_throw(ptr %179, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #8
          to label %506 unwind label %145

181:                                              ; preds = %178
  %182 = landingpad { ptr, i32 }
          cleanup
  %183 = extractvalue { ptr, i32 } %182, 0
  store ptr %183, ptr %22, align 8
  %184 = extractvalue { ptr, i32 } %182, 1
  store i32 %184, ptr %23, align 4
  call void @__cxa_free_exception(ptr %179) #7
  br label %264

185:                                              ; preds = %173
  br label %186

186:                                              ; preds = %185, %172
  call void @llvm.lifetime.start.p0(i64 32, ptr %31) #7
  invoke void @_ZN11spirv_cross4joinIJRA14_KcRjRA16_S1_S4_EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %31, ptr noundef nonnull align 1 dereferenceable(14) @.str.268, ptr noundef nonnull align 4 dereferenceable(4) %17, ptr noundef nonnull align 1 dereferenceable(16) @.str.727, ptr noundef nonnull align 4 dereferenceable(4) %16)
          to label %187 unwind label %188

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

188:                                              ; preds = %186
  %189 = landingpad { ptr, i32 }
          cleanup
  %190 = extractvalue { ptr, i32 } %189, 0
  store ptr %190, ptr %22, align 8
  %191 = extractvalue { ptr, i32 } %189, 1
  store i32 %191, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #7
  br label %264

192:                                              ; preds = %187, %103, %100
  %193 = load i8, ptr %14, align 1, !tbaa !13, !range !19, !noundef !20
  %194 = trunc i8 %193 to i1
  br i1 %194, label %195, label %241

195:                                              ; preds = %192
  %196 = invoke noundef i32 @_ZNK11spirv_cross8Compiler19get_execution_modelEv(ptr noundef nonnull align 8 dereferenceable(3176) %52)
          to label %197 unwind label %145

197:                                              ; preds = %195
  %198 = icmp ne i32 %196, 3
  br i1 %198, label %199, label %206

199:                                              ; preds = %197
  %200 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %200, ptr noundef @.str.270)
          to label %201 unwind label %202

201:                                              ; preds = %199
  invoke void @__cxa_throw(ptr %200, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #8
          to label %506 unwind label %145

202:                                              ; preds = %199
  %203 = landingpad { ptr, i32 }
          cleanup
  %204 = extractvalue { ptr, i32 } %203, 0
  store ptr %204, ptr %22, align 8
  %205 = extractvalue { ptr, i32 } %203, 1
  store i32 %205, ptr %23, align 4
  call void @__cxa_free_exception(ptr %200) #7
  br label %264

206:                                              ; preds = %197
  %207 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %52, i32 0, i32 9
  %208 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %207, i32 0, i32 1
  %209 = load i8, ptr %208, align 4, !tbaa !21, !range !19, !noundef !20
  %210 = trunc i8 %209 to i1
  br i1 %210, label %211, label %218

211:                                              ; preds = %206
  %212 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %212, ptr noundef @.str.271)
          to label %213 unwind label %214

213:                                              ; preds = %211
  invoke void @__cxa_throw(ptr %212, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #8
          to label %506 unwind label %145

214:                                              ; preds = %211
  %215 = landingpad { ptr, i32 }
          cleanup
  %216 = extractvalue { ptr, i32 } %215, 0
  store ptr %216, ptr %22, align 8
  %217 = extractvalue { ptr, i32 } %215, 1
  store i32 %217, ptr %23, align 4
  call void @__cxa_free_exception(ptr %212) #7
  br label %264

218:                                              ; preds = %206
  %219 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %52, i32 0, i32 9
  %220 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %219, i32 0, i32 0
  %221 = load i32, ptr %220, align 4, !tbaa !129
  %222 = icmp ult i32 %221, 400
  br i1 %222, label %223, label %235

223:                                              ; preds = %218
  call void @llvm.lifetime.start.p0(i64 32, ptr %32) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %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 @.str.272, ptr noundef nonnull align 1 dereferenceable(1) %33)
          to label %224 unwind label %226

224:                                              ; preds = %223
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %52, ptr noundef nonnull align 8 dereferenceable(32) %32)
          to label %225 unwind label %230

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

226:                                              ; preds = %223
  %227 = landingpad { ptr, i32 }
          cleanup
  %228 = extractvalue { ptr, i32 } %227, 0
  store ptr %228, ptr %22, align 8
  %229 = extractvalue { ptr, i32 } %227, 1
  store i32 %229, ptr %23, align 4
  br label %234

230:                                              ; preds = %224
  %231 = landingpad { ptr, i32 }
          cleanup
  %232 = extractvalue { ptr, i32 } %231, 0
  store ptr %232, ptr %22, align 8
  %233 = extractvalue { ptr, i32 } %231, 1
  store i32 %233, ptr %23, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #7
  br label %234

234:                                              ; preds = %230, %226
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #7
  br label %264

235:                                              ; preds = %225, %218
  call void @llvm.lifetime.start.p0(i64 32, ptr %34) #7
  invoke void @_ZN11spirv_cross4joinIJRA10_KcRjEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %34, ptr noundef nonnull align 1 dereferenceable(10) @.str.273, ptr noundef nonnull align 4 dereferenceable(4) %18)
          to label %236 unwind label %237

236:                                              ; preds = %235
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %26, 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 %34) #7
  br label %241

237:                                              ; preds = %235
  %238 = landingpad { ptr, i32 }
          cleanup
  %239 = extractvalue { ptr, i32 } %238, 0
  store ptr %239, ptr %22, align 8
  %240 = extractvalue { ptr, i32 } %238, 1
  store i32 %240, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %34) #7
  br label %264

241:                                              ; preds = %236, %192
  %242 = load i32, ptr %6, align 4, !tbaa !11
  %243 = icmp eq i32 %242, 5365
  br i1 %243, label %244, label %246

244:                                              ; preds = %241
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA24_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %52, ptr noundef nonnull align 1 dereferenceable(24) @.str.728)
          to label %245 unwind label %145

245:                                              ; preds = %244
  br label %263

246:                                              ; preds = %241
  %247 = call noundef zeroext i1 @_ZNK11spirv_cross10VectorViewINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %26) #7
  br i1 %247, label %260, label %248

248:                                              ; preds = %246
  call void @llvm.lifetime.start.p0(i64 32, ptr %35) #7
  invoke void @_ZN11spirv_cross5mergeERKNS_11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EEEPKc(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %35, ptr noundef nonnull align 8 dereferenceable(280) %26, ptr noundef @.str.177)
          to label %249 unwind label %251

249:                                              ; preds = %248
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA8_KcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA19_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %52, ptr noundef nonnull align 1 dereferenceable(8) @.str.176, ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef nonnull align 1 dereferenceable(19) @.str.729)
          to label %250 unwind label %255

250:                                              ; preds = %249
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #7
  br label %262

251:                                              ; preds = %248
  %252 = landingpad { ptr, i32 }
          cleanup
  %253 = extractvalue { ptr, i32 } %252, 0
  store ptr %253, ptr %22, align 8
  %254 = extractvalue { ptr, i32 } %252, 1
  store i32 %254, ptr %23, align 4
  br label %259

255:                                              ; preds = %249
  %256 = landingpad { ptr, i32 }
          cleanup
  %257 = extractvalue { ptr, i32 } %256, 0
  store ptr %257, ptr %22, align 8
  %258 = extractvalue { ptr, i32 } %256, 1
  store i32 %258, ptr %23, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #7
  br label %259

259:                                              ; preds = %255, %251
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #7
  br label %264

260:                                              ; preds = %246
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA17_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %52, ptr noundef nonnull align 1 dereferenceable(17) @.str.730)
          to label %261 unwind label %145

261:                                              ; preds = %260
  br label %262

262:                                              ; preds = %261, %250
  br label %263

263:                                              ; preds = %262, %245
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(280) %26) #7
  call void @llvm.lifetime.end.p0(i64 280, ptr %26) #7
  br label %276

264:                                              ; preds = %259, %237, %234, %214, %202, %188, %181, %171, %145, %141, %132
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(280) %26) #7
  call void @llvm.lifetime.end.p0(i64 280, ptr %26) #7
  br label %500

265:                                              ; preds = %97
  %266 = invoke noundef nonnull align 8 dereferenceable(237) ptr @_ZN11spirv_cross8Compiler15get_entry_pointEv(ptr noundef nonnull align 8 dereferenceable(3176) %52)
          to label %267 unwind label %89

267:                                              ; preds = %265
  %268 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %266, i32 0, i32 11
  %269 = load i8, ptr %268, align 4, !tbaa !130, !range !19, !noundef !20
  %270 = trunc i8 %269 to i1
  br i1 %270, label %271, label %273

271:                                              ; preds = %267
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA36_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %52, ptr noundef nonnull align 1 dereferenceable(36) @.str.731)
          to label %272 unwind label %89

272:                                              ; preds = %271
  br label %275

273:                                              ; preds = %267
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA16_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %52, ptr noundef nonnull align 1 dereferenceable(16) @.str.732)
          to label %274 unwind label %89

274:                                              ; preds = %273
  br label %275

275:                                              ; preds = %274, %272
  br label %276

276:                                              ; preds = %275, %263
  invoke void @_ZN11spirv_cross12CompilerGLSL11begin_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848) %52)
          to label %277 unwind label %89

277:                                              ; preds = %276
  %278 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %7, i32 noundef 0)
          to label %279 unwind label %89

279:                                              ; preds = %277
  br i1 %278, label %280, label %317

280:                                              ; preds = %279
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #7
  store i32 0, ptr %37, align 4, !tbaa !15
  %281 = invoke ptr @_ZNSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEE4findERS5_(ptr noundef nonnull align 8 dereferenceable(56) %19, ptr noundef nonnull align 4 dereferenceable(4) %37)
          to label %282 unwind label %294

282:                                              ; preds = %280
  %283 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.339", ptr %36, i32 0, i32 0
  %284 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.340", ptr %283, i32 0, i32 0
  store ptr %281, ptr %284, align 8
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #7
  %285 = invoke ptr @_ZSt3endISt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEEEDTcldtfp_3endEERT_(ptr noundef nonnull align 8 dereferenceable(56) %19)
          to label %286 unwind label %298

286:                                              ; preds = %282
  %287 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.339", ptr %38, i32 0, i32 0
  %288 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.340", ptr %287, i32 0, i32 0
  store ptr %285, ptr %288, align 8
  %289 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKjjELb0EEES6_(ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef nonnull align 8 dereferenceable(8) %38) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  br i1 %289, label %290, label %306

290:                                              ; preds = %286
  %291 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKjjELb0ELb0EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %36) #7
  %292 = getelementptr inbounds %"struct.std::pair.341", ptr %291, i32 0, i32 1
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA21_KcRjRA20_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %52, ptr noundef nonnull align 1 dereferenceable(21) @.str.733, ptr noundef nonnull align 4 dereferenceable(4) %292, ptr noundef nonnull align 1 dereferenceable(20) @.str.734)
          to label %293 unwind label %302

293:                                              ; preds = %290
  br label %315

294:                                              ; preds = %280
  %295 = landingpad { ptr, i32 }
          cleanup
  %296 = extractvalue { ptr, i32 } %295, 0
  store ptr %296, ptr %22, align 8
  %297 = extractvalue { ptr, i32 } %295, 1
  store i32 %297, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #7
  br label %316

298:                                              ; preds = %282
  %299 = landingpad { ptr, i32 }
          cleanup
  %300 = extractvalue { ptr, i32 } %299, 0
  store ptr %300, ptr %22, align 8
  %301 = extractvalue { ptr, i32 } %299, 1
  store i32 %301, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  br label %316

302:                                              ; preds = %312, %310, %290
  %303 = landingpad { ptr, i32 }
          cleanup
  %304 = extractvalue { ptr, i32 } %303, 0
  store ptr %304, ptr %22, align 8
  %305 = extractvalue { ptr, i32 } %303, 1
  store i32 %305, ptr %23, align 4
  br label %316

306:                                              ; preds = %286
  %307 = getelementptr inbounds %"class.spirv_cross::Compiler", ptr %52, i32 0, i32 24
  %308 = load i8, ptr %307, align 8, !tbaa !136, !range !19, !noundef !20
  %309 = trunc i8 %308 to i1
  br i1 %309, label %310, label %312

310:                                              ; preds = %306
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA28_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %52, ptr noundef nonnull align 1 dereferenceable(28) @.str.735)
          to label %311 unwind label %302

311:                                              ; preds = %310
  br label %314

312:                                              ; preds = %306
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA18_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %52, ptr noundef nonnull align 1 dereferenceable(18) @.str.736)
          to label %313 unwind label %302

313:                                              ; preds = %312
  br label %314

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

315:                                              ; preds = %314, %293
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #7
  br label %317

316:                                              ; preds = %302, %298, %294
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #7
  br label %500

317:                                              ; preds = %315, %279
  %318 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %7, i32 noundef 1)
          to label %319 unwind label %89

319:                                              ; preds = %317
  br i1 %318, label %320, label %350

320:                                              ; preds = %319
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #7
  store i32 1, ptr %40, align 4, !tbaa !15
  %321 = invoke ptr @_ZNSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEE4findERS5_(ptr noundef nonnull align 8 dereferenceable(56) %19, ptr noundef nonnull align 4 dereferenceable(4) %40)
          to label %322 unwind label %334

322:                                              ; preds = %320
  %323 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.339", ptr %39, i32 0, i32 0
  %324 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.340", ptr %323, i32 0, i32 0
  store ptr %321, ptr %324, align 8
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #7
  %325 = invoke ptr @_ZSt3endISt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEEEDTcldtfp_3endEERT_(ptr noundef nonnull align 8 dereferenceable(56) %19)
          to label %326 unwind label %338

326:                                              ; preds = %322
  %327 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.339", ptr %41, i32 0, i32 0
  %328 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.340", ptr %327, i32 0, i32 0
  store ptr %325, ptr %328, align 8
  %329 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKjjELb0EEES6_(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef nonnull align 8 dereferenceable(8) %41) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #7
  br i1 %329, label %330, label %346

330:                                              ; preds = %326
  %331 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKjjELb0ELb0EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %39) #7
  %332 = getelementptr inbounds %"struct.std::pair.341", ptr %331, i32 0, i32 1
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA21_KcRjRA22_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %52, ptr noundef nonnull align 1 dereferenceable(21) @.str.733, ptr noundef nonnull align 4 dereferenceable(4) %332, ptr noundef nonnull align 1 dereferenceable(22) @.str.737)
          to label %333 unwind label %342

333:                                              ; preds = %330
  br label %348

334:                                              ; preds = %320
  %335 = landingpad { ptr, i32 }
          cleanup
  %336 = extractvalue { ptr, i32 } %335, 0
  store ptr %336, ptr %22, align 8
  %337 = extractvalue { ptr, i32 } %335, 1
  store i32 %337, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #7
  br label %349

338:                                              ; preds = %322
  %339 = landingpad { ptr, i32 }
          cleanup
  %340 = extractvalue { ptr, i32 } %339, 0
  store ptr %340, ptr %22, align 8
  %341 = extractvalue { ptr, i32 } %339, 1
  store i32 %341, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #7
  br label %349

342:                                              ; preds = %346, %330
  %343 = landingpad { ptr, i32 }
          cleanup
  %344 = extractvalue { ptr, i32 } %343, 0
  store ptr %344, ptr %22, align 8
  %345 = extractvalue { ptr, i32 } %343, 1
  store i32 %345, ptr %23, align 4
  br label %349

346:                                              ; preds = %326
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA20_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %52, ptr noundef nonnull align 1 dereferenceable(20) @.str.738)
          to label %347 unwind label %342

347:                                              ; preds = %346
  br label %348

348:                                              ; preds = %347, %333
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #7
  br label %350

349:                                              ; preds = %342, %338, %334
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #7
  br label %500

350:                                              ; preds = %348, %319
  %351 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %7, i32 noundef 3)
          to label %352 unwind label %89

352:                                              ; preds = %350
  br i1 %351, label %353, label %383

353:                                              ; preds = %352
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #7
  store i32 3, ptr %43, align 4, !tbaa !15
  %354 = invoke ptr @_ZNSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEE4findERS5_(ptr noundef nonnull align 8 dereferenceable(56) %19, ptr noundef nonnull align 4 dereferenceable(4) %43)
          to label %355 unwind label %367

355:                                              ; preds = %353
  %356 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.339", ptr %42, i32 0, i32 0
  %357 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.340", ptr %356, i32 0, i32 0
  store ptr %354, ptr %357, align 8
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #7
  %358 = invoke ptr @_ZSt3endISt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEEEDTcldtfp_3endEERT_(ptr noundef nonnull align 8 dereferenceable(56) %19)
          to label %359 unwind label %371

359:                                              ; preds = %355
  %360 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.339", ptr %44, i32 0, i32 0
  %361 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.340", ptr %360, i32 0, i32 0
  store ptr %358, ptr %361, align 8
  %362 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKjjELb0EEES6_(ptr noundef nonnull align 8 dereferenceable(8) %42, ptr noundef nonnull align 8 dereferenceable(8) %44) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #7
  br i1 %362, label %363, label %379

363:                                              ; preds = %359
  %364 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKjjELb0ELb0EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %42) #7
  %365 = getelementptr inbounds %"struct.std::pair.341", ptr %364, i32 0, i32 1
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA21_KcRjRA25_S2_S5_RA3_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %52, ptr noundef nonnull align 1 dereferenceable(21) @.str.733, ptr noundef nonnull align 4 dereferenceable(4) %365, ptr noundef nonnull align 1 dereferenceable(25) @.str.739, ptr noundef nonnull align 4 dereferenceable(4) %12, ptr noundef nonnull align 1 dereferenceable(3) @.str.309)
          to label %366 unwind label %375

366:                                              ; preds = %363
  br label %381

367:                                              ; preds = %353
  %368 = landingpad { ptr, i32 }
          cleanup
  %369 = extractvalue { ptr, i32 } %368, 0
  store ptr %369, ptr %22, align 8
  %370 = extractvalue { ptr, i32 } %368, 1
  store i32 %370, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #7
  br label %382

371:                                              ; preds = %355
  %372 = landingpad { ptr, i32 }
          cleanup
  %373 = extractvalue { ptr, i32 } %372, 0
  store ptr %373, ptr %22, align 8
  %374 = extractvalue { ptr, i32 } %372, 1
  store i32 %374, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #7
  br label %382

375:                                              ; preds = %379, %363
  %376 = landingpad { ptr, i32 }
          cleanup
  %377 = extractvalue { ptr, i32 } %376, 0
  store ptr %377, ptr %22, align 8
  %378 = extractvalue { ptr, i32 } %376, 1
  store i32 %378, ptr %23, align 4
  br label %382

379:                                              ; preds = %359
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA23_KcRjRA3_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %52, ptr noundef nonnull align 1 dereferenceable(23) @.str.740, ptr noundef nonnull align 4 dereferenceable(4) %12, ptr noundef nonnull align 1 dereferenceable(3) @.str.309)
          to label %380 unwind label %375

380:                                              ; preds = %379
  br label %381

381:                                              ; preds = %380, %366
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #7
  br label %383

382:                                              ; preds = %375, %371, %367
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #7
  br label %500

383:                                              ; preds = %381, %352
  %384 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %7, i32 noundef 4)
          to label %385 unwind label %89

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

386:                                              ; preds = %385
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #7
  store i32 4, ptr %46, align 4, !tbaa !15
  %387 = invoke ptr @_ZNSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEE4findERS5_(ptr noundef nonnull align 8 dereferenceable(56) %19, ptr noundef nonnull align 4 dereferenceable(4) %46)
          to label %388 unwind label %400

388:                                              ; preds = %386
  %389 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.339", ptr %45, i32 0, i32 0
  %390 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.340", ptr %389, i32 0, i32 0
  store ptr %387, ptr %390, align 8
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #7
  %391 = invoke ptr @_ZSt3endISt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEEEDTcldtfp_3endEERT_(ptr noundef nonnull align 8 dereferenceable(56) %19)
          to label %392 unwind label %404

392:                                              ; preds = %388
  %393 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.339", ptr %47, i32 0, i32 0
  %394 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.340", ptr %393, i32 0, i32 0
  store ptr %391, ptr %394, align 8
  %395 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKjjELb0EEES6_(ptr noundef nonnull align 8 dereferenceable(8) %45, ptr noundef nonnull align 8 dereferenceable(8) %47) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #7
  br i1 %395, label %396, label %412

396:                                              ; preds = %392
  %397 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKjjELb0ELb0EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %45) #7
  %398 = getelementptr inbounds %"struct.std::pair.341", ptr %397, i32 0, i32 1
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA21_KcRjRA25_S2_S5_RA3_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %52, ptr noundef nonnull align 1 dereferenceable(21) @.str.733, ptr noundef nonnull align 4 dereferenceable(4) %398, ptr noundef nonnull align 1 dereferenceable(25) @.str.741, ptr noundef nonnull align 4 dereferenceable(4) %11, ptr noundef nonnull align 1 dereferenceable(3) @.str.309)
          to label %399 unwind label %408

399:                                              ; preds = %396
  br label %414

400:                                              ; preds = %386
  %401 = landingpad { ptr, i32 }
          cleanup
  %402 = extractvalue { ptr, i32 } %401, 0
  store ptr %402, ptr %22, align 8
  %403 = extractvalue { ptr, i32 } %401, 1
  store i32 %403, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #7
  br label %415

404:                                              ; preds = %388
  %405 = landingpad { ptr, i32 }
          cleanup
  %406 = extractvalue { ptr, i32 } %405, 0
  store ptr %406, ptr %22, align 8
  %407 = extractvalue { ptr, i32 } %405, 1
  store i32 %407, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #7
  br label %415

408:                                              ; preds = %412, %396
  %409 = landingpad { ptr, i32 }
          cleanup
  %410 = extractvalue { ptr, i32 } %409, 0
  store ptr %410, ptr %22, align 8
  %411 = extractvalue { ptr, i32 } %409, 1
  store i32 %411, ptr %23, align 4
  br label %415

412:                                              ; preds = %392
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA23_KcRjRA3_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %52, ptr noundef nonnull align 1 dereferenceable(23) @.str.742, ptr noundef nonnull align 4 dereferenceable(4) %11, ptr noundef nonnull align 1 dereferenceable(3) @.str.309)
          to label %413 unwind label %408

413:                                              ; preds = %412
  br label %414

414:                                              ; preds = %413, %399
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #7
  br label %416

415:                                              ; preds = %408, %404, %400
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #7
  br label %500

416:                                              ; preds = %414, %385
  call void @llvm.lifetime.start.p0(i64 1, ptr %48) #7
  %417 = load i32, ptr %6, align 4, !tbaa !11
  %418 = icmp eq i32 %417, 1
  br i1 %418, label %439, label %419

419:                                              ; preds = %416
  %420 = load i32, ptr %6, align 4, !tbaa !11
  %421 = icmp eq i32 %420, 5365
  br i1 %421, label %422, label %425

422:                                              ; preds = %419
  %423 = load i32, ptr %5, align 4, !tbaa !9
  %424 = icmp eq i32 %423, 3
  br i1 %424, label %439, label %425

425:                                              ; preds = %422, %419
  %426 = load i32, ptr %6, align 4, !tbaa !11
  %427 = icmp eq i32 %426, 3
  br i1 %427, label %428, label %431

428:                                              ; preds = %425
  %429 = load i32, ptr %5, align 4, !tbaa !9
  %430 = icmp eq i32 %429, 1
  br i1 %430, label %439, label %431

431:                                              ; preds = %428, %425
  %432 = load i32, ptr %6, align 4, !tbaa !11
  %433 = icmp eq i32 %432, 2
  br i1 %433, label %434, label %437

434:                                              ; preds = %431
  %435 = load i32, ptr %5, align 4, !tbaa !9
  %436 = icmp eq i32 %435, 1
  br label %437

437:                                              ; preds = %434, %431
  %438 = phi i1 [ false, %431 ], [ %436, %434 ]
  br label %439

439:                                              ; preds = %437, %428, %422, %416
  %440 = phi i1 [ true, %428 ], [ true, %422 ], [ true, %416 ], [ %438, %437 ]
  %441 = zext i1 %440 to i8
  store i8 %441, ptr %48, align 1, !tbaa !13
  %442 = load i8, ptr %48, align 1, !tbaa !13, !range !19, !noundef !20
  %443 = trunc i8 %442 to i1
  br i1 %443, label %444, label %488

444:                                              ; preds = %439
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #7
  %445 = load i32, ptr %6, align 4, !tbaa !11
  %446 = icmp eq i32 %445, 5365
  br i1 %446, label %447, label %448

447:                                              ; preds = %444
  store ptr @.str.743, ptr %49, align 8, !tbaa !5
  br label %453

448:                                              ; preds = %444
  %449 = load i32, ptr %5, align 4, !tbaa !9
  %450 = icmp eq i32 %449, 1
  %451 = zext i1 %450 to i64
  %452 = select i1 %450, ptr @.str.744, ptr @.str.745
  store ptr %452, ptr %49, align 8, !tbaa !5
  br label %453

453:                                              ; preds = %448, %447
  %454 = load i32, ptr %6, align 4, !tbaa !11
  %455 = icmp eq i32 %454, 1
  br i1 %455, label %456, label %474

456:                                              ; preds = %453
  %457 = load i32, ptr %5, align 4, !tbaa !9
  %458 = icmp eq i32 %457, 3
  br i1 %458, label %459, label %474

459:                                              ; preds = %456
  call void @llvm.lifetime.start.p0(i64 32, ptr %50) #7
  %460 = invoke noundef nonnull align 8 dereferenceable(237) ptr @_ZN11spirv_cross8Compiler15get_entry_pointEv(ptr noundef nonnull align 8 dereferenceable(3176) %52)
          to label %461 unwind label %465

461:                                              ; preds = %459
  %462 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %460, i32 0, i32 8
  invoke void @_ZN11spirv_cross4joinIJRPKcRA2_S1_RjS5_EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %50, ptr noundef nonnull align 8 dereferenceable(8) %49, ptr noundef nonnull align 1 dereferenceable(2) @.str.308, ptr noundef nonnull align 4 dereferenceable(4) %462, ptr noundef nonnull align 1 dereferenceable(2) @.str.713)
          to label %463 unwind label %465

463:                                              ; preds = %461
  invoke void @_ZN11spirv_cross12CompilerGLSL14end_scope_declERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %52, ptr noundef nonnull align 8 dereferenceable(32) %50)
          to label %464 unwind label %469

464:                                              ; preds = %463
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %50) #7
  br label %486

465:                                              ; preds = %461, %459
  %466 = landingpad { ptr, i32 }
          cleanup
  %467 = extractvalue { ptr, i32 } %466, 0
  store ptr %467, ptr %22, align 8
  %468 = extractvalue { ptr, i32 } %466, 1
  store i32 %468, ptr %23, align 4
  br label %473

469:                                              ; preds = %463
  %470 = landingpad { ptr, i32 }
          cleanup
  %471 = extractvalue { ptr, i32 } %470, 0
  store ptr %471, ptr %22, align 8
  %472 = extractvalue { ptr, i32 } %470, 1
  store i32 %472, ptr %23, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #7
  br label %473

473:                                              ; preds = %469, %465
  call void @llvm.lifetime.end.p0(i64 32, ptr %50) #7
  br label %487

474:                                              ; preds = %456, %453
  call void @llvm.lifetime.start.p0(i64 32, ptr %51) #7
  invoke void @_ZN11spirv_cross4joinIJRPKcRA3_S1_EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %51, ptr noundef nonnull align 8 dereferenceable(8) %49, ptr noundef nonnull align 1 dereferenceable(3) @.str.746)
          to label %475 unwind label %477

475:                                              ; preds = %474
  invoke void @_ZN11spirv_cross12CompilerGLSL14end_scope_declERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %52, ptr noundef nonnull align 8 dereferenceable(32) %51)
          to label %476 unwind label %481

476:                                              ; preds = %475
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %51) #7
  br label %486

477:                                              ; preds = %474
  %478 = landingpad { ptr, i32 }
          cleanup
  %479 = extractvalue { ptr, i32 } %478, 0
  store ptr %479, ptr %22, align 8
  %480 = extractvalue { ptr, i32 } %478, 1
  store i32 %480, ptr %23, align 4
  br label %485

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

485:                                              ; preds = %481, %477
  call void @llvm.lifetime.end.p0(i64 32, ptr %51) #7
  br label %487

486:                                              ; preds = %476, %464
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #7
  br label %494

487:                                              ; preds = %485, %473
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #7
  br label %499

488:                                              ; preds = %439
  invoke void @_ZN11spirv_cross12CompilerGLSL14end_scope_declEv(ptr noundef nonnull align 8 dereferenceable(9848) %52)
          to label %489 unwind label %490

489:                                              ; preds = %488
  br label %494

490:                                              ; preds = %494, %488
  %491 = landingpad { ptr, i32 }
          cleanup
  %492 = extractvalue { ptr, i32 } %491, 0
  store ptr %492, ptr %22, align 8
  %493 = extractvalue { ptr, i32 } %491, 1
  store i32 %493, ptr %23, align 4
  br label %499

494:                                              ; preds = %489, %486
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA1_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %52, ptr noundef nonnull align 1 dereferenceable(1) @.str.9)
          to label %495 unwind label %490

495:                                              ; preds = %494
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #7
  store i32 0, ptr %25, align 4
  br label %496

496:                                              ; preds = %495, %96
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #7
  call void @_ZNSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %19) #7
  call void @llvm.lifetime.end.p0(i64 56, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #7
  call void @_ZN11spirv_cross6BitsetD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %8) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr %8) #7
  call void @_ZN11spirv_cross6BitsetD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %7) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr %7) #7
  %497 = load i32, ptr %25, align 4
  switch i32 %497, label %506 [
    i32 0, label %498
    i32 1, label %498
  ]

498:                                              ; preds = %496, %496
  ret void

499:                                              ; preds = %490, %487
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #7
  br label %500

500:                                              ; preds = %499, %415, %382, %349, %316, %264, %89, %85, %81
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #7
  call void @_ZNSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %19) #7
  call void @llvm.lifetime.end.p0(i64 56, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #7
  call void @_ZN11spirv_cross6BitsetD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %8) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr %8) #7
  call void @_ZN11spirv_cross6BitsetD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %7) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr %7) #7
  br label %501

501:                                              ; preds = %500
  %502 = load ptr, ptr %22, align 8
  %503 = load i32, ptr %23, align 4
  %504 = insertvalue { ptr, i32 } poison, ptr %502, 0
  %505 = insertvalue { ptr, i32 } %504, i32 %503, 1
  resume { ptr, i32 } %505

506:                                              ; preds = %496, %213, %201, %180, %140
  unreachable
}

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

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZN11spirv_cross8ParsedIR17for_each_typed_idINS_12SPIRVariableEZNS_12CompilerGLSL27emit_declared_builtin_blockEN3spv12StorageClassENS4_14ExecutionModelEE3$_1EEvRKT0_"(ptr noundef nonnull align 8 dereferenceable(1920), ptr noundef nonnull align 8 dereferenceable(128)) #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNK11spirv_cross6Bitset9get_lowerEv(ptr noundef nonnull align 8 dereferenceable(64)) #6 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(64) ptr @_ZN11spirv_cross6BitsetaSEOS0_(ptr noundef nonnull align 8 dereferenceable(64), ptr noundef nonnull align 8 dereferenceable(64)) #6 align 2

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJRA8_KcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA19_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(19)) #5 align 2

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local ptr @_ZSt3endISt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEEEDTcldtfp_3endEERT_(ptr noundef nonnull align 8 dereferenceable(56)) #6

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

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

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

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

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

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

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

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

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


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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.spirv_cross::Bitset" = type { i64, %"class.std::unordered_set" }
%"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 }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"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.anon.336 = type { i8 }
%class.anon.338 = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.spirv_cross::SmallVector.27" = type { %"class.spirv_cross::VectorView.28", i64, %"class.spirv_cross::AlignedBuffer.29" }
%"class.spirv_cross::VectorView.28" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.29" = type { [256 x i8] }
%"class.std::allocator.71" = type { i8 }
%"struct.std::__detail::_Node_iterator.339" = type { %"struct.std::__detail::_Node_iterator_base.340" }
%"struct.std::__detail::_Node_iterator_base.340" = type { ptr }

@.str.9 = external hidden unnamed_addr constant [1 x i8], align 1
@_ZTIN11spirv_cross13CompilerErrorE = external dso_local constant { ptr, ptr, ptr }, align 8
@.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.205 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.206 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.268 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.270 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.271 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.272 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.273 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.308 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.309 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.713 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.726 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.727 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.728 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.729 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.730 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.731 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.732 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.733 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.734 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.735 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.736 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.737 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.738 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.739 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.740 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.741 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.742 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.743 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.744 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.745 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.746 = external hidden unnamed_addr constant [3 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

declare noundef i32 @_ZNK11spirv_cross8Compiler19get_execution_modelEv(ptr noundef nonnull align 8 dereferenceable(3176)) local_unnamed_addr #3

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

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

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

; Function Attrs: 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: 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_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 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 void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(280)) unnamed_addr #4 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_cross12CompilerGLSL9statementIJRA36_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 1 dereferenceable(36)) 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_cross5mergeERKNS_11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EEEPKc(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(280), ptr noundef) local_unnamed_addr #5

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11spirv_cross12CompilerGLSL27emit_declared_builtin_blockEN3spv12StorageClassENS1_14ExecutionModelE(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %1, i32 noundef %2) local_unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca i32, align 4
  %5 = alloca %"class.spirv_cross::Bitset", align 8
  %6 = alloca %"class.spirv_cross::Bitset", align 8
  %7 = alloca ptr, align 8
  %8 = alloca i8, align 1
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i8, align 1
  %12 = alloca i8, align 1
  %13 = alloca i8, align 1
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca %"class.std::unordered_map.213", align 8
  %18 = alloca %class.anon.336, align 1
  %19 = alloca %class.anon.338, align 8
  %20 = alloca %"class.spirv_cross::Bitset", align 8
  %21 = alloca %"class.spirv_cross::SmallVector.27", align 8
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  %23 = alloca %"class.std::allocator.71", align 1
  %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::__cxx11::basic_string", align 8
  %28 = alloca %"class.std::allocator.71", align 1
  %29 = alloca %"class.std::__cxx11::basic_string", align 8
  %30 = alloca %"class.std::__cxx11::basic_string", align 8
  %31 = alloca %"struct.std::__detail::_Node_iterator.339", align 8
  %32 = alloca i32, align 4
  %33 = alloca %"struct.std::__detail::_Node_iterator.339", align 8
  %34 = alloca %"struct.std::__detail::_Node_iterator.339", align 8
  %35 = alloca i32, align 4
  %36 = alloca %"struct.std::__detail::_Node_iterator.339", align 8
  %37 = alloca %"struct.std::__detail::_Node_iterator.339", align 8
  %38 = alloca i32, align 4
  %39 = alloca %"struct.std::__detail::_Node_iterator.339", align 8
  %40 = alloca %"struct.std::__detail::_Node_iterator.339", align 8
  %41 = alloca i32, align 4
  %42 = alloca %"struct.std::__detail::_Node_iterator.339", align 8
  %43 = alloca ptr, align 8
  %44 = alloca %"class.std::__cxx11::basic_string", align 8
  %45 = alloca %"class.std::__cxx11::basic_string", align 8
  store i32 %1, ptr %4, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %5) #7
  call void @_ZN11spirv_cross6BitsetC2Ev(ptr noundef nonnull align 8 dereferenceable(64) %5) #7
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %6) #7
  call void @_ZN11spirv_cross6BitsetC2Ev(ptr noundef nonnull align 8 dereferenceable(64) %6) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #7
  store ptr null, ptr %7, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %8) #7
  store i8 0, ptr %8, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #7
  store i32 0, ptr %9, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #7
  store i32 0, ptr %10, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %11) #7
  store i8 0, ptr %11, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %12) #7
  store i8 0, ptr %12, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %13) #7
  store i8 0, ptr %13, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #7
  store i32 0, ptr %14, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #7
  store i32 0, ptr %15, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #7
  store i32 0, ptr %16, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %17) #7
  call void @_ZNSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %17) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %18) #7
  %46 = getelementptr inbounds i8, ptr %0, i64 8
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %19) #7
  store ptr %0, ptr %19, align 8, !tbaa !15
  %47 = getelementptr inbounds i8, ptr %19, i64 8
  store ptr %4, ptr %47, align 8, !tbaa !9
  %48 = getelementptr inbounds i8, ptr %19, i64 16
  store ptr %18, ptr %48, align 8, !tbaa !9
  %49 = getelementptr inbounds i8, ptr %19, i64 24
  store ptr %9, ptr %49, align 8, !tbaa !9
  %50 = getelementptr inbounds i8, ptr %19, i64 32
  store ptr %10, ptr %50, align 8, !tbaa !9
  %51 = getelementptr inbounds i8, ptr %19, i64 40
  store ptr %13, ptr %51, align 8, !tbaa !9
  %52 = getelementptr inbounds i8, ptr %19, i64 48
  store ptr %17, ptr %52, align 8, !tbaa !9
  %53 = getelementptr inbounds i8, ptr %19, i64 56
  store ptr %12, ptr %53, align 8, !tbaa !9
  %54 = getelementptr inbounds i8, ptr %19, i64 64
  store ptr %16, ptr %54, align 8, !tbaa !9
  %55 = getelementptr inbounds i8, ptr %19, i64 72
  store ptr %11, ptr %55, align 8, !tbaa !9
  %56 = getelementptr inbounds i8, ptr %19, i64 80
  store ptr %15, ptr %56, align 8, !tbaa !9
  %57 = getelementptr inbounds i8, ptr %19, i64 88
  store ptr %14, ptr %57, align 8, !tbaa !9
  %58 = getelementptr inbounds i8, ptr %19, i64 96
  store ptr %6, ptr %58, align 8, !tbaa !9
  %59 = getelementptr inbounds i8, ptr %19, i64 104
  store ptr %8, ptr %59, align 8, !tbaa !9
  %60 = getelementptr inbounds i8, ptr %19, i64 112
  store ptr %5, ptr %60, align 8, !tbaa !9
  %61 = getelementptr inbounds i8, ptr %19, i64 120
  store ptr %7, ptr %61, align 8, !tbaa !9
  invoke void @"_ZN11spirv_cross8ParsedIR17for_each_typed_idINS_12SPIRVariableEZNS_12CompilerGLSL27emit_declared_builtin_blockEN3spv12StorageClassENS4_14ExecutionModelEE3$_1EEvRKT0_"(ptr noundef nonnull align 8 dereferenceable(1920) %46, ptr noundef nonnull align 8 dereferenceable(128) %19)
          to label %62 unwind label %70

62:                                               ; preds = %3
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %19) #7
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %20) #7
  %63 = call noundef i64 @_ZNK11spirv_cross6Bitset9get_lowerEv(ptr noundef nonnull align 8 dereferenceable(64) %6)
  %64 = and i64 %63, 27
  call void @_ZN11spirv_cross6BitsetC2Em(ptr noundef nonnull align 8 dereferenceable(64) %20, i64 noundef %64)
  %65 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZN11spirv_cross6BitsetaSEOS0_(ptr noundef nonnull align 8 dereferenceable(64) %6, ptr noundef nonnull align 8 dereferenceable(64) %20) #7
  call void @_ZN11spirv_cross6BitsetD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %20) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %20) #7
  %66 = load i8, ptr %8, align 1, !tbaa !11, !range !17, !noundef !18
  %67 = trunc nuw i8 %66 to i1
  br i1 %67, label %74, label %68

68:                                               ; preds = %62
  %69 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZN11spirv_cross6BitsetaSERKS0_(ptr noundef nonnull align 8 dereferenceable(64) %5, ptr noundef nonnull align 8 dereferenceable(64) %6)
          to label %74 unwind label %72

70:                                               ; preds = %3
  %71 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %19) #7
  br label %302

72:                                               ; preds = %245, %227, %209, %186, %185, %184, %183, %177, %68
  %73 = landingpad { ptr, i32 }
          cleanup
  br label %302

74:                                               ; preds = %68, %62
  %75 = call noundef zeroext i1 @_ZNK11spirv_cross6Bitset5emptyEv(ptr noundef nonnull align 8 dereferenceable(64) %5)
  br i1 %75, label %301, label %76

76:                                               ; preds = %74
  %77 = load i32, ptr %4, align 4, !tbaa !5
  %78 = icmp eq i32 %77, 3
  br i1 %78, label %79, label %177

79:                                               ; preds = %76
  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
  %80 = load i8, ptr %11, align 1, !tbaa !11, !range !17, !noundef !18
  %81 = trunc nuw i8 %80 to i1
  br i1 %81, label %82, label %126

82:                                               ; preds = %79
  %83 = load i8, ptr %13, align 1, !tbaa !11, !range !17, !noundef !18
  %84 = trunc nuw i8 %83 to i1
  br i1 %84, label %85, label %126

85:                                               ; preds = %82
  %86 = getelementptr inbounds i8, ptr %0, i64 7636
  %87 = getelementptr inbounds i8, ptr %0, i64 7640
  %88 = load i8, ptr %87, align 8, !tbaa !19, !range !17, !noundef !18
  %89 = trunc nuw i8 %88 to i1
  br i1 %89, label %119, label %90

90:                                               ; preds = %85
  %91 = load i32, ptr %86, align 4
  %92 = add i32 %91, -140
  %or.cond56 = icmp ult i32 %92, 300
  br i1 %or.cond56, label %93, label %100

93:                                               ; preds = %90
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %22) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %23) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull @.str.205, ptr noundef nonnull align 1 dereferenceable(1) %23)
          to label %94 unwind label %95

94:                                               ; preds = %93
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(32) %22)
          to label %108 unwind label %97

95:                                               ; preds = %93
  %96 = landingpad { ptr, i32 }
          cleanup
  br label %99

97:                                               ; preds = %94
  %98 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #7
  br label %99

99:                                               ; preds = %97, %95
  %.pn = phi { ptr, i32 } [ %98, %97 ], [ %96, %95 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #7
  br label %176

100:                                              ; preds = %90
  %101 = icmp ult i32 %91, 140
  br i1 %101, label %102, label %.thread

102:                                              ; preds = %100
  %103 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %103, ptr noundef nonnull @.str.206)
          to label %.invoke unwind label %104

104:                                              ; preds = %102
  %105 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %103) #7
  br label %176

106:                                              ; preds = %.invoke, %174, %163, %129
  %107 = landingpad { ptr, i32 }
          cleanup
  br label %176

108:                                              ; preds = %94
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #7
  %.pre = load i8, ptr %87, align 8, !tbaa !19, !range !17
  %.pre63 = load i32, ptr %86, align 4
  %109 = trunc nuw i8 %.pre to i1
  %110 = icmp ugt i32 %.pre63, 439
  %or.cond59.not = select i1 %109, i1 true, i1 %110
  br i1 %or.cond59.not, label %.thread, label %111

111:                                              ; preds = %108
  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.205, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %112 unwind label %114

112:                                              ; preds = %111
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(32) %24)
          to label %113 unwind label %116

113:                                              ; preds = %112
  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 %.thread

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

116:                                              ; preds = %112
  %117 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #7
  br label %118

118:                                              ; preds = %116, %114
  %.pn32 = phi { ptr, i32 } [ %117, %116 ], [ %115, %114 ]
  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 %176

119:                                              ; preds = %85
  %120 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %120, ptr noundef nonnull @.str.726)
          to label %.invoke unwind label %121

121:                                              ; preds = %119
  %122 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %120) #7
  br label %176

.thread:                                          ; preds = %100, %108, %113
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %26) #7
  invoke void @_ZN11spirv_cross4joinIJRA14_KcRjRA16_S1_S4_EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %26, ptr noundef nonnull align 1 dereferenceable(14) @.str.268, ptr noundef nonnull align 4 dereferenceable(4) %15, ptr noundef nonnull align 1 dereferenceable(16) @.str.727, ptr noundef nonnull align 4 dereferenceable(4) %14)
          to label %123 unwind label %124

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

124:                                              ; preds = %.thread
  %125 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #7
  br label %176

126:                                              ; preds = %123, %82, %79
  %127 = load i8, ptr %12, align 1, !tbaa !11, !range !17, !noundef !18
  %128 = trunc nuw i8 %127 to i1
  br i1 %128, label %129, label %161

129:                                              ; preds = %126
  %130 = invoke noundef i32 @_ZNK11spirv_cross8Compiler19get_execution_modelEv(ptr noundef nonnull align 8 dereferenceable(3176) %0)
          to label %131 unwind label %106

131:                                              ; preds = %129
  %.not = icmp eq i32 %130, 3
  br i1 %.not, label %136, label %132

132:                                              ; preds = %131
  %133 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %133, ptr noundef nonnull @.str.270)
          to label %.invoke unwind label %134

134:                                              ; preds = %132
  %135 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %133) #7
  br label %176

136:                                              ; preds = %131
  %137 = getelementptr inbounds i8, ptr %0, i64 7640
  %138 = load i8, ptr %137, align 8, !tbaa !19, !range !17, !noundef !18
  %139 = trunc nuw i8 %138 to i1
  br i1 %139, label %140, label %145

140:                                              ; preds = %136
  %141 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %141, ptr noundef nonnull @.str.271)
          to label %.invoke unwind label %143

.invoke:                                          ; preds = %102, %140, %132, %119
  %142 = phi ptr [ %120, %119 ], [ %133, %132 ], [ %141, %140 ], [ %103, %102 ]
  invoke void @__cxa_throw(ptr nonnull %142, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #8
          to label %.cont unwind label %106

.cont:                                            ; preds = %.invoke
  unreachable

143:                                              ; preds = %140
  %144 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %141) #7
  br label %176

145:                                              ; preds = %136
  %146 = getelementptr inbounds i8, ptr %0, i64 7636
  %147 = load i32, ptr %146, align 4, !tbaa !127
  %148 = icmp ult i32 %147, 400
  br i1 %148, label %149, label %157

149:                                              ; preds = %145
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %27) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %28) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull @.str.272, ptr noundef nonnull align 1 dereferenceable(1) %28)
          to label %150 unwind label %152

150:                                              ; preds = %149
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(32) %27)
          to label %151 unwind label %154

151:                                              ; preds = %150
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #7
  br label %157

152:                                              ; preds = %149
  %153 = landingpad { ptr, i32 }
          cleanup
  br label %156

154:                                              ; preds = %150
  %155 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #7
  br label %156

156:                                              ; preds = %154, %152
  %.pn34 = phi { ptr, i32 } [ %155, %154 ], [ %153, %152 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #7
  br label %176

157:                                              ; preds = %151, %145
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %29) #7
  invoke void @_ZN11spirv_cross4joinIJRA10_KcRjEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %29, ptr noundef nonnull align 1 dereferenceable(10) @.str.273, ptr noundef nonnull align 4 dereferenceable(4) %16)
          to label %158 unwind label %159

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

159:                                              ; preds = %157
  %160 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %29) #7
  br label %176

161:                                              ; preds = %158, %126
  %162 = icmp eq i32 %2, 5365
  br i1 %162, label %163, label %164

163:                                              ; preds = %161
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA24_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(24) @.str.728)
          to label %175 unwind label %106

164:                                              ; preds = %161
  %165 = call noundef zeroext i1 @_ZNK11spirv_cross10VectorViewINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %21) #7
  br i1 %165, label %174, label %166

166:                                              ; preds = %164
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %30) #7
  invoke void @_ZN11spirv_cross5mergeERKNS_11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EEEPKc(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %30, ptr noundef nonnull align 8 dereferenceable(280) %21, ptr noundef nonnull @.str.177)
          to label %167 unwind label %169

167:                                              ; preds = %166
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA8_KcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA19_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) %30, ptr noundef nonnull align 1 dereferenceable(19) @.str.729)
          to label %168 unwind label %171

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

169:                                              ; preds = %166
  %170 = landingpad { ptr, i32 }
          cleanup
  br label %173

171:                                              ; preds = %167
  %172 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #7
  br label %173

173:                                              ; preds = %171, %169
  %.pn36 = phi { ptr, i32 } [ %172, %171 ], [ %170, %169 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #7
  br label %176

174:                                              ; preds = %164
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA17_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(17) @.str.730)
          to label %175 unwind label %106

175:                                              ; preds = %168, %174, %163
  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
  br label %185

176:                                              ; preds = %173, %159, %156, %143, %134, %124, %121, %118, %106, %104, %99
  %.pn53 = phi { ptr, i32 } [ %107, %106 ], [ %122, %121 ], [ %135, %134 ], [ %144, %143 ], [ %.pn36, %173 ], [ %160, %159 ], [ %.pn34, %156 ], [ %125, %124 ], [ %.pn32, %118 ], [ %.pn, %99 ], [ %105, %104 ]
  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
  br label %302

177:                                              ; preds = %76
  %178 = invoke noundef nonnull align 8 dereferenceable(237) ptr @_ZN11spirv_cross8Compiler15get_entry_pointEv(ptr noundef nonnull align 8 dereferenceable(3176) %0)
          to label %179 unwind label %72

179:                                              ; preds = %177
  %180 = getelementptr inbounds i8, ptr %178, i64 236
  %181 = load i8, ptr %180, align 4, !tbaa !128, !range !17, !noundef !18
  %182 = trunc nuw i8 %181 to i1
  br i1 %182, label %183, label %184

183:                                              ; preds = %179
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA36_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(36) @.str.731)
          to label %185 unwind label %72

184:                                              ; preds = %179
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA16_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(16) @.str.732)
          to label %185 unwind label %72

185:                                              ; preds = %183, %184, %175
  invoke void @_ZN11spirv_cross12CompilerGLSL11begin_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848) %0)
          to label %186 unwind label %72

186:                                              ; preds = %185
  %187 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %5, i32 noundef 0)
          to label %188 unwind label %72

188:                                              ; preds = %186
  br i1 %187, label %189, label %209

189:                                              ; preds = %188
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %32) #7
  store i32 0, ptr %32, align 4, !tbaa !13
  %190 = invoke ptr @_ZNSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEE4findERS5_(ptr noundef nonnull align 8 dereferenceable(56) %17, ptr noundef nonnull align 4 dereferenceable(4) %32)
          to label %191 unwind label %197

191:                                              ; preds = %189
  store ptr %190, ptr %31, align 8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #7
  %192 = call ptr @_ZSt3endISt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEEEDTcldtfp_3endEERT_(ptr noundef nonnull align 8 dereferenceable(56) %17)
  store ptr %192, ptr %33, align 8
  %193 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKjjELb0EEES6_(ptr noundef nonnull align 8 dereferenceable(8) %31, ptr noundef nonnull align 8 dereferenceable(8) %33) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #7
  br i1 %193, label %194, label %201

194:                                              ; preds = %191
  %195 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKjjELb0ELb0EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %31) #7
  %196 = getelementptr inbounds i8, ptr %195, i64 4
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA21_KcRjRA20_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(21) @.str.733, ptr noundef nonnull align 4 dereferenceable(4) %196, ptr noundef nonnull align 1 dereferenceable(20) @.str.734)
          to label %207 unwind label %199

197:                                              ; preds = %189
  %198 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #7
  br label %208

199:                                              ; preds = %206, %205, %194
  %200 = landingpad { ptr, i32 }
          cleanup
  br label %208

201:                                              ; preds = %191
  %202 = getelementptr inbounds i8, ptr %0, i64 2816
  %203 = load i8, ptr %202, align 8, !tbaa !135, !range !17, !noundef !18
  %204 = trunc nuw i8 %203 to i1
  br i1 %204, label %205, label %206

205:                                              ; preds = %201
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA28_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(28) @.str.735)
          to label %207 unwind label %199

206:                                              ; preds = %201
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA18_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(18) @.str.736)
          to label %207 unwind label %199

207:                                              ; preds = %205, %206, %194
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #7
  br label %209

208:                                              ; preds = %199, %197
  %.pn38 = phi { ptr, i32 } [ %200, %199 ], [ %198, %197 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #7
  br label %302

209:                                              ; preds = %207, %188
  %210 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %5, i32 noundef 1)
          to label %211 unwind label %72

211:                                              ; preds = %209
  br i1 %210, label %212, label %227

212:                                              ; preds = %211
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %35) #7
  store i32 1, ptr %35, align 4, !tbaa !13
  %213 = invoke ptr @_ZNSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEE4findERS5_(ptr noundef nonnull align 8 dereferenceable(56) %17, ptr noundef nonnull align 4 dereferenceable(4) %35)
          to label %214 unwind label %220

214:                                              ; preds = %212
  store ptr %213, ptr %34, align 8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %35) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #7
  %215 = call ptr @_ZSt3endISt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEEEDTcldtfp_3endEERT_(ptr noundef nonnull align 8 dereferenceable(56) %17)
  store ptr %215, ptr %36, align 8
  %216 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKjjELb0EEES6_(ptr noundef nonnull align 8 dereferenceable(8) %34, ptr noundef nonnull align 8 dereferenceable(8) %36) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #7
  br i1 %216, label %217, label %224

217:                                              ; preds = %214
  %218 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKjjELb0ELb0EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %34) #7
  %219 = getelementptr inbounds i8, ptr %218, i64 4
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA21_KcRjRA22_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(21) @.str.733, ptr noundef nonnull align 4 dereferenceable(4) %219, ptr noundef nonnull align 1 dereferenceable(22) @.str.737)
          to label %225 unwind label %222

220:                                              ; preds = %212
  %221 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %35) #7
  br label %226

222:                                              ; preds = %224, %217
  %223 = landingpad { ptr, i32 }
          cleanup
  br label %226

224:                                              ; preds = %214
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA20_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(20) @.str.738)
          to label %225 unwind label %222

225:                                              ; preds = %224, %217
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #7
  br label %227

226:                                              ; preds = %222, %220
  %.pn40 = phi { ptr, i32 } [ %223, %222 ], [ %221, %220 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #7
  br label %302

227:                                              ; preds = %225, %211
  %228 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %5, i32 noundef 3)
          to label %229 unwind label %72

229:                                              ; preds = %227
  br i1 %228, label %230, label %245

230:                                              ; preds = %229
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %38) #7
  store i32 3, ptr %38, align 4, !tbaa !13
  %231 = invoke ptr @_ZNSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEE4findERS5_(ptr noundef nonnull align 8 dereferenceable(56) %17, ptr noundef nonnull align 4 dereferenceable(4) %38)
          to label %232 unwind label %238

232:                                              ; preds = %230
  store ptr %231, ptr %37, align 8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %38) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #7
  %233 = call ptr @_ZSt3endISt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEEEDTcldtfp_3endEERT_(ptr noundef nonnull align 8 dereferenceable(56) %17)
  store ptr %233, ptr %39, align 8
  %234 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKjjELb0EEES6_(ptr noundef nonnull align 8 dereferenceable(8) %37, ptr noundef nonnull align 8 dereferenceable(8) %39) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #7
  br i1 %234, label %235, label %242

235:                                              ; preds = %232
  %236 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKjjELb0ELb0EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %37) #7
  %237 = getelementptr inbounds i8, ptr %236, i64 4
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA21_KcRjRA25_S2_S5_RA3_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(21) @.str.733, ptr noundef nonnull align 4 dereferenceable(4) %237, ptr noundef nonnull align 1 dereferenceable(25) @.str.739, ptr noundef nonnull align 4 dereferenceable(4) %10, ptr noundef nonnull align 1 dereferenceable(3) @.str.309)
          to label %243 unwind label %240

238:                                              ; preds = %230
  %239 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %38) #7
  br label %244

240:                                              ; preds = %242, %235
  %241 = landingpad { ptr, i32 }
          cleanup
  br label %244

242:                                              ; preds = %232
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA23_KcRjRA3_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(23) @.str.740, ptr noundef nonnull align 4 dereferenceable(4) %10, ptr noundef nonnull align 1 dereferenceable(3) @.str.309)
          to label %243 unwind label %240

243:                                              ; preds = %242, %235
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #7
  br label %245

244:                                              ; preds = %240, %238
  %.pn42 = phi { ptr, i32 } [ %241, %240 ], [ %239, %238 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #7
  br label %302

245:                                              ; preds = %243, %229
  %246 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %5, i32 noundef 4)
          to label %247 unwind label %72

247:                                              ; preds = %245
  br i1 %246, label %248, label %263

248:                                              ; preds = %247
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %41) #7
  store i32 4, ptr %41, align 4, !tbaa !13
  %249 = invoke ptr @_ZNSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEE4findERS5_(ptr noundef nonnull align 8 dereferenceable(56) %17, ptr noundef nonnull align 4 dereferenceable(4) %41)
          to label %250 unwind label %256

250:                                              ; preds = %248
  store ptr %249, ptr %40, align 8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %41) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #7
  %251 = call ptr @_ZSt3endISt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEEEDTcldtfp_3endEERT_(ptr noundef nonnull align 8 dereferenceable(56) %17)
  store ptr %251, ptr %42, align 8
  %252 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKjjELb0EEES6_(ptr noundef nonnull align 8 dereferenceable(8) %40, ptr noundef nonnull align 8 dereferenceable(8) %42) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #7
  br i1 %252, label %253, label %260

253:                                              ; preds = %250
  %254 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKjjELb0ELb0EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %40) #7
  %255 = getelementptr inbounds i8, ptr %254, i64 4
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA21_KcRjRA25_S2_S5_RA3_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(21) @.str.733, ptr noundef nonnull align 4 dereferenceable(4) %255, ptr noundef nonnull align 1 dereferenceable(25) @.str.741, ptr noundef nonnull align 4 dereferenceable(4) %9, ptr noundef nonnull align 1 dereferenceable(3) @.str.309)
          to label %261 unwind label %258

256:                                              ; preds = %248
  %257 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %41) #7
  br label %262

258:                                              ; preds = %260, %253
  %259 = landingpad { ptr, i32 }
          cleanup
  br label %262

260:                                              ; preds = %250
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA23_KcRjRA3_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(23) @.str.742, ptr noundef nonnull align 4 dereferenceable(4) %9, ptr noundef nonnull align 1 dereferenceable(3) @.str.309)
          to label %261 unwind label %258

261:                                              ; preds = %260, %253
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #7
  br label %263

262:                                              ; preds = %258, %256
  %.pn44 = phi { ptr, i32 } [ %259, %258 ], [ %257, %256 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #7
  br label %302

263:                                              ; preds = %261, %247
  %264 = icmp eq i32 %2, 1
  %.pre64 = load i32, ptr %4, align 4
  br i1 %264, label %.critedge, label %265

265:                                              ; preds = %263
  %266 = icmp eq i32 %2, 5365
  %267 = icmp eq i32 %.pre64, 3
  %or.cond = select i1 %266, i1 %267, i1 false
  br i1 %or.cond, label %.critedge, label %268

268:                                              ; preds = %265
  %269 = icmp eq i32 %.pre64, 1
  %270 = and i32 %2, -2
  %271 = icmp eq i32 %270, 2
  %or.cond61 = select i1 %271, i1 %269, i1 false
  br i1 %or.cond61, label %.critedge, label %297

.critedge:                                        ; preds = %263, %265, %268
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #7
  %272 = icmp eq i32 %2, 5365
  %273 = icmp eq i32 %.pre64, 1
  %274 = select i1 %273, ptr @.str.744, ptr @.str.745
  %storemerge = select i1 %272, ptr @.str.743, ptr %274
  store ptr %storemerge, ptr %43, align 8, !tbaa !9
  %275 = icmp eq i32 %.pre64, 3
  %or.cond5 = select i1 %264, i1 %275, i1 false
  br i1 %or.cond5, label %276, label %287

276:                                              ; preds = %.critedge
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %44) #7
  %277 = invoke noundef nonnull align 8 dereferenceable(237) ptr @_ZN11spirv_cross8Compiler15get_entry_pointEv(ptr noundef nonnull align 8 dereferenceable(3176) %0)
          to label %278 unwind label %282

278:                                              ; preds = %276
  %279 = getelementptr inbounds i8, ptr %277, i64 224
  invoke void @_ZN11spirv_cross4joinIJRPKcRA2_S1_RjS5_EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %44, ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef nonnull align 1 dereferenceable(2) @.str.308, ptr noundef nonnull align 4 dereferenceable(4) %279, ptr noundef nonnull align 1 dereferenceable(2) @.str.713)
          to label %280 unwind label %282

280:                                              ; preds = %278
  invoke void @_ZN11spirv_cross12CompilerGLSL14end_scope_declERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(32) %44)
          to label %281 unwind label %284

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

282:                                              ; preds = %278, %276
  %283 = landingpad { ptr, i32 }
          cleanup
  br label %286

284:                                              ; preds = %280
  %285 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #7
  br label %286

286:                                              ; preds = %284, %282
  %.pn48 = phi { ptr, i32 } [ %285, %284 ], [ %283, %282 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %44) #7
  br label %296

287:                                              ; preds = %.critedge
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %45) #7
  invoke void @_ZN11spirv_cross4joinIJRPKcRA3_S1_EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %45, ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef nonnull align 1 dereferenceable(3) @.str.746)
          to label %288 unwind label %290

288:                                              ; preds = %287
  invoke void @_ZN11spirv_cross12CompilerGLSL14end_scope_declERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(32) %45)
          to label %289 unwind label %292

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

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

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

294:                                              ; preds = %292, %290
  %.pn46 = phi { ptr, i32 } [ %293, %292 ], [ %291, %290 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %45) #7
  br label %296

295:                                              ; preds = %289, %281
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #7
  br label %300

296:                                              ; preds = %294, %286
  %.pn48.pn = phi { ptr, i32 } [ %.pn48, %286 ], [ %.pn46, %294 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #7
  br label %302

297:                                              ; preds = %268
  invoke void @_ZN11spirv_cross12CompilerGLSL14end_scope_declEv(ptr noundef nonnull align 8 dereferenceable(9848) %0)
          to label %300 unwind label %298

298:                                              ; preds = %300, %297
  %299 = landingpad { ptr, i32 }
          cleanup
  br label %302

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

301:                                              ; preds = %300, %74
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #7
  call void @_ZNSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %17) #7
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %17) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #7
  call void @_ZN11spirv_cross6BitsetD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %6) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %6) #7
  call void @_ZN11spirv_cross6BitsetD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %5) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %5) #7
  ret void

302:                                              ; preds = %296, %298, %262, %244, %226, %208, %176, %72, %70
  %.pn53.pn = phi { ptr, i32 } [ %.pn53, %176 ], [ %.pn44, %262 ], [ %73, %72 ], [ %.pn42, %244 ], [ %.pn40, %226 ], [ %.pn38, %208 ], [ %71, %70 ], [ %299, %298 ], [ %.pn48.pn, %296 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #7
  call void @_ZNSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %17) #7
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %17) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #7
  call void @_ZN11spirv_cross6BitsetD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %6) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %6) #7
  call void @_ZN11spirv_cross6BitsetD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %5) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %5) #7
  resume { ptr, i32 } %.pn53.pn
}

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

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZN11spirv_cross8ParsedIR17for_each_typed_idINS_12SPIRVariableEZNS_12CompilerGLSL27emit_declared_builtin_blockEN3spv12StorageClassENS4_14ExecutionModelEE3$_1EEvRKT0_"(ptr noundef nonnull align 8 dereferenceable(1920), ptr noundef nonnull align 8 dereferenceable(128)) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNK11spirv_cross6Bitset9get_lowerEv(ptr noundef nonnull align 8 dereferenceable(64)) local_unnamed_addr #6 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(64) ptr @_ZN11spirv_cross6BitsetaSEOS0_(ptr noundef nonnull align 8 dereferenceable(64), ptr noundef nonnull align 8 dereferenceable(64)) local_unnamed_addr #6 align 2

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJRA8_KcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA19_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(19)) local_unnamed_addr #5 align 2

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local ptr @_ZSt3endISt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEEEDTcldtfp_3endEERT_(ptr noundef nonnull align 8 dereferenceable(56)) local_unnamed_addr #6

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

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

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

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

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

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

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

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

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


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,SROAPass,SimplifyCFGPass