; 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.spirv_cross::TypedID.283" = type { i32 }
%"class.spirv_cross::TypedID.280" = type { i32 }
%"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::TypedID.282" = type { i32 }
%"struct.spirv_cross::SPIRFunction" = type <{ %"struct.spirv_cross::IVariant.base", %"class.spirv_cross::TypedID.281", %"class.spirv_cross::TypedID.281", [4 x i8], %"class.spirv_cross::SmallVector.298", %"class.spirv_cross::SmallVector.298", %"class.spirv_cross::SmallVector.293", %"class.spirv_cross::TypedID.283", [4 x i8], %"class.spirv_cross::SmallVector.301", %"class.spirv_cross::SmallVector.304", %"struct.spirv_cross::SPIRFunction::EntryLine", %"class.spirv_cross::SmallVector.307", %"class.spirv_cross::SmallVector.307", %"class.spirv_cross::SmallVector.7", i8, i8, i8, [5 x i8] }>
%"struct.spirv_cross::IVariant.base" = type <{ ptr, %"class.spirv_cross::TypedID.280" }>
%"class.spirv_cross::TypedID.281" = type { i32 }
%"class.spirv_cross::SmallVector.298" = type { %"class.spirv_cross::VectorView.299", i64, %"class.spirv_cross::AlignedBuffer.300" }
%"class.spirv_cross::VectorView.299" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.300" = type { [160 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] }
%"class.spirv_cross::SmallVector.301" = type { %"class.spirv_cross::VectorView.302", i64, %"class.spirv_cross::AlignedBuffer.303" }
%"class.spirv_cross::VectorView.302" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.303" = type { [32 x i8] }
%"class.spirv_cross::SmallVector.304" = type { %"class.spirv_cross::VectorView.305", i64, %"class.spirv_cross::AlignedBuffer.306" }
%"class.spirv_cross::VectorView.305" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.306" = type { [128 x i8] }
%"struct.spirv_cross::SPIRFunction::EntryLine" = type { i32, i32 }
%"class.spirv_cross::SmallVector.307" = type <{ %"class.spirv_cross::VectorView.308", i64, [8 x i8] }>
%"class.spirv_cross::VectorView.308" = type { ptr, i64 }
%"class.spirv_cross::SmallVector.7" = type { %"class.spirv_cross::VectorView.8", i64, %"class.spirv_cross::AlignedBuffer.9" }
%"class.spirv_cross::VectorView.8" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.9" = type { [32 x i8] }
%"struct.spirv_cross::SPIRBlock" = type { %"struct.spirv_cross::IVariant.base", i32, i32, i32, %"class.spirv_cross::TypedID.283", %"class.spirv_cross::TypedID.283", %"class.spirv_cross::TypedID.283", %"class.spirv_cross::TypedID.280", %"class.spirv_cross::TypedID.280", %"class.spirv_cross::TypedID.283", %"class.spirv_cross::TypedID.283", %"class.spirv_cross::TypedID.283", %struct.anon, %"class.spirv_cross::SmallVector.369", %"class.spirv_cross::SmallVector.372", %"class.spirv_cross::SmallVector.375", %"class.spirv_cross::SmallVector.375", %"class.spirv_cross::SmallVector.378", %"class.spirv_cross::SmallVector.378", i8, i8, i8, %"class.spirv_cross::TypedID.283", %"class.spirv_cross::TypedID.283", %"class.spirv_cross::SmallVector.293", %"class.spirv_cross::SmallVector.293", %"class.spirv_cross::SmallVector.7" }
%struct.anon = type { [3 x %"class.spirv_cross::TypedID.280"], %"class.spirv_cross::TypedID.280" }
%"class.spirv_cross::SmallVector.369" = type { %"class.spirv_cross::VectorView.370", i64, %"class.spirv_cross::AlignedBuffer.371" }
%"class.spirv_cross::VectorView.370" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.371" = type { [96 x i8] }
%"class.spirv_cross::SmallVector.372" = type { %"class.spirv_cross::VectorView.373", i64, %"class.spirv_cross::AlignedBuffer.374" }
%"class.spirv_cross::VectorView.373" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.374" = type { [96 x i8] }
%"class.spirv_cross::SmallVector.375" = type { %"class.spirv_cross::VectorView.376", i64, %"class.spirv_cross::AlignedBuffer.377" }
%"class.spirv_cross::VectorView.376" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.377" = type { [64 x i8] }
%"class.spirv_cross::SmallVector.378" = type { %"class.spirv_cross::VectorView.379", i64, %"class.spirv_cross::AlignedBuffer.380" }
%"class.spirv_cross::VectorView.379" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.380" = type { [128 x i8] }
%"struct.spirv_cross::Instruction" = type { i16, i16, i32, i32 }
%"class.spirv_cross::Compiler" = type { ptr, %"class.spirv_cross::ParsedIR", %"class.spirv_cross::SmallVector.92", %"class.spirv_cross::SmallVector.92", ptr, ptr, i32, %"class.std::unordered_set.95", i8, %"class.std::unordered_set", i8, i8, %"class.spirv_cross::SmallVector.114", %"class.spirv_cross::SmallVector.92", %"class.std::function", %"class.std::unordered_set", %"class.std::unordered_set", %"class.std::unordered_set", %"class.std::unordered_set", %"class.std::unordered_set", %"class.spirv_cross::Bitset", %"class.spirv_cross::Bitset", i32, i32, i8, %"class.std::unordered_set", i8, i8, i32, %"class.std::unordered_map.117", %"class.spirv_cross::SmallVector.92", %"class.std::unordered_map.131", %"class.std::unordered_set", i8, %"class.std::unordered_map.145" }
%"class.spirv_cross::ParsedIR" = type { %"class.std::unique_ptr", %"class.std::vector", %"class.spirv_cross::SmallVector", %"class.std::unordered_map", [14 x %"class.spirv_cross::SmallVector.7"], %"class.spirv_cross::SmallVector.7", %"class.spirv_cross::SmallVector.7", %"class.std::unordered_map.10", %"class.spirv_cross::SmallVector.24", %"class.spirv_cross::SmallVector.27", %"class.spirv_cross::SmallVector.30", %"class.std::unordered_map.33", %"class.std::unordered_map.52", %"class.spirv_cross::TypedID", %"struct.spirv_cross::ParsedIR::Source", i32, i32, i32, i32, %"class.std::__cxx11::basic_string", %"class.spirv_cross::Bitset", %"class.std::unordered_set" }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.1" }
%"struct.std::_Head_base.1" = type { ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.spirv_cross::SmallVector" = type { %"class.spirv_cross::VectorView", i64, %"class.spirv_cross::AlignedBuffer" }
%"class.spirv_cross::VectorView" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer" = type { [192 x i8] }
%"class.std::unordered_map" = type { %"class.std::_Hashtable" }
%"class.std::_Hashtable" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"class.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.27" = type { %"class.spirv_cross::VectorView.28", i64, %"class.spirv_cross::AlignedBuffer.29" }
%"class.spirv_cross::VectorView.28" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.29" = type { [256 x i8] }
%"class.spirv_cross::SmallVector.30" = type { %"class.spirv_cross::VectorView.31", i64, %"class.spirv_cross::AlignedBuffer.32" }
%"class.spirv_cross::VectorView.31" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.32" = type { [8 x i8] }
%"class.std::unordered_map.33" = type { %"class.std::_Hashtable.34" }
%"class.std::_Hashtable.34" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.52" = type { %"class.std::_Hashtable.53" }
%"class.std::_Hashtable.53" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.spirv_cross::TypedID" = type { i32 }
%"struct.spirv_cross::ParsedIR::Source" = type <{ i32, i8, i8, i8, i8 }>
%"class.std::unordered_set.95" = type { %"class.std::_Hashtable.96" }
%"class.std::_Hashtable.96" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.spirv_cross::SmallVector.114" = type { %"class.spirv_cross::VectorView.115", i64, %"class.spirv_cross::AlignedBuffer.116" }
%"class.spirv_cross::VectorView.115" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.116" = type { [96 x i8] }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%"class.spirv_cross::Bitset" = type { i64, %"class.std::unordered_set" }
%"class.std::unordered_map.117" = type { %"class.std::_Hashtable.118" }
%"class.std::_Hashtable.118" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.spirv_cross::SmallVector.92" = type { %"class.spirv_cross::VectorView.93", i64, %"class.spirv_cross::AlignedBuffer.94" }
%"class.spirv_cross::VectorView.93" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.94" = type { [32 x i8] }
%"class.std::unordered_map.131" = type { %"class.std::_Hashtable.132" }
%"class.std::_Hashtable.132" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_set" = type { %"class.std::_Hashtable.74" }
%"class.std::_Hashtable.74" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.145" = type { %"class.std::_Hashtable.146" }
%"class.std::_Hashtable.146" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.spirv_cross::Meta" = type { %"struct.spirv_cross::Meta::Decoration", %"class.spirv_cross::SmallVector.316", %"class.std::unordered_map.213", i8, i32 }
%"struct.spirv_cross::Meta::Decoration" = type { %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.spirv_cross::Bitset", i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i8, %"struct.spirv_cross::Meta::Decoration::Extended" }
%"struct.spirv_cross::Meta::Decoration::Extended" = type { %"class.spirv_cross::Bitset", [18 x i32] }
%"class.spirv_cross::SmallVector.316" = type <{ %"class.spirv_cross::VectorView.317", i64, [8 x i8] }>
%"class.spirv_cross::VectorView.317" = type { ptr, 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 }
%"struct.spirv_cross::IVariant" = type <{ ptr, %"class.spirv_cross::TypedID.280", [4 x i8] }>
%"struct.spirv_cross::SPIRConstant" = type { %"struct.spirv_cross::IVariant.base", %"class.spirv_cross::TypedID.281", %"struct.spirv_cross::SPIRConstant::ConstantMatrix", i8, i8, i8, %"class.spirv_cross::SmallVector.310", %"class.std::__cxx11::basic_string" }
%"struct.spirv_cross::SPIRConstant::ConstantMatrix" = type { [4 x %"struct.spirv_cross::SPIRConstant::ConstantVector"], [4 x %"class.spirv_cross::TypedID.280"], i32, [4 x i8] }
%"struct.spirv_cross::SPIRConstant::ConstantVector" = type <{ [4 x %"union.spirv_cross::SPIRConstant::Constant"], [4 x %"class.spirv_cross::TypedID.280"], i32, [4 x i8] }>
%"union.spirv_cross::SPIRConstant::Constant" = type { i64 }
%"class.spirv_cross::SmallVector.310" = type { %"class.spirv_cross::VectorView.311", i64, %"class.spirv_cross::AlignedBuffer.312" }
%"class.spirv_cross::VectorView.311" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.312" = type { [32 x i8] }
%"struct.spirv_cross::SPIRVariable" = type { %"struct.spirv_cross::IVariant.base", %"class.spirv_cross::TypedID.281", i32, i32, %"class.spirv_cross::TypedID.280", %"class.spirv_cross::TypedID.282", %"class.spirv_cross::SmallVector.92", i8, i8, %"class.spirv_cross::TypedID.280", %"class.spirv_cross::SmallVector.7", i8, i8, i8, i8, i32, %"class.spirv_cross::TypedID.283", i8, i8, i8, ptr }
%"class.std::function.349" = type { %"class.std::_Function_base", 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 }

@.str.9 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.286 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.298 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.335 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.1616 = external hidden unnamed_addr constant [12 x i8], align 1

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11spirv_cross12CompilerGLSL13emit_functionERNS_12SPIRFunctionERKNS_6BitsetE(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(795) %1, ptr noundef nonnull align 8 dereferenceable(64) %2) #1 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca %"class.spirv_cross::TypedID.283", align 4
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca %"class.spirv_cross::TypedID.280", align 4
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  %29 = alloca %"class.std::__cxx11::basic_string", align 8
  %30 = alloca ptr, align 8
  %31 = alloca i32, align 4
  %32 = alloca %"class.std::__cxx11::basic_string", align 8
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca ptr, align 8
  %37 = alloca ptr, align 8
  %38 = alloca %"class.std::__cxx11::basic_string", align 8
  %39 = alloca %"class.std::__cxx11::basic_string", align 8
  %40 = alloca ptr, align 8
  %41 = alloca %"class.spirv_cross::TypedID.282", align 4
  %42 = alloca %"class.std::__cxx11::basic_string", align 8
  %43 = alloca %"class.spirv_cross::TypedID.280", align 4
  %44 = alloca ptr, align 8
  %45 = alloca ptr, align 8
  %46 = alloca ptr, align 8
  %47 = alloca ptr, align 8
  %48 = alloca ptr, align 8
  %49 = alloca ptr, align 8
  %50 = alloca ptr, align 8
  %51 = alloca ptr, align 8
  %52 = alloca ptr, align 8
  %53 = alloca ptr, align 8
  %54 = alloca ptr, align 8
  %55 = alloca ptr, align 8
  %56 = alloca ptr, align 8
  %57 = alloca ptr, align 8
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  store ptr %2, ptr %6, align 8, !tbaa !5
  %58 = load ptr, ptr %4, align 8
  %59 = load ptr, ptr %5, align 8, !tbaa !5
  %60 = getelementptr inbounds %"struct.spirv_cross::SPIRFunction", ptr %59, i32 0, i32 15
  %61 = load i8, ptr %60, align 8, !tbaa !9, !range !37, !noundef !38
  %62 = trunc i8 %61 to i1
  br i1 %62, label %63, label %64

63:                                               ; preds = %3
  br label %455

64:                                               ; preds = %3
  %65 = load ptr, ptr %5, align 8, !tbaa !5
  %66 = getelementptr inbounds %"struct.spirv_cross::SPIRFunction", ptr %65, i32 0, i32 15
  store i8 1, ptr %66, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #7
  %67 = load ptr, ptr %5, align 8, !tbaa !5
  %68 = getelementptr inbounds %"struct.spirv_cross::SPIRFunction", ptr %67, i32 0, i32 9
  store ptr %68, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #7
  %69 = load ptr, ptr %7, align 8, !tbaa !5
  %70 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_7TypedIDILNS_5TypesE6EEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %69) #7
  store ptr %70, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #7
  %71 = load ptr, ptr %7, align 8, !tbaa !5
  %72 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_7TypedIDILNS_5TypesE6EEEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %71) #7
  store ptr %72, ptr %9, align 8, !tbaa !5
  br label %73

73:                                               ; preds = %122, %64
  %74 = load ptr, ptr %8, align 8, !tbaa !5
  %75 = load ptr, ptr %9, align 8, !tbaa !5
  %76 = icmp ne ptr %74, %75
  br i1 %76, label %78, label %77

77:                                               ; preds = %73
  store i32 2, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #7
  br label %125

78:                                               ; preds = %73
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #7
  %79 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %11, ptr align 4 %79, i64 4, i1 false), !tbaa.struct !39
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #7
  %80 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE6EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %11)
  %81 = call noundef nonnull align 8 dereferenceable(976) ptr @_ZN11spirv_cross8Compiler3getINS_9SPIRBlockEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %58, i32 noundef %80)
  store ptr %81, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #7
  %82 = load ptr, ptr %12, align 8, !tbaa !5
  %83 = getelementptr inbounds %"struct.spirv_cross::SPIRBlock", ptr %82, i32 0, i32 13
  store ptr %83, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #7
  %84 = load ptr, ptr %13, align 8, !tbaa !5
  %85 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_11InstructionEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %84) #7
  store ptr %85, ptr %14, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #7
  %86 = load ptr, ptr %13, align 8, !tbaa !5
  %87 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_11InstructionEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %86) #7
  store ptr %87, ptr %15, align 8, !tbaa !5
  br label %88

88:                                               ; preds = %118, %78
  %89 = load ptr, ptr %14, align 8, !tbaa !5
  %90 = load ptr, ptr %15, align 8, !tbaa !5
  %91 = icmp ne ptr %89, %90
  br i1 %91, label %93, label %92

92:                                               ; preds = %88
  store i32 4, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #7
  br label %121

93:                                               ; preds = %88
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #7
  %94 = load ptr, ptr %14, align 8, !tbaa !5
  store ptr %94, ptr %16, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #7
  %95 = load ptr, ptr %16, align 8, !tbaa !5
  %96 = call noundef ptr @_ZNK11spirv_cross8Compiler6streamERKNS_11InstructionE(ptr noundef nonnull align 8 dereferenceable(3176) %58, ptr noundef nonnull align 4 dereferenceable(12) %95)
  store ptr %96, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #7
  %97 = load ptr, ptr %16, align 8, !tbaa !5
  %98 = getelementptr inbounds %"struct.spirv_cross::Instruction", ptr %97, i32 0, i32 0
  %99 = load i16, ptr %98, align 4, !tbaa !41
  %100 = zext i16 %99 to i32
  store i32 %100, ptr %18, align 4, !tbaa !44
  %101 = load i32, ptr %18, align 4, !tbaa !44
  %102 = icmp eq i32 %101, 57
  br i1 %102, label %103, label %117

103:                                              ; preds = %93
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #7
  %104 = load ptr, ptr %17, align 8, !tbaa !5
  %105 = getelementptr inbounds i32, ptr %104, i64 2
  %106 = load i32, ptr %105, align 4, !tbaa !40
  store i32 %106, ptr %19, align 4, !tbaa !40
  %107 = load i32, ptr %19, align 4, !tbaa !40
  %108 = call noundef nonnull align 8 dereferenceable(795) ptr @_ZN11spirv_cross8Compiler3getINS_12SPIRFunctionEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %58, i32 noundef %107)
  %109 = getelementptr inbounds %"class.spirv_cross::Compiler", ptr %58, i32 0, i32 1
  %110 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %109, i32 0, i32 3
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #7
  %111 = load ptr, ptr %17, align 8, !tbaa !5
  %112 = getelementptr inbounds i32, ptr %111, i64 1
  %113 = load i32, ptr %112, align 4, !tbaa !40
  call void @_ZN11spirv_cross7TypedIDILNS_5TypesE0EEC2Ej(ptr noundef nonnull align 4 dereferenceable(4) %20, i32 noundef %113)
  %114 = call noundef nonnull align 8 dereferenceable(488) ptr @_ZNSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE0EEENS0_4MetaESt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S4_EEEixEOS3_(ptr noundef nonnull align 8 dereferenceable(56) %110, ptr noundef nonnull align 4 dereferenceable(4) %20)
  %115 = getelementptr inbounds %"struct.spirv_cross::Meta", ptr %114, i32 0, i32 0
  %116 = getelementptr inbounds %"struct.spirv_cross::Meta::Decoration", ptr %115, i32 0, i32 4
  call void @_ZN11spirv_cross12CompilerGLSL13emit_functionERNS_12SPIRFunctionERKNS_6BitsetE(ptr noundef nonnull align 8 dereferenceable(9848) %58, ptr noundef nonnull align 8 dereferenceable(795) %108, ptr noundef nonnull align 8 dereferenceable(64) %116)
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #7
  br label %117

117:                                              ; preds = %103, %93
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #7
  br label %118

118:                                              ; preds = %117
  %119 = load ptr, ptr %14, align 8, !tbaa !5
  %120 = getelementptr inbounds %"struct.spirv_cross::Instruction", ptr %119, i32 1
  store ptr %120, ptr %14, align 8, !tbaa !5
  br label %88

121:                                              ; preds = %92
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #7
  br label %122

122:                                              ; preds = %121
  %123 = load ptr, ptr %8, align 8, !tbaa !5
  %124 = getelementptr inbounds %"class.spirv_cross::TypedID.283", ptr %123, i32 1
  store ptr %124, ptr %8, align 8, !tbaa !5
  br label %73

125:                                              ; preds = %77
  %126 = load ptr, ptr %5, align 8, !tbaa !5
  %127 = getelementptr inbounds %"struct.spirv_cross::SPIRFunction", ptr %126, i32 0, i32 11
  %128 = getelementptr inbounds %"struct.spirv_cross::SPIRFunction::EntryLine", ptr %127, i32 0, i32 0
  %129 = load i32, ptr %128, align 8, !tbaa !46
  %130 = icmp ne i32 %129, 0
  br i1 %130, label %131, label %140

131:                                              ; preds = %125
  %132 = load ptr, ptr %5, align 8, !tbaa !5
  %133 = getelementptr inbounds %"struct.spirv_cross::SPIRFunction", ptr %132, i32 0, i32 11
  %134 = getelementptr inbounds %"struct.spirv_cross::SPIRFunction::EntryLine", ptr %133, i32 0, i32 0
  %135 = load i32, ptr %134, align 8, !tbaa !46
  %136 = load ptr, ptr %5, align 8, !tbaa !5
  %137 = getelementptr inbounds %"struct.spirv_cross::SPIRFunction", ptr %136, i32 0, i32 11
  %138 = getelementptr inbounds %"struct.spirv_cross::SPIRFunction::EntryLine", ptr %137, i32 0, i32 1
  %139 = load i32, ptr %138, align 4, !tbaa !47
  call void @_ZN11spirv_cross12CompilerGLSL19emit_line_directiveEjj(ptr noundef nonnull align 8 dereferenceable(9848) %58, i32 noundef %135, i32 noundef %139)
  br label %140

140:                                              ; preds = %131, %125
  %141 = load ptr, ptr %5, align 8, !tbaa !5
  %142 = load ptr, ptr %6, align 8, !tbaa !5
  %143 = load ptr, ptr %58, align 8, !tbaa !48
  %144 = getelementptr inbounds ptr, ptr %143, i64 7
  %145 = load ptr, ptr %144, align 8
  call void %145(ptr noundef nonnull align 8 dereferenceable(9848) %58, ptr noundef nonnull align 8 dereferenceable(795) %141, ptr noundef nonnull align 8 dereferenceable(64) %142)
  call void @_ZN11spirv_cross12CompilerGLSL11begin_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848) %58)
  %146 = load ptr, ptr %5, align 8, !tbaa !5
  %147 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %146, i32 0, i32 1
  %148 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %147)
  %149 = getelementptr inbounds %"class.spirv_cross::Compiler", ptr %58, i32 0, i32 1
  %150 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %149, i32 0, i32 13
  %151 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE4EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %150)
  %152 = icmp eq i32 %148, %151
  br i1 %152, label %153, label %157

153:                                              ; preds = %140
  %154 = load ptr, ptr %58, align 8, !tbaa !48
  %155 = getelementptr inbounds ptr, ptr %154, i64 61
  %156 = load ptr, ptr %155, align 8
  call void %156(ptr noundef nonnull align 8 dereferenceable(9848) %58)
  br label %157

157:                                              ; preds = %153, %140
  %158 = load ptr, ptr %5, align 8, !tbaa !5
  %159 = getelementptr inbounds %"class.spirv_cross::Compiler", ptr %58, i32 0, i32 4
  store ptr %158, ptr %159, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #7
  %160 = load ptr, ptr %5, align 8, !tbaa !5
  %161 = getelementptr inbounds %"struct.spirv_cross::SPIRFunction", ptr %160, i32 0, i32 7
  %162 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE6EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %161)
  %163 = call noundef nonnull align 8 dereferenceable(976) ptr @_ZN11spirv_cross8Compiler3getINS_9SPIRBlockEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %58, i32 noundef %162)
  store ptr %163, ptr %21, align 8, !tbaa !5
  %164 = load ptr, ptr %5, align 8, !tbaa !5
  %165 = getelementptr inbounds %"struct.spirv_cross::SPIRFunction", ptr %164, i32 0, i32 14
  %166 = call noundef ptr @_ZSt5beginIN11spirv_cross11SmallVectorINS0_7TypedIDILNS0_5TypesE0EEELm8EEEEDTcldtfp_5beginEERT_(ptr noundef nonnull align 8 dereferenceable(56) %165)
  %167 = load ptr, ptr %5, align 8, !tbaa !5
  %168 = getelementptr inbounds %"struct.spirv_cross::SPIRFunction", ptr %167, i32 0, i32 14
  %169 = call noundef ptr @_ZSt3endIN11spirv_cross11SmallVectorINS0_7TypedIDILNS0_5TypesE0EEELm8EEEEDTcldtfp_3endEERT_(ptr noundef nonnull align 8 dereferenceable(56) %168)
  call void @_ZSt4sortIPN11spirv_cross7TypedIDILNS0_5TypesE0EEEEvT_S5_(ptr noundef %166, ptr noundef %169)
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #7
  %170 = load ptr, ptr %5, align 8, !tbaa !5
  %171 = getelementptr inbounds %"struct.spirv_cross::SPIRFunction", ptr %170, i32 0, i32 14
  store ptr %171, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #7
  %172 = load ptr, ptr %22, align 8, !tbaa !5
  %173 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_7TypedIDILNS_5TypesE0EEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %172) #7
  store ptr %173, ptr %23, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #7
  %174 = load ptr, ptr %22, align 8, !tbaa !5
  %175 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_7TypedIDILNS_5TypesE0EEEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %174) #7
  store ptr %175, ptr %24, align 8, !tbaa !5
  br label %176

176:                                              ; preds = %199, %157
  %177 = load ptr, ptr %23, align 8, !tbaa !5
  %178 = load ptr, ptr %24, align 8, !tbaa !5
  %179 = icmp ne ptr %177, %178
  br i1 %179, label %181, label %180

180:                                              ; preds = %176
  store i32 6, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #7
  br label %216

181:                                              ; preds = %176
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #7
  %182 = load ptr, ptr %23, align 8, !tbaa !5
  store ptr %182, ptr %25, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #7
  %183 = load ptr, ptr %25, align 8, !tbaa !5
  %184 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %183)
  %185 = call noundef nonnull align 8 dereferenceable(360) ptr @_ZN11spirv_cross8Compiler3getINS_12SPIRConstantEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %58, i32 noundef %184)
  store ptr %185, ptr %26, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #7
  %186 = load ptr, ptr %26, align 8, !tbaa !5
  %187 = getelementptr inbounds %"struct.spirv_cross::SPIRConstant", ptr %186, i32 0, i32 1
  %188 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE1EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %187)
  %189 = call noundef nonnull align 8 dereferenceable(336) ptr @_ZN11spirv_cross8Compiler3getINS_8SPIRTypeEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %58, i32 noundef %188)
  store ptr %189, ptr %27, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %28) #7
  %190 = load ptr, ptr %27, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %29) #7
  %191 = load ptr, ptr %25, align 8, !tbaa !5
  call void @_ZN11spirv_cross4joinIJRA2_KcRNS_7TypedIDILNS_5TypesE0EEERA12_S1_EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %29, ptr noundef nonnull align 1 dereferenceable(2) @.str.286, ptr noundef nonnull align 4 dereferenceable(4) %191, ptr noundef nonnull align 1 dereferenceable(12) @.str.1616)
  %192 = load ptr, ptr %58, align 8, !tbaa !48
  %193 = getelementptr inbounds ptr, ptr %192, i64 27
  %194 = load ptr, ptr %193, align 8
  invoke void %194(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %28, ptr noundef nonnull align 8 dereferenceable(9848) %58, ptr noundef nonnull align 8 dereferenceable(336) %190, ptr noundef nonnull align 8 dereferenceable(32) %29, i32 noundef 0)
          to label %195 unwind label %202

195:                                              ; preds = %181
  call void @llvm.lifetime.start.p0(i64 32, ptr %32) #7
  %196 = load ptr, ptr %26, align 8, !tbaa !5
  invoke void @_ZN11spirv_cross12CompilerGLSL19constant_expressionB5cxx11ERKNS_12SPIRConstantEbb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %32, ptr noundef nonnull align 8 dereferenceable(9848) %58, ptr noundef nonnull align 8 dereferenceable(360) %196, i1 noundef zeroext false, i1 noundef zeroext false)
          to label %197 unwind label %206

197:                                              ; preds = %195
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA4_KcS7_RA2_S8_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %58, ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef nonnull align 1 dereferenceable(4) @.str.335, ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef nonnull align 1 dereferenceable(2) @.str.298)
          to label %198 unwind label %210

198:                                              ; preds = %197
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #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 %29) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  br label %199

199:                                              ; preds = %198
  %200 = load ptr, ptr %23, align 8, !tbaa !5
  %201 = getelementptr inbounds %"class.spirv_cross::TypedID.280", ptr %200, i32 1
  store ptr %201, ptr %23, align 8, !tbaa !5
  br label %176

202:                                              ; preds = %181
  %203 = landingpad { ptr, i32 }
          cleanup
  %204 = extractvalue { ptr, i32 } %203, 0
  store ptr %204, ptr %30, align 8
  %205 = extractvalue { ptr, i32 } %203, 1
  store i32 %205, ptr %31, align 4
  br label %215

206:                                              ; preds = %195
  %207 = landingpad { ptr, i32 }
          cleanup
  %208 = extractvalue { ptr, i32 } %207, 0
  store ptr %208, ptr %30, align 8
  %209 = extractvalue { ptr, i32 } %207, 1
  store i32 %209, ptr %31, align 4
  br label %214

210:                                              ; preds = %197
  %211 = landingpad { ptr, i32 }
          cleanup
  %212 = extractvalue { ptr, i32 } %211, 0
  store ptr %212, ptr %30, align 8
  %213 = extractvalue { ptr, i32 } %211, 1
  store i32 %213, ptr %31, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #7
  br label %214

214:                                              ; preds = %210, %206
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #7
  br label %215

215:                                              ; preds = %214, %202
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #7
  br label %456

216:                                              ; preds = %180
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #7
  %217 = load ptr, ptr %5, align 8, !tbaa !5
  %218 = getelementptr inbounds %"struct.spirv_cross::SPIRFunction", ptr %217, i32 0, i32 6
  store ptr %218, ptr %33, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #7
  %219 = load ptr, ptr %33, align 8, !tbaa !5
  %220 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_7TypedIDILNS_5TypesE2EEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %219) #7
  store ptr %220, ptr %34, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #7
  %221 = load ptr, ptr %33, align 8, !tbaa !5
  %222 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_7TypedIDILNS_5TypesE2EEEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %221) #7
  store ptr %222, ptr %35, align 8, !tbaa !5
  br label %223

223:                                              ; preds = %381, %216
  %224 = load ptr, ptr %34, align 8, !tbaa !5
  %225 = load ptr, ptr %35, align 8, !tbaa !5
  %226 = icmp ne ptr %224, %225
  br i1 %226, label %228, label %227

227:                                              ; preds = %223
  store i32 8, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #7
  br label %385

228:                                              ; preds = %223
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #7
  %229 = load ptr, ptr %34, align 8, !tbaa !5
  store ptr %229, ptr %36, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #7
  %230 = load ptr, ptr %36, align 8, !tbaa !5
  %231 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE2EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %230)
  %232 = call noundef nonnull align 8 dereferenceable(176) ptr @_ZN11spirv_cross8Compiler3getINS_12SPIRVariableEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %58, i32 noundef %231)
  store ptr %232, ptr %37, align 8, !tbaa !5
  %233 = load ptr, ptr %37, align 8, !tbaa !5
  %234 = getelementptr inbounds %"struct.spirv_cross::SPIRVariable", ptr %233, i32 0, i32 11
  store i8 0, ptr %234, align 8, !tbaa !111
  %235 = load ptr, ptr %37, align 8, !tbaa !5
  %236 = getelementptr inbounds %"struct.spirv_cross::SPIRVariable", ptr %235, i32 0, i32 2
  %237 = load i32, ptr %236, align 8, !tbaa !115
  %238 = icmp eq i32 %237, 5402
  br i1 %238, label %239, label %240

239:                                              ; preds = %228
  store i32 9, ptr %10, align 4
  br label %375

240:                                              ; preds = %228
  %241 = load ptr, ptr %37, align 8, !tbaa !5
  %242 = load ptr, ptr %58, align 8, !tbaa !48
  %243 = getelementptr inbounds ptr, ptr %242, i64 28
  %244 = load ptr, ptr %243, align 8
  %245 = call noundef zeroext i1 %244(ptr noundef nonnull align 8 dereferenceable(9848) %58, ptr noundef nonnull align 8 dereferenceable(176) %241, i32 noundef 4)
  br i1 %245, label %246, label %261

246:                                              ; preds = %240
  %247 = load ptr, ptr %37, align 8, !tbaa !5
  %248 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %247, i32 0, i32 1
  %249 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %248)
  call void @_ZN11spirv_cross12CompilerGLSL23add_local_variable_nameEj(ptr noundef nonnull align 8 dereferenceable(9848) %58, i32 noundef %249)
  call void @llvm.lifetime.start.p0(i64 32, ptr %38) #7
  %250 = load ptr, ptr %37, align 8, !tbaa !5
  %251 = load ptr, ptr %58, align 8, !tbaa !48
  %252 = getelementptr inbounds ptr, ptr %251, i64 39
  %253 = load ptr, ptr %252, align 8
  call void %253(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %38, ptr noundef nonnull align 8 dereferenceable(9848) %58, ptr noundef nonnull align 8 dereferenceable(176) %250)
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %58, ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef nonnull align 1 dereferenceable(2) @.str.298)
          to label %254 unwind label %257

254:                                              ; preds = %246
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #7
  %255 = load ptr, ptr %37, align 8, !tbaa !5
  %256 = getelementptr inbounds %"struct.spirv_cross::SPIRVariable", ptr %255, i32 0, i32 11
  store i8 0, ptr %256, align 8, !tbaa !111
  br label %362

257:                                              ; preds = %246
  %258 = landingpad { ptr, i32 }
          cleanup
  %259 = extractvalue { ptr, i32 } %258, 0
  store ptr %259, ptr %30, align 8
  %260 = extractvalue { ptr, i32 } %258, 1
  store i32 %260, ptr %31, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #7
  br label %384

261:                                              ; preds = %240
  %262 = load ptr, ptr %37, align 8, !tbaa !5
  %263 = getelementptr inbounds %"struct.spirv_cross::SPIRVariable", ptr %262, i32 0, i32 2
  %264 = load i32, ptr %263, align 8, !tbaa !115
  %265 = icmp eq i32 %264, 6
  br i1 %265, label %266, label %310

266:                                              ; preds = %261
  %267 = load ptr, ptr %37, align 8, !tbaa !5
  %268 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %267, i32 0, i32 1
  %269 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %268)
  call void @_ZN11spirv_cross12CompilerGLSL23add_local_variable_nameEj(ptr noundef nonnull align 8 dereferenceable(9848) %58, i32 noundef %269)
  %270 = load ptr, ptr %37, align 8, !tbaa !5
  %271 = getelementptr inbounds %"struct.spirv_cross::SPIRVariable", ptr %270, i32 0, i32 4
  %272 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %271)
  %273 = icmp ne i32 %272, 0
  br i1 %273, label %274, label %286

274:                                              ; preds = %266
  call void @llvm.lifetime.start.p0(i64 32, ptr %39) #7
  %275 = load ptr, ptr %37, align 8, !tbaa !5
  %276 = load ptr, ptr %58, align 8, !tbaa !48
  %277 = getelementptr inbounds ptr, ptr %276, i64 39
  %278 = load ptr, ptr %277, align 8
  call void %278(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %39, ptr noundef nonnull align 8 dereferenceable(9848) %58, ptr noundef nonnull align 8 dereferenceable(176) %275)
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %58, ptr noundef nonnull align 8 dereferenceable(32) %39, ptr noundef nonnull align 1 dereferenceable(2) @.str.298)
          to label %279 unwind label %282

279:                                              ; preds = %274
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %39) #7
  %280 = load ptr, ptr %37, align 8, !tbaa !5
  %281 = getelementptr inbounds %"struct.spirv_cross::SPIRVariable", ptr %280, i32 0, i32 11
  store i8 0, ptr %281, align 8, !tbaa !111
  br label %309

282:                                              ; preds = %274
  %283 = landingpad { ptr, i32 }
          cleanup
  %284 = extractvalue { ptr, i32 } %283, 0
  store ptr %284, ptr %30, align 8
  %285 = extractvalue { ptr, i32 } %283, 1
  store i32 %285, ptr %31, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %39) #7
  br label %384

286:                                              ; preds = %266
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #7
  %287 = load ptr, ptr %21, align 8, !tbaa !5
  %288 = getelementptr inbounds %"struct.spirv_cross::SPIRBlock", ptr %287, i32 0, i32 24
  store ptr %288, ptr %40, align 8, !tbaa !5
  %289 = load ptr, ptr %40, align 8, !tbaa !5
  %290 = call noundef ptr @_ZSt5beginIN11spirv_cross11SmallVectorINS0_7TypedIDILNS0_5TypesE2EEELm8EEEEDTcldtfp_5beginEERT_(ptr noundef nonnull align 8 dereferenceable(56) %289)
  %291 = load ptr, ptr %40, align 8, !tbaa !5
  %292 = call noundef ptr @_ZSt3endIN11spirv_cross11SmallVectorINS0_7TypedIDILNS0_5TypesE2EEELm8EEEEDTcldtfp_3endEERT_(ptr noundef nonnull align 8 dereferenceable(56) %291)
  %293 = load ptr, ptr %37, align 8, !tbaa !5
  %294 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %293, i32 0, i32 1
  %295 = call noundef ptr @_ZSt4findIPN11spirv_cross7TypedIDILNS0_5TypesE2EEENS1_ILS2_0EEEET_S6_S6_RKT0_(ptr noundef %290, ptr noundef %292, ptr noundef nonnull align 4 dereferenceable(4) %294)
  %296 = load ptr, ptr %40, align 8, !tbaa !5
  %297 = call noundef ptr @_ZSt3endIN11spirv_cross11SmallVectorINS0_7TypedIDILNS0_5TypesE2EEELm8EEEEDTcldtfp_3endEERT_(ptr noundef nonnull align 8 dereferenceable(56) %296)
  %298 = icmp eq ptr %295, %297
  br i1 %298, label %299, label %306

299:                                              ; preds = %286
  %300 = load ptr, ptr %21, align 8, !tbaa !5
  %301 = getelementptr inbounds %"struct.spirv_cross::SPIRBlock", ptr %300, i32 0, i32 24
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #7
  %302 = load ptr, ptr %37, align 8, !tbaa !5
  %303 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %302, i32 0, i32 1
  %304 = call i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvNS0_IXT_EEEILS1_2EEEv(ptr noundef nonnull align 4 dereferenceable(4) %303)
  %305 = getelementptr inbounds %"class.spirv_cross::TypedID.282", ptr %41, i32 0, i32 0
  store i32 %304, ptr %305, align 4
  call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE2EEELm8EE9push_backEOS3_(ptr noundef nonnull align 8 dereferenceable(56) %301, ptr noundef nonnull align 4 dereferenceable(4) %41) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #7
  br label %306

306:                                              ; preds = %299, %286
  %307 = load ptr, ptr %37, align 8, !tbaa !5
  %308 = getelementptr inbounds %"struct.spirv_cross::SPIRVariable", ptr %307, i32 0, i32 11
  store i8 1, ptr %308, align 8, !tbaa !111
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #7
  br label %309

309:                                              ; preds = %306, %279
  br label %361

310:                                              ; preds = %261
  %311 = load ptr, ptr %37, align 8, !tbaa !5
  %312 = getelementptr inbounds %"struct.spirv_cross::SPIRVariable", ptr %311, i32 0, i32 2
  %313 = load i32, ptr %312, align 8, !tbaa !115
  %314 = icmp eq i32 %313, 7
  br i1 %314, label %315, label %328

315:                                              ; preds = %310
  %316 = load ptr, ptr %37, align 8, !tbaa !5
  %317 = getelementptr inbounds %"struct.spirv_cross::SPIRVariable", ptr %316, i32 0, i32 14
  %318 = load i8, ptr %317, align 1, !tbaa !116, !range !37, !noundef !38
  %319 = trunc i8 %318 to i1
  br i1 %319, label %320, label %328

320:                                              ; preds = %315
  %321 = load ptr, ptr %37, align 8, !tbaa !5
  %322 = getelementptr inbounds %"struct.spirv_cross::SPIRVariable", ptr %321, i32 0, i32 9
  %323 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %322)
  %324 = icmp ne i32 %323, 0
  br i1 %324, label %325, label %328

325:                                              ; preds = %320
  %326 = load ptr, ptr %37, align 8, !tbaa !5
  %327 = getelementptr inbounds %"struct.spirv_cross::SPIRVariable", ptr %326, i32 0, i32 11
  store i8 0, ptr %327, align 8, !tbaa !111
  br label %360

328:                                              ; preds = %320, %315, %310
  %329 = load ptr, ptr %36, align 8, !tbaa !5
  %330 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE2EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %329)
  %331 = call noundef zeroext i1 @_ZNK11spirv_cross8Compiler20expression_is_lvalueEj(ptr noundef nonnull align 8 dereferenceable(3176) %58, i32 noundef %330)
  br i1 %331, label %332, label %356

332:                                              ; preds = %328
  %333 = load ptr, ptr %37, align 8, !tbaa !5
  %334 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %333, i32 0, i32 1
  %335 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %334)
  call void @_ZN11spirv_cross12CompilerGLSL23add_local_variable_nameEj(ptr noundef nonnull align 8 dereferenceable(9848) %58, i32 noundef %335)
  %336 = load ptr, ptr %37, align 8, !tbaa !5
  %337 = getelementptr inbounds %"struct.spirv_cross::SPIRVariable", ptr %336, i32 0, i32 4
  %338 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %337)
  %339 = icmp ne i32 %338, 0
  br i1 %339, label %340, label %352

340:                                              ; preds = %332
  %341 = load ptr, ptr %37, align 8, !tbaa !5
  %342 = getelementptr inbounds %"struct.spirv_cross::SPIRVariable", ptr %341, i32 0, i32 17
  %343 = load i8, ptr %342, align 4, !tbaa !117, !range !37, !noundef !38
  %344 = trunc i8 %343 to i1
  br i1 %344, label %352, label %345

345:                                              ; preds = %340
  call void @llvm.lifetime.start.p0(i64 32, ptr %42) #7
  %346 = load ptr, ptr %37, align 8, !tbaa !5
  call void @_ZN11spirv_cross12CompilerGLSL28variable_decl_function_localB5cxx11ERNS_12SPIRVariableE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %42, ptr noundef nonnull align 8 dereferenceable(9848) %58, ptr noundef nonnull align 8 dereferenceable(176) %346)
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %58, ptr noundef nonnull align 8 dereferenceable(32) %42, ptr noundef nonnull align 1 dereferenceable(2) @.str.298)
          to label %347 unwind label %348

347:                                              ; preds = %345
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %42) #7
  br label %355

348:                                              ; preds = %345
  %349 = landingpad { ptr, i32 }
          cleanup
  %350 = extractvalue { ptr, i32 } %349, 0
  store ptr %350, ptr %30, align 8
  %351 = extractvalue { ptr, i32 } %349, 1
  store i32 %351, ptr %31, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %42) #7
  br label %384

352:                                              ; preds = %340, %332
  %353 = load ptr, ptr %37, align 8, !tbaa !5
  %354 = getelementptr inbounds %"struct.spirv_cross::SPIRVariable", ptr %353, i32 0, i32 11
  store i8 1, ptr %354, align 8, !tbaa !111
  br label %355

355:                                              ; preds = %352, %347
  br label %359

356:                                              ; preds = %328
  %357 = load ptr, ptr %37, align 8, !tbaa !5
  %358 = getelementptr inbounds %"struct.spirv_cross::SPIRVariable", ptr %357, i32 0, i32 8
  store i8 1, ptr %358, align 1, !tbaa !118
  br label %359

359:                                              ; preds = %356, %355
  br label %360

360:                                              ; preds = %359, %325
  br label %361

361:                                              ; preds = %360, %309
  br label %362

362:                                              ; preds = %361, %254
  %363 = load ptr, ptr %37, align 8, !tbaa !5
  %364 = getelementptr inbounds %"struct.spirv_cross::SPIRVariable", ptr %363, i32 0, i32 18
  store i8 0, ptr %364, align 1, !tbaa !119
  %365 = load ptr, ptr %37, align 8, !tbaa !5
  %366 = getelementptr inbounds %"struct.spirv_cross::SPIRVariable", ptr %365, i32 0, i32 17
  %367 = load i8, ptr %366, align 4, !tbaa !117, !range !37, !noundef !38
  %368 = trunc i8 %367 to i1
  br i1 %368, label %369, label %374

369:                                              ; preds = %362
  %370 = load ptr, ptr %37, align 8, !tbaa !5
  %371 = getelementptr inbounds %"struct.spirv_cross::SPIRVariable", ptr %370, i32 0, i32 11
  store i8 0, ptr %371, align 8, !tbaa !111
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #7
  call void @_ZN11spirv_cross7TypedIDILNS_5TypesE0EEC2Ej(ptr noundef nonnull align 4 dereferenceable(4) %43, i32 noundef 0)
  %372 = load ptr, ptr %37, align 8, !tbaa !5
  %373 = getelementptr inbounds %"struct.spirv_cross::SPIRVariable", ptr %372, i32 0, i32 9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %373, ptr align 4 %43, i64 4, i1 false), !tbaa.struct !39
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #7
  br label %374

374:                                              ; preds = %369, %362
  store i32 0, ptr %10, align 4
  br label %375

375:                                              ; preds = %374, %239
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #7
  %376 = load i32, ptr %10, align 4
  switch i32 %376, label %378 [
    i32 0, label %377
  ]

377:                                              ; preds = %375
  store i32 0, ptr %10, align 4
  br label %378

378:                                              ; preds = %377, %375
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #7
  %379 = load i32, ptr %10, align 4
  switch i32 %379, label %462 [
    i32 0, label %380
    i32 9, label %381
  ]

380:                                              ; preds = %378
  br label %381

381:                                              ; preds = %380, %378
  %382 = load ptr, ptr %34, align 8, !tbaa !5
  %383 = getelementptr inbounds %"class.spirv_cross::TypedID.282", ptr %382, i32 1
  store ptr %383, ptr %34, align 8, !tbaa !5
  br label %223

384:                                              ; preds = %348, %282, %257
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #7
  br label %456

385:                                              ; preds = %227
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #7
  %386 = load ptr, ptr %5, align 8, !tbaa !5
  %387 = getelementptr inbounds %"struct.spirv_cross::SPIRFunction", ptr %386, i32 0, i32 9
  store ptr %387, ptr %44, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #7
  %388 = load ptr, ptr %44, align 8, !tbaa !5
  %389 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_7TypedIDILNS_5TypesE6EEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %388) #7
  store ptr %389, ptr %45, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #7
  %390 = load ptr, ptr %44, align 8, !tbaa !5
  %391 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_7TypedIDILNS_5TypesE6EEEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %390) #7
  store ptr %391, ptr %46, align 8, !tbaa !5
  br label %392

392:                                              ; preds = %408, %385
  %393 = load ptr, ptr %45, align 8, !tbaa !5
  %394 = load ptr, ptr %46, align 8, !tbaa !5
  %395 = icmp ne ptr %393, %394
  br i1 %395, label %397, label %396

396:                                              ; preds = %392
  store i32 10, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #7
  br label %411

397:                                              ; preds = %392
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #7
  %398 = load ptr, ptr %45, align 8, !tbaa !5
  store ptr %398, ptr %47, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #7
  %399 = load ptr, ptr %47, align 8, !tbaa !5
  %400 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE6EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %399)
  %401 = call noundef nonnull align 8 dereferenceable(976) ptr @_ZN11spirv_cross8Compiler3getINS_9SPIRBlockEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %58, i32 noundef %400)
  store ptr %401, ptr %48, align 8, !tbaa !5
  %402 = load ptr, ptr %48, align 8, !tbaa !5
  %403 = getelementptr inbounds %"struct.spirv_cross::SPIRBlock", ptr %402, i32 0, i32 24
  %404 = call noundef ptr @_ZSt5beginIN11spirv_cross11SmallVectorINS0_7TypedIDILNS0_5TypesE2EEELm8EEEEDTcldtfp_5beginEERT_(ptr noundef nonnull align 8 dereferenceable(56) %403)
  %405 = load ptr, ptr %48, align 8, !tbaa !5
  %406 = getelementptr inbounds %"struct.spirv_cross::SPIRBlock", ptr %405, i32 0, i32 24
  %407 = call noundef ptr @_ZSt3endIN11spirv_cross11SmallVectorINS0_7TypedIDILNS0_5TypesE2EEELm8EEEEDTcldtfp_3endEERT_(ptr noundef nonnull align 8 dereferenceable(56) %406)
  call void @_ZSt4sortIPN11spirv_cross7TypedIDILNS0_5TypesE2EEEEvT_S5_(ptr noundef %404, ptr noundef %407)
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #7
  br label %408

408:                                              ; preds = %397
  %409 = load ptr, ptr %45, align 8, !tbaa !5
  %410 = getelementptr inbounds %"class.spirv_cross::TypedID.283", ptr %409, i32 1
  store ptr %410, ptr %45, align 8, !tbaa !5
  br label %392

411:                                              ; preds = %396
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #7
  %412 = getelementptr inbounds %"class.spirv_cross::Compiler", ptr %58, i32 0, i32 4
  %413 = load ptr, ptr %412, align 8, !tbaa !50
  %414 = getelementptr inbounds %"struct.spirv_cross::SPIRFunction", ptr %413, i32 0, i32 13
  store ptr %414, ptr %49, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #7
  %415 = load ptr, ptr %49, align 8, !tbaa !5
  %416 = call noundef ptr @_ZN11spirv_cross10VectorViewISt8functionIFvvEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %415) #7
  store ptr %416, ptr %50, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #7
  %417 = load ptr, ptr %49, align 8, !tbaa !5
  %418 = call noundef ptr @_ZN11spirv_cross10VectorViewISt8functionIFvvEEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %417) #7
  store ptr %418, ptr %51, align 8, !tbaa !5
  br label %419

419:                                              ; preds = %427, %411
  %420 = load ptr, ptr %50, align 8, !tbaa !5
  %421 = load ptr, ptr %51, align 8, !tbaa !5
  %422 = icmp ne ptr %420, %421
  br i1 %422, label %424, label %423

423:                                              ; preds = %419
  store i32 12, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #7
  br label %430

424:                                              ; preds = %419
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #7
  %425 = load ptr, ptr %50, align 8, !tbaa !5
  store ptr %425, ptr %52, align 8, !tbaa !5
  %426 = load ptr, ptr %52, align 8, !tbaa !5
  call void @_ZNKSt8functionIFvvEEclEv(ptr noundef nonnull align 8 dereferenceable(32) %426)
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #7
  br label %427

427:                                              ; preds = %424
  %428 = load ptr, ptr %50, align 8, !tbaa !5
  %429 = getelementptr inbounds %"class.std::function.349", ptr %428, i32 1
  store ptr %429, ptr %50, align 8, !tbaa !5
  br label %419

430:                                              ; preds = %423
  %431 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11spirv_cross12CompilerGLSL16emit_block_chainERNS_9SPIRBlockE(ptr noundef nonnull align 8 dereferenceable(9848) %58, ptr noundef nonnull align 8 dereferenceable(976) %431)
  call void @_ZN11spirv_cross12CompilerGLSL9end_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848) %58)
  %432 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %58, i32 0, i32 19
  store i8 0, ptr %432, align 8, !tbaa !120
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA1_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %58, ptr noundef nonnull align 1 dereferenceable(1) @.str.9)
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #7
  %433 = load ptr, ptr %5, align 8, !tbaa !5
  %434 = getelementptr inbounds %"struct.spirv_cross::SPIRFunction", ptr %433, i32 0, i32 6
  store ptr %434, ptr %53, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #7
  %435 = load ptr, ptr %53, align 8, !tbaa !5
  %436 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_7TypedIDILNS_5TypesE2EEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %435) #7
  store ptr %436, ptr %54, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #7
  %437 = load ptr, ptr %53, align 8, !tbaa !5
  %438 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_7TypedIDILNS_5TypesE2EEEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %437) #7
  store ptr %438, ptr %55, align 8, !tbaa !5
  br label %439

439:                                              ; preds = %451, %430
  %440 = load ptr, ptr %54, align 8, !tbaa !5
  %441 = load ptr, ptr %55, align 8, !tbaa !5
  %442 = icmp ne ptr %440, %441
  br i1 %442, label %444, label %443

443:                                              ; preds = %439
  store i32 14, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #7
  br label %454

444:                                              ; preds = %439
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #7
  %445 = load ptr, ptr %54, align 8, !tbaa !5
  store ptr %445, ptr %56, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #7
  %446 = load ptr, ptr %56, align 8, !tbaa !5
  %447 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE2EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %446)
  %448 = call noundef nonnull align 8 dereferenceable(176) ptr @_ZN11spirv_cross8Compiler3getINS_12SPIRVariableEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %58, i32 noundef %447)
  store ptr %448, ptr %57, align 8, !tbaa !5
  %449 = load ptr, ptr %57, align 8, !tbaa !5
  %450 = getelementptr inbounds %"struct.spirv_cross::SPIRVariable", ptr %449, i32 0, i32 11
  store i8 0, ptr %450, align 8, !tbaa !111
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #7
  br label %451

451:                                              ; preds = %444
  %452 = load ptr, ptr %54, align 8, !tbaa !5
  %453 = getelementptr inbounds %"class.spirv_cross::TypedID.282", ptr %452, i32 1
  store ptr %453, ptr %54, align 8, !tbaa !5
  br label %439

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

455:                                              ; preds = %454, %63
  ret void

456:                                              ; preds = %384, %215
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #7
  br label %457

457:                                              ; preds = %456
  %458 = load ptr, ptr %30, align 8
  %459 = load i32, ptr %31, align 4
  %460 = insertvalue { ptr, i32 } poison, ptr %458, 0
  %461 = insertvalue { ptr, i32 } %460, i32 %459, 1
  resume { ptr, i32 } %461

462:                                              ; preds = %378
  unreachable
}

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE4EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4)) #2 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 uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9end_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848)) #1 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt4sortIPN11spirv_cross7TypedIDILNS0_5TypesE0EEEEvT_S5_(ptr noundef, ptr noundef) #3

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZSt4findIPN11spirv_cross7TypedIDILNS0_5TypesE2EEENS1_ILS2_0EEEET_S6_S6_RKT0_(ptr noundef, ptr noundef, ptr noundef nonnull align 4 dereferenceable(4)) #3

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt4sortIPN11spirv_cross7TypedIDILNS0_5TypesE2EEEEvT_S5_(ptr noundef, ptr noundef) #3

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

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

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

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

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

!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, !36, i64 792}
!10 = !{!"_ZTSN11spirv_cross12SPIRFunctionE", !11, i64 0, !14, i64 12, !14, i64 16, !15, i64 24, !15, i64 208, !19, i64 392, !22, i64 448, !23, i64 456, !26, i64 512, !29, i64 664, !30, i64 672, !30, i64 704, !33, i64 736, !36, i64 792, !36, i64 793, !36, i64 794}
!11 = !{!"_ZTSN11spirv_cross8IVariantE", !12, i64 8}
!12 = !{!"_ZTSN11spirv_cross7TypedIDILNS_5TypesE0EEE", !13, i64 0}
!13 = !{!"int", !7, i64 0}
!14 = !{!"_ZTSN11spirv_cross7TypedIDILNS_5TypesE1EEE", !13, i64 0}
!15 = !{!"_ZTSN11spirv_cross11SmallVectorINS_12SPIRFunction9ParameterELm8EEE", !16, i64 0, !17, i64 16, !18, i64 24}
!16 = !{!"_ZTSN11spirv_cross10VectorViewINS_12SPIRFunction9ParameterEEE", !6, i64 0, !17, i64 8}
!17 = !{!"long", !7, i64 0}
!18 = !{!"_ZTSN11spirv_cross13AlignedBufferINS_12SPIRFunction9ParameterELm8EEE", !7, i64 0}
!19 = !{!"_ZTSN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE2EEELm8EEE", !20, i64 0, !17, i64 16, !21, i64 24}
!20 = !{!"_ZTSN11spirv_cross10VectorViewINS_7TypedIDILNS_5TypesE2EEEEE", !6, i64 0, !17, i64 8}
!21 = !{!"_ZTSN11spirv_cross13AlignedBufferINS_7TypedIDILNS_5TypesE2EEELm8EEE", !7, i64 0}
!22 = !{!"_ZTSN11spirv_cross7TypedIDILNS_5TypesE6EEE", !13, i64 0}
!23 = !{!"_ZTSN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE6EEELm8EEE", !24, i64 0, !17, i64 16, !25, i64 24}
!24 = !{!"_ZTSN11spirv_cross10VectorViewINS_7TypedIDILNS_5TypesE6EEEEE", !6, i64 0, !17, i64 8}
!25 = !{!"_ZTSN11spirv_cross13AlignedBufferINS_7TypedIDILNS_5TypesE6EEELm8EEE", !7, i64 0}
!26 = !{!"_ZTSN11spirv_cross11SmallVectorINS_12SPIRFunction29CombinedImageSamplerParameterELm8EEE", !27, i64 0, !17, i64 16, !28, i64 24}
!27 = !{!"_ZTSN11spirv_cross10VectorViewINS_12SPIRFunction29CombinedImageSamplerParameterEEE", !6, i64 0, !17, i64 8}
!28 = !{!"_ZTSN11spirv_cross13AlignedBufferINS_12SPIRFunction29CombinedImageSamplerParameterELm8EEE", !7, i64 0}
!29 = !{!"_ZTSN11spirv_cross12SPIRFunction9EntryLineE", !13, i64 0, !13, i64 4}
!30 = !{!"_ZTSN11spirv_cross11SmallVectorISt8functionIFvvEELm0EEE", !31, i64 0, !17, i64 16, !32, i64 24}
!31 = !{!"_ZTSN11spirv_cross10VectorViewISt8functionIFvvEEEE", !6, i64 0, !17, i64 8}
!32 = !{!"_ZTSN11spirv_cross13AlignedBufferISt8functionIFvvEELm0EEE"}
!33 = !{!"_ZTSN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EEE", !34, i64 0, !17, i64 16, !35, i64 24}
!34 = !{!"_ZTSN11spirv_cross10VectorViewINS_7TypedIDILNS_5TypesE0EEEEE", !6, i64 0, !17, i64 8}
!35 = !{!"_ZTSN11spirv_cross13AlignedBufferINS_7TypedIDILNS_5TypesE0EEELm8EEE", !7, i64 0}
!36 = !{!"bool", !7, i64 0}
!37 = !{i8 0, i8 2}
!38 = !{}
!39 = !{i64 0, i64 4, !40}
!40 = !{!13, !13, i64 0}
!41 = !{!42, !43, i64 0}
!42 = !{!"_ZTSN11spirv_cross11InstructionE", !43, i64 0, !43, i64 2, !13, i64 4, !13, i64 8}
!43 = !{!"short", !7, i64 0}
!44 = !{!45, !45, i64 0}
!45 = !{!"_ZTSN3spv2OpE", !7, i64 0}
!46 = !{!10, !13, i64 664}
!47 = !{!10, !13, i64 668}
!48 = !{!49, !49, i64 0}
!49 = !{!"vtable pointer", !8, i64 0}
!50 = !{!51, !6, i64 2040}
!51 = !{!"_ZTSN11spirv_cross8CompilerE", !52, i64 8, !95, i64 1928, !95, i64 1984, !6, i64 2040, !6, i64 2048, !13, i64 2056, !98, i64 2064, !36, i64 2120, !93, i64 2128, !36, i64 2184, !36, i64 2185, !100, i64 2192, !95, i64 2312, !103, i64 2368, !93, i64 2400, !93, i64 2456, !93, i64 2512, !93, i64 2568, !93, i64 2624, !92, i64 2680, !92, i64 2744, !13, i64 2808, !13, i64 2812, !36, i64 2816, !93, i64 2824, !36, i64 2880, !36, i64 2881, !13, i64 2884, !105, i64 2888, !95, i64 2944, !107, i64 3000, !93, i64 3056, !36, i64 3112, !109, i64 3120}
!52 = !{!"_ZTSN11spirv_cross8ParsedIRE", !53, i64 0, !59, i64 8, !63, i64 32, !66, i64 248, !7, i64 304, !33, i64 1088, !33, i64 1144, !71, i64 1200, !73, i64 1256, !76, i64 1312, !79, i64 1592, !82, i64 1624, !84, i64 1680, !86, i64 1736, !87, i64 1740, !88, i64 1748, !89, i64 1752, !13, i64 1756, !13, i64 1760, !90, i64 1768, !92, i64 1800, !93, i64 1864}
!53 = !{!"_ZTSSt10unique_ptrIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EE", !54, i64 0}
!54 = !{!"_ZTSSt15__uniq_ptr_dataIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_ELb1ELb1EE", !55, i64 0}
!55 = !{!"_ZTSSt15__uniq_ptr_implIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EE", !56, i64 0}
!56 = !{!"_ZTSSt5tupleIJPN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EEE", !57, i64 0}
!57 = !{!"_ZTSSt11_Tuple_implILm0EJPN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EEE", !58, i64 0}
!58 = !{!"_ZTSSt10_Head_baseILm0EPN11spirv_cross15ObjectPoolGroupELb0EE", !6, i64 0}
!59 = !{!"_ZTSSt6vectorIjSaIjEE", !60, i64 0}
!60 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !61, i64 0}
!61 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !62, i64 0}
!62 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!63 = !{!"_ZTSN11spirv_cross11SmallVectorINS_7VariantELm8EEE", !64, i64 0, !17, i64 16, !65, i64 24}
!64 = !{!"_ZTSN11spirv_cross10VectorViewINS_7VariantEEE", !6, i64 0, !17, i64 8}
!65 = !{!"_ZTSN11spirv_cross13AlignedBufferINS_7VariantELm8EEE", !7, i64 0}
!66 = !{!"_ZTSSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE0EEENS0_4MetaESt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S4_EEE", !67, i64 0}
!67 = !{!"_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, !17, i64 8, !68, i64 16, !17, i64 24, !69, i64 32, !6, i64 48}
!68 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!69 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !70, i64 0, !17, i64 8}
!70 = !{!"float", !7, i64 0}
!71 = !{!"_ZTSSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE0EEEjSt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_jEEE", !72, i64 0}
!72 = !{!"_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, !17, i64 8, !68, i64 16, !17, i64 24, !69, i64 32, !6, i64 48}
!73 = !{!"_ZTSN11spirv_cross11SmallVectorIN3spv10CapabilityELm8EEE", !74, i64 0, !17, i64 16, !75, i64 24}
!74 = !{!"_ZTSN11spirv_cross10VectorViewIN3spv10CapabilityEEE", !6, i64 0, !17, i64 8}
!75 = !{!"_ZTSN11spirv_cross13AlignedBufferIN3spv10CapabilityELm8EEE", !7, i64 0}
!76 = !{!"_ZTSN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EEE", !77, i64 0, !17, i64 16, !78, i64 24}
!77 = !{!"_ZTSN11spirv_cross10VectorViewINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !6, i64 0, !17, i64 8}
!78 = !{!"_ZTSN11spirv_cross13AlignedBufferINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EEE", !7, i64 0}
!79 = !{!"_ZTSN11spirv_cross11SmallVectorIhLm8EEE", !80, i64 0, !17, i64 16, !81, i64 24}
!80 = !{!"_ZTSN11spirv_cross10VectorViewIhEE", !6, i64 0, !17, i64 8}
!81 = !{!"_ZTSN11spirv_cross13AlignedBufferIhLm8EEE", !7, i64 0}
!82 = !{!"_ZTSSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE6EEES3_St4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S3_EEE", !83, i64 0}
!83 = !{!"_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, !17, i64 8, !68, i64 16, !17, i64 24, !69, i64 32, !6, i64 48}
!84 = !{!"_ZTSSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE4EEENS0_14SPIREntryPointESt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S4_EEE", !85, i64 0}
!85 = !{!"_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, !17, i64 8, !68, i64 16, !17, i64 24, !69, i64 32, !6, i64 48}
!86 = !{!"_ZTSN11spirv_cross7TypedIDILNS_5TypesE4EEE", !13, i64 0}
!87 = !{!"_ZTSN11spirv_cross8ParsedIR6SourceE", !13, i64 0, !36, i64 4, !36, i64 5, !36, i64 6}
!88 = !{!"_ZTSN3spv15AddressingModelE", !7, i64 0}
!89 = !{!"_ZTSN3spv11MemoryModelE", !7, i64 0}
!90 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !91, i64 0, !17, i64 8, !7, i64 16}
!91 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!92 = !{!"_ZTSN11spirv_cross6BitsetE", !17, i64 0, !93, i64 8}
!93 = !{!"_ZTSSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEE", !94, i64 0}
!94 = !{!"_ZTSSt10_HashtableIjjSaIjENSt8__detail9_IdentityESt8equal_toIjESt4hashIjENS1_18_Mod_range_hashingENS1_20_Default_ranged_hashENS1_20_Prime_rehash_policyENS1_17_Hashtable_traitsILb0ELb1ELb1EEEE", !6, i64 0, !17, i64 8, !68, i64 16, !17, i64 24, !69, i64 32, !6, i64 48}
!95 = !{!"_ZTSN11spirv_cross11SmallVectorIjLm8EEE", !96, i64 0, !17, i64 16, !97, i64 24}
!96 = !{!"_ZTSN11spirv_cross10VectorViewIjEE", !6, i64 0, !17, i64 8}
!97 = !{!"_ZTSN11spirv_cross13AlignedBufferIjLm8EEE", !7, i64 0}
!98 = !{!"_ZTSSt13unordered_setIN11spirv_cross7TypedIDILNS0_5TypesE2EEESt4hashIS3_ESt8equal_toIS3_ESaIS3_EE", !99, i64 0}
!99 = !{!"_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, !17, i64 8, !68, i64 16, !17, i64 24, !69, i64 32, !6, i64 48}
!100 = !{!"_ZTSN11spirv_cross11SmallVectorINS_20CombinedImageSamplerELm8EEE", !101, i64 0, !17, i64 16, !102, i64 24}
!101 = !{!"_ZTSN11spirv_cross10VectorViewINS_20CombinedImageSamplerEEE", !6, i64 0, !17, i64 8}
!102 = !{!"_ZTSN11spirv_cross13AlignedBufferINS_20CombinedImageSamplerELm8EEE", !7, i64 0}
!103 = !{!"_ZTSSt8functionIFvRKN11spirv_cross8SPIRTypeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERS9_EE", !104, i64 0, !6, i64 24}
!104 = !{!"_ZTSSt14_Function_base", !7, i64 0, !6, i64 16}
!105 = !{!"_ZTSSt13unordered_mapIjSt10unique_ptrIN11spirv_cross3CFGESt14default_deleteIS2_EESt4hashIjESt8equal_toIjESaISt4pairIKjS5_EEE", !106, i64 0}
!106 = !{!"_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, !17, i64 8, !68, i64 16, !17, i64 24, !69, i64 32, !6, i64 48}
!107 = !{!"_ZTSSt13unordered_mapIjN11spirv_cross8Compiler17PhysicalBlockMetaESt4hashIjESt8equal_toIjESaISt4pairIKjS2_EEE", !108, i64 0}
!108 = !{!"_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, !17, i64 8, !68, i64 16, !17, i64 24, !69, i64 32, !6, i64 48}
!109 = !{!"_ZTSSt13unordered_mapIjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4hashIjESt8equal_toIjESaISt4pairIKjS5_EEE", !110, i64 0}
!110 = !{!"_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, !17, i64 8, !68, i64 16, !17, i64 24, !69, i64 32, !6, i64 48}
!111 = !{!112, !36, i64 152}
!112 = !{!"_ZTSN11spirv_cross12SPIRVariableE", !11, i64 0, !14, i64 12, !113, i64 16, !13, i64 20, !12, i64 24, !114, i64 28, !95, i64 32, !36, i64 88, !36, i64 89, !12, i64 92, !33, i64 96, !36, i64 152, !36, i64 153, !36, i64 154, !36, i64 155, !13, i64 156, !22, i64 160, !36, i64 164, !36, i64 165, !36, i64 166, !6, i64 168}
!113 = !{!"_ZTSN3spv12StorageClassE", !7, i64 0}
!114 = !{!"_ZTSN11spirv_cross7TypedIDILNS_5TypesE2EEE", !13, i64 0}
!115 = !{!112, !113, i64 16}
!116 = !{!112, !36, i64 155}
!117 = !{!112, !36, i64 164}
!118 = !{!112, !36, i64 89}
!119 = !{!112, !36, i64 165}
!120 = !{!121, !36, i64 8184}
!121 = !{!"_ZTSN11spirv_cross12CompilerGLSLE", !51, i64 0, !6, i64 3176, !122, i64 3184, !36, i64 3272, !125, i64 3280, !6, i64 7616, !6, i64 7624, !36, i64 7632, !36, i64 7633, !130, i64 7636, !134, i64 7680, !134, i64 7736, !134, i64 7792, !134, i64 7848, !134, i64 7904, !134, i64 7960, !134, i64 8016, !136, i64 8072, !109, i64 8128, !36, i64 8184, !138, i64 8192, !13, i64 8416, !93, i64 8424, !93, i64 8480, !93, i64 8536, !140, i64 8592, !142, i64 8648, !143, i64 8656, !76, i64 8712, !76, i64 8992, !143, i64 9272, !145, i64 9328, !13, i64 9384, !13, i64 9388, !13, i64 9392, !36, i64 9396, !36, i64 9397, !148, i64 9400, !148, i64 9424, !152, i64 9448, !156, i64 9472, !143, i64 9496, !93, i64 9552, !93, i64 9608, !7, i64 9664, !160, i64 9672, !93, i64 9728, !6, i64 9784, !162, i64 9792}
!122 = !{!"_ZTSN11spirv_cross11SmallVectorIPNS_9SPIRBlockELm8EEE", !123, i64 0, !17, i64 16, !124, i64 24}
!123 = !{!"_ZTSN11spirv_cross10VectorViewIPNS_9SPIRBlockEEE", !6, i64 0, !17, i64 8}
!124 = !{!"_ZTSN11spirv_cross13AlignedBufferIPNS_9SPIRBlockELm8EEE", !7, i64 0}
!125 = !{!"_ZTSN11spirv_cross12StringStreamILm4096ELm4096EEE", !126, i64 0, !7, i64 24, !127, i64 4120}
!126 = !{!"_ZTSN11spirv_cross12StringStreamILm4096ELm4096EE6BufferE", !6, i64 0, !17, i64 8, !17, i64 16}
!127 = !{!"_ZTSN11spirv_cross11SmallVectorINS_12StringStreamILm4096ELm4096EE6BufferELm8EEE", !128, i64 0, !17, i64 16, !129, i64 24}
!128 = !{!"_ZTSN11spirv_cross10VectorViewINS_12StringStreamILm4096ELm4096EE6BufferEEE", !6, i64 0, !17, i64 8}
!129 = !{!"_ZTSN11spirv_cross13AlignedBufferINS_12StringStreamILm4096ELm4096EE6BufferELm8EEE", !7, i64 0}
!130 = !{!"_ZTSN11spirv_cross12CompilerGLSL7OptionsE", !13, i64 0, !36, i64 4, !36, i64 5, !13, i64 8, !36, i64 12, !36, i64 13, !36, i64 14, !36, i64 15, !36, i64 16, !36, i64 17, !36, i64 18, !36, i64 19, !36, i64 20, !36, i64 21, !36, i64 22, !36, i64 23, !13, i64 24, !131, i64 28, !132, i64 32}
!131 = !{!"_ZTSN11spirv_cross12CompilerGLSL7Options13VertexOptionsE", !36, i64 0, !36, i64 1, !36, i64 2}
!132 = !{!"_ZTSN11spirv_cross12CompilerGLSL7Options15FragmentOptionsE", !133, i64 0, !133, i64 4}
!133 = !{!"_ZTSN11spirv_cross12CompilerGLSL7Options9PrecisionE", !7, i64 0}
!134 = !{!"_ZTSSt13unordered_setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4hashIS5_ESt8equal_toIS5_ESaIS5_EE", !135, i64 0}
!135 = !{!"_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, !17, i64 8, !68, i64 16, !17, i64 24, !69, i64 32, !6, i64 48}
!136 = !{!"_ZTSSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt13unordered_setImSt4hashImESt8equal_toImESaImEES7_IS5_ES9_IS5_ESaISt4pairIKS5_SC_EEE", !137, i64 0}
!137 = !{!"_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, !17, i64 8, !68, i64 16, !17, i64 24, !69, i64 32, !6, i64 48}
!138 = !{!"_ZTSN11spirv_cross12CompilerGLSL17BackendVariationsE", !90, i64 0, !90, i64 32, !90, i64 64, !36, i64 96, !36, i64 97, !36, i64 98, !36, 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, !139, i64 184, !36, i64 188, !36, i64 189, !36, i64 190, !36, i64 191, !36, i64 192, !36, i64 193, !36, i64 194, !36, i64 195, !36, i64 196, !36, i64 197, !36, i64 198, !36, i64 199, !36, i64 200, !36, i64 201, !36, i64 202, !36, i64 203, !36, i64 204, !36, i64 205, !36, i64 206, !36, i64 207, !36, i64 208, !36, i64 209, !36, i64 210, !36, i64 211, !36, i64 212, !36, i64 213, !36, i64 214, !36, i64 215, !36, i64 216, !36, i64 217, !36, i64 218, !36, i64 219}
!139 = !{!"_ZTSN11spirv_cross8SPIRType8BaseTypeE", !7, i64 0}
!140 = !{!"_ZTSSt13unordered_mapIjbSt4hashIjESt8equal_toIjESaISt4pairIKjbEEE", !141, i64 0}
!141 = !{!"_ZTSSt10_HashtableIjSt4pairIKjbESaIS2_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !17, i64 8, !68, i64 16, !17, i64 24, !69, i64 32, !6, i64 48}
!142 = !{!"_ZTSN11spirv_cross12CompilerGLSL27ShaderSubgroupSupportHelperE", !13, i64 0}
!143 = !{!"_ZTSSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEE", !144, i64 0}
!144 = !{!"_ZTSSt10_HashtableIjSt4pairIKjjESaIS2_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !17, i64 8, !68, i64 16, !17, i64 24, !69, i64 32, !6, i64 48}
!145 = !{!"_ZTSN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE1EEELm8EEE", !146, i64 0, !17, i64 16, !147, i64 24}
!146 = !{!"_ZTSN11spirv_cross10VectorViewINS_7TypedIDILNS_5TypesE1EEEEE", !6, i64 0, !17, i64 8}
!147 = !{!"_ZTSN11spirv_cross13AlignedBufferINS_7TypedIDILNS_5TypesE1EEELm8EEE", !7, i64 0}
!148 = !{!"_ZTSSt6vectorIN11spirv_cross8PlsRemapESaIS1_EE", !149, i64 0}
!149 = !{!"_ZTSSt12_Vector_baseIN11spirv_cross8PlsRemapESaIS1_EE", !150, i64 0}
!150 = !{!"_ZTSNSt12_Vector_baseIN11spirv_cross8PlsRemapESaIS1_EE12_Vector_implE", !151, i64 0}
!151 = !{!"_ZTSNSt12_Vector_baseIN11spirv_cross8PlsRemapESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!152 = !{!"_ZTSSt6vectorISt4pairIjjESaIS1_EE", !153, i64 0}
!153 = !{!"_ZTSSt12_Vector_baseISt4pairIjjESaIS1_EE", !154, i64 0}
!154 = !{!"_ZTSNSt12_Vector_baseISt4pairIjjESaIS1_EE12_Vector_implE", !155, i64 0}
!155 = !{!"_ZTSNSt12_Vector_baseISt4pairIjjESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!156 = !{!"_ZTSSt6vectorISt4pairIjbESaIS1_EE", !157, i64 0}
!157 = !{!"_ZTSSt12_Vector_baseISt4pairIjbESaIS1_EE", !158, i64 0}
!158 = !{!"_ZTSNSt12_Vector_baseISt4pairIjbESaIS1_EE12_Vector_implE", !159, i64 0}
!159 = !{!"_ZTSNSt12_Vector_baseISt4pairIjbESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!160 = !{!"_ZTSSt13unordered_setIN11spirv_cross21LocationComponentPairENS0_14InternalHasherESt8equal_toIS1_ESaIS1_EE", !161, i64 0}
!161 = !{!"_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, !17, i64 8, !68, i64 16, !17, i64 24, !69, i64 32, !6, i64 48}
!162 = !{!"_ZTSSt13unordered_mapIjN11spirv_cross11SmallVectorINS0_7TypedIDILNS0_5TypesE3EEELm8EEESt4hashIjESt8equal_toIjESaISt4pairIKjS5_EEE", !163, i64 0}
!163 = !{!"_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, !17, i64 8, !68, i64 16, !17, i64 24, !69, i64 32, !6, i64 48}


; 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.spirv_cross::TypedID.283" = type { i32 }
%"class.spirv_cross::TypedID.280" = type { i32 }
%"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::TypedID.282" = type { i32 }

@.str.9 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.286 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.298 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.335 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.1616 = external hidden unnamed_addr constant [12 x i8], align 1

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11spirv_cross12CompilerGLSL13emit_functionERNS_12SPIRFunctionERKNS_6BitsetE(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(795) %1, ptr noundef nonnull align 8 dereferenceable(64) %2) local_unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca %"class.spirv_cross::TypedID.283", align 4
  %5 = alloca %"class.spirv_cross::TypedID.280", align 4
  %6 = alloca %"class.std::__cxx11::basic_string", align 8
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.spirv_cross::TypedID.282", align 4
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.spirv_cross::TypedID.280", align 4
  %14 = getelementptr inbounds i8, ptr %1, i64 792
  %15 = load i8, ptr %14, align 8, !tbaa !5, !range !36, !noundef !37
  %16 = trunc nuw i8 %15 to i1
  br i1 %16, label %.loopexit, label %17

17:                                               ; preds = %3
  store i8 1, ptr %14, align 8, !tbaa !5
  %18 = getelementptr inbounds i8, ptr %1, i64 456
  %19 = tail call noundef ptr @_ZN11spirv_cross10VectorViewINS_7TypedIDILNS_5TypesE6EEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %18) #6
  %20 = tail call noundef ptr @_ZN11spirv_cross10VectorViewINS_7TypedIDILNS_5TypesE6EEEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %18) #6
  %.not147 = icmp eq ptr %19, %20
  br i1 %.not147, label %._crit_edge151, label %.lr.ph150

.lr.ph150:                                        ; preds = %17
  %21 = getelementptr inbounds i8, ptr %0, i64 256
  br label %24

._crit_edge151:                                   ; preds = %._crit_edge, %17
  %22 = getelementptr inbounds i8, ptr %1, i64 664
  %23 = load i32, ptr %22, align 8, !tbaa !38
  %.not130 = icmp eq i32 %23, 0
  br i1 %.not130, label %48, label %45

24:                                               ; preds = %.lr.ph150, %._crit_edge
  %.0148 = phi ptr [ %19, %.lr.ph150 ], [ %31, %._crit_edge ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #6
  %25 = load i32, ptr %.0148, align 4, !tbaa !39
  store i32 %25, ptr %4, align 4, !tbaa !39
  %26 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE6EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %4)
  %27 = call noundef nonnull align 8 dereferenceable(976) ptr @_ZN11spirv_cross8Compiler3getINS_9SPIRBlockEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %26)
  %28 = getelementptr inbounds i8, ptr %27, i64 72
  %29 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_11InstructionEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %28) #6
  %30 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_11InstructionEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %28) #6
  %.not144145 = icmp eq ptr %29, %30
  br i1 %.not144145, label %._crit_edge, label %.lr.ph

._crit_edge:                                      ; preds = %43, %24
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #6
  %31 = getelementptr inbounds i8, ptr %.0148, i64 4
  %.not = icmp eq ptr %31, %20
  br i1 %.not, label %._crit_edge151, label %24

.lr.ph:                                           ; preds = %24, %43
  %.0117146 = phi ptr [ %44, %43 ], [ %29, %24 ]
  %32 = call noundef ptr @_ZNK11spirv_cross8Compiler6streamERKNS_11InstructionE(ptr noundef nonnull align 8 dereferenceable(3176) %0, ptr noundef nonnull align 4 dereferenceable(12) %.0117146)
  %33 = load i16, ptr %.0117146, align 4, !tbaa !40
  %34 = icmp eq i16 %33, 57
  br i1 %34, label %35, label %43

35:                                               ; preds = %.lr.ph
  %36 = getelementptr inbounds i8, ptr %32, i64 8
  %37 = load i32, ptr %36, align 4, !tbaa !39
  %38 = call noundef nonnull align 8 dereferenceable(795) ptr @_ZN11spirv_cross8Compiler3getINS_12SPIRFunctionEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %37)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #6
  %39 = getelementptr inbounds i8, ptr %32, i64 4
  %40 = load i32, ptr %39, align 4, !tbaa !39
  call void @_ZN11spirv_cross7TypedIDILNS_5TypesE0EEC2Ej(ptr noundef nonnull align 4 dereferenceable(4) %5, i32 noundef %40)
  %41 = call noundef nonnull align 8 dereferenceable(488) ptr @_ZNSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE0EEENS0_4MetaESt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S4_EEEixEOS3_(ptr noundef nonnull align 8 dereferenceable(56) %21, ptr noundef nonnull align 4 dereferenceable(4) %5)
  %42 = getelementptr inbounds i8, ptr %41, i64 128
  call void @_ZN11spirv_cross12CompilerGLSL13emit_functionERNS_12SPIRFunctionERKNS_6BitsetE(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(795) %38, ptr noundef nonnull align 8 dereferenceable(64) %42)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #6
  br label %43

43:                                               ; preds = %35, %.lr.ph
  %44 = getelementptr inbounds i8, ptr %.0117146, i64 12
  %.not144 = icmp eq ptr %44, %30
  br i1 %.not144, label %._crit_edge, label %.lr.ph

45:                                               ; preds = %._crit_edge151
  %46 = getelementptr inbounds i8, ptr %1, i64 668
  %47 = load i32, ptr %46, align 4, !tbaa !43
  call void @_ZN11spirv_cross12CompilerGLSL19emit_line_directiveEjj(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %23, i32 noundef %47)
  br label %48

48:                                               ; preds = %45, %._crit_edge151
  %49 = load ptr, ptr %0, align 8, !tbaa !44
  %50 = getelementptr inbounds i8, ptr %49, i64 56
  %51 = load ptr, ptr %50, align 8
  call void %51(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(795) %1, ptr noundef nonnull align 8 dereferenceable(64) %2)
  call void @_ZN11spirv_cross12CompilerGLSL11begin_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848) %0)
  %52 = getelementptr inbounds i8, ptr %1, i64 8
  %53 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %52)
  %54 = getelementptr inbounds i8, ptr %0, i64 1744
  %55 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE4EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %54)
  %56 = icmp eq i32 %53, %55
  br i1 %56, label %57, label %61

57:                                               ; preds = %48
  %58 = load ptr, ptr %0, align 8, !tbaa !44
  %59 = getelementptr inbounds i8, ptr %58, i64 488
  %60 = load ptr, ptr %59, align 8
  call void %60(ptr noundef nonnull align 8 dereferenceable(9848) %0)
  br label %61

61:                                               ; preds = %57, %48
  %62 = getelementptr inbounds i8, ptr %0, i64 2040
  store ptr %1, ptr %62, align 8, !tbaa !46
  %63 = getelementptr inbounds i8, ptr %1, i64 448
  %64 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE6EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %63)
  %65 = call noundef nonnull align 8 dereferenceable(976) ptr @_ZN11spirv_cross8Compiler3getINS_9SPIRBlockEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %64)
  %66 = getelementptr inbounds i8, ptr %1, i64 736
  %67 = call noundef ptr @_ZSt5beginIN11spirv_cross11SmallVectorINS0_7TypedIDILNS0_5TypesE0EEELm8EEEEDTcldtfp_5beginEERT_(ptr noundef nonnull align 8 dereferenceable(56) %66)
  %68 = call noundef ptr @_ZSt3endIN11spirv_cross11SmallVectorINS0_7TypedIDILNS0_5TypesE0EEELm8EEEEDTcldtfp_3endEERT_(ptr noundef nonnull align 8 dereferenceable(56) %66)
  call void @_ZSt4sortIPN11spirv_cross7TypedIDILNS0_5TypesE0EEEEvT_S5_(ptr noundef %67, ptr noundef %68)
  %69 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_7TypedIDILNS_5TypesE0EEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %66) #6
  %70 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_7TypedIDILNS_5TypesE0EEEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %66) #6
  %.not131152 = icmp eq ptr %69, %70
  br i1 %.not131152, label %._crit_edge156, label %.lr.ph155

._crit_edge156:                                   ; preds = %85, %61
  %71 = getelementptr inbounds i8, ptr %1, i64 392
  %72 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_7TypedIDILNS_5TypesE2EEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %71) #6
  %73 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_7TypedIDILNS_5TypesE2EEEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %71) #6
  %.not132157 = icmp eq ptr %72, %73
  br i1 %.not132157, label %._crit_edge161, label %.lr.ph160

.lr.ph160:                                        ; preds = %._crit_edge156
  %74 = getelementptr inbounds i8, ptr %65, i64 808
  br label %97

.lr.ph155:                                        ; preds = %61, %85
  %.0119153 = phi ptr [ %86, %85 ], [ %69, %61 ]
  %75 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %.0119153)
  %76 = call noundef nonnull align 8 dereferenceable(360) ptr @_ZN11spirv_cross8Compiler3getINS_12SPIRConstantEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %75)
  %77 = getelementptr inbounds i8, ptr %76, i64 12
  %78 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE1EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %77)
  %79 = call noundef nonnull align 8 dereferenceable(336) ptr @_ZN11spirv_cross8Compiler3getINS_8SPIRTypeEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %78)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #6
  call void @_ZN11spirv_cross4joinIJRA2_KcRNS_7TypedIDILNS_5TypesE0EEERA12_S1_EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %7, ptr noundef nonnull align 1 dereferenceable(2) @.str.286, ptr noundef nonnull align 4 dereferenceable(4) %.0119153, ptr noundef nonnull align 1 dereferenceable(12) @.str.1616)
  %80 = load ptr, ptr %0, align 8, !tbaa !44
  %81 = getelementptr inbounds i8, ptr %80, i64 216
  %82 = load ptr, ptr %81, align 8
  invoke void %82(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %6, ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(336) %79, ptr noundef nonnull align 8 dereferenceable(32) %7, i32 noundef 0)
          to label %83 unwind label %87

83:                                               ; preds = %.lr.ph155
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #6
  invoke void @_ZN11spirv_cross12CompilerGLSL19constant_expressionB5cxx11ERKNS_12SPIRConstantEbb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %8, ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(360) %76, i1 noundef zeroext false, i1 noundef zeroext false)
          to label %84 unwind label %89

84:                                               ; preds = %83
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA4_KcS7_RA2_S8_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 1 dereferenceable(4) @.str.335, ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 1 dereferenceable(2) @.str.298)
          to label %85 unwind label %91

85:                                               ; preds = %84
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #6
  %86 = getelementptr inbounds i8, ptr %.0119153, i64 4
  %.not131 = icmp eq ptr %86, %70
  br i1 %.not131, label %._crit_edge156, label %.lr.ph155

87:                                               ; preds = %.lr.ph155
  %88 = landingpad { ptr, i32 }
          cleanup
  br label %94

89:                                               ; preds = %83
  %90 = landingpad { ptr, i32 }
          cleanup
  br label %93

91:                                               ; preds = %84
  %92 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #6
  br label %93

93:                                               ; preds = %91, %89
  %.pn140 = phi { ptr, i32 } [ %92, %91 ], [ %90, %89 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #6
  br label %94

94:                                               ; preds = %93, %87
  %.pn140.pn = phi { ptr, i32 } [ %.pn140, %93 ], [ %88, %87 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #6
  br label %196

._crit_edge161:                                   ; preds = %176, %._crit_edge156
  %95 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_7TypedIDILNS_5TypesE6EEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %18) #6
  %96 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_7TypedIDILNS_5TypesE6EEEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %18) #6
  %.not133162 = icmp eq ptr %95, %96
  br i1 %.not133162, label %._crit_edge166, label %.lr.ph165

97:                                               ; preds = %.lr.ph160, %176
  %.0126158 = phi ptr [ %72, %.lr.ph160 ], [ %177, %176 ]
  %98 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE2EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %.0126158)
  %99 = call noundef nonnull align 8 dereferenceable(176) ptr @_ZN11spirv_cross8Compiler3getINS_12SPIRVariableEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %98)
  %100 = getelementptr inbounds i8, ptr %99, i64 152
  store i8 0, ptr %100, align 8, !tbaa !107
  %101 = getelementptr inbounds i8, ptr %99, i64 16
  %102 = load i32, ptr %101, align 8, !tbaa !111
  %103 = icmp eq i32 %102, 5402
  br i1 %103, label %176, label %104

104:                                              ; preds = %97
  %105 = load ptr, ptr %0, align 8, !tbaa !44
  %106 = getelementptr inbounds i8, ptr %105, i64 224
  %107 = load ptr, ptr %106, align 8
  %108 = call noundef zeroext i1 %107(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(176) %99, i32 noundef 4)
  br i1 %108, label %109, label %118

109:                                              ; preds = %104
  %110 = getelementptr inbounds i8, ptr %99, i64 8
  %111 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %110)
  call void @_ZN11spirv_cross12CompilerGLSL23add_local_variable_nameEj(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %111)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #6
  %112 = load ptr, ptr %0, align 8, !tbaa !44
  %113 = getelementptr inbounds i8, ptr %112, i64 312
  %114 = load ptr, ptr %113, align 8
  call void %114(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %9, ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(176) %99)
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 1 dereferenceable(2) @.str.298)
          to label %115 unwind label %116

115:                                              ; preds = %109
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #6
  store i8 0, ptr %100, align 8, !tbaa !107
  br label %168

116:                                              ; preds = %109
  %117 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #6
  br label %196

118:                                              ; preds = %104
  %119 = load i32, ptr %101, align 8, !tbaa !111
  switch i32 %119, label %149 [
    i32 6, label %120
    i32 7, label %141
  ]

120:                                              ; preds = %118
  %121 = getelementptr inbounds i8, ptr %99, i64 8
  %122 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %121)
  call void @_ZN11spirv_cross12CompilerGLSL23add_local_variable_nameEj(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %122)
  %123 = getelementptr inbounds i8, ptr %99, i64 24
  %124 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %123)
  %.not138 = icmp eq i32 %124, 0
  br i1 %.not138, label %132, label %125

125:                                              ; preds = %120
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #6
  %126 = load ptr, ptr %0, align 8, !tbaa !44
  %127 = getelementptr inbounds i8, ptr %126, i64 312
  %128 = load ptr, ptr %127, align 8
  call void %128(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %10, ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(176) %99)
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull align 1 dereferenceable(2) @.str.298)
          to label %129 unwind label %130

129:                                              ; preds = %125
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #6
  store i8 0, ptr %100, align 8, !tbaa !107
  br label %168

130:                                              ; preds = %125
  %131 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #6
  br label %196

132:                                              ; preds = %120
  %133 = call noundef ptr @_ZSt5beginIN11spirv_cross11SmallVectorINS0_7TypedIDILNS0_5TypesE2EEELm8EEEEDTcldtfp_5beginEERT_(ptr noundef nonnull align 8 dereferenceable(56) %74)
  %134 = call noundef ptr @_ZSt3endIN11spirv_cross11SmallVectorINS0_7TypedIDILNS0_5TypesE2EEELm8EEEEDTcldtfp_3endEERT_(ptr noundef nonnull align 8 dereferenceable(56) %74)
  %135 = call noundef ptr @_ZSt4findIPN11spirv_cross7TypedIDILNS0_5TypesE2EEENS1_ILS2_0EEEET_S6_S6_RKT0_(ptr noundef %133, ptr noundef %134, ptr noundef nonnull align 4 dereferenceable(4) %121)
  %136 = call noundef ptr @_ZSt3endIN11spirv_cross11SmallVectorINS0_7TypedIDILNS0_5TypesE2EEELm8EEEEDTcldtfp_3endEERT_(ptr noundef nonnull align 8 dereferenceable(56) %74)
  %137 = icmp eq ptr %135, %136
  br i1 %137, label %138, label %140

138:                                              ; preds = %132
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #6
  %139 = call i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvNS0_IXT_EEEILS1_2EEEv(ptr noundef nonnull align 4 dereferenceable(4) %121)
  store i32 %139, ptr %11, align 4
  call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE2EEELm8EE9push_backEOS3_(ptr noundef nonnull align 8 dereferenceable(56) %74, ptr noundef nonnull align 4 dereferenceable(4) %11) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #6
  br label %140

140:                                              ; preds = %138, %132
  store i8 1, ptr %100, align 8, !tbaa !107
  br label %168

141:                                              ; preds = %118
  %142 = getelementptr inbounds i8, ptr %99, i64 155
  %143 = load i8, ptr %142, align 1, !tbaa !112, !range !36, !noundef !37
  %144 = trunc nuw i8 %143 to i1
  br i1 %144, label %145, label %149

145:                                              ; preds = %141
  %146 = getelementptr inbounds i8, ptr %99, i64 92
  %147 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %146)
  %.not136 = icmp eq i32 %147, 0
  br i1 %.not136, label %149, label %148

148:                                              ; preds = %145
  store i8 0, ptr %100, align 8, !tbaa !107
  br label %168

149:                                              ; preds = %118, %145, %141
  %150 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE2EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %.0126158)
  %151 = call noundef zeroext i1 @_ZNK11spirv_cross8Compiler20expression_is_lvalueEj(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %150)
  br i1 %151, label %152, label %166

152:                                              ; preds = %149
  %153 = getelementptr inbounds i8, ptr %99, i64 8
  %154 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %153)
  call void @_ZN11spirv_cross12CompilerGLSL23add_local_variable_nameEj(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %154)
  %155 = getelementptr inbounds i8, ptr %99, i64 24
  %156 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %155)
  %.not137 = icmp eq i32 %156, 0
  br i1 %.not137, label %165, label %157

157:                                              ; preds = %152
  %158 = getelementptr inbounds i8, ptr %99, i64 164
  %159 = load i8, ptr %158, align 4, !tbaa !113, !range !36, !noundef !37
  %160 = trunc nuw i8 %159 to i1
  br i1 %160, label %165, label %161

161:                                              ; preds = %157
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #6
  call void @_ZN11spirv_cross12CompilerGLSL28variable_decl_function_localB5cxx11ERNS_12SPIRVariableE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %12, ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(176) %99)
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull align 1 dereferenceable(2) @.str.298)
          to label %162 unwind label %163

162:                                              ; preds = %161
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #6
  br label %168

163:                                              ; preds = %161
  %164 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #6
  br label %196

165:                                              ; preds = %157, %152
  store i8 1, ptr %100, align 8, !tbaa !107
  br label %168

166:                                              ; preds = %149
  %167 = getelementptr inbounds i8, ptr %99, i64 89
  store i8 1, ptr %167, align 1, !tbaa !114
  br label %168

168:                                              ; preds = %140, %129, %166, %165, %162, %148, %115
  %169 = getelementptr inbounds i8, ptr %99, i64 165
  store i8 0, ptr %169, align 1, !tbaa !115
  %170 = getelementptr inbounds i8, ptr %99, i64 164
  %171 = load i8, ptr %170, align 4, !tbaa !113, !range !36, !noundef !37
  %172 = trunc nuw i8 %171 to i1
  br i1 %172, label %173, label %176

173:                                              ; preds = %168
  store i8 0, ptr %100, align 8, !tbaa !107
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #6
  call void @_ZN11spirv_cross7TypedIDILNS_5TypesE0EEC2Ej(ptr noundef nonnull align 4 dereferenceable(4) %13, i32 noundef 0)
  %174 = getelementptr inbounds i8, ptr %99, i64 92
  %175 = load i32, ptr %13, align 4, !tbaa !39
  store i32 %175, ptr %174, align 4, !tbaa !39
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #6
  br label %176

176:                                              ; preds = %168, %173, %97
  %177 = getelementptr inbounds i8, ptr %.0126158, i64 4
  %.not132 = icmp eq ptr %177, %73
  br i1 %.not132, label %._crit_edge161, label %97

._crit_edge166:                                   ; preds = %.lr.ph165, %._crit_edge161
  %178 = load ptr, ptr %62, align 8, !tbaa !46
  %179 = getelementptr inbounds i8, ptr %178, i64 704
  %180 = call noundef ptr @_ZN11spirv_cross10VectorViewISt8functionIFvvEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %179) #6
  %181 = call noundef ptr @_ZN11spirv_cross10VectorViewISt8functionIFvvEEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %179) #6
  %.not134167 = icmp eq ptr %180, %181
  br i1 %.not134167, label %._crit_edge171, label %.lr.ph170

.lr.ph165:                                        ; preds = %._crit_edge161, %.lr.ph165
  %.0127163 = phi ptr [ %187, %.lr.ph165 ], [ %95, %._crit_edge161 ]
  %182 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE6EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %.0127163)
  %183 = call noundef nonnull align 8 dereferenceable(976) ptr @_ZN11spirv_cross8Compiler3getINS_9SPIRBlockEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %182)
  %184 = getelementptr inbounds i8, ptr %183, i64 808
  %185 = call noundef ptr @_ZSt5beginIN11spirv_cross11SmallVectorINS0_7TypedIDILNS0_5TypesE2EEELm8EEEEDTcldtfp_5beginEERT_(ptr noundef nonnull align 8 dereferenceable(56) %184)
  %186 = call noundef ptr @_ZSt3endIN11spirv_cross11SmallVectorINS0_7TypedIDILNS0_5TypesE2EEELm8EEEEDTcldtfp_3endEERT_(ptr noundef nonnull align 8 dereferenceable(56) %184)
  call void @_ZSt4sortIPN11spirv_cross7TypedIDILNS0_5TypesE2EEEEvT_S5_(ptr noundef %185, ptr noundef %186)
  %187 = getelementptr inbounds i8, ptr %.0127163, i64 4
  %.not133 = icmp eq ptr %187, %96
  br i1 %.not133, label %._crit_edge166, label %.lr.ph165

._crit_edge171:                                   ; preds = %.lr.ph170, %._crit_edge166
  call void @_ZN11spirv_cross12CompilerGLSL16emit_block_chainERNS_9SPIRBlockE(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(976) %65)
  call void @_ZN11spirv_cross12CompilerGLSL9end_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848) %0)
  %188 = getelementptr inbounds i8, ptr %0, i64 8184
  store i8 0, ptr %188, align 8, !tbaa !116
  call void @_ZN11spirv_cross12CompilerGLSL9statementIJRA1_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(1) @.str.9)
  %189 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_7TypedIDILNS_5TypesE2EEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %71) #6
  %190 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_7TypedIDILNS_5TypesE2EEEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %71) #6
  %.not135172 = icmp eq ptr %189, %190
  br i1 %.not135172, label %.loopexit, label %.lr.ph175

.lr.ph170:                                        ; preds = %._crit_edge166, %.lr.ph170
  %.0125168 = phi ptr [ %191, %.lr.ph170 ], [ %180, %._crit_edge166 ]
  call void @_ZNKSt8functionIFvvEEclEv(ptr noundef nonnull align 8 dereferenceable(32) %.0125168)
  %191 = getelementptr inbounds i8, ptr %.0125168, i64 32
  %.not134 = icmp eq ptr %191, %181
  br i1 %.not134, label %._crit_edge171, label %.lr.ph170

.lr.ph175:                                        ; preds = %._crit_edge171, %.lr.ph175
  %.0118173 = phi ptr [ %195, %.lr.ph175 ], [ %189, %._crit_edge171 ]
  %192 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE2EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %.0118173)
  %193 = call noundef nonnull align 8 dereferenceable(176) ptr @_ZN11spirv_cross8Compiler3getINS_12SPIRVariableEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %192)
  %194 = getelementptr inbounds i8, ptr %193, i64 152
  store i8 0, ptr %194, align 8, !tbaa !107
  %195 = getelementptr inbounds i8, ptr %.0118173, i64 4
  %.not135 = icmp eq ptr %195, %190
  br i1 %.not135, label %.loopexit, label %.lr.ph175

.loopexit:                                        ; preds = %.lr.ph175, %._crit_edge171, %3
  ret void

196:                                              ; preds = %116, %130, %163, %94
  %.pn140.pn.pn = phi { ptr, i32 } [ %.pn140.pn, %94 ], [ %117, %116 ], [ %131, %130 ], [ %164, %163 ]
  resume { ptr, i32 } %.pn140.pn.pn
}

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE4EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #2 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 uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9end_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848)) local_unnamed_addr #1 align 2

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

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

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

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

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

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

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

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

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

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

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

declare noundef zeroext i1 @_ZNK11spirv_cross8Compiler20expression_is_lvalueEj(ptr noundef nonnull align 8 dereferenceable(3176), i32 noundef) local_unnamed_addr #4

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt4sortIPN11spirv_cross7TypedIDILNS0_5TypesE0EEEEvT_S5_(ptr noundef, ptr noundef) local_unnamed_addr #3

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZSt4findIPN11spirv_cross7TypedIDILNS0_5TypesE2EEENS1_ILS2_0EEEET_S6_S6_RKT0_(ptr noundef, ptr noundef, ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #3

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt4sortIPN11spirv_cross7TypedIDILNS0_5TypesE2EEEEvT_S5_(ptr noundef, ptr noundef) local_unnamed_addr #3

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

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

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

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

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

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

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


; Effective O3 passes: EarlyCSEPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,SROAPass,SimplifyCFGPass,TailCallElimPass