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

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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.spirv_cross::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 { [256 x i8] }
%"class.std::allocator" = type { i8 }
%"class.spirv_cross::TypedID.324" = type { i32 }
%"class.spirv_cross::Bitset" = type { i64, %"class.std::unordered_set" }
%"class.std::unordered_set" = type { %"class.std::_Hashtable.74" }
%"class.std::_Hashtable.74" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"class.spirv_cross::TypedID.330" = type { i32 }
%"struct.spirv_cross::SpecializationConstant" = type { %"class.spirv_cross::TypedID.360", i32 }
%"class.spirv_cross::TypedID.360" = type { i32 }
%class.anon.427 = type { ptr, ptr }
%class.anon.428 = type { ptr, ptr }
%class.anon.429 = type { ptr, ptr }
%class.anon.430 = type { ptr, ptr, ptr }
%"class.spirv_cross::CompilerHLSL" = type { %"class.spirv_cross::CompilerGLSL", %"struct.spirv_cross::CompilerHLSL::Options", i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, %"struct.spirv_cross::CompilerHLSL::TextureSizeVariants", i8, i8, %"class.spirv_cross::SmallVector.277", i32, i32, %"class.std::vector.280", i32, %"class.std::unordered_map.285", %"class.std::unordered_set.302", %struct.anon, %"class.std::vector.319" }
%"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.30", %"class.spirv_cross::SmallVector.30", %"class.std::unordered_map.213", %"class.spirv_cross::SmallVector.227", i32, i32, i32, i8, i8, %"class.std::vector.230", %"class.std::vector.230", %"class.std::vector.235", %"class.std::vector.240", %"class.std::unordered_map.213", %"class.std::unordered_set", %"class.std::unordered_set", i8, %"class.std::unordered_set.245", %"class.std::unordered_set", ptr, %"class.std::unordered_map.263" }
%"class.spirv_cross::Compiler" = type { ptr, %"class.spirv_cross::ParsedIR", %"class.spirv_cross::SmallVector.92", %"class.spirv_cross::SmallVector.92", ptr, ptr, i32, %"class.std::unordered_set.95", i8, %"class.std::unordered_set", i8, i8, %"class.spirv_cross::SmallVector.114", %"class.spirv_cross::SmallVector.92", %"class.std::function", %"class.std::unordered_set", %"class.std::unordered_set", %"class.std::unordered_set", %"class.std::unordered_set", %"class.std::unordered_set", %"class.spirv_cross::Bitset", %"class.spirv_cross::Bitset", i32, i32, i8, %"class.std::unordered_set", i8, i8, i32, %"class.std::unordered_map.117", %"class.spirv_cross::SmallVector.92", %"class.std::unordered_map.131", %"class.std::unordered_set", i8, %"class.std::unordered_map.145" }
%"class.spirv_cross::ParsedIR" = type { %"class.std::unique_ptr", %"class.std::vector", %"class.spirv_cross::SmallVector", %"class.std::unordered_map", [14 x %"class.spirv_cross::SmallVector.10"], %"class.spirv_cross::SmallVector.10", %"class.spirv_cross::SmallVector.10", %"class.std::unordered_map.13", %"class.spirv_cross::SmallVector.27", %"class.spirv_cross::SmallVector.30", %"class.spirv_cross::SmallVector.33", %"class.std::unordered_map.36", %"class.std::unordered_map.55", %"class.spirv_cross::TypedID", %"struct.spirv_cross::ParsedIR::Source", i32, i32, i32, i32, %"class.std::__cxx11::basic_string", %"class.spirv_cross::Bitset", %"class.std::unordered_set" }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.1" }
%"struct.std::_Head_base.1" = type { ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.spirv_cross::SmallVector" = type { %"class.spirv_cross::VectorView", i64, %"class.spirv_cross::AlignedBuffer" }
%"class.spirv_cross::VectorView" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer" = type { [192 x i8] }
%"class.std::unordered_map" = type { %"class.std::_Hashtable" }
%"class.std::_Hashtable" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.spirv_cross::SmallVector.10" = type { %"class.spirv_cross::VectorView.11", i64, %"class.spirv_cross::AlignedBuffer.12" }
%"class.spirv_cross::VectorView.11" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.12" = type { [32 x i8] }
%"class.std::unordered_map.13" = type { %"class.std::_Hashtable.14" }
%"class.std::_Hashtable.14" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.spirv_cross::SmallVector.27" = type { %"class.spirv_cross::VectorView.28", i64, %"class.spirv_cross::AlignedBuffer.29" }
%"class.spirv_cross::VectorView.28" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.29" = type { [32 x i8] }
%"class.spirv_cross::SmallVector.33" = type { %"class.spirv_cross::VectorView.34", i64, %"class.spirv_cross::AlignedBuffer.35" }
%"class.spirv_cross::VectorView.34" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.35" = type { [8 x i8] }
%"class.std::unordered_map.36" = type { %"class.std::_Hashtable.37" }
%"class.std::_Hashtable.37" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.55" = type { %"class.std::_Hashtable.56" }
%"class.std::_Hashtable.56" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.spirv_cross::TypedID" = type { i32 }
%"struct.spirv_cross::ParsedIR::Source" = type <{ i32, i8, i8, i8, i8 }>
%"class.std::unordered_set.95" = type { %"class.std::_Hashtable.96" }
%"class.std::_Hashtable.96" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.spirv_cross::SmallVector.114" = type { %"class.spirv_cross::VectorView.115", i64, %"class.spirv_cross::AlignedBuffer.116" }
%"class.spirv_cross::VectorView.115" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.116" = type { [96 x i8] }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%"class.std::unordered_map.117" = type { %"class.std::_Hashtable.118" }
%"class.std::_Hashtable.118" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.spirv_cross::SmallVector.92" = type { %"class.spirv_cross::VectorView.93", i64, %"class.spirv_cross::AlignedBuffer.94" }
%"class.spirv_cross::VectorView.93" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.94" = type { [32 x i8] }
%"class.std::unordered_map.131" = type { %"class.std::_Hashtable.132" }
%"class.std::_Hashtable.132" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.spirv_cross::SmallVector.159" = type { %"class.spirv_cross::VectorView.160", i64, %"class.spirv_cross::AlignedBuffer.161" }
%"class.spirv_cross::VectorView.160" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.161" = type { [64 x i8] }
%"class.spirv_cross::StringStream" = type { %"struct.spirv_cross::StringStream<>::Buffer", [4096 x i8], %"class.spirv_cross::SmallVector.162" }
%"struct.spirv_cross::StringStream<>::Buffer" = type { ptr, i64, i64 }
%"class.spirv_cross::SmallVector.162" = type { %"class.spirv_cross::VectorView.163", i64, %"class.spirv_cross::AlignedBuffer.164" }
%"class.spirv_cross::VectorView.163" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.164" = type { [192 x i8] }
%"struct.spirv_cross::CompilerGLSL::Options" = type { i32, i8, i8, i32, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i32, %"struct.spirv_cross::CompilerGLSL::Options::VertexOptions", %"struct.spirv_cross::CompilerGLSL::Options::FragmentOptions" }
%"struct.spirv_cross::CompilerGLSL::Options::VertexOptions" = type { i8, i8, i8 }
%"struct.spirv_cross::CompilerGLSL::Options::FragmentOptions" = type { i32, i32 }
%"class.std::unordered_set.165" = type { %"class.std::_Hashtable.166" }
%"class.std::_Hashtable.166" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.185" = type { %"class.std::_Hashtable.186" }
%"class.std::_Hashtable.186" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.145" = type { %"class.std::_Hashtable.146" }
%"class.std::_Hashtable.146" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.spirv_cross::CompilerGLSL::BackendVariations" = type <{ %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", i8, i8, i8, i8, [4 x i8], ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, [4 x i8] }>
%"class.std::unordered_map.199" = type { %"class.std::_Hashtable.200" }
%"class.std::_Hashtable.200" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.spirv_cross::CompilerGLSL::ShaderSubgroupSupportHelper" = type { i32 }
%"class.spirv_cross::SmallVector.227" = type { %"class.spirv_cross::VectorView.228", i64, %"class.spirv_cross::AlignedBuffer.229" }
%"class.spirv_cross::VectorView.228" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.229" = type { [32 x i8] }
%"class.std::vector.230" = type { %"struct.std::_Vector_base.231" }
%"struct.std::_Vector_base.231" = type { %"struct.std::_Vector_base<spirv_cross::PlsRemap, std::allocator<spirv_cross::PlsRemap>>::_Vector_impl" }
%"struct.std::_Vector_base<spirv_cross::PlsRemap, std::allocator<spirv_cross::PlsRemap>>::_Vector_impl" = type { %"struct.std::_Vector_base<spirv_cross::PlsRemap, std::allocator<spirv_cross::PlsRemap>>::_Vector_impl_data" }
%"struct.std::_Vector_base<spirv_cross::PlsRemap, std::allocator<spirv_cross::PlsRemap>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.235" = type { %"struct.std::_Vector_base.236" }
%"struct.std::_Vector_base.236" = type { %"struct.std::_Vector_base<std::pair<unsigned int, unsigned int>, std::allocator<std::pair<unsigned int, unsigned int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<unsigned int, unsigned int>, std::allocator<std::pair<unsigned int, unsigned int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<unsigned int, unsigned int>, std::allocator<std::pair<unsigned int, unsigned int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<unsigned int, unsigned int>, std::allocator<std::pair<unsigned int, unsigned int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.240" = type { %"struct.std::_Vector_base.241" }
%"struct.std::_Vector_base.241" = type { %"struct.std::_Vector_base<std::pair<unsigned int, bool>, std::allocator<std::pair<unsigned int, bool>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<unsigned int, bool>, std::allocator<std::pair<unsigned int, bool>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<unsigned int, bool>, std::allocator<std::pair<unsigned int, bool>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<unsigned int, bool>, std::allocator<std::pair<unsigned int, bool>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::unordered_map.213" = type { %"class.std::_Hashtable.214" }
%"class.std::_Hashtable.214" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_set.245" = type { %"class.std::_Hashtable.246" }
%"class.std::_Hashtable.246" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.263" = type { %"class.std::_Hashtable.264" }
%"class.std::_Hashtable.264" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.spirv_cross::CompilerHLSL::Options" = type <{ i32, i8, i8, i8, i8, i8, i8, i8, i8, i8, [3 x i8] }>
%"struct.spirv_cross::CompilerHLSL::TextureSizeVariants" = type { i64, [3 x [4 x i64]] }
%"class.spirv_cross::SmallVector.277" = type { %"class.spirv_cross::VectorView.278", i64, %"class.spirv_cross::AlignedBuffer.279" }
%"class.spirv_cross::VectorView.278" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.279" = type { [320 x i8] }
%"class.std::vector.280" = type { %"struct.std::_Vector_base.281" }
%"struct.std::_Vector_base.281" = type { %"struct.std::_Vector_base<spirv_cross::RootConstants, std::allocator<spirv_cross::RootConstants>>::_Vector_impl" }
%"struct.std::_Vector_base<spirv_cross::RootConstants, std::allocator<spirv_cross::RootConstants>>::_Vector_impl" = type { %"struct.std::_Vector_base<spirv_cross::RootConstants, std::allocator<spirv_cross::RootConstants>>::_Vector_impl_data" }
%"struct.std::_Vector_base<spirv_cross::RootConstants, std::allocator<spirv_cross::RootConstants>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::unordered_map.285" = type { %"class.std::_Hashtable.286" }
%"class.std::_Hashtable.286" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_set.302" = type { %"class.std::_Hashtable.303" }
%"class.std::_Hashtable.303" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%struct.anon = type <{ i32, i32, i8, i8, [2 x i8] }>
%"class.std::vector.319" = type { %"struct.std::_Vector_base.320" }
%"struct.std::_Vector_base.320" = type { %"struct.std::_Vector_base<spirv_cross::TypedID<spirv_cross::TypeType>, std::allocator<spirv_cross::TypedID<spirv_cross::TypeType>>>::_Vector_impl" }
%"struct.std::_Vector_base<spirv_cross::TypedID<spirv_cross::TypeType>, std::allocator<spirv_cross::TypedID<spirv_cross::TypeType>>>::_Vector_impl" = type { %"struct.std::_Vector_base<spirv_cross::TypedID<spirv_cross::TypeType>, std::allocator<spirv_cross::TypedID<spirv_cross::TypeType>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<spirv_cross::TypedID<spirv_cross::TypeType>, std::allocator<spirv_cross::TypedID<spirv_cross::TypeType>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.spirv_cross::SPIREntryPoint" = type <{ %"class.spirv_cross::TypedID", [4 x i8], %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.spirv_cross::SmallVector.334", %"class.spirv_cross::Bitset", %"struct.spirv_cross::SPIREntryPoint::WorkgroupSize", i32, i32, i32, i32, i8, [3 x i8] }>
%"class.spirv_cross::SmallVector.334" = type { %"class.spirv_cross::VectorView.335", i64, %"class.spirv_cross::AlignedBuffer.336" }
%"class.spirv_cross::VectorView.335" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.336" = type { [32 x i8] }
%"struct.spirv_cross::SPIREntryPoint::WorkgroupSize" = type { i32, i32, i32, i32, i32, i32, i32 }
%"struct.spirv_cross::SPIRFunction" = type <{ %"struct.spirv_cross::IVariant.base", %"class.spirv_cross::TypedID.328", %"class.spirv_cross::TypedID.328", [4 x i8], %"class.spirv_cross::SmallVector.395", %"class.spirv_cross::SmallVector.395", %"class.spirv_cross::SmallVector.334", %"class.spirv_cross::TypedID.331", [4 x i8], %"class.spirv_cross::SmallVector.398", %"class.spirv_cross::SmallVector.401", %"struct.spirv_cross::SPIRFunction::EntryLine", %"class.spirv_cross::SmallVector.404", %"class.spirv_cross::SmallVector.404", %"class.spirv_cross::SmallVector.10", i8, i8, i8, [5 x i8] }>
%"struct.spirv_cross::IVariant.base" = type <{ ptr, %"class.spirv_cross::TypedID.324" }>
%"class.spirv_cross::TypedID.328" = type { i32 }
%"class.spirv_cross::SmallVector.395" = type { %"class.spirv_cross::VectorView.396", i64, %"class.spirv_cross::AlignedBuffer.397" }
%"class.spirv_cross::VectorView.396" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.397" = type { [160 x i8] }
%"class.spirv_cross::TypedID.331" = type { i32 }
%"class.spirv_cross::SmallVector.398" = type { %"class.spirv_cross::VectorView.399", i64, %"class.spirv_cross::AlignedBuffer.400" }
%"class.spirv_cross::VectorView.399" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.400" = type { [32 x i8] }
%"class.spirv_cross::SmallVector.401" = type { %"class.spirv_cross::VectorView.402", i64, %"class.spirv_cross::AlignedBuffer.403" }
%"class.spirv_cross::VectorView.402" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.403" = type { [128 x i8] }
%"struct.spirv_cross::SPIRFunction::EntryLine" = type { i32, i32 }
%"class.spirv_cross::SmallVector.404" = type <{ %"class.spirv_cross::VectorView.405", i64, [8 x i8] }>
%"class.spirv_cross::VectorView.405" = type { ptr, i64 }
%"struct.spirv_cross::SPIRFunction::Parameter" = type <{ %"class.spirv_cross::TypedID.328", %"class.spirv_cross::TypedID.324", i32, i32, i8, [3 x i8] }>
%"struct.spirv_cross::SPIRVariable" = type { %"struct.spirv_cross::IVariant.base", %"class.spirv_cross::TypedID.328", i32, i32, %"class.spirv_cross::TypedID.324", %"class.spirv_cross::TypedID.330", %"class.spirv_cross::SmallVector.92", i8, i8, %"class.spirv_cross::TypedID.324", %"class.spirv_cross::SmallVector.10", i8, i8, i8, i8, i32, %"class.spirv_cross::TypedID.331", i8, i8, i8, ptr }
%"struct.spirv_cross::IVariant" = type <{ ptr, %"class.spirv_cross::TypedID.324", [4 x i8] }>
%"struct.spirv_cross::SPIRConstant" = type { %"struct.spirv_cross::IVariant.base", %"class.spirv_cross::TypedID.328", %"struct.spirv_cross::SPIRConstant::ConstantMatrix", i8, i8, i8, %"class.spirv_cross::SmallVector.339", %"class.std::__cxx11::basic_string" }
%"struct.spirv_cross::SPIRConstant::ConstantMatrix" = type { [4 x %"struct.spirv_cross::SPIRConstant::ConstantVector"], [4 x %"class.spirv_cross::TypedID.324"], i32, [4 x i8] }
%"struct.spirv_cross::SPIRConstant::ConstantVector" = type <{ [4 x %"union.spirv_cross::SPIRConstant::Constant"], [4 x %"class.spirv_cross::TypedID.324"], i32, [4 x i8] }>
%"union.spirv_cross::SPIRConstant::Constant" = type { i64 }
%"class.spirv_cross::SmallVector.339" = type { %"class.spirv_cross::VectorView.340", i64, %"class.spirv_cross::AlignedBuffer.341" }
%"class.spirv_cross::VectorView.340" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.341" = type { [32 x i8] }

@_ZTIN11spirv_cross13CompilerErrorE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.78 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.341 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.379 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.405 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.406 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.411 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.412 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.413 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.414 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.415 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.416 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.417 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.418 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.419 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.420 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.421 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.422 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.423 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.424 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.425 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.426 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.427 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.428 = external hidden unnamed_addr constant [21 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: 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

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

declare ptr @__cxa_allocate_exception(i64)

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

declare i32 @__gxx_personality_v0(...)

declare void @__cxa_free_exception(ptr)

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

declare void @__cxa_throw(ptr, ptr, ptr)

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #1 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) #7

; 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

declare void @_ZN11spirv_cross12CompilerGLSL11begin_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848)) #3

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

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

; Function Attrs: mustprogress 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_cross12CompilerGLSL9statementIJRA29_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 1 dereferenceable(29)) #5 align 2

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

declare void @_ZN11spirv_cross12CompilerGLSL9end_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848)) #3

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

; Function Attrs: 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 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 ptr @_ZN11spirv_cross10VectorViewINS_12SPIRFunction9ParameterEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16)) #2 align 2

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

declare void @_ZN11spirv_cross12CompilerGLSL13to_expressionB5cxx11Ejb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(9848), i32 noundef, i1 noundef zeroext) #3

; 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: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) #5

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11spirv_cross12CompilerHLSL21emit_hlsl_entry_pointEv(ptr noundef nonnull align 8 dereferenceable(10528) %0) #1 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca %"class.spirv_cross::SmallVector.30", align 8
  %4 = alloca %"class.std::__cxx11::basic_string", align 8
  %5 = alloca %"class.std::allocator", align 1
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca i8, align 1
  %17 = alloca %"class.spirv_cross::TypedID.324", align 4
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"class.spirv_cross::Bitset", align 8
  %21 = alloca %"class.spirv_cross::TypedID.330", align 4
  %22 = alloca %"class.spirv_cross::TypedID.324", align 4
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca %"class.std::__cxx11::basic_string", align 8
  %27 = alloca %"class.std::__cxx11::basic_string", align 8
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  %29 = alloca %"class.std::__cxx11::basic_string", align 8
  %30 = alloca %"class.std::__cxx11::basic_string", align 8
  %31 = alloca %"class.std::__cxx11::basic_string", align 8
  %32 = alloca %"class.std::__cxx11::basic_string", align 8
  %33 = alloca %"class.std::__cxx11::basic_string", align 8
  %34 = alloca %"class.std::__cxx11::basic_string", align 8
  %35 = alloca %"struct.spirv_cross::SpecializationConstant", align 4
  %36 = alloca %"struct.spirv_cross::SpecializationConstant", align 4
  %37 = alloca %"struct.spirv_cross::SpecializationConstant", align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca %"class.std::__cxx11::basic_string", align 8
  %42 = alloca %"class.std::__cxx11::basic_string", align 8
  %43 = alloca %"class.std::__cxx11::basic_string", align 8
  %44 = alloca ptr, align 8
  %45 = alloca ptr, align 8
  %46 = alloca %"class.std::__cxx11::basic_string", align 8
  %47 = alloca i8, align 1
  %48 = alloca %class.anon.427, align 8
  %49 = alloca %class.anon.428, align 8
  %50 = alloca %"class.spirv_cross::SmallVector.30", 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 %"class.std::__cxx11::basic_string", align 8
  %57 = alloca %"class.std::__cxx11::basic_string", align 8
  %58 = alloca %"class.std::__cxx11::basic_string", align 8
  %59 = alloca %class.anon.429, align 8
  %60 = alloca %class.anon.430, align 8
  store ptr %0, ptr %2, align 8, !tbaa !5
  %61 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 280, ptr %3) #8
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(280) %3) #8
  %62 = getelementptr inbounds %"class.spirv_cross::CompilerHLSL", ptr %61, i32 0, i32 20
  %63 = load i8, ptr %62, align 1, !tbaa !9, !range !138, !noundef !139
  %64 = trunc i8 %63 to i1
  br i1 %64, label %65, label %71

65:                                               ; preds = %1
  call void @llvm.lifetime.start.p0(i64 32, ptr %4) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %5) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef @.str.411, ptr noundef nonnull align 1 dereferenceable(1) %5)
          to label %66 unwind label %67

66:                                               ; preds = %65
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %3, ptr noundef nonnull align 8 dereferenceable(32) %4) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %5) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %4) #8
  br label %71

67:                                               ; preds = %65
  %68 = landingpad { ptr, i32 }
          cleanup
  %69 = extractvalue { ptr, i32 } %68, 0
  store ptr %69, ptr %6, align 8
  %70 = extractvalue { ptr, i32 } %68, 1
  store i32 %70, ptr %7, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %5) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %4) #8
  br label %628

71:                                               ; preds = %66, %1
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #8
  %72 = invoke noundef nonnull align 8 dereferenceable(237) ptr @_ZN11spirv_cross8Compiler15get_entry_pointEv(ptr noundef nonnull align 8 dereferenceable(3176) %61)
          to label %73 unwind label %77

73:                                               ; preds = %71
  store ptr %72, ptr %8, align 8, !tbaa !5
  %74 = load ptr, ptr %8, align 8, !tbaa !5
  %75 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %74, i32 0, i32 10
  %76 = load i32, ptr %75, align 8, !tbaa !140
  switch i32 %76, label %452 [
    i32 5364, label %81
    i32 5365, label %81
    i32 5, label %81
    i32 4, label %444
  ]

77:                                               ; preds = %449, %444, %107, %100, %98, %93, %91, %86, %71
  %78 = landingpad { ptr, i32 }
          cleanup
  %79 = extractvalue { ptr, i32 } %78, 0
  store ptr %79, ptr %6, align 8
  %80 = extractvalue { ptr, i32 } %78, 1
  store i32 %80, ptr %7, align 4
  br label %627

81:                                               ; preds = %73, %73, %73
  %82 = load ptr, ptr %8, align 8, !tbaa !5
  %83 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %82, i32 0, i32 10
  %84 = load i32, ptr %83, align 8, !tbaa !140
  %85 = icmp eq i32 %84, 5365
  br i1 %85, label %86, label %297

86:                                               ; preds = %81
  %87 = load ptr, ptr %8, align 8, !tbaa !5
  %88 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %87, i32 0, i32 5
  %89 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %88, i32 noundef 5298)
          to label %90 unwind label %77

90:                                               ; preds = %86
  br i1 %89, label %91, label %93

91:                                               ; preds = %90
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA29_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %61, ptr noundef nonnull align 1 dereferenceable(29) @.str.412)
          to label %92 unwind label %77

92:                                               ; preds = %91
  br label %114

93:                                               ; preds = %90
  %94 = load ptr, ptr %8, align 8, !tbaa !5
  %95 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %94, i32 0, i32 5
  %96 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %95, i32 noundef 5269)
          to label %97 unwind label %77

97:                                               ; preds = %93
  br i1 %96, label %98, label %100

98:                                               ; preds = %97
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA25_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %61, ptr noundef nonnull align 1 dereferenceable(25) @.str.413)
          to label %99 unwind label %77

99:                                               ; preds = %98
  br label %113

100:                                              ; preds = %97
  %101 = load ptr, ptr %8, align 8, !tbaa !5
  %102 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %101, i32 0, i32 5
  %103 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %102, i32 noundef 27)
          to label %104 unwind label %77

104:                                              ; preds = %100
  br i1 %103, label %105, label %112

105:                                              ; preds = %104
  %106 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %106, ptr noundef @.str.414)
          to label %107 unwind label %108

107:                                              ; preds = %105
  invoke void @__cxa_throw(ptr %106, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #9
          to label %634 unwind label %77

108:                                              ; preds = %105
  %109 = landingpad { ptr, i32 }
          cleanup
  %110 = extractvalue { ptr, i32 } %109, 0
  store ptr %110, ptr %6, align 8
  %111 = extractvalue { ptr, i32 } %109, 1
  store i32 %111, ptr %7, align 4
  call void @__cxa_free_exception(ptr %106) #8
  br label %627

112:                                              ; preds = %104
  br label %113

113:                                              ; preds = %112, %99
  br label %114

114:                                              ; preds = %113, %92
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #8
  %115 = getelementptr inbounds %"class.spirv_cross::Compiler", ptr %61, i32 0, i32 1
  %116 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %115, i32 0, i32 13
  %117 = invoke noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE4EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %116)
          to label %118 unwind label %132

118:                                              ; preds = %114
  %119 = invoke noundef nonnull align 8 dereferenceable(795) ptr @_ZN11spirv_cross8Compiler3getINS_12SPIRFunctionEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %61, i32 noundef %117)
          to label %120 unwind label %132

120:                                              ; preds = %118
  store ptr %119, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #8
  %121 = load ptr, ptr %9, align 8, !tbaa !5
  %122 = getelementptr inbounds %"struct.spirv_cross::SPIRFunction", ptr %121, i32 0, i32 4
  store ptr %122, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #8
  %123 = load ptr, ptr %10, align 8, !tbaa !5
  %124 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_12SPIRFunction9ParameterEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %123) #8
  store ptr %124, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #8
  %125 = load ptr, ptr %10, align 8, !tbaa !5
  %126 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_12SPIRFunction9ParameterEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %125) #8
  store ptr %126, ptr %12, align 8, !tbaa !5
  br label %127

127:                                              ; preds = %289, %120
  %128 = load ptr, ptr %11, align 8, !tbaa !5
  %129 = load ptr, ptr %12, align 8, !tbaa !5
  %130 = icmp ne ptr %128, %129
  br i1 %130, label %136, label %131

131:                                              ; preds = %127
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #8
  br label %295

132:                                              ; preds = %118, %114
  %133 = landingpad { ptr, i32 }
          cleanup
  %134 = extractvalue { ptr, i32 } %133, 0
  store ptr %134, ptr %6, align 8
  %135 = extractvalue { ptr, i32 } %133, 1
  store i32 %135, ptr %7, align 4
  br label %296

136:                                              ; preds = %127
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #8
  %137 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %137, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #8
  %138 = load ptr, ptr %13, align 8, !tbaa !5
  %139 = getelementptr inbounds %"struct.spirv_cross::SPIRFunction::Parameter", ptr %138, i32 0, i32 1
  %140 = invoke noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %139)
          to label %141 unwind label %168

141:                                              ; preds = %136
  %142 = invoke noundef nonnull align 8 dereferenceable(176) ptr @_ZN11spirv_cross8Compiler3getINS_12SPIRVariableEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %61, i32 noundef %140)
          to label %143 unwind label %168

143:                                              ; preds = %141
  store ptr %142, ptr %14, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #8
  %144 = load ptr, ptr %14, align 8, !tbaa !5
  %145 = getelementptr inbounds %"struct.spirv_cross::SPIRVariable", ptr %144, i32 0, i32 1
  %146 = invoke noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE1EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %145)
          to label %147 unwind label %172

147:                                              ; preds = %143
  %148 = invoke noundef nonnull align 8 dereferenceable(336) ptr @_ZN11spirv_cross8Compiler3getINS_8SPIRTypeEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %61, i32 noundef %146)
          to label %149 unwind label %172

149:                                              ; preds = %147
  store ptr %148, ptr %15, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #8
  %150 = load ptr, ptr %15, align 8, !tbaa !5
  %151 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %150, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %17, ptr align 8 %151, i64 4, i1 false), !tbaa.struct !147
  %152 = getelementptr inbounds %"class.spirv_cross::TypedID.324", ptr %17, i32 0, i32 0
  %153 = load i32, ptr %152, align 4
  %154 = invoke noundef zeroext i1 @_ZNK11spirv_cross8Compiler14has_decorationENS_7TypedIDILNS_5TypesE0EEEN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %61, i32 %153, i32 noundef 2)
          to label %155 unwind label %176

155:                                              ; preds = %149
  %156 = zext i1 %154 to i8
  store i8 %156, ptr %16, align 1, !tbaa !149
  %157 = load ptr, ptr %14, align 8, !tbaa !5
  %158 = getelementptr inbounds %"struct.spirv_cross::SPIRVariable", ptr %157, i32 0, i32 2
  %159 = load i32, ptr %158, align 8, !tbaa !150
  %160 = icmp eq i32 %159, 5402
  br i1 %160, label %161, label %189

161:                                              ; preds = %155
  call void @llvm.lifetime.start.p0(i64 32, ptr %18) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %19) #8
  %162 = load ptr, ptr %14, align 8, !tbaa !5
  %163 = load ptr, ptr %61, align 8, !tbaa !158
  %164 = getelementptr inbounds ptr, ptr %163, i64 39
  %165 = load ptr, ptr %164, align 8
  invoke void %165(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %19, ptr noundef nonnull align 8 dereferenceable(9848) %61, ptr noundef nonnull align 8 dereferenceable(176) %162)
          to label %166 unwind label %180

166:                                              ; preds = %161
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %18, ptr noundef @.str.415, ptr noundef nonnull align 8 dereferenceable(32) %19)
          to label %167 unwind label %184

167:                                              ; preds = %166
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %3, ptr noundef nonnull align 8 dereferenceable(32) %18) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #8
  br label %288

168:                                              ; preds = %141, %136
  %169 = landingpad { ptr, i32 }
          cleanup
  %170 = extractvalue { ptr, i32 } %169, 0
  store ptr %170, ptr %6, align 8
  %171 = extractvalue { ptr, i32 } %169, 1
  store i32 %171, ptr %7, align 4
  br label %294

172:                                              ; preds = %147, %143
  %173 = landingpad { ptr, i32 }
          cleanup
  %174 = extractvalue { ptr, i32 } %173, 0
  store ptr %174, ptr %6, align 8
  %175 = extractvalue { ptr, i32 } %173, 1
  store i32 %175, ptr %7, align 4
  br label %293

176:                                              ; preds = %251, %149
  %177 = landingpad { ptr, i32 }
          cleanup
  %178 = extractvalue { ptr, i32 } %177, 0
  store ptr %178, ptr %6, align 8
  %179 = extractvalue { ptr, i32 } %177, 1
  store i32 %179, ptr %7, align 4
  br label %292

180:                                              ; preds = %161
  %181 = landingpad { ptr, i32 }
          cleanup
  %182 = extractvalue { ptr, i32 } %181, 0
  store ptr %182, ptr %6, align 8
  %183 = extractvalue { ptr, i32 } %181, 1
  store i32 %183, ptr %7, align 4
  br label %188

184:                                              ; preds = %166
  %185 = landingpad { ptr, i32 }
          cleanup
  %186 = extractvalue { ptr, i32 } %185, 0
  store ptr %186, ptr %6, align 8
  %187 = extractvalue { ptr, i32 } %185, 1
  store i32 %187, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  br label %188

188:                                              ; preds = %184, %180
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #8
  br label %292

189:                                              ; preds = %155
  %190 = load i8, ptr %16, align 1, !tbaa !149, !range !138, !noundef !139
  %191 = trunc i8 %190 to i1
  br i1 %191, label %192, label %251

192:                                              ; preds = %189
  call void @llvm.lifetime.start.p0(i64 64, ptr %20) #8
  %193 = load ptr, ptr %14, align 8, !tbaa !5
  %194 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %193, i32 0, i32 1
  %195 = invoke i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvNS0_IXT_EEEILS1_2EEEv(ptr noundef nonnull align 4 dereferenceable(4) %194)
          to label %196 unwind label %216

196:                                              ; preds = %192
  %197 = getelementptr inbounds %"class.spirv_cross::TypedID.330", ptr %21, i32 0, i32 0
  store i32 %195, ptr %197, align 4
  %198 = getelementptr inbounds %"class.spirv_cross::TypedID.330", ptr %21, i32 0, i32 0
  %199 = load i32, ptr %198, align 4
  invoke void @_ZNK11spirv_cross8Compiler22get_buffer_block_flagsENS_7TypedIDILNS_5TypesE2EEE(ptr dead_on_unwind writable sret(%"class.spirv_cross::Bitset") align 8 %20, ptr noundef nonnull align 8 dereferenceable(3176) %61, i32 %199)
          to label %200 unwind label %216

200:                                              ; preds = %196
  %201 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %20, i32 noundef 5271)
          to label %202 unwind label %220

202:                                              ; preds = %200
  br i1 %201, label %210, label %203

203:                                              ; preds = %202
  %204 = load ptr, ptr %13, align 8, !tbaa !5
  %205 = getelementptr inbounds %"struct.spirv_cross::SPIRFunction::Parameter", ptr %204, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %22, ptr align 4 %205, i64 4, i1 false), !tbaa.struct !147
  %206 = getelementptr inbounds %"class.spirv_cross::TypedID.324", ptr %22, i32 0, i32 0
  %207 = load i32, ptr %206, align 4
  %208 = invoke noundef zeroext i1 @_ZNK11spirv_cross8Compiler14has_decorationENS_7TypedIDILNS_5TypesE0EEEN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %61, i32 %207, i32 noundef 5271)
          to label %209 unwind label %220

209:                                              ; preds = %203
  br i1 %208, label %210, label %233

210:                                              ; preds = %209, %202
  call void @llvm.lifetime.start.p0(i64 32, ptr %23) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %24) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %25) #8
  %211 = load ptr, ptr %8, align 8, !tbaa !5
  %212 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %211, i32 0, i32 9
  %213 = load i32, ptr %212, align 4, !tbaa !160
  call void @_ZNSt7__cxx119to_stringEj(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %25, i32 noundef %213) #8
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %24, ptr noundef @.str.416, ptr noundef nonnull align 8 dereferenceable(32) %25)
          to label %214 unwind label %224

214:                                              ; preds = %210
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %23, ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef @.str.417)
          to label %215 unwind label %228

215:                                              ; preds = %214
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %3, ptr noundef nonnull align 8 dereferenceable(32) %23) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #8
  br label %248

216:                                              ; preds = %196, %192
  %217 = landingpad { ptr, i32 }
          cleanup
  %218 = extractvalue { ptr, i32 } %217, 0
  store ptr %218, ptr %6, align 8
  %219 = extractvalue { ptr, i32 } %217, 1
  store i32 %219, ptr %7, align 4
  br label %250

220:                                              ; preds = %203, %200
  %221 = landingpad { ptr, i32 }
          cleanup
  %222 = extractvalue { ptr, i32 } %221, 0
  store ptr %222, ptr %6, align 8
  %223 = extractvalue { ptr, i32 } %221, 1
  store i32 %223, ptr %7, align 4
  br label %249

224:                                              ; preds = %210
  %225 = landingpad { ptr, i32 }
          cleanup
  %226 = extractvalue { ptr, i32 } %225, 0
  store ptr %226, ptr %6, align 8
  %227 = extractvalue { ptr, i32 } %225, 1
  store i32 %227, ptr %7, align 4
  br label %232

228:                                              ; preds = %214
  %229 = landingpad { ptr, i32 }
          cleanup
  %230 = extractvalue { ptr, i32 } %229, 0
  store ptr %230, ptr %6, align 8
  %231 = extractvalue { ptr, i32 } %229, 1
  store i32 %231, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #8
  br label %232

232:                                              ; preds = %228, %224
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #8
  br label %249

233:                                              ; preds = %209
  call void @llvm.lifetime.start.p0(i64 32, ptr %26) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %27) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %28) #8
  %234 = load ptr, ptr %8, align 8, !tbaa !5
  %235 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %234, i32 0, i32 8
  %236 = load i32, ptr %235, align 8, !tbaa !161
  call void @_ZNSt7__cxx119to_stringEj(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %28, i32 noundef %236) #8
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %27, ptr noundef @.str.418, ptr noundef nonnull align 8 dereferenceable(32) %28)
          to label %237 unwind label %239

237:                                              ; preds = %233
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %26, ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef @.str.417)
          to label %238 unwind label %243

238:                                              ; preds = %237
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %3, ptr noundef nonnull align 8 dereferenceable(32) %26) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #8
  br label %248

239:                                              ; preds = %233
  %240 = landingpad { ptr, i32 }
          cleanup
  %241 = extractvalue { ptr, i32 } %240, 0
  store ptr %241, ptr %6, align 8
  %242 = extractvalue { ptr, i32 } %240, 1
  store i32 %242, ptr %7, align 4
  br label %247

243:                                              ; preds = %237
  %244 = landingpad { ptr, i32 }
          cleanup
  %245 = extractvalue { ptr, i32 } %244, 0
  store ptr %245, ptr %6, align 8
  %246 = extractvalue { ptr, i32 } %244, 1
  store i32 %246, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #8
  br label %247

247:                                              ; preds = %243, %239
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #8
  br label %249

248:                                              ; preds = %238, %215
  call void @_ZN11spirv_cross6BitsetD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %20) #8
  call void @llvm.lifetime.end.p0(i64 64, ptr %20) #8
  br label %287

249:                                              ; preds = %247, %232, %220
  call void @_ZN11spirv_cross6BitsetD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %20) #8
  br label %250

250:                                              ; preds = %249, %216
  call void @llvm.lifetime.end.p0(i64 64, ptr %20) #8
  br label %292

251:                                              ; preds = %189
  %252 = load ptr, ptr %8, align 8, !tbaa !5
  %253 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %252, i32 0, i32 5
  %254 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %253, i32 noundef 5298)
          to label %255 unwind label %176

255:                                              ; preds = %251
  br i1 %254, label %256, label %271

256:                                              ; preds = %255
  call void @llvm.lifetime.start.p0(i64 32, ptr %29) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %30) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %31) #8
  %257 = load ptr, ptr %8, align 8, !tbaa !5
  %258 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %257, i32 0, i32 9
  %259 = load i32, ptr %258, align 4, !tbaa !160
  call void @_ZNSt7__cxx119to_stringEj(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %31, i32 noundef %259) #8
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %30, ptr noundef @.str.419, ptr noundef nonnull align 8 dereferenceable(32) %31)
          to label %260 unwind label %262

260:                                              ; preds = %256
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %29, ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef @.str.417)
          to label %261 unwind label %266

261:                                              ; preds = %260
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %3, ptr noundef nonnull align 8 dereferenceable(32) %29) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #8
  br label %286

262:                                              ; preds = %256
  %263 = landingpad { ptr, i32 }
          cleanup
  %264 = extractvalue { ptr, i32 } %263, 0
  store ptr %264, ptr %6, align 8
  %265 = extractvalue { ptr, i32 } %263, 1
  store i32 %265, ptr %7, align 4
  br label %270

266:                                              ; preds = %260
  %267 = landingpad { ptr, i32 }
          cleanup
  %268 = extractvalue { ptr, i32 } %267, 0
  store ptr %268, ptr %6, align 8
  %269 = extractvalue { ptr, i32 } %267, 1
  store i32 %269, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #8
  br label %270

270:                                              ; preds = %266, %262
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #8
  br label %292

271:                                              ; preds = %255
  call void @llvm.lifetime.start.p0(i64 32, ptr %32) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %33) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %34) #8
  %272 = load ptr, ptr %8, align 8, !tbaa !5
  %273 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %272, i32 0, i32 9
  %274 = load i32, ptr %273, align 4, !tbaa !160
  call void @_ZNSt7__cxx119to_stringEj(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %34, i32 noundef %274) #8
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %33, ptr noundef @.str.420, ptr noundef nonnull align 8 dereferenceable(32) %34)
          to label %275 unwind label %277

275:                                              ; preds = %271
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %32, ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef @.str.417)
          to label %276 unwind label %281

276:                                              ; preds = %275
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %3, ptr noundef nonnull align 8 dereferenceable(32) %32) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %34) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %33) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #8
  br label %286

277:                                              ; preds = %271
  %278 = landingpad { ptr, i32 }
          cleanup
  %279 = extractvalue { ptr, i32 } %278, 0
  store ptr %279, ptr %6, align 8
  %280 = extractvalue { ptr, i32 } %278, 1
  store i32 %280, ptr %7, align 4
  br label %285

281:                                              ; preds = %275
  %282 = landingpad { ptr, i32 }
          cleanup
  %283 = extractvalue { ptr, i32 } %282, 0
  store ptr %283, ptr %6, align 8
  %284 = extractvalue { ptr, i32 } %282, 1
  store i32 %284, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #8
  br label %285

285:                                              ; preds = %281, %277
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %34) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %33) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #8
  br label %292

286:                                              ; preds = %276, %261
  br label %287

287:                                              ; preds = %286, %248
  br label %288

288:                                              ; preds = %287, %167
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #8
  br label %289

289:                                              ; preds = %288
  %290 = load ptr, ptr %11, align 8, !tbaa !5
  %291 = getelementptr inbounds %"struct.spirv_cross::SPIRFunction::Parameter", ptr %290, i32 1
  store ptr %291, ptr %11, align 8, !tbaa !5
  br label %127

292:                                              ; preds = %285, %270, %250, %188, %176
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #8
  br label %293

293:                                              ; preds = %292, %172
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  br label %294

294:                                              ; preds = %293, %168
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #8
  br label %296

295:                                              ; preds = %131
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #8
  br label %297

296:                                              ; preds = %294, %132
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #8
  br label %627

297:                                              ; preds = %295, %81
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #8
  call void @_ZN11spirv_cross22SpecializationConstantC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %35) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #8
  call void @_ZN11spirv_cross22SpecializationConstantC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %36) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #8
  call void @_ZN11spirv_cross22SpecializationConstantC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %37) #8
  %298 = invoke noundef i32 @_ZNK11spirv_cross8Compiler44get_work_group_size_specialization_constantsERNS_22SpecializationConstantES2_S2_(ptr noundef nonnull align 8 dereferenceable(3176) %61, ptr noundef nonnull align 4 dereferenceable(8) %35, ptr noundef nonnull align 4 dereferenceable(8) %36, ptr noundef nonnull align 4 dereferenceable(8) %37)
          to label %299 unwind label %337

299:                                              ; preds = %297
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #8
  %300 = load ptr, ptr %8, align 8, !tbaa !5
  %301 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %300, i32 0, i32 6
  %302 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint::WorkgroupSize", ptr %301, i32 0, i32 0
  %303 = load i32, ptr %302, align 8, !tbaa !162
  store i32 %303, ptr %38, align 4, !tbaa !148
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #8
  %304 = load ptr, ptr %8, align 8, !tbaa !5
  %305 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %304, i32 0, i32 6
  %306 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint::WorkgroupSize", ptr %305, i32 0, i32 1
  %307 = load i32, ptr %306, align 4, !tbaa !163
  store i32 %307, ptr %39, align 4, !tbaa !148
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #8
  %308 = load ptr, ptr %8, align 8, !tbaa !5
  %309 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %308, i32 0, i32 6
  %310 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint::WorkgroupSize", ptr %309, i32 0, i32 2
  %311 = load i32, ptr %310, align 8, !tbaa !164
  store i32 %311, ptr %40, align 4, !tbaa !148
  %312 = load ptr, ptr %8, align 8, !tbaa !5
  %313 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %312, i32 0, i32 6
  %314 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint::WorkgroupSize", ptr %313, i32 0, i32 6
  %315 = load i32, ptr %314, align 8, !tbaa !165
  %316 = icmp ne i32 %315, 0
  br i1 %316, label %376, label %317

317:                                              ; preds = %299
  %318 = load ptr, ptr %8, align 8, !tbaa !5
  %319 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %318, i32 0, i32 5
  %320 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %319, i32 noundef 38)
          to label %321 unwind label %341

321:                                              ; preds = %317
  br i1 %320, label %322, label %376

322:                                              ; preds = %321
  %323 = load ptr, ptr %8, align 8, !tbaa !5
  %324 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %323, i32 0, i32 6
  %325 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint::WorkgroupSize", ptr %324, i32 0, i32 3
  %326 = load i32, ptr %325, align 4, !tbaa !166
  %327 = icmp ne i32 %326, 0
  br i1 %327, label %328, label %345

328:                                              ; preds = %322
  %329 = load ptr, ptr %8, align 8, !tbaa !5
  %330 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %329, i32 0, i32 6
  %331 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint::WorkgroupSize", ptr %330, i32 0, i32 3
  %332 = load i32, ptr %331, align 4, !tbaa !166
  %333 = invoke noundef nonnull align 8 dereferenceable(360) ptr @_ZN11spirv_cross8Compiler3getINS_12SPIRConstantEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %61, i32 noundef %332)
          to label %334 unwind label %341

334:                                              ; preds = %328
  %335 = invoke noundef i32 @_ZNK11spirv_cross12SPIRConstant6scalarEjj(ptr noundef nonnull align 8 dereferenceable(360) %333, i32 noundef 0, i32 noundef 0)
          to label %336 unwind label %341

336:                                              ; preds = %334
  store i32 %335, ptr %38, align 4, !tbaa !148
  br label %345

337:                                              ; preds = %297
  %338 = landingpad { ptr, i32 }
          cleanup
  %339 = extractvalue { ptr, i32 } %338, 0
  store ptr %339, ptr %6, align 8
  %340 = extractvalue { ptr, i32 } %338, 1
  store i32 %340, ptr %7, align 4
  br label %443

341:                                              ; preds = %372, %366, %357, %351, %334, %328, %317
  %342 = landingpad { ptr, i32 }
          cleanup
  %343 = extractvalue { ptr, i32 } %342, 0
  store ptr %343, ptr %6, align 8
  %344 = extractvalue { ptr, i32 } %342, 1
  store i32 %344, ptr %7, align 4
  br label %442

345:                                              ; preds = %336, %322
  %346 = load ptr, ptr %8, align 8, !tbaa !5
  %347 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %346, i32 0, i32 6
  %348 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint::WorkgroupSize", ptr %347, i32 0, i32 4
  %349 = load i32, ptr %348, align 8, !tbaa !167
  %350 = icmp ne i32 %349, 0
  br i1 %350, label %351, label %360

351:                                              ; preds = %345
  %352 = load ptr, ptr %8, align 8, !tbaa !5
  %353 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %352, i32 0, i32 6
  %354 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint::WorkgroupSize", ptr %353, i32 0, i32 4
  %355 = load i32, ptr %354, align 8, !tbaa !167
  %356 = invoke noundef nonnull align 8 dereferenceable(360) ptr @_ZN11spirv_cross8Compiler3getINS_12SPIRConstantEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %61, i32 noundef %355)
          to label %357 unwind label %341

357:                                              ; preds = %351
  %358 = invoke noundef i32 @_ZNK11spirv_cross12SPIRConstant6scalarEjj(ptr noundef nonnull align 8 dereferenceable(360) %356, i32 noundef 0, i32 noundef 0)
          to label %359 unwind label %341

359:                                              ; preds = %357
  store i32 %358, ptr %39, align 4, !tbaa !148
  br label %360

360:                                              ; preds = %359, %345
  %361 = load ptr, ptr %8, align 8, !tbaa !5
  %362 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %361, i32 0, i32 6
  %363 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint::WorkgroupSize", ptr %362, i32 0, i32 5
  %364 = load i32, ptr %363, align 4, !tbaa !168
  %365 = icmp ne i32 %364, 0
  br i1 %365, label %366, label %375

366:                                              ; preds = %360
  %367 = load ptr, ptr %8, align 8, !tbaa !5
  %368 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %367, i32 0, i32 6
  %369 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint::WorkgroupSize", ptr %368, i32 0, i32 5
  %370 = load i32, ptr %369, align 4, !tbaa !168
  %371 = invoke noundef nonnull align 8 dereferenceable(360) ptr @_ZN11spirv_cross8Compiler3getINS_12SPIRConstantEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %61, i32 noundef %370)
          to label %372 unwind label %341

372:                                              ; preds = %366
  %373 = invoke noundef i32 @_ZNK11spirv_cross12SPIRConstant6scalarEjj(ptr noundef nonnull align 8 dereferenceable(360) %371, i32 noundef 0, i32 noundef 0)
          to label %374 unwind label %341

374:                                              ; preds = %372
  store i32 %373, ptr %40, align 4, !tbaa !148
  br label %375

375:                                              ; preds = %374, %360
  br label %376

376:                                              ; preds = %375, %321, %299
  call void @llvm.lifetime.start.p0(i64 32, ptr %41) #8
  %377 = getelementptr inbounds %"struct.spirv_cross::SpecializationConstant", ptr %35, i32 0, i32 0
  %378 = invoke noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE3EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %377)
          to label %379 unwind label %423

379:                                              ; preds = %376
  %380 = icmp ne i32 %378, 0
  br i1 %380, label %381, label %389

381:                                              ; preds = %379
  %382 = getelementptr inbounds %"struct.spirv_cross::SpecializationConstant", ptr %35, i32 0, i32 0
  %383 = invoke noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE3EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %382)
          to label %384 unwind label %423

384:                                              ; preds = %381
  %385 = invoke noundef nonnull align 8 dereferenceable(360) ptr @_ZN11spirv_cross8Compiler3getINS_12SPIRConstantEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %61, i32 noundef %383)
          to label %386 unwind label %423

386:                                              ; preds = %384
  %387 = getelementptr inbounds %"struct.spirv_cross::SPIRConstant", ptr %385, i32 0, i32 7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %41, ptr noundef nonnull align 8 dereferenceable(32) %387)
          to label %388 unwind label %423

388:                                              ; preds = %386
  br label %391

389:                                              ; preds = %379
  %390 = load i32, ptr %38, align 4, !tbaa !148
  call void @_ZNSt7__cxx119to_stringEj(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %41, i32 noundef %390) #8
  br label %391

391:                                              ; preds = %389, %388
  call void @llvm.lifetime.start.p0(i64 32, ptr %42) #8
  %392 = getelementptr inbounds %"struct.spirv_cross::SpecializationConstant", ptr %36, i32 0, i32 0
  %393 = invoke noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE3EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %392)
          to label %394 unwind label %427

394:                                              ; preds = %391
  %395 = icmp ne i32 %393, 0
  br i1 %395, label %396, label %404

396:                                              ; preds = %394
  %397 = getelementptr inbounds %"struct.spirv_cross::SpecializationConstant", ptr %36, i32 0, i32 0
  %398 = invoke noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE3EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %397)
          to label %399 unwind label %427

399:                                              ; preds = %396
  %400 = invoke noundef nonnull align 8 dereferenceable(360) ptr @_ZN11spirv_cross8Compiler3getINS_12SPIRConstantEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %61, i32 noundef %398)
          to label %401 unwind label %427

401:                                              ; preds = %399
  %402 = getelementptr inbounds %"struct.spirv_cross::SPIRConstant", ptr %400, i32 0, i32 7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %42, ptr noundef nonnull align 8 dereferenceable(32) %402)
          to label %403 unwind label %427

403:                                              ; preds = %401
  br label %406

404:                                              ; preds = %394
  %405 = load i32, ptr %39, align 4, !tbaa !148
  call void @_ZNSt7__cxx119to_stringEj(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %42, i32 noundef %405) #8
  br label %406

406:                                              ; preds = %404, %403
  call void @llvm.lifetime.start.p0(i64 32, ptr %43) #8
  %407 = getelementptr inbounds %"struct.spirv_cross::SpecializationConstant", ptr %37, i32 0, i32 0
  %408 = invoke noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE3EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %407)
          to label %409 unwind label %431

409:                                              ; preds = %406
  %410 = icmp ne i32 %408, 0
  br i1 %410, label %411, label %419

411:                                              ; preds = %409
  %412 = getelementptr inbounds %"struct.spirv_cross::SpecializationConstant", ptr %37, i32 0, i32 0
  %413 = invoke noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE3EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %412)
          to label %414 unwind label %431

414:                                              ; preds = %411
  %415 = invoke noundef nonnull align 8 dereferenceable(360) ptr @_ZN11spirv_cross8Compiler3getINS_12SPIRConstantEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %61, i32 noundef %413)
          to label %416 unwind label %431

416:                                              ; preds = %414
  %417 = getelementptr inbounds %"struct.spirv_cross::SPIRConstant", ptr %415, i32 0, i32 7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %43, ptr noundef nonnull align 8 dereferenceable(32) %417)
          to label %418 unwind label %431

418:                                              ; preds = %416
  br label %421

419:                                              ; preds = %409
  %420 = load i32, ptr %40, align 4, !tbaa !148
  call void @_ZNSt7__cxx119to_stringEj(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %43, i32 noundef %420) #8
  br label %421

421:                                              ; preds = %419, %418
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA13_KcRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA3_S2_SB_SD_SB_SD_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %61, ptr noundef nonnull align 1 dereferenceable(13) @.str.421, ptr noundef nonnull align 8 dereferenceable(32) %41, ptr noundef nonnull align 1 dereferenceable(3) @.str.341, ptr noundef nonnull align 8 dereferenceable(32) %42, ptr noundef nonnull align 1 dereferenceable(3) @.str.341, ptr noundef nonnull align 8 dereferenceable(32) %43, ptr noundef nonnull align 1 dereferenceable(3) @.str.422)
          to label %422 unwind label %435

422:                                              ; preds = %421
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %43) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %42) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %41) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #8
  br label %453

423:                                              ; preds = %386, %384, %381, %376
  %424 = landingpad { ptr, i32 }
          cleanup
  %425 = extractvalue { ptr, i32 } %424, 0
  store ptr %425, ptr %6, align 8
  %426 = extractvalue { ptr, i32 } %424, 1
  store i32 %426, ptr %7, align 4
  br label %441

427:                                              ; preds = %401, %399, %396, %391
  %428 = landingpad { ptr, i32 }
          cleanup
  %429 = extractvalue { ptr, i32 } %428, 0
  store ptr %429, ptr %6, align 8
  %430 = extractvalue { ptr, i32 } %428, 1
  store i32 %430, ptr %7, align 4
  br label %440

431:                                              ; preds = %416, %414, %411, %406
  %432 = landingpad { ptr, i32 }
          cleanup
  %433 = extractvalue { ptr, i32 } %432, 0
  store ptr %433, ptr %6, align 8
  %434 = extractvalue { ptr, i32 } %432, 1
  store i32 %434, ptr %7, align 4
  br label %439

435:                                              ; preds = %421
  %436 = landingpad { ptr, i32 }
          cleanup
  %437 = extractvalue { ptr, i32 } %436, 0
  store ptr %437, ptr %6, align 8
  %438 = extractvalue { ptr, i32 } %436, 1
  store i32 %438, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #8
  br label %439

439:                                              ; preds = %435, %431
  call void @llvm.lifetime.end.p0(i64 32, ptr %43) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #8
  br label %440

440:                                              ; preds = %439, %427
  call void @llvm.lifetime.end.p0(i64 32, ptr %42) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #8
  br label %441

441:                                              ; preds = %440, %423
  call void @llvm.lifetime.end.p0(i64 32, ptr %41) #8
  br label %442

442:                                              ; preds = %441, %341
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #8
  br label %443

443:                                              ; preds = %442, %337
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #8
  br label %627

444:                                              ; preds = %73
  %445 = load ptr, ptr %8, align 8, !tbaa !5
  %446 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %445, i32 0, i32 5
  %447 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %446, i32 noundef 9)
          to label %448 unwind label %77

448:                                              ; preds = %444
  br i1 %447, label %449, label %451

449:                                              ; preds = %448
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA20_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %61, ptr noundef nonnull align 1 dereferenceable(20) @.str.423)
          to label %450 unwind label %77

450:                                              ; preds = %449
  br label %451

451:                                              ; preds = %450, %448
  br label %453

452:                                              ; preds = %73
  br label %453

453:                                              ; preds = %452, %451, %422
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #8
  %454 = getelementptr inbounds %"class.spirv_cross::CompilerHLSL", ptr %61, i32 0, i32 1
  %455 = getelementptr inbounds %"struct.spirv_cross::CompilerHLSL::Options", ptr %454, i32 0, i32 8
  %456 = load i8, ptr %455, align 1, !tbaa !169, !range !138, !noundef !139
  %457 = trunc i8 %456 to i1
  br i1 %457, label %458, label %467

458:                                              ; preds = %453
  %459 = invoke noundef nonnull align 8 dereferenceable(237) ptr @_ZN11spirv_cross8Compiler15get_entry_pointEv(ptr noundef nonnull align 8 dereferenceable(3176) %61)
          to label %460 unwind label %463

460:                                              ; preds = %458
  %461 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %459, i32 0, i32 2
  %462 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %461) #8
  store ptr %462, ptr %44, align 8, !tbaa !5
  br label %468

463:                                              ; preds = %475, %458
  %464 = landingpad { ptr, i32 }
          cleanup
  %465 = extractvalue { ptr, i32 } %464, 0
  store ptr %465, ptr %6, align 8
  %466 = extractvalue { ptr, i32 } %464, 1
  store i32 %466, ptr %7, align 4
  br label %626

467:                                              ; preds = %453
  store ptr @.str.424, ptr %44, align 8, !tbaa !5
  br label %468

468:                                              ; preds = %467, %460
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #8
  %469 = getelementptr inbounds %"class.spirv_cross::CompilerHLSL", ptr %61, i32 0, i32 19
  %470 = load i8, ptr %469, align 8, !tbaa !170, !range !138, !noundef !139
  %471 = trunc i8 %470 to i1
  %472 = zext i1 %471 to i64
  %473 = select i1 %471, ptr @.str.425, ptr @.str.405
  store ptr %473, ptr %45, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %46) #8
  invoke void @_ZN11spirv_cross5mergeERKNS_11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EEEPKc(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %46, ptr noundef nonnull align 8 dereferenceable(280) %3, ptr noundef @.str.341)
          to label %474 unwind label %533

474:                                              ; preds = %468
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJPKcRS3_RA2_S2_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %61, ptr noundef nonnull align 8 dereferenceable(8) %45, ptr noundef nonnull align 8 dereferenceable(8) %44, ptr noundef nonnull align 1 dereferenceable(2) @.str.406, ptr noundef nonnull align 8 dereferenceable(32) %46, ptr noundef nonnull align 1 dereferenceable(2) @.str.78)
          to label %475 unwind label %537

475:                                              ; preds = %474
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %46) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #8
  invoke void @_ZN11spirv_cross12CompilerGLSL11begin_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848) %61)
          to label %476 unwind label %463

476:                                              ; preds = %475
  call void @llvm.lifetime.start.p0(i64 1, ptr %47) #8
  %477 = getelementptr inbounds %"class.spirv_cross::CompilerHLSL", ptr %61, i32 0, i32 1
  %478 = getelementptr inbounds %"struct.spirv_cross::CompilerHLSL::Options", ptr %477, i32 0, i32 0
  %479 = load i32, ptr %478, align 8, !tbaa !171
  %480 = icmp ule i32 %479, 30
  %481 = zext i1 %480 to i8
  store i8 %481, ptr %47, align 1, !tbaa !149
  %482 = getelementptr inbounds %"class.spirv_cross::Compiler", ptr %61, i32 0, i32 20
  call void @llvm.lifetime.start.p0(i64 16, ptr %48) #8
  %483 = getelementptr inbounds %class.anon.427, ptr %48, i32 0, i32 0
  store ptr %61, ptr %483, align 8, !tbaa !172
  %484 = getelementptr inbounds %class.anon.427, ptr %48, i32 0, i32 1
  store ptr %47, ptr %484, align 8, !tbaa !5
  invoke void @"_ZNK11spirv_cross6Bitset12for_each_bitIZNS_12CompilerHLSL21emit_hlsl_entry_pointEvE3$_0EEvRKT_"(ptr noundef nonnull align 8 dereferenceable(64) %482, ptr noundef nonnull align 8 dereferenceable(16) %48)
          to label %485 unwind label %542

485:                                              ; preds = %476
  call void @llvm.lifetime.end.p0(i64 16, ptr %48) #8
  %486 = getelementptr inbounds %"class.spirv_cross::Compiler", ptr %61, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 16, ptr %49) #8
  %487 = getelementptr inbounds %class.anon.428, ptr %49, i32 0, i32 0
  store ptr %61, ptr %487, align 8, !tbaa !174
  %488 = getelementptr inbounds %class.anon.428, ptr %49, i32 0, i32 1
  %489 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %489, ptr %488, align 8, !tbaa !5
  invoke void @"_ZN11spirv_cross8ParsedIR17for_each_typed_idINS_12SPIRVariableEZNS_12CompilerHLSL21emit_hlsl_entry_pointEvE3$_1EEvRKT0_"(ptr noundef nonnull align 8 dereferenceable(1920) %486, ptr noundef nonnull align 8 dereferenceable(16) %49)
          to label %490 unwind label %546

490:                                              ; preds = %485
  call void @llvm.lifetime.end.p0(i64 16, ptr %49) #8
  %491 = load ptr, ptr %8, align 8, !tbaa !5
  %492 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %491, i32 0, i32 10
  %493 = load i32, ptr %492, align 8, !tbaa !140
  %494 = icmp eq i32 %493, 0
  br i1 %494, label %515, label %495

495:                                              ; preds = %490
  %496 = load ptr, ptr %8, align 8, !tbaa !5
  %497 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %496, i32 0, i32 10
  %498 = load i32, ptr %497, align 8, !tbaa !140
  %499 = icmp eq i32 %498, 4
  br i1 %499, label %515, label %500

500:                                              ; preds = %495
  %501 = load ptr, ptr %8, align 8, !tbaa !5
  %502 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %501, i32 0, i32 10
  %503 = load i32, ptr %502, align 8, !tbaa !140
  %504 = icmp eq i32 %503, 5
  br i1 %504, label %515, label %505

505:                                              ; preds = %500
  %506 = load ptr, ptr %8, align 8, !tbaa !5
  %507 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %506, i32 0, i32 10
  %508 = load i32, ptr %507, align 8, !tbaa !140
  %509 = icmp eq i32 %508, 5365
  br i1 %509, label %515, label %510

510:                                              ; preds = %505
  %511 = load ptr, ptr %8, align 8, !tbaa !5
  %512 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %511, i32 0, i32 10
  %513 = load i32, ptr %512, align 8, !tbaa !140
  %514 = icmp eq i32 %513, 5364
  br i1 %514, label %515, label %587

515:                                              ; preds = %510, %505, %500, %495, %490
  call void @llvm.lifetime.start.p0(i64 280, ptr %50) #8
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(280) %50) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #8
  %516 = getelementptr inbounds %"class.spirv_cross::Compiler", ptr %61, i32 0, i32 1
  %517 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %516, i32 0, i32 13
  %518 = invoke noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE4EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %517)
          to label %519 unwind label %550

519:                                              ; preds = %515
  %520 = invoke noundef nonnull align 8 dereferenceable(795) ptr @_ZN11spirv_cross8Compiler3getINS_12SPIRFunctionEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %61, i32 noundef %518)
          to label %521 unwind label %550

521:                                              ; preds = %519
  store ptr %520, ptr %51, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #8
  %522 = load ptr, ptr %51, align 8, !tbaa !5
  %523 = getelementptr inbounds %"struct.spirv_cross::SPIRFunction", ptr %522, i32 0, i32 4
  store ptr %523, ptr %52, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #8
  %524 = load ptr, ptr %52, align 8, !tbaa !5
  %525 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_12SPIRFunction9ParameterEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %524) #8
  store ptr %525, ptr %53, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #8
  %526 = load ptr, ptr %52, align 8, !tbaa !5
  %527 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_12SPIRFunction9ParameterEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %526) #8
  store ptr %527, ptr %54, align 8, !tbaa !5
  br label %528

528:                                              ; preds = %561, %521
  %529 = load ptr, ptr %53, align 8, !tbaa !5
  %530 = load ptr, ptr %54, align 8, !tbaa !5
  %531 = icmp ne ptr %529, %530
  br i1 %531, label %554, label %532

532:                                              ; preds = %528
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #8
  br label %568

533:                                              ; preds = %468
  %534 = landingpad { ptr, i32 }
          cleanup
  %535 = extractvalue { ptr, i32 } %534, 0
  store ptr %535, ptr %6, align 8
  %536 = extractvalue { ptr, i32 } %534, 1
  store i32 %536, ptr %7, align 4
  br label %541

537:                                              ; preds = %474
  %538 = landingpad { ptr, i32 }
          cleanup
  %539 = extractvalue { ptr, i32 } %538, 0
  store ptr %539, ptr %6, align 8
  %540 = extractvalue { ptr, i32 } %538, 1
  store i32 %540, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #8
  br label %541

541:                                              ; preds = %537, %533
  call void @llvm.lifetime.end.p0(i64 32, ptr %46) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #8
  br label %626

542:                                              ; preds = %476
  %543 = landingpad { ptr, i32 }
          cleanup
  %544 = extractvalue { ptr, i32 } %543, 0
  store ptr %544, ptr %6, align 8
  %545 = extractvalue { ptr, i32 } %543, 1
  store i32 %545, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %48) #8
  br label %625

546:                                              ; preds = %485
  %547 = landingpad { ptr, i32 }
          cleanup
  %548 = extractvalue { ptr, i32 } %547, 0
  store ptr %548, ptr %6, align 8
  %549 = extractvalue { ptr, i32 } %547, 1
  store i32 %549, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %49) #8
  br label %625

550:                                              ; preds = %519, %515
  %551 = landingpad { ptr, i32 }
          cleanup
  %552 = extractvalue { ptr, i32 } %551, 0
  store ptr %552, ptr %6, align 8
  %553 = extractvalue { ptr, i32 } %551, 1
  store i32 %553, ptr %7, align 4
  br label %586

554:                                              ; preds = %528
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #8
  %555 = load ptr, ptr %53, align 8, !tbaa !5
  store ptr %555, ptr %55, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %56) #8
  %556 = load ptr, ptr %55, align 8, !tbaa !5
  %557 = getelementptr inbounds %"struct.spirv_cross::SPIRFunction::Parameter", ptr %556, i32 0, i32 1
  %558 = invoke noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %557)
          to label %559 unwind label %564

559:                                              ; preds = %554
  invoke void @_ZN11spirv_cross12CompilerGLSL13to_expressionB5cxx11Ejb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %56, ptr noundef nonnull align 8 dereferenceable(9848) %61, i32 noundef %558, i1 noundef zeroext false)
          to label %560 unwind label %564

560:                                              ; preds = %559
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %50, ptr noundef nonnull align 8 dereferenceable(32) %56) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %56) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #8
  br label %561

561:                                              ; preds = %560
  %562 = load ptr, ptr %53, align 8, !tbaa !5
  %563 = getelementptr inbounds %"struct.spirv_cross::SPIRFunction::Parameter", ptr %562, i32 1
  store ptr %563, ptr %53, align 8, !tbaa !5
  br label %528

564:                                              ; preds = %559, %554
  %565 = landingpad { ptr, i32 }
          cleanup
  %566 = extractvalue { ptr, i32 } %565, 0
  store ptr %566, ptr %6, align 8
  %567 = extractvalue { ptr, i32 } %565, 1
  store i32 %567, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %56) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #8
  br label %586

568:                                              ; preds = %532
  call void @llvm.lifetime.start.p0(i64 32, ptr %57) #8
  invoke void @_ZNK11spirv_cross12CompilerHLSL26get_inner_entry_point_nameB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %57, ptr noundef nonnull align 8 dereferenceable(10528) %61)
          to label %569 unwind label %572

569:                                              ; preds = %568
  call void @llvm.lifetime.start.p0(i64 32, ptr %58) #8
  invoke void @_ZN11spirv_cross5mergeERKNS_11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EEEPKc(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %58, ptr noundef nonnull align 8 dereferenceable(280) %50, ptr noundef @.str.341)
          to label %570 unwind label %576

570:                                              ; preds = %569
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_KcS7_RA3_S8_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %61, ptr noundef nonnull align 8 dereferenceable(32) %57, ptr noundef nonnull align 1 dereferenceable(2) @.str.406, ptr noundef nonnull align 8 dereferenceable(32) %58, ptr noundef nonnull align 1 dereferenceable(3) @.str.379)
          to label %571 unwind label %580

571:                                              ; preds = %570
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %58) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %57) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #8
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(280) %50) #8
  call void @llvm.lifetime.end.p0(i64 280, ptr %50) #8
  br label %598

572:                                              ; preds = %568
  %573 = landingpad { ptr, i32 }
          cleanup
  %574 = extractvalue { ptr, i32 } %573, 0
  store ptr %574, ptr %6, align 8
  %575 = extractvalue { ptr, i32 } %573, 1
  store i32 %575, ptr %7, align 4
  br label %585

576:                                              ; preds = %569
  %577 = landingpad { ptr, i32 }
          cleanup
  %578 = extractvalue { ptr, i32 } %577, 0
  store ptr %578, ptr %6, align 8
  %579 = extractvalue { ptr, i32 } %577, 1
  store i32 %579, ptr %7, align 4
  br label %584

580:                                              ; preds = %570
  %581 = landingpad { ptr, i32 }
          cleanup
  %582 = extractvalue { ptr, i32 } %581, 0
  store ptr %582, ptr %6, align 8
  %583 = extractvalue { ptr, i32 } %581, 1
  store i32 %583, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #8
  br label %584

584:                                              ; preds = %580, %576
  call void @llvm.lifetime.end.p0(i64 32, ptr %58) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #8
  br label %585

585:                                              ; preds = %584, %572
  call void @llvm.lifetime.end.p0(i64 32, ptr %57) #8
  br label %586

586:                                              ; preds = %585, %564, %550
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #8
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(280) %50) #8
  call void @llvm.lifetime.end.p0(i64 280, ptr %50) #8
  br label %625

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

589:                                              ; preds = %587
  invoke void @__cxa_throw(ptr %588, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #9
          to label %634 unwind label %594

590:                                              ; preds = %587
  %591 = landingpad { ptr, i32 }
          cleanup
  %592 = extractvalue { ptr, i32 } %591, 0
  store ptr %592, ptr %6, align 8
  %593 = extractvalue { ptr, i32 } %591, 1
  store i32 %593, ptr %7, align 4
  call void @__cxa_free_exception(ptr %588) #8
  br label %625

594:                                              ; preds = %623, %613, %602, %589
  %595 = landingpad { ptr, i32 }
          cleanup
  %596 = extractvalue { ptr, i32 } %595, 0
  store ptr %596, ptr %6, align 8
  %597 = extractvalue { ptr, i32 } %595, 1
  store i32 %597, ptr %7, align 4
  br label %625

598:                                              ; preds = %571
  %599 = getelementptr inbounds %"class.spirv_cross::CompilerHLSL", ptr %61, i32 0, i32 19
  %600 = load i8, ptr %599, align 8, !tbaa !170, !range !138, !noundef !139
  %601 = trunc i8 %600 to i1
  br i1 %601, label %602, label %623

602:                                              ; preds = %598
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA33_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %61, ptr noundef nonnull align 1 dereferenceable(33) @.str.427)
          to label %603 unwind label %594

603:                                              ; preds = %602
  %604 = getelementptr inbounds %"class.spirv_cross::Compiler", ptr %61, i32 0, i32 21
  call void @llvm.lifetime.start.p0(i64 16, ptr %59) #8
  %605 = getelementptr inbounds %class.anon.429, ptr %59, i32 0, i32 0
  store ptr %47, ptr %605, align 8, !tbaa !5
  %606 = getelementptr inbounds %class.anon.429, ptr %59, i32 0, i32 1
  store ptr %61, ptr %606, align 8, !tbaa !176
  invoke void @"_ZNK11spirv_cross6Bitset12for_each_bitIZNS_12CompilerHLSL21emit_hlsl_entry_pointEvE3$_2EEvRKT_"(ptr noundef nonnull align 8 dereferenceable(64) %604, ptr noundef nonnull align 8 dereferenceable(16) %59)
          to label %607 unwind label %615

607:                                              ; preds = %603
  call void @llvm.lifetime.end.p0(i64 16, ptr %59) #8
  %608 = getelementptr inbounds %"class.spirv_cross::Compiler", ptr %61, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 24, ptr %60) #8
  %609 = getelementptr inbounds %class.anon.430, ptr %60, i32 0, i32 0
  store ptr %61, ptr %609, align 8, !tbaa !178
  %610 = getelementptr inbounds %class.anon.430, ptr %60, i32 0, i32 1
  store ptr %47, ptr %610, align 8, !tbaa !5
  %611 = getelementptr inbounds %class.anon.430, ptr %60, i32 0, i32 2
  %612 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %612, ptr %611, align 8, !tbaa !5
  invoke void @"_ZN11spirv_cross8ParsedIR17for_each_typed_idINS_12SPIRVariableEZNS_12CompilerHLSL21emit_hlsl_entry_pointEvE3$_3EEvRKT0_"(ptr noundef nonnull align 8 dereferenceable(1920) %608, ptr noundef nonnull align 8 dereferenceable(24) %60)
          to label %613 unwind label %619

613:                                              ; preds = %607
  call void @llvm.lifetime.end.p0(i64 24, ptr %60) #8
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA21_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %61, ptr noundef nonnull align 1 dereferenceable(21) @.str.428)
          to label %614 unwind label %594

614:                                              ; preds = %613
  br label %623

615:                                              ; preds = %603
  %616 = landingpad { ptr, i32 }
          cleanup
  %617 = extractvalue { ptr, i32 } %616, 0
  store ptr %617, ptr %6, align 8
  %618 = extractvalue { ptr, i32 } %616, 1
  store i32 %618, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %59) #8
  br label %625

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

623:                                              ; preds = %614, %598
  invoke void @_ZN11spirv_cross12CompilerGLSL9end_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848) %61)
          to label %624 unwind label %594

624:                                              ; preds = %623
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #8
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(280) %3) #8
  call void @llvm.lifetime.end.p0(i64 280, ptr %3) #8
  ret void

625:                                              ; preds = %619, %615, %594, %590, %586, %546, %542
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #8
  br label %626

626:                                              ; preds = %625, %541, %463
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #8
  br label %627

627:                                              ; preds = %626, %443, %296, %108, %77
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #8
  br label %628

628:                                              ; preds = %627, %67
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(280) %3) #8
  call void @llvm.lifetime.end.p0(i64 280, ptr %3) #8
  br label %629

629:                                              ; preds = %628
  %630 = load ptr, ptr %6, align 8
  %631 = load i32, ptr %7, align 4
  %632 = insertvalue { ptr, i32 } poison, ptr %630, 0
  %633 = insertvalue { ptr, i32 } %632, i32 %631, 1
  resume { ptr, i32 } %633

634:                                              ; preds = %589, %107
  unreachable
}

declare void @_ZNK11spirv_cross8Compiler22get_buffer_block_flagsENS_7TypedIDILNS_5TypesE2EEE(ptr dead_on_unwind writable sret(%"class.spirv_cross::Bitset") align 8, ptr noundef nonnull align 8 dereferenceable(3176), i32) #3

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZNSt7__cxx119to_stringEj(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, i32 noundef) #6

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZNK11spirv_cross6Bitset12for_each_bitIZNS_12CompilerHLSL21emit_hlsl_entry_pointEvE3$_0EEvRKT_"(ptr noundef nonnull align 8 dereferenceable(64), ptr noundef nonnull align 8 dereferenceable(16)) #1 align 2

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZNK11spirv_cross6Bitset12for_each_bitIZNS_12CompilerHLSL21emit_hlsl_entry_pointEvE3$_2EEvRKT_"(ptr noundef nonnull align 8 dereferenceable(64), ptr noundef nonnull align 8 dereferenceable(16)) #1 align 2

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

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

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

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

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


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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.spirv_cross::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 { [256 x i8] }
%"class.std::allocator" = type { i8 }
%"class.spirv_cross::Bitset" = type { i64, %"class.std::unordered_set" }
%"class.std::unordered_set" = type { %"class.std::_Hashtable.74" }
%"class.std::_Hashtable.74" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"struct.spirv_cross::SpecializationConstant" = type { %"class.spirv_cross::TypedID.360", i32 }
%"class.spirv_cross::TypedID.360" = type { i32 }
%class.anon.427 = type { ptr, ptr }
%class.anon.428 = type { ptr, ptr }
%class.anon.429 = type { ptr, ptr }
%class.anon.430 = type { ptr, ptr, ptr }

@_ZTIN11spirv_cross13CompilerErrorE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.78 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.341 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.379 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.405 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.406 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.411 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.412 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.413 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.414 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.415 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.416 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.417 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.418 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.419 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.420 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.421 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.422 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.423 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.424 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.425 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.426 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.427 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.428 = external hidden unnamed_addr constant [21 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 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

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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

declare i32 @__gxx_personality_v0(...)

declare void @__cxa_free_exception(ptr) local_unnamed_addr

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

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

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

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

; 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 void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 align 2

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

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

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

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

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

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

; 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

declare void @_ZN11spirv_cross12CompilerGLSL11begin_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848)) local_unnamed_addr #3

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

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

; Function Attrs: mustprogress 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_cross12CompilerGLSL9statementIJRA29_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 1 dereferenceable(29)) local_unnamed_addr #5 align 2

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

declare void @_ZN11spirv_cross12CompilerGLSL9end_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848)) local_unnamed_addr #3

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

; Function Attrs: 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 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 ptr @_ZN11spirv_cross10VectorViewINS_12SPIRFunction9ParameterEE5beginEv(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_12SPIRFunction9ParameterEE3endEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #2 align 2

declare void @_ZN11spirv_cross12CompilerGLSL13to_expressionB5cxx11Ejb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(9848), i32 noundef, i1 noundef zeroext) local_unnamed_addr #3

; 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: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #5

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11spirv_cross12CompilerHLSL21emit_hlsl_entry_pointEv(ptr noundef nonnull align 8 dereferenceable(10528) %0) local_unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"class.spirv_cross::SmallVector.30", align 8
  %3 = alloca %"class.std::__cxx11::basic_string", align 8
  %4 = alloca %"class.std::allocator", align 1
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca %"class.std::__cxx11::basic_string", align 8
  %7 = alloca %"class.spirv_cross::Bitset", 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.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"struct.spirv_cross::SpecializationConstant", align 4
  %21 = alloca %"struct.spirv_cross::SpecializationConstant", align 4
  %22 = alloca %"struct.spirv_cross::SpecializationConstant", align 4
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  %29 = alloca i8, align 1
  %30 = alloca %class.anon.427, align 8
  %31 = alloca %class.anon.428, align 8
  %32 = alloca %"class.spirv_cross::SmallVector.30", align 8
  %33 = alloca %"class.std::__cxx11::basic_string", align 8
  %34 = alloca %"class.std::__cxx11::basic_string", align 8
  %35 = alloca %"class.std::__cxx11::basic_string", align 8
  %36 = alloca %class.anon.429, align 8
  %37 = alloca %class.anon.430, align 8
  call void @llvm.lifetime.start.p0(i64 280, ptr nonnull %2) #7
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(280) %2) #7
  %38 = getelementptr inbounds i8, ptr %0, i64 9985
  %39 = load i8, ptr %38, align 1, !tbaa !5, !range !137, !noundef !138
  %40 = trunc nuw i8 %39 to i1
  br i1 %40, label %41, label %45

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

42:                                               ; preds = %41
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %2, ptr noundef nonnull align 8 dereferenceable(32) %3) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #7
  br label %45

43:                                               ; preds = %41
  %44 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #7
  br label %346

45:                                               ; preds = %42, %1
  %46 = invoke noundef nonnull align 8 dereferenceable(237) ptr @_ZN11spirv_cross8Compiler15get_entry_pointEv(ptr noundef nonnull align 8 dereferenceable(3176) %0)
          to label %47 unwind label %50

47:                                               ; preds = %45
  %48 = getelementptr inbounds i8, ptr %46, i64 232
  %49 = load i32, ptr %48, align 8, !tbaa !139
  switch i32 %49, label %254 [
    i32 4, label %249
    i32 5365, label %52
    i32 5, label %.loopexit
    i32 5364, label %.loopexit
  ]

50:                                               ; preds = %253, %249, %66, %61, %60, %57, %56, %52, %45
  %51 = landingpad { ptr, i32 }
          cleanup
  br label %346

52:                                               ; preds = %47
  %53 = getelementptr inbounds i8, ptr %46, i64 128
  %54 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %53, i32 noundef 5298)
          to label %55 unwind label %50

55:                                               ; preds = %52
  br i1 %54, label %56, label %57

56:                                               ; preds = %55
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA29_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(29) @.str.412)
          to label %69 unwind label %50

57:                                               ; preds = %55
  %58 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %53, i32 noundef 5269)
          to label %59 unwind label %50

59:                                               ; preds = %57
  br i1 %58, label %60, label %61

60:                                               ; preds = %59
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA25_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(25) @.str.413)
          to label %69 unwind label %50

61:                                               ; preds = %59
  %62 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %53, i32 noundef 27)
          to label %63 unwind label %50

63:                                               ; preds = %61
  br i1 %62, label %64, label %69

64:                                               ; preds = %63
  %65 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %65, ptr noundef nonnull @.str.414)
          to label %66 unwind label %67

66:                                               ; preds = %64
  invoke void @__cxa_throw(ptr nonnull %65, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #8
          to label %347 unwind label %50

67:                                               ; preds = %64
  %68 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %65) #7
  br label %346

69:                                               ; preds = %60, %63, %56
  %70 = getelementptr inbounds i8, ptr %0, i64 1744
  %71 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE4EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %70)
  %72 = invoke noundef nonnull align 8 dereferenceable(795) ptr @_ZN11spirv_cross8Compiler3getINS_12SPIRFunctionEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %71)
          to label %73 unwind label %79

73:                                               ; preds = %69
  %74 = getelementptr inbounds i8, ptr %72, i64 24
  %75 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_12SPIRFunction9ParameterEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %74) #7
  %76 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_12SPIRFunction9ParameterEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %74) #7
  %.not134 = icmp eq ptr %75, %76
  br i1 %.not134, label %.loopexit, label %.lr.ph

.lr.ph:                                           ; preds = %73
  %77 = getelementptr inbounds i8, ptr %46, i64 228
  %78 = getelementptr inbounds i8, ptr %46, i64 224
  br label %81

79:                                               ; preds = %69
  %80 = landingpad { ptr, i32 }
          cleanup
  br label %346

81:                                               ; preds = %.lr.ph, %170
  %.084135 = phi ptr [ %75, %.lr.ph ], [ %171, %170 ]
  %82 = getelementptr inbounds i8, ptr %.084135, i64 4
  %83 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %82)
  %84 = invoke noundef nonnull align 8 dereferenceable(176) ptr @_ZN11spirv_cross8Compiler3getINS_12SPIRVariableEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %83)
          to label %85 unwind label %102

85:                                               ; preds = %81
  %86 = getelementptr inbounds i8, ptr %84, i64 12
  %87 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE1EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %86)
  %88 = invoke noundef nonnull align 8 dereferenceable(336) ptr @_ZN11spirv_cross8Compiler3getINS_8SPIRTypeEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %87)
          to label %89 unwind label %104

89:                                               ; preds = %85
  %90 = getelementptr inbounds i8, ptr %88, i64 8
  %.sroa.011.0.copyload = load i32, ptr %90, align 8, !tbaa !146
  %91 = invoke noundef zeroext i1 @_ZNK11spirv_cross8Compiler14has_decorationENS_7TypedIDILNS_5TypesE0EEEN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 %.sroa.011.0.copyload, i32 noundef 2)
          to label %92 unwind label %106

92:                                               ; preds = %89
  %93 = getelementptr inbounds i8, ptr %84, i64 16
  %94 = load i32, ptr %93, align 8, !tbaa !147
  %95 = icmp eq i32 %94, 5402
  br i1 %95, label %96, label %113

96:                                               ; preds = %92
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #7
  %97 = load ptr, ptr %0, align 8, !tbaa !155
  %98 = getelementptr inbounds i8, ptr %97, i64 312
  %99 = load ptr, ptr %98, align 8
  invoke void %99(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(176) %84)
          to label %100 unwind label %108

100:                                              ; preds = %96
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %5, ptr noundef nonnull @.str.415, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %101 unwind label %110

101:                                              ; preds = %100
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %2, ptr noundef nonnull align 8 dereferenceable(32) %5) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #7
  br label %170

102:                                              ; preds = %81
  %103 = landingpad { ptr, i32 }
          cleanup
  br label %346

104:                                              ; preds = %85
  %105 = landingpad { ptr, i32 }
          cleanup
  br label %346

106:                                              ; preds = %149, %89
  %107 = landingpad { ptr, i32 }
          cleanup
  br label %346

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

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

112:                                              ; preds = %110, %108
  %.pn116 = phi { ptr, i32 } [ %111, %110 ], [ %109, %108 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #7
  br label %346

113:                                              ; preds = %92
  br i1 %91, label %114, label %149

114:                                              ; preds = %113
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %7) #7
  %115 = getelementptr inbounds i8, ptr %84, i64 8
  %116 = invoke i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvNS0_IXT_EEEILS1_2EEEv(ptr noundef nonnull align 4 dereferenceable(4) %115)
          to label %117 unwind label %128

117:                                              ; preds = %114
  invoke void @_ZNK11spirv_cross8Compiler22get_buffer_block_flagsENS_7TypedIDILNS_5TypesE2EEE(ptr dead_on_unwind nonnull writable sret(%"class.spirv_cross::Bitset") align 8 %7, ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 %116)
          to label %118 unwind label %128

118:                                              ; preds = %117
  %119 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %7, i32 noundef 5271)
          to label %120 unwind label %130

120:                                              ; preds = %118
  br i1 %119, label %124, label %121

121:                                              ; preds = %120
  %.sroa.0.0.copyload = load i32, ptr %82, align 4, !tbaa !146
  %122 = invoke noundef zeroext i1 @_ZNK11spirv_cross8Compiler14has_decorationENS_7TypedIDILNS_5TypesE0EEEN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 %.sroa.0.0.copyload, i32 noundef 5271)
          to label %123 unwind label %130

123:                                              ; preds = %121
  br i1 %122, label %124, label %137

124:                                              ; preds = %123, %120
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #7
  %125 = load i32, ptr %77, align 4, !tbaa !157
  call void @_ZNSt7__cxx119to_stringEj(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %10, i32 noundef %125) #7
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %9, ptr noundef nonnull @.str.416, ptr noundef nonnull align 8 dereferenceable(32) %10)
          to label %126 unwind label %132

126:                                              ; preds = %124
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %8, ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull @.str.417)
          to label %127 unwind label %134

127:                                              ; preds = %126
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %2, ptr noundef nonnull align 8 dereferenceable(32) %8) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #7
  br label %146

128:                                              ; preds = %117, %114
  %129 = landingpad { ptr, i32 }
          cleanup
  br label %148

130:                                              ; preds = %121, %118
  %131 = landingpad { ptr, i32 }
          cleanup
  br label %147

132:                                              ; preds = %124
  %133 = landingpad { ptr, i32 }
          cleanup
  br label %136

134:                                              ; preds = %126
  %135 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #7
  br label %136

136:                                              ; preds = %134, %132
  %.pn112 = phi { ptr, i32 } [ %135, %134 ], [ %133, %132 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #7
  br label %147

137:                                              ; preds = %123
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #7
  %138 = load i32, ptr %78, align 8, !tbaa !158
  call void @_ZNSt7__cxx119to_stringEj(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %13, i32 noundef %138) #7
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %12, ptr noundef nonnull @.str.418, ptr noundef nonnull align 8 dereferenceable(32) %13)
          to label %139 unwind label %141

139:                                              ; preds = %137
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %11, ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull @.str.417)
          to label %140 unwind label %143

140:                                              ; preds = %139
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %2, ptr noundef nonnull align 8 dereferenceable(32) %11) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #7
  br label %146

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

143:                                              ; preds = %139
  %144 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #7
  br label %145

145:                                              ; preds = %143, %141
  %.pn110 = phi { ptr, i32 } [ %144, %143 ], [ %142, %141 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #7
  br label %147

146:                                              ; preds = %140, %127
  call void @_ZN11spirv_cross6BitsetD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %7) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %7) #7
  br label %170

147:                                              ; preds = %145, %136, %130
  %.pn112.pn = phi { ptr, i32 } [ %.pn112, %136 ], [ %.pn110, %145 ], [ %131, %130 ]
  call void @_ZN11spirv_cross6BitsetD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %7) #7
  br label %148

148:                                              ; preds = %147, %128
  %.pn112.pn.pn = phi { ptr, i32 } [ %.pn112.pn, %147 ], [ %129, %128 ]
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %7) #7
  br label %346

149:                                              ; preds = %113
  %150 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %53, i32 noundef 5298)
          to label %151 unwind label %106

151:                                              ; preds = %149
  br i1 %150, label %152, label %161

152:                                              ; preds = %151
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %16) #7
  %153 = load i32, ptr %77, align 4, !tbaa !157
  call void @_ZNSt7__cxx119to_stringEj(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %16, i32 noundef %153) #7
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %15, ptr noundef nonnull @.str.419, ptr noundef nonnull align 8 dereferenceable(32) %16)
          to label %154 unwind label %156

154:                                              ; preds = %152
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %14, ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull @.str.417)
          to label %155 unwind label %158

155:                                              ; preds = %154
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %2, ptr noundef nonnull align 8 dereferenceable(32) %14) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #7
  br label %170

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

158:                                              ; preds = %154
  %159 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  br label %160

160:                                              ; preds = %158, %156
  %.pn108 = phi { ptr, i32 } [ %159, %158 ], [ %157, %156 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #7
  br label %346

161:                                              ; preds = %151
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %18) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #7
  %162 = load i32, ptr %77, align 4, !tbaa !157
  call void @_ZNSt7__cxx119to_stringEj(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %19, i32 noundef %162) #7
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %18, ptr noundef nonnull @.str.420, ptr noundef nonnull align 8 dereferenceable(32) %19)
          to label %163 unwind label %165

163:                                              ; preds = %161
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %17, ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull @.str.417)
          to label %164 unwind label %167

164:                                              ; preds = %163
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %2, ptr noundef nonnull align 8 dereferenceable(32) %17) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #7
  br label %170

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

167:                                              ; preds = %163
  %168 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #7
  br label %169

169:                                              ; preds = %167, %165
  %.pn106 = phi { ptr, i32 } [ %168, %167 ], [ %166, %165 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #7
  br label %346

170:                                              ; preds = %146, %164, %155, %101
  %171 = getelementptr inbounds i8, ptr %.084135, i64 20
  %.not = icmp eq ptr %171, %76
  br i1 %.not, label %.loopexit, label %81

.loopexit:                                        ; preds = %170, %73, %47, %47
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #7
  call void @_ZN11spirv_cross22SpecializationConstantC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %20) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #7
  call void @_ZN11spirv_cross22SpecializationConstantC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %21) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #7
  call void @_ZN11spirv_cross22SpecializationConstantC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %22) #7
  %172 = invoke noundef i32 @_ZNK11spirv_cross8Compiler44get_work_group_size_specialization_constantsERNS_22SpecializationConstantES2_S2_(ptr noundef nonnull align 8 dereferenceable(3176) %0, ptr noundef nonnull align 4 dereferenceable(8) %20, ptr noundef nonnull align 4 dereferenceable(8) %21, ptr noundef nonnull align 4 dereferenceable(8) %22)
          to label %173 unwind label %193

173:                                              ; preds = %.loopexit
  %174 = getelementptr inbounds i8, ptr %46, i64 192
  %175 = load i32, ptr %174, align 8, !tbaa !159
  %176 = getelementptr inbounds i8, ptr %46, i64 196
  %177 = load i32, ptr %176, align 4, !tbaa !160
  %178 = getelementptr inbounds i8, ptr %46, i64 200
  %179 = load i32, ptr %178, align 8, !tbaa !161
  %180 = getelementptr inbounds i8, ptr %46, i64 216
  %181 = load i32, ptr %180, align 8, !tbaa !162
  %.not94 = icmp eq i32 %181, 0
  br i1 %.not94, label %182, label %211

182:                                              ; preds = %173
  %183 = getelementptr inbounds i8, ptr %46, i64 128
  %184 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %183, i32 noundef 38)
          to label %185 unwind label %195

185:                                              ; preds = %182
  br i1 %184, label %186, label %211

186:                                              ; preds = %185
  %187 = getelementptr inbounds i8, ptr %46, i64 204
  %188 = load i32, ptr %187, align 4, !tbaa !163
  %.not95 = icmp eq i32 %188, 0
  br i1 %.not95, label %197, label %189

189:                                              ; preds = %186
  %190 = invoke noundef nonnull align 8 dereferenceable(360) ptr @_ZN11spirv_cross8Compiler3getINS_12SPIRConstantEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %188)
          to label %191 unwind label %195

191:                                              ; preds = %189
  %192 = call noundef i32 @_ZNK11spirv_cross12SPIRConstant6scalarEjj(ptr noundef nonnull align 8 dereferenceable(360) %190, i32 noundef 0, i32 noundef 0)
  br label %197

193:                                              ; preds = %.loopexit
  %194 = landingpad { ptr, i32 }
          cleanup
  br label %248

195:                                              ; preds = %207, %200, %189, %182
  %196 = landingpad { ptr, i32 }
          cleanup
  br label %248

197:                                              ; preds = %191, %186
  %.085 = phi i32 [ %192, %191 ], [ %175, %186 ]
  %198 = getelementptr inbounds i8, ptr %46, i64 208
  %199 = load i32, ptr %198, align 8, !tbaa !164
  %.not96 = icmp eq i32 %199, 0
  br i1 %.not96, label %204, label %200

200:                                              ; preds = %197
  %201 = invoke noundef nonnull align 8 dereferenceable(360) ptr @_ZN11spirv_cross8Compiler3getINS_12SPIRConstantEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %199)
          to label %202 unwind label %195

202:                                              ; preds = %200
  %203 = call noundef i32 @_ZNK11spirv_cross12SPIRConstant6scalarEjj(ptr noundef nonnull align 8 dereferenceable(360) %201, i32 noundef 0, i32 noundef 0)
  br label %204

204:                                              ; preds = %202, %197
  %.088 = phi i32 [ %203, %202 ], [ %177, %197 ]
  %205 = getelementptr inbounds i8, ptr %46, i64 212
  %206 = load i32, ptr %205, align 4, !tbaa !165
  %.not97 = icmp eq i32 %206, 0
  br i1 %.not97, label %211, label %207

207:                                              ; preds = %204
  %208 = invoke noundef nonnull align 8 dereferenceable(360) ptr @_ZN11spirv_cross8Compiler3getINS_12SPIRConstantEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %206)
          to label %209 unwind label %195

209:                                              ; preds = %207
  %210 = call noundef i32 @_ZNK11spirv_cross12SPIRConstant6scalarEjj(ptr noundef nonnull align 8 dereferenceable(360) %208, i32 noundef 0, i32 noundef 0)
  br label %211

211:                                              ; preds = %204, %209, %185, %173
  %.189 = phi i32 [ %177, %173 ], [ %.088, %209 ], [ %.088, %204 ], [ %177, %185 ]
  %.087 = phi i32 [ %179, %173 ], [ %210, %209 ], [ %179, %204 ], [ %179, %185 ]
  %.186 = phi i32 [ %175, %173 ], [ %.085, %209 ], [ %.085, %204 ], [ %175, %185 ]
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %23) #7
  %212 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE3EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %20)
  %.not98 = icmp eq i32 %212, 0
  br i1 %.not98, label %218, label %213

213:                                              ; preds = %211
  %214 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE3EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %20)
  %215 = invoke noundef nonnull align 8 dereferenceable(360) ptr @_ZN11spirv_cross8Compiler3getINS_12SPIRConstantEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %214)
          to label %216 unwind label %237

216:                                              ; preds = %213
  %217 = getelementptr inbounds i8, ptr %215, i64 328
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull align 8 dereferenceable(32) %217)
          to label %219 unwind label %237

218:                                              ; preds = %211
  call void @_ZNSt7__cxx119to_stringEj(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %23, i32 noundef %.186) #7
  br label %219

219:                                              ; preds = %216, %218
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %24) #7
  %220 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE3EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %21)
  %.not99 = icmp eq i32 %220, 0
  br i1 %.not99, label %226, label %221

221:                                              ; preds = %219
  %222 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE3EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %21)
  %223 = invoke noundef nonnull align 8 dereferenceable(360) ptr @_ZN11spirv_cross8Compiler3getINS_12SPIRConstantEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %222)
          to label %224 unwind label %239

224:                                              ; preds = %221
  %225 = getelementptr inbounds i8, ptr %223, i64 328
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull align 8 dereferenceable(32) %225)
          to label %227 unwind label %239

226:                                              ; preds = %219
  call void @_ZNSt7__cxx119to_stringEj(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %24, i32 noundef %.189) #7
  br label %227

227:                                              ; preds = %224, %226
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %25) #7
  %228 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE3EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %22)
  %.not100 = icmp eq i32 %228, 0
  br i1 %.not100, label %234, label %229

229:                                              ; preds = %227
  %230 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE3EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %22)
  %231 = invoke noundef nonnull align 8 dereferenceable(360) ptr @_ZN11spirv_cross8Compiler3getINS_12SPIRConstantEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %230)
          to label %232 unwind label %241

232:                                              ; preds = %229
  %233 = getelementptr inbounds i8, ptr %231, i64 328
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull align 8 dereferenceable(32) %233)
          to label %235 unwind label %241

234:                                              ; preds = %227
  call void @_ZNSt7__cxx119to_stringEj(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %25, i32 noundef %.087) #7
  br label %235

235:                                              ; preds = %232, %234
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA13_KcRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA3_S2_SB_SD_SB_SD_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(13) @.str.421, ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull align 1 dereferenceable(3) @.str.341, ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull align 1 dereferenceable(3) @.str.341, ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull align 1 dereferenceable(3) @.str.422)
          to label %236 unwind label %243

236:                                              ; preds = %235
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #7
  br label %254

237:                                              ; preds = %216, %213
  %238 = landingpad { ptr, i32 }
          cleanup
  br label %247

239:                                              ; preds = %224, %221
  %240 = landingpad { ptr, i32 }
          cleanup
  br label %246

241:                                              ; preds = %232, %229
  %242 = landingpad { ptr, i32 }
          cleanup
  br label %245

243:                                              ; preds = %235
  %244 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #7
  br label %245

245:                                              ; preds = %243, %241
  %.pn = phi { ptr, i32 } [ %244, %243 ], [ %242, %241 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #7
  br label %246

246:                                              ; preds = %245, %239
  %.pn.pn = phi { ptr, i32 } [ %.pn, %245 ], [ %240, %239 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #7
  br label %247

247:                                              ; preds = %246, %237
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %246 ], [ %238, %237 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #7
  br label %248

248:                                              ; preds = %195, %247, %193
  %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %194, %193 ], [ %.pn.pn.pn, %247 ], [ %196, %195 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #7
  br label %346

249:                                              ; preds = %47
  %250 = getelementptr inbounds i8, ptr %46, i64 128
  %251 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %250, i32 noundef 9)
          to label %252 unwind label %50

252:                                              ; preds = %249
  br i1 %251, label %253, label %254

253:                                              ; preds = %252
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA20_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(20) @.str.423)
          to label %254 unwind label %50

254:                                              ; preds = %47, %252, %253, %236
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #7
  %255 = getelementptr inbounds i8, ptr %0, i64 9848
  %256 = getelementptr inbounds i8, ptr %0, i64 9859
  %257 = load i8, ptr %256, align 1, !tbaa !166, !range !137, !noundef !138
  %258 = trunc nuw i8 %257 to i1
  br i1 %258, label %259, label %266

259:                                              ; preds = %254
  %260 = invoke noundef nonnull align 8 dereferenceable(237) ptr @_ZN11spirv_cross8Compiler15get_entry_pointEv(ptr noundef nonnull align 8 dereferenceable(3176) %0)
          to label %261 unwind label %264

261:                                              ; preds = %259
  %262 = getelementptr inbounds i8, ptr %260, i64 8
  %263 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %262) #7
  br label %266

264:                                              ; preds = %272, %259
  %265 = landingpad { ptr, i32 }
          cleanup
  br label %345

266:                                              ; preds = %254, %261
  %storemerge = phi ptr [ %263, %261 ], [ @.str.424, %254 ]
  store ptr %storemerge, ptr %26, align 8, !tbaa !167
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #7
  %267 = getelementptr inbounds i8, ptr %0, i64 9984
  %268 = load i8, ptr %267, align 8, !tbaa !168, !range !137, !noundef !138
  %269 = trunc nuw i8 %268 to i1
  %270 = select i1 %269, ptr @.str.425, ptr @.str.405
  store ptr %270, ptr %27, align 8, !tbaa !167
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %28) #7
  invoke void @_ZN11spirv_cross5mergeERKNS_11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EEEPKc(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %28, ptr noundef nonnull align 8 dereferenceable(280) %2, ptr noundef nonnull @.str.341)
          to label %271 unwind label %292

271:                                              ; preds = %266
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJPKcRS3_RA2_S2_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 1 dereferenceable(2) @.str.406, ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef nonnull align 1 dereferenceable(2) @.str.78)
          to label %272 unwind label %294

272:                                              ; preds = %271
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #7
  invoke void @_ZN11spirv_cross12CompilerGLSL11begin_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848) %0)
          to label %273 unwind label %264

273:                                              ; preds = %272
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %29) #7
  %274 = load i32, ptr %255, align 8, !tbaa !169
  %275 = icmp ult i32 %274, 31
  %276 = zext i1 %275 to i8
  store i8 %276, ptr %29, align 1, !tbaa !170
  %277 = getelementptr inbounds i8, ptr %0, i64 2680
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %30) #7
  store ptr %0, ptr %30, align 8, !tbaa !171
  %278 = getelementptr inbounds i8, ptr %30, i64 8
  store ptr %29, ptr %278, align 8, !tbaa !167
  invoke void @"_ZNK11spirv_cross6Bitset12for_each_bitIZNS_12CompilerHLSL21emit_hlsl_entry_pointEvE3$_0EEvRKT_"(ptr noundef nonnull align 8 dereferenceable(64) %277, ptr noundef nonnull align 8 dereferenceable(16) %30)
          to label %279 unwind label %297

279:                                              ; preds = %273
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %30) #7
  %280 = getelementptr inbounds i8, ptr %0, i64 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %31) #7
  store ptr %0, ptr %31, align 8, !tbaa !173
  %281 = getelementptr inbounds i8, ptr %31, i64 8
  store ptr %46, ptr %281, align 8, !tbaa !167
  invoke void @"_ZN11spirv_cross8ParsedIR17for_each_typed_idINS_12SPIRVariableEZNS_12CompilerHLSL21emit_hlsl_entry_pointEvE3$_1EEvRKT0_"(ptr noundef nonnull align 8 dereferenceable(1920) %280, ptr noundef nonnull align 8 dereferenceable(16) %31)
          to label %282 unwind label %299

282:                                              ; preds = %279
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %31) #7
  %283 = load i32, ptr %48, align 8, !tbaa !139
  switch i32 %283, label %323 [
    i32 0, label %284
    i32 4, label %284
    i32 5, label %284
    i32 5365, label %284
    i32 5364, label %284
  ]

284:                                              ; preds = %282, %282, %282, %282, %282
  call void @llvm.lifetime.start.p0(i64 280, ptr nonnull %32) #7
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(280) %32) #7
  %285 = getelementptr inbounds i8, ptr %0, i64 1744
  %286 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE4EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %285)
  %287 = invoke noundef nonnull align 8 dereferenceable(795) ptr @_ZN11spirv_cross8Compiler3getINS_12SPIRFunctionEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %286)
          to label %288 unwind label %301

288:                                              ; preds = %284
  %289 = getelementptr inbounds i8, ptr %287, i64 24
  %290 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_12SPIRFunction9ParameterEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %289) #7
  %291 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_12SPIRFunction9ParameterEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %289) #7
  %.not124136 = icmp eq ptr %290, %291
  br i1 %.not124136, label %._crit_edge, label %.lr.ph138

._crit_edge:                                      ; preds = %305, %288
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %34) #7
  invoke void @_ZNK11spirv_cross12CompilerHLSL26get_inner_entry_point_nameB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %34, ptr noundef nonnull align 8 dereferenceable(10528) %0)
          to label %309 unwind label %314

292:                                              ; preds = %266
  %293 = landingpad { ptr, i32 }
          cleanup
  br label %296

294:                                              ; preds = %271
  %295 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #7
  br label %296

296:                                              ; preds = %294, %292
  %.pn122 = phi { ptr, i32 } [ %295, %294 ], [ %293, %292 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #7
  br label %345

297:                                              ; preds = %273
  %298 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %30) #7
  br label %344

299:                                              ; preds = %279
  %300 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %31) #7
  br label %344

301:                                              ; preds = %284
  %302 = landingpad { ptr, i32 }
          cleanup
  br label %322

.lr.ph138:                                        ; preds = %288, %305
  %.083137 = phi ptr [ %306, %305 ], [ %290, %288 ]
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %33) #7
  %303 = getelementptr inbounds i8, ptr %.083137, i64 4
  %304 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %303)
  invoke void @_ZN11spirv_cross12CompilerGLSL13to_expressionB5cxx11Ejb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %33, ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %304, i1 noundef zeroext false)
          to label %305 unwind label %307

305:                                              ; preds = %.lr.ph138
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EE9push_backEOS6_(ptr noundef nonnull align 8 dereferenceable(280) %32, ptr noundef nonnull align 8 dereferenceable(32) %33) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %33) #7
  %306 = getelementptr inbounds i8, ptr %.083137, i64 20
  %.not124 = icmp eq ptr %306, %291
  br i1 %.not124, label %._crit_edge, label %.lr.ph138

307:                                              ; preds = %.lr.ph138
  %308 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %33) #7
  br label %322

309:                                              ; preds = %._crit_edge
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %35) #7
  invoke void @_ZN11spirv_cross5mergeERKNS_11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EEEPKc(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %35, ptr noundef nonnull align 8 dereferenceable(280) %32, ptr noundef nonnull @.str.341)
          to label %310 unwind label %316

310:                                              ; preds = %309
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_KcS7_RA3_S8_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef nonnull align 1 dereferenceable(2) @.str.406, ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef nonnull align 1 dereferenceable(3) @.str.379)
          to label %311 unwind label %318

311:                                              ; preds = %310
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %35) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #7
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(280) %32) #7
  call void @llvm.lifetime.end.p0(i64 280, ptr nonnull %32) #7
  %312 = load i8, ptr %267, align 8, !tbaa !168, !range !137, !noundef !138
  %313 = trunc nuw i8 %312 to i1
  br i1 %313, label %330, label %342

314:                                              ; preds = %._crit_edge
  %315 = landingpad { ptr, i32 }
          cleanup
  br label %321

316:                                              ; preds = %309
  %317 = landingpad { ptr, i32 }
          cleanup
  br label %320

318:                                              ; preds = %310
  %319 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #7
  br label %320

320:                                              ; preds = %318, %316
  %.pn125 = phi { ptr, i32 } [ %319, %318 ], [ %317, %316 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %35) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #7
  br label %321

321:                                              ; preds = %320, %314
  %.pn125.pn = phi { ptr, i32 } [ %.pn125, %320 ], [ %315, %314 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #7
  br label %322

322:                                              ; preds = %321, %307, %301
  %.pn128 = phi { ptr, i32 } [ %308, %307 ], [ %.pn125.pn, %321 ], [ %302, %301 ]
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(280) %32) #7
  call void @llvm.lifetime.end.p0(i64 280, ptr nonnull %32) #7
  br label %344

323:                                              ; preds = %282
  %324 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %324, ptr noundef nonnull @.str.426)
          to label %325 unwind label %326

325:                                              ; preds = %323
  invoke void @__cxa_throw(ptr nonnull %324, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #8
          to label %347 unwind label %328

326:                                              ; preds = %323
  %327 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %324) #7
  br label %344

328:                                              ; preds = %342, %337, %330, %325
  %329 = landingpad { ptr, i32 }
          cleanup
  br label %344

330:                                              ; preds = %311
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA33_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(33) @.str.427)
          to label %331 unwind label %328

331:                                              ; preds = %330
  %332 = getelementptr inbounds i8, ptr %0, i64 2744
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %36) #7
  store ptr %29, ptr %36, align 8, !tbaa !167
  %333 = getelementptr inbounds i8, ptr %36, i64 8
  store ptr %0, ptr %333, align 8, !tbaa !175
  invoke void @"_ZNK11spirv_cross6Bitset12for_each_bitIZNS_12CompilerHLSL21emit_hlsl_entry_pointEvE3$_2EEvRKT_"(ptr noundef nonnull align 8 dereferenceable(64) %332, ptr noundef nonnull align 8 dereferenceable(16) %36)
          to label %334 unwind label %338

334:                                              ; preds = %331
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %36) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %37) #7
  store ptr %0, ptr %37, align 8, !tbaa !177
  %335 = getelementptr inbounds i8, ptr %37, i64 8
  store ptr %29, ptr %335, align 8, !tbaa !167
  %336 = getelementptr inbounds i8, ptr %37, i64 16
  store ptr %46, ptr %336, align 8, !tbaa !167
  invoke void @"_ZN11spirv_cross8ParsedIR17for_each_typed_idINS_12SPIRVariableEZNS_12CompilerHLSL21emit_hlsl_entry_pointEvE3$_3EEvRKT0_"(ptr noundef nonnull align 8 dereferenceable(1920) %280, ptr noundef nonnull align 8 dereferenceable(24) %37)
          to label %337 unwind label %340

337:                                              ; preds = %334
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %37) #7
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA21_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(21) @.str.428)
          to label %342 unwind label %328

338:                                              ; preds = %331
  %339 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %36) #7
  br label %344

340:                                              ; preds = %334
  %341 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %37) #7
  br label %344

342:                                              ; preds = %337, %311
  invoke void @_ZN11spirv_cross12CompilerGLSL9end_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848) %0)
          to label %343 unwind label %328

343:                                              ; preds = %342
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #7
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(280) %2) #7
  call void @llvm.lifetime.end.p0(i64 280, ptr nonnull %2) #7
  ret void

344:                                              ; preds = %340, %338, %328, %326, %322, %299, %297
  %.pn128.pn = phi { ptr, i32 } [ %.pn128, %322 ], [ %329, %328 ], [ %341, %340 ], [ %339, %338 ], [ %327, %326 ], [ %300, %299 ], [ %298, %297 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %29) #7
  br label %345

345:                                              ; preds = %344, %296, %264
  %.pn128.pn.pn = phi { ptr, i32 } [ %.pn128.pn, %344 ], [ %265, %264 ], [ %.pn122, %296 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #7
  br label %346

346:                                              ; preds = %50, %67, %248, %345, %102, %106, %112, %148, %160, %169, %104, %79, %43
  %.pn128.pn.pn.pn.pn = phi { ptr, i32 } [ %44, %43 ], [ %.pn128.pn.pn, %345 ], [ %51, %50 ], [ %.pn.pn.pn.pn.pn, %248 ], [ %68, %67 ], [ %80, %79 ], [ %103, %102 ], [ %105, %104 ], [ %.pn116, %112 ], [ %.pn112.pn.pn, %148 ], [ %.pn108, %160 ], [ %.pn106, %169 ], [ %107, %106 ]
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(280) %2) #7
  call void @llvm.lifetime.end.p0(i64 280, ptr nonnull %2) #7
  resume { ptr, i32 } %.pn128.pn.pn.pn.pn

347:                                              ; preds = %325, %66
  unreachable
}

declare void @_ZNK11spirv_cross8Compiler22get_buffer_block_flagsENS_7TypedIDILNS_5TypesE2EEE(ptr dead_on_unwind writable sret(%"class.spirv_cross::Bitset") align 8, ptr noundef nonnull align 8 dereferenceable(3176), i32) local_unnamed_addr #3

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZNSt7__cxx119to_stringEj(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, i32 noundef) local_unnamed_addr #6

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZNK11spirv_cross6Bitset12for_each_bitIZNS_12CompilerHLSL21emit_hlsl_entry_pointEvE3$_0EEvRKT_"(ptr noundef nonnull align 8 dereferenceable(64), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #1 align 2

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZNK11spirv_cross6Bitset12for_each_bitIZNS_12CompilerHLSL21emit_hlsl_entry_pointEvE3$_2EEvRKT_"(ptr noundef nonnull align 8 dereferenceable(64), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #1 align 2

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

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

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 = { "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 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nounwind }
attributes #8 = { noreturn }

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

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


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