; 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] }
%"struct.spirv_cross::SPIRType" = type { %"struct.spirv_cross::IVariant.base", i32, i32, i32, i32, i32, %"class.spirv_cross::SmallVector.92", %"class.spirv_cross::SmallVector.325", i32, i8, i8, i32, %"class.spirv_cross::SmallVector.227", %"class.spirv_cross::SmallVector.92", %"struct.spirv_cross::SPIRType::ImageType", %"class.spirv_cross::TypedID.328", %"class.spirv_cross::TypedID.328", %"class.std::unordered_set.165" }
%"struct.spirv_cross::IVariant.base" = type <{ ptr, %"class.spirv_cross::TypedID.324" }>
%"class.spirv_cross::TypedID.324" = type { i32 }
%"class.spirv_cross::SmallVector.325" = type { %"class.spirv_cross::VectorView.326", i64, %"class.spirv_cross::AlignedBuffer.327" }
%"class.spirv_cross::VectorView.326" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.327" = type { [8 x i8] }
%"class.spirv_cross::SmallVector.227" = type { %"class.spirv_cross::VectorView.228", i64, %"class.spirv_cross::AlignedBuffer.229" }
%"class.spirv_cross::VectorView.228" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.229" = type { [32 x i8] }
%"class.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] }
%"struct.spirv_cross::SPIRType::ImageType" = type { %"class.spirv_cross::TypedID.328", i32, i8, i8, i8, i32, i32, i32 }
%"class.spirv_cross::TypedID.328" = type { 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 }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%class.anon.342 = type { ptr }
%"struct.std::pair" = type <{ %"struct.std::__detail::_Node_iterator", i8, [7 x i8] }>
%"struct.std::__detail::_Node_iterator" = type { %"struct.std::__detail::_Node_iterator_base" }
%"struct.std::__detail::_Node_iterator_base" = type { ptr }
%"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 }
%"class.spirv_cross::TypedID.330" = type { i32 }
%"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.spirv_cross::TypedID.331" = type { i32 }
%"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.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.spirv_cross::Bitset" = type { i64, %"class.std::unordered_set" }
%"class.std::unordered_map.117" = type { %"class.std::_Hashtable.118" }
%"class.std::_Hashtable.118" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.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_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.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::vector.230" = type { %"struct.std::_Vector_base.231" }
%"struct.std::_Vector_base.231" = type { %"struct.std::_Vector_base<spirv_cross::PlsRemap, std::allocator<spirv_cross::PlsRemap>>::_Vector_impl" }
%"struct.std::_Vector_base<spirv_cross::PlsRemap, std::allocator<spirv_cross::PlsRemap>>::_Vector_impl" = type { %"struct.std::_Vector_base<spirv_cross::PlsRemap, std::allocator<spirv_cross::PlsRemap>>::_Vector_impl_data" }
%"struct.std::_Vector_base<spirv_cross::PlsRemap, std::allocator<spirv_cross::PlsRemap>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.235" = type { %"struct.std::_Vector_base.236" }
%"struct.std::_Vector_base.236" = type { %"struct.std::_Vector_base<std::pair<unsigned int, unsigned int>, std::allocator<std::pair<unsigned int, unsigned int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<unsigned int, unsigned int>, std::allocator<std::pair<unsigned int, unsigned int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<unsigned int, unsigned int>, std::allocator<std::pair<unsigned int, unsigned int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<unsigned int, unsigned int>, std::allocator<std::pair<unsigned int, unsigned int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.240" = type { %"struct.std::_Vector_base.241" }
%"struct.std::_Vector_base.241" = type { %"struct.std::_Vector_base<std::pair<unsigned int, bool>, std::allocator<std::pair<unsigned int, bool>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<unsigned int, bool>, std::allocator<std::pair<unsigned int, bool>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<unsigned int, bool>, std::allocator<std::pair<unsigned int, bool>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<unsigned int, bool>, std::allocator<std::pair<unsigned int, bool>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::unordered_map.213" = type { %"class.std::_Hashtable.214" }
%"class.std::_Hashtable.214" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_set.245" = type { %"class.std::_Hashtable.246" }
%"class.std::_Hashtable.246" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_set" = type { %"class.std::_Hashtable.74" }
%"class.std::_Hashtable.74" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.263" = type { %"class.std::_Hashtable.264" }
%"class.std::_Hashtable.264" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.spirv_cross::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::IVariant" = type <{ ptr, %"class.spirv_cross::TypedID.324", [4 x i8] }>

@_ZTIN11spirv_cross13CompilerErrorE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.53 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [64 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: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #2 align 2

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN11spirv_cross8SPIRTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(336)) unnamed_addr #7 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11spirv_cross12CompilerHLSL30emit_interface_block_in_structERKNS_12SPIRVariableERSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEE(ptr noundef nonnull align 8 dereferenceable(10528) %0, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull align 8 dereferenceable(56) %2) #1 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca %"struct.spirv_cross::SPIRType", align 8
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca i8, align 1
  %11 = alloca i8, align 1
  %12 = alloca i8, align 1
  %13 = alloca i32, align 4
  %14 = alloca %"class.spirv_cross::TypedID.324", align 4
  %15 = alloca ptr, align 8
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca %"class.spirv_cross::TypedID.324", align 4
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca ptr, align 8
  %21 = alloca i32, align 4
  %22 = alloca %class.anon.342, align 8
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca i32, align 4
  %25 = alloca %"class.spirv_cross::TypedID.324", align 4
  %26 = alloca %"class.spirv_cross::TypedID.324", align 4
  %27 = alloca %"class.std::__cxx11::basic_string", align 8
  %28 = alloca i32, align 4
  %29 = alloca %"struct.spirv_cross::SPIRType", 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.spirv_cross::TypedID.324", align 4
  %35 = alloca %"class.std::__cxx11::basic_string", align 8
  %36 = alloca %"class.std::__cxx11::basic_string", align 8
  %37 = alloca i32, align 4
  %38 = alloca %"struct.std::pair", align 8
  %39 = alloca %"struct.spirv_cross::SPIRType", align 8
  %40 = alloca %"class.spirv_cross::TypedID.324", align 4
  %41 = alloca %"class.std::__cxx11::basic_string", align 8
  %42 = alloca %"class.spirv_cross::TypedID.324", align 4
  %43 = alloca %"class.std::__cxx11::basic_string", align 8
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca %"struct.std::pair", align 8
  %48 = alloca %"class.std::__cxx11::basic_string", align 8
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  store ptr %2, ptr %6, align 8, !tbaa !5
  %49 = load ptr, ptr %4, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #8
  %50 = call noundef nonnull align 8 dereferenceable(237) ptr @_ZN11spirv_cross8Compiler15get_entry_pointEv(ptr noundef nonnull align 8 dereferenceable(3176) %49)
  store ptr %50, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 336, ptr %8) #8
  %51 = load ptr, ptr %5, align 8, !tbaa !5
  %52 = getelementptr inbounds %"struct.spirv_cross::SPIRVariable", ptr %51, i32 0, i32 1
  %53 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE1EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %52)
  %54 = call noundef nonnull align 8 dereferenceable(336) ptr @_ZN11spirv_cross8Compiler3getINS_8SPIRTypeEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %49, i32 noundef %53)
  call void @_ZN11spirv_cross8SPIRTypeC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(336) %8, ptr noundef nonnull align 8 dereferenceable(336) %54)
  call void @llvm.lifetime.start.p0(i64 32, ptr %9) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %10) #8
  store i8 1, ptr %10, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %11) #8
  store i8 0, ptr %11, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %12) #8
  %55 = getelementptr inbounds %"class.spirv_cross::CompilerHLSL", ptr %49, i32 0, i32 1
  %56 = getelementptr inbounds %"struct.spirv_cross::CompilerHLSL::Options", ptr %55, i32 0, i32 0
  %57 = load i32, ptr %56, align 8, !tbaa !11
  %58 = icmp ule i32 %57, 30
  %59 = zext i1 %58 to i8
  store i8 %59, ptr %12, align 1, !tbaa !9
  %60 = load ptr, ptr %7, align 8, !tbaa !5
  %61 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %60, i32 0, i32 10
  %62 = load i32, ptr %61, align 8, !tbaa !139
  %63 = icmp eq i32 %62, 4
  br i1 %63, label %64, label %123

64:                                               ; preds = %3
  %65 = load ptr, ptr %5, align 8, !tbaa !5
  %66 = getelementptr inbounds %"struct.spirv_cross::SPIRVariable", ptr %65, i32 0, i32 2
  %67 = load i32, ptr %66, align 8, !tbaa !146
  %68 = icmp eq i32 %67, 3
  br i1 %68, label %69, label %123

69:                                               ; preds = %64
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #8
  %70 = load ptr, ptr %5, align 8, !tbaa !5
  %71 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %70, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %14, ptr align 8 %71, i64 4, i1 false), !tbaa.struct !154
  %72 = getelementptr inbounds %"class.spirv_cross::TypedID.324", ptr %14, i32 0, i32 0
  %73 = load i32, ptr %72, align 4
  %74 = invoke noundef i32 @_ZNK11spirv_cross8Compiler14get_decorationENS_7TypedIDILNS_5TypesE0EEEN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %49, i32 %73, i32 noundef 32)
          to label %75 unwind label %90

75:                                               ; preds = %69
  store i32 %74, ptr %13, align 4, !tbaa !155
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #8
  %76 = load ptr, ptr %5, align 8, !tbaa !5
  %77 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %76, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %18, ptr align 8 %77, i64 4, i1 false), !tbaa.struct !154
  %78 = getelementptr inbounds %"class.spirv_cross::TypedID.324", ptr %18, i32 0, i32 0
  %79 = load i32, ptr %78, align 4
  %80 = invoke noundef i32 @_ZNK11spirv_cross8Compiler14get_decorationENS_7TypedIDILNS_5TypesE0EEEN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %49, i32 %79, i32 noundef 30)
          to label %81 unwind label %94

81:                                               ; preds = %75
  store i32 %80, ptr %17, align 4, !tbaa !155
  %82 = load i32, ptr %13, align 4, !tbaa !155
  %83 = icmp ne i32 %82, 0
  br i1 %83, label %84, label %102

84:                                               ; preds = %81
  %85 = load i32, ptr %17, align 4, !tbaa !155
  %86 = icmp ne i32 %85, 0
  br i1 %86, label %87, label %102

87:                                               ; preds = %84
  %88 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %88, ptr noundef @.str.65)
          to label %89 unwind label %98

89:                                               ; preds = %87
  invoke void @__cxa_throw(ptr %88, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #9
          to label %426 unwind label %94

90:                                               ; preds = %69
  %91 = landingpad { ptr, i32 }
          cleanup
  %92 = extractvalue { ptr, i32 } %91, 0
  store ptr %92, ptr %15, align 8
  %93 = extractvalue { ptr, i32 } %91, 1
  store i32 %93, ptr %16, align 4
  br label %122

94:                                               ; preds = %89, %75
  %95 = landingpad { ptr, i32 }
          cleanup
  %96 = extractvalue { ptr, i32 } %95, 0
  store ptr %96, ptr %15, align 8
  %97 = extractvalue { ptr, i32 } %95, 1
  store i32 %97, ptr %16, align 4
  br label %121

98:                                               ; preds = %87
  %99 = landingpad { ptr, i32 }
          cleanup
  %100 = extractvalue { ptr, i32 } %99, 0
  store ptr %100, ptr %15, align 8
  %101 = extractvalue { ptr, i32 } %99, 1
  store i32 %101, ptr %16, align 4
  call void @__cxa_free_exception(ptr %88) #8
  br label %121

102:                                              ; preds = %84, %81
  call void @llvm.lifetime.start.p0(i64 32, ptr %19) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #8
  %103 = load i8, ptr %12, align 1, !tbaa !9, !range !156, !noundef !157
  %104 = trunc i8 %103 to i1
  %105 = zext i1 %104 to i64
  %106 = select i1 %104, ptr @.str.66, ptr @.str.67
  store ptr %106, ptr %20, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #8
  %107 = load i32, ptr %17, align 4, !tbaa !155
  %108 = load i32, ptr %13, align 4, !tbaa !155
  %109 = add i32 %107, %108
  store i32 %109, ptr %21, align 4, !tbaa !155
  invoke void @_ZN11spirv_cross4joinIJPKcjEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %19, ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 4 dereferenceable(4) %21)
          to label %110 unwind label %116

110:                                              ; preds = %102
  %111 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #8
  store i8 0, ptr %10, align 1, !tbaa !9
  %112 = load i8, ptr %12, align 1, !tbaa !9, !range !156, !noundef !157
  %113 = trunc i8 %112 to i1
  br i1 %113, label %114, label %120

114:                                              ; preds = %110
  %115 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %8, i32 0, i32 4
  store i32 4, ptr %115, align 8, !tbaa !158
  br label %120

116:                                              ; preds = %102
  %117 = landingpad { ptr, i32 }
          cleanup
  %118 = extractvalue { ptr, i32 } %117, 0
  store ptr %118, ptr %15, align 8
  %119 = extractvalue { ptr, i32 } %117, 1
  store i32 %119, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #8
  br label %121

120:                                              ; preds = %114, %110
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #8
  br label %140

121:                                              ; preds = %116, %98, %94
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #8
  br label %122

122:                                              ; preds = %121, %90
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #8
  br label %420

123:                                              ; preds = %64, %3
  %124 = load ptr, ptr %5, align 8, !tbaa !5
  %125 = getelementptr inbounds %"struct.spirv_cross::SPIRVariable", ptr %124, i32 0, i32 2
  %126 = load i32, ptr %125, align 8, !tbaa !146
  %127 = icmp eq i32 %126, 1
  br i1 %127, label %128, label %139

128:                                              ; preds = %123
  %129 = load ptr, ptr %7, align 8, !tbaa !5
  %130 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %129, i32 0, i32 10
  %131 = load i32, ptr %130, align 8, !tbaa !139
  %132 = icmp eq i32 %131, 0
  br i1 %132, label %133, label %139

133:                                              ; preds = %128
  store i8 1, ptr %11, align 1, !tbaa !9
  %134 = load i8, ptr %12, align 1, !tbaa !9, !range !156, !noundef !157
  %135 = trunc i8 %134 to i1
  br i1 %135, label %136, label %138

136:                                              ; preds = %133
  %137 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %8, i32 0, i32 2
  store i32 13, ptr %137, align 8, !tbaa !168
  br label %138

138:                                              ; preds = %136, %133
  br label %139

139:                                              ; preds = %138, %128, %123
  br label %140

140:                                              ; preds = %139, %120
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #8
  %141 = getelementptr inbounds %class.anon.342, ptr %22, i32 0, i32 0
  %142 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %142, ptr %141, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %23) #8
  %143 = load ptr, ptr %5, align 8, !tbaa !5
  %144 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %143, i32 0, i32 1
  %145 = invoke noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %144)
          to label %146 unwind label %167

146:                                              ; preds = %140
  %147 = load ptr, ptr %49, align 8, !tbaa !169
  %148 = getelementptr inbounds ptr, ptr %147, i64 6
  %149 = load ptr, ptr %148, align 8
  invoke void %149(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %23, ptr noundef nonnull align 8 dereferenceable(3176) %49, i32 noundef %145, i1 noundef zeroext true)
          to label %150 unwind label %167

150:                                              ; preds = %146
  %151 = load i8, ptr %10, align 1, !tbaa !9, !range !156, !noundef !157
  %152 = trunc i8 %151 to i1
  br i1 %152, label %153, label %402

153:                                              ; preds = %150
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #8
  %154 = load ptr, ptr %5, align 8, !tbaa !5
  %155 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %154, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %25, ptr align 8 %155, i64 4, i1 false), !tbaa.struct !154
  %156 = getelementptr inbounds %"class.spirv_cross::TypedID.324", ptr %25, i32 0, i32 0
  %157 = load i32, ptr %156, align 4
  %158 = invoke noundef zeroext i1 @_ZNK11spirv_cross8Compiler14has_decorationENS_7TypedIDILNS_5TypesE0EEEN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %49, i32 %157, i32 noundef 30)
          to label %159 unwind label %171

159:                                              ; preds = %153
  br i1 %158, label %160, label %175

160:                                              ; preds = %159
  %161 = load ptr, ptr %5, align 8, !tbaa !5
  %162 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %161, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %26, ptr align 8 %162, i64 4, i1 false), !tbaa.struct !154
  %163 = getelementptr inbounds %"class.spirv_cross::TypedID.324", ptr %26, i32 0, i32 0
  %164 = load i32, ptr %163, align 4
  %165 = invoke noundef i32 @_ZNK11spirv_cross8Compiler14get_decorationENS_7TypedIDILNS_5TypesE0EEEN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %49, i32 %164, i32 noundef 30)
          to label %166 unwind label %171

166:                                              ; preds = %160
  store i32 %165, ptr %24, align 4, !tbaa !155
  br label %178

167:                                              ; preds = %146, %140
  %168 = landingpad { ptr, i32 }
          cleanup
  %169 = extractvalue { ptr, i32 } %168, 0
  store ptr %169, ptr %15, align 8
  %170 = extractvalue { ptr, i32 } %168, 1
  store i32 %170, ptr %16, align 4
  br label %419

171:                                              ; preds = %175, %160, %153
  %172 = landingpad { ptr, i32 }
          cleanup
  %173 = extractvalue { ptr, i32 } %172, 0
  store ptr %173, ptr %15, align 8
  %174 = extractvalue { ptr, i32 } %172, 1
  store i32 %174, ptr %16, align 4
  br label %401

175:                                              ; preds = %159
  %176 = invoke noundef i32 @"_ZZN11spirv_cross12CompilerHLSL30emit_interface_block_in_structERKNS_12SPIRVariableERSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEEENK3$_0clEv"(ptr noundef nonnull align 8 dereferenceable(8) %22)
          to label %177 unwind label %171

177:                                              ; preds = %175
  store i32 %176, ptr %24, align 4, !tbaa !155
  br label %178

178:                                              ; preds = %177, %166
  call void @llvm.lifetime.start.p0(i64 32, ptr %27) #8
  %179 = load i32, ptr %24, align 4, !tbaa !155
  %180 = load ptr, ptr %7, align 8, !tbaa !5
  %181 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %180, i32 0, i32 10
  %182 = load i32, ptr %181, align 8, !tbaa !139
  %183 = load ptr, ptr %5, align 8, !tbaa !5
  %184 = getelementptr inbounds %"struct.spirv_cross::SPIRVariable", ptr %183, i32 0, i32 2
  %185 = load i32, ptr %184, align 8, !tbaa !146
  invoke void @_ZN11spirv_cross12CompilerHLSL11to_semanticB5cxx11EjN3spv14ExecutionModelENS1_12StorageClassE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %27, ptr noundef nonnull align 8 dereferenceable(10528) %49, i32 noundef %179, i32 noundef %182, i32 noundef %185)
          to label %186 unwind label %199

186:                                              ; preds = %178
  %187 = load i8, ptr %11, align 1, !tbaa !9, !range !156, !noundef !157
  %188 = trunc i8 %187 to i1
  br i1 %188, label %189, label %305

189:                                              ; preds = %186
  %190 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %8, i32 0, i32 5
  %191 = load i32, ptr %190, align 4, !tbaa !171
  %192 = icmp ugt i32 %191, 1
  br i1 %192, label %193, label %305

193:                                              ; preds = %189
  %194 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %8, i32 0, i32 6
  %195 = call noundef zeroext i1 @_ZNK11spirv_cross10VectorViewIjE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %194) #8
  br i1 %195, label %211, label %196

196:                                              ; preds = %193
  %197 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %197, ptr noundef @.str.68)
          to label %198 unwind label %203

198:                                              ; preds = %196
  invoke void @__cxa_throw(ptr %197, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #9
          to label %426 unwind label %207

199:                                              ; preds = %178
  %200 = landingpad { ptr, i32 }
          cleanup
  %201 = extractvalue { ptr, i32 } %200, 0
  store ptr %201, ptr %15, align 8
  %202 = extractvalue { ptr, i32 } %200, 1
  store i32 %202, ptr %16, align 4
  br label %400

203:                                              ; preds = %196
  %204 = landingpad { ptr, i32 }
          cleanup
  %205 = extractvalue { ptr, i32 } %204, 0
  store ptr %205, ptr %15, align 8
  %206 = extractvalue { ptr, i32 } %204, 1
  store i32 %206, ptr %16, align 4
  call void @__cxa_free_exception(ptr %197) #8
  br label %399

207:                                              ; preds = %198
  %208 = landingpad { ptr, i32 }
          cleanup
  %209 = extractvalue { ptr, i32 } %208, 0
  store ptr %209, ptr %15, align 8
  %210 = extractvalue { ptr, i32 } %208, 1
  store i32 %210, ptr %16, align 4
  br label %399

211:                                              ; preds = %193
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #8
  store i32 0, ptr %28, align 4, !tbaa !155
  br label %212

212:                                              ; preds = %276, %211
  %213 = load i32, ptr %28, align 4, !tbaa !155
  %214 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %8, i32 0, i32 5
  %215 = load i32, ptr %214, align 4, !tbaa !171
  %216 = icmp ult i32 %213, %215
  br i1 %216, label %218, label %217

217:                                              ; preds = %212
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #8
  br label %304

218:                                              ; preds = %212
  call void @llvm.lifetime.start.p0(i64 336, ptr %29) #8
  invoke void @_ZN11spirv_cross8SPIRTypeC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(336) %29, ptr noundef nonnull align 8 dereferenceable(336) %8)
          to label %219 unwind label %235

219:                                              ; preds = %218
  %220 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %29, i32 0, i32 5
  store i32 1, ptr %220, align 4, !tbaa !171
  call void @llvm.lifetime.start.p0(i64 32, ptr %30) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #8
  %221 = getelementptr inbounds %"class.spirv_cross::CompilerHLSL", ptr %49, i32 0, i32 1
  %222 = getelementptr inbounds %"struct.spirv_cross::CompilerHLSL::Options", ptr %221, i32 0, i32 7
  %223 = load i8, ptr %222, align 2, !tbaa !172, !range !156, !noundef !157
  %224 = trunc i8 %223 to i1
  br i1 %224, label %225, label %243

225:                                              ; preds = %219
  call void @llvm.lifetime.start.p0(i64 32, ptr %31) #8
  %226 = load i32, ptr %24, align 4, !tbaa !155
  %227 = load ptr, ptr %7, align 8, !tbaa !5
  %228 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %227, i32 0, i32 10
  %229 = load i32, ptr %228, align 8, !tbaa !139
  %230 = load ptr, ptr %5, align 8, !tbaa !5
  %231 = getelementptr inbounds %"struct.spirv_cross::SPIRVariable", ptr %230, i32 0, i32 2
  %232 = load i32, ptr %231, align 8, !tbaa !146
  invoke void @_ZN11spirv_cross12CompilerHLSL11to_semanticB5cxx11EjN3spv14ExecutionModelENS1_12StorageClassE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %31, ptr noundef nonnull align 8 dereferenceable(10528) %49, i32 noundef %226, i32 noundef %229, i32 noundef %232)
          to label %233 unwind label %239

233:                                              ; preds = %225
  %234 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef nonnull align 8 dereferenceable(32) %31) #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
  br label %250

235:                                              ; preds = %218
  %236 = landingpad { ptr, i32 }
          cleanup
  %237 = extractvalue { ptr, i32 } %236, 0
  store ptr %237, ptr %15, align 8
  %238 = extractvalue { ptr, i32 } %236, 1
  store i32 %238, ptr %16, align 4
  br label %303

239:                                              ; preds = %225
  %240 = landingpad { ptr, i32 }
          cleanup
  %241 = extractvalue { ptr, i32 } %240, 0
  store ptr %241, ptr %15, align 8
  %242 = extractvalue { ptr, i32 } %240, 1
  store i32 %242, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #8
  br label %302

243:                                              ; preds = %219
  call void @llvm.lifetime.start.p0(i64 32, ptr %32) #8
  invoke void @_ZN11spirv_cross4joinIJRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_KcRjEEES6_DpOT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %32, ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull align 1 dereferenceable(2) @.str.62, ptr noundef nonnull align 4 dereferenceable(4) %28)
          to label %244 unwind label %246

244:                                              ; preds = %243
  %245 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %30, 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 @llvm.lifetime.end.p0(i64 32, ptr %32) #8
  br label %250

246:                                              ; preds = %243
  %247 = landingpad { ptr, i32 }
          cleanup
  %248 = extractvalue { ptr, i32 } %247, 0
  store ptr %248, ptr %15, align 8
  %249 = extractvalue { ptr, i32 } %247, 1
  store i32 %249, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #8
  br label %302

250:                                              ; preds = %244, %233
  call void @llvm.lifetime.start.p0(i64 32, ptr %33) #8
  %251 = load ptr, ptr %5, align 8, !tbaa !5
  %252 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %251, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %34, ptr align 8 %252, i64 4, i1 false), !tbaa.struct !154
  %253 = getelementptr inbounds %"class.spirv_cross::TypedID.324", ptr %34, i32 0, i32 0
  %254 = load i32, ptr %253, align 4
  %255 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZNK11spirv_cross8Compiler21get_decoration_bitsetENS_7TypedIDILNS_5TypesE0EEE(ptr noundef nonnull align 8 dereferenceable(3176) %49, i32 %254)
          to label %256 unwind label %279

256:                                              ; preds = %250
  %257 = load ptr, ptr %49, align 8, !tbaa !169
  %258 = getelementptr inbounds ptr, ptr %257, i64 53
  %259 = load ptr, ptr %258, align 8
  invoke void %259(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %33, ptr noundef nonnull align 8 dereferenceable(10528) %49, ptr noundef nonnull align 8 dereferenceable(64) %255)
          to label %260 unwind label %279

260:                                              ; preds = %256
  call void @llvm.lifetime.start.p0(i64 32, ptr %35) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %36) #8
  invoke void @_ZN11spirv_cross4joinIJRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_KcRjEEES6_DpOT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %36, ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull align 1 dereferenceable(2) @.str.62, ptr noundef nonnull align 4 dereferenceable(4) %28)
          to label %261 unwind label %283

261:                                              ; preds = %260
  %262 = load ptr, ptr %49, align 8, !tbaa !169
  %263 = getelementptr inbounds ptr, ptr %262, i64 27
  %264 = load ptr, ptr %263, align 8
  invoke void %264(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %35, ptr noundef nonnull align 8 dereferenceable(9848) %49, ptr noundef nonnull align 8 dereferenceable(336) %29, ptr noundef nonnull align 8 dereferenceable(32) %36, i32 noundef 0)
          to label %265 unwind label %287

265:                                              ; preds = %261
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_RA4_KcRS7_RA2_S8_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %49, ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef nonnull align 1 dereferenceable(4) @.str.64, ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef nonnull align 1 dereferenceable(2) @.str.53)
          to label %266 unwind label %291

266:                                              ; preds = %265
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %33) #8
  %267 = load ptr, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #8
  %268 = load i32, ptr %24, align 4, !tbaa !155
  %269 = add i32 %268, 1
  store i32 %269, ptr %24, align 4, !tbaa !155
  store i32 %268, ptr %37, align 4, !tbaa !155
  %270 = invoke { ptr, i8 } @_ZNSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEE6insertEOj(ptr noundef nonnull align 8 dereferenceable(56) %267, ptr noundef nonnull align 4 dereferenceable(4) %37)
          to label %271 unwind label %298

271:                                              ; preds = %266
  %272 = getelementptr inbounds { ptr, i8 }, ptr %38, i32 0, i32 0
  %273 = extractvalue { ptr, i8 } %270, 0
  store ptr %273, ptr %272, align 8
  %274 = getelementptr inbounds { ptr, i8 }, ptr %38, i32 0, i32 1
  %275 = extractvalue { ptr, i8 } %270, 1
  store i8 %275, ptr %274, align 8
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #8
  call void @_ZN11spirv_cross8SPIRTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(336) %29) #8
  call void @llvm.lifetime.end.p0(i64 336, ptr %29) #8
  br label %276

276:                                              ; preds = %271
  %277 = load i32, ptr %28, align 4, !tbaa !155
  %278 = add i32 %277, 1
  store i32 %278, ptr %28, align 4, !tbaa !155
  br label %212, !llvm.loop !173

279:                                              ; preds = %256, %250
  %280 = landingpad { ptr, i32 }
          cleanup
  %281 = extractvalue { ptr, i32 } %280, 0
  store ptr %281, ptr %15, align 8
  %282 = extractvalue { ptr, i32 } %280, 1
  store i32 %282, ptr %16, align 4
  br label %297

283:                                              ; preds = %260
  %284 = landingpad { ptr, i32 }
          cleanup
  %285 = extractvalue { ptr, i32 } %284, 0
  store ptr %285, ptr %15, align 8
  %286 = extractvalue { ptr, i32 } %284, 1
  store i32 %286, ptr %16, align 4
  br label %296

287:                                              ; preds = %261
  %288 = landingpad { ptr, i32 }
          cleanup
  %289 = extractvalue { ptr, i32 } %288, 0
  store ptr %289, ptr %15, align 8
  %290 = extractvalue { ptr, i32 } %288, 1
  store i32 %290, ptr %16, align 4
  br label %295

291:                                              ; preds = %265
  %292 = landingpad { ptr, i32 }
          cleanup
  %293 = extractvalue { ptr, i32 } %292, 0
  store ptr %293, ptr %15, align 8
  %294 = extractvalue { ptr, i32 } %292, 1
  store i32 %294, ptr %16, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #8
  br label %295

295:                                              ; preds = %291, %287
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #8
  br label %296

296:                                              ; preds = %295, %283
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #8
  br label %297

297:                                              ; preds = %296, %279
  call void @llvm.lifetime.end.p0(i64 32, ptr %33) #8
  br label %302

298:                                              ; preds = %266
  %299 = landingpad { ptr, i32 }
          cleanup
  %300 = extractvalue { ptr, i32 } %299, 0
  store ptr %300, ptr %15, align 8
  %301 = extractvalue { ptr, i32 } %299, 1
  store i32 %301, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #8
  br label %302

302:                                              ; preds = %298, %297, %246, %239
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #8
  call void @_ZN11spirv_cross8SPIRTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(336) %29) #8
  br label %303

303:                                              ; preds = %302, %235
  call void @llvm.lifetime.end.p0(i64 336, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #8
  br label %399

304:                                              ; preds = %217
  br label %398

305:                                              ; preds = %189, %186
  call void @llvm.lifetime.start.p0(i64 336, ptr %39) #8
  invoke void @_ZN11spirv_cross8SPIRTypeC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(336) %39, ptr noundef nonnull align 8 dereferenceable(336) %8)
          to label %306 unwind label %327

306:                                              ; preds = %305
  %307 = load ptr, ptr %7, align 8, !tbaa !5
  %308 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %307, i32 0, i32 10
  %309 = load i32, ptr %308, align 8, !tbaa !139
  %310 = icmp eq i32 %309, 5365
  br i1 %310, label %318, label %311

311:                                              ; preds = %306
  %312 = load ptr, ptr %5, align 8, !tbaa !5
  %313 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %312, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %40, ptr align 8 %313, i64 4, i1 false), !tbaa.struct !154
  %314 = getelementptr inbounds %"class.spirv_cross::TypedID.324", ptr %40, i32 0, i32 0
  %315 = load i32, ptr %314, align 4
  %316 = invoke noundef zeroext i1 @_ZNK11spirv_cross8Compiler14has_decorationENS_7TypedIDILNS_5TypesE0EEEN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %49, i32 %315, i32 noundef 5285)
          to label %317 unwind label %331

317:                                              ; preds = %311
  br i1 %316, label %318, label %335

318:                                              ; preds = %317, %306
  %319 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %39, i32 0, i32 6
  %320 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %39, i32 0, i32 6
  %321 = call noundef ptr @_ZN11spirv_cross10VectorViewIjE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %320) #8
  %322 = call noundef ptr @_ZN11spirv_cross11SmallVectorIjLm8EE5eraseEPj(ptr noundef nonnull align 8 dereferenceable(56) %319, ptr noundef %321) #8
  %323 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %39, i32 0, i32 7
  %324 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %39, i32 0, i32 7
  %325 = call noundef ptr @_ZN11spirv_cross10VectorViewIbE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %324) #8
  %326 = call noundef ptr @_ZN11spirv_cross11SmallVectorIbLm8EE5eraseEPb(ptr noundef nonnull align 8 dereferenceable(32) %323, ptr noundef %325) #8
  br label %335

327:                                              ; preds = %305
  %328 = landingpad { ptr, i32 }
          cleanup
  %329 = extractvalue { ptr, i32 } %328, 0
  store ptr %329, ptr %15, align 8
  %330 = extractvalue { ptr, i32 } %328, 1
  store i32 %330, ptr %16, align 4
  br label %397

331:                                              ; preds = %311
  %332 = landingpad { ptr, i32 }
          cleanup
  %333 = extractvalue { ptr, i32 } %332, 0
  store ptr %333, ptr %15, align 8
  %334 = extractvalue { ptr, i32 } %332, 1
  store i32 %334, ptr %16, align 4
  br label %396

335:                                              ; preds = %318, %317
  call void @llvm.lifetime.start.p0(i64 32, ptr %41) #8
  %336 = load ptr, ptr %5, align 8, !tbaa !5
  %337 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %336, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %42, ptr align 8 %337, i64 4, i1 false), !tbaa.struct !154
  %338 = getelementptr inbounds %"class.spirv_cross::TypedID.324", ptr %42, i32 0, i32 0
  %339 = load i32, ptr %338, align 4
  %340 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZNK11spirv_cross8Compiler21get_decoration_bitsetENS_7TypedIDILNS_5TypesE0EEE(ptr noundef nonnull align 8 dereferenceable(3176) %49, i32 %339)
          to label %341 unwind label %358

341:                                              ; preds = %335
  %342 = load ptr, ptr %49, align 8, !tbaa !169
  %343 = getelementptr inbounds ptr, ptr %342, i64 53
  %344 = load ptr, ptr %343, align 8
  invoke void %344(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %41, ptr noundef nonnull align 8 dereferenceable(10528) %49, ptr noundef nonnull align 8 dereferenceable(64) %340)
          to label %345 unwind label %358

345:                                              ; preds = %341
  call void @llvm.lifetime.start.p0(i64 32, ptr %43) #8
  %346 = load ptr, ptr %49, align 8, !tbaa !169
  %347 = getelementptr inbounds ptr, ptr %346, i64 27
  %348 = load ptr, ptr %347, align 8
  invoke void %348(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %43, ptr noundef nonnull align 8 dereferenceable(9848) %49, ptr noundef nonnull align 8 dereferenceable(336) %39, ptr noundef nonnull align 8 dereferenceable(32) %23, i32 noundef 0)
          to label %349 unwind label %362

349:                                              ; preds = %345
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_RA4_KcRS7_RA2_S8_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %49, ptr noundef nonnull align 8 dereferenceable(32) %41, ptr noundef nonnull align 8 dereferenceable(32) %43, ptr noundef nonnull align 1 dereferenceable(4) @.str.64, ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull align 1 dereferenceable(2) @.str.53)
          to label %350 unwind label %366

350:                                              ; preds = %349
  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) %41) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %41) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #8
  %351 = invoke noundef i32 @_ZNK11spirv_cross12CompilerHLSL26type_to_consumed_locationsERKNS_8SPIRTypeE(ptr noundef nonnull align 8 dereferenceable(10528) %49, ptr noundef nonnull align 8 dereferenceable(336) %39)
          to label %352 unwind label %372

352:                                              ; preds = %350
  store i32 %351, ptr %44, align 4, !tbaa !155
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #8
  store i32 0, ptr %45, align 4, !tbaa !155
  br label %353

353:                                              ; preds = %387, %352
  %354 = load i32, ptr %45, align 4, !tbaa !155
  %355 = load i32, ptr %44, align 4, !tbaa !155
  %356 = icmp ult i32 %354, %355
  br i1 %356, label %376, label %357

357:                                              ; preds = %353
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #8
  br label %394

358:                                              ; preds = %341, %335
  %359 = landingpad { ptr, i32 }
          cleanup
  %360 = extractvalue { ptr, i32 } %359, 0
  store ptr %360, ptr %15, align 8
  %361 = extractvalue { ptr, i32 } %359, 1
  store i32 %361, ptr %16, align 4
  br label %371

362:                                              ; preds = %345
  %363 = landingpad { ptr, i32 }
          cleanup
  %364 = extractvalue { ptr, i32 } %363, 0
  store ptr %364, ptr %15, align 8
  %365 = extractvalue { ptr, i32 } %363, 1
  store i32 %365, ptr %16, align 4
  br label %370

366:                                              ; preds = %349
  %367 = landingpad { ptr, i32 }
          cleanup
  %368 = extractvalue { ptr, i32 } %367, 0
  store ptr %368, ptr %15, align 8
  %369 = extractvalue { ptr, i32 } %367, 1
  store i32 %369, ptr %16, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #8
  br label %370

370:                                              ; preds = %366, %362
  call void @llvm.lifetime.end.p0(i64 32, ptr %43) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #8
  br label %371

371:                                              ; preds = %370, %358
  call void @llvm.lifetime.end.p0(i64 32, ptr %41) #8
  br label %396

372:                                              ; preds = %350
  %373 = landingpad { ptr, i32 }
          cleanup
  %374 = extractvalue { ptr, i32 } %373, 0
  store ptr %374, ptr %15, align 8
  %375 = extractvalue { ptr, i32 } %373, 1
  store i32 %375, ptr %16, align 4
  br label %395

376:                                              ; preds = %353
  %377 = load ptr, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #8
  %378 = load i32, ptr %24, align 4, !tbaa !155
  %379 = load i32, ptr %45, align 4, !tbaa !155
  %380 = add i32 %378, %379
  store i32 %380, ptr %46, align 4, !tbaa !155
  %381 = invoke { ptr, i8 } @_ZNSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEE6insertEOj(ptr noundef nonnull align 8 dereferenceable(56) %377, ptr noundef nonnull align 4 dereferenceable(4) %46)
          to label %382 unwind label %390

382:                                              ; preds = %376
  %383 = getelementptr inbounds { ptr, i8 }, ptr %47, i32 0, i32 0
  %384 = extractvalue { ptr, i8 } %381, 0
  store ptr %384, ptr %383, align 8
  %385 = getelementptr inbounds { ptr, i8 }, ptr %47, i32 0, i32 1
  %386 = extractvalue { ptr, i8 } %381, 1
  store i8 %386, ptr %385, align 8
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #8
  br label %387

387:                                              ; preds = %382
  %388 = load i32, ptr %45, align 4, !tbaa !155
  %389 = add i32 %388, 1
  store i32 %389, ptr %45, align 4, !tbaa !155
  br label %353, !llvm.loop !175

390:                                              ; preds = %376
  %391 = landingpad { ptr, i32 }
          cleanup
  %392 = extractvalue { ptr, i32 } %391, 0
  store ptr %392, ptr %15, align 8
  %393 = extractvalue { ptr, i32 } %391, 1
  store i32 %393, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #8
  br label %395

394:                                              ; preds = %357
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #8
  call void @_ZN11spirv_cross8SPIRTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(336) %39) #8
  call void @llvm.lifetime.end.p0(i64 336, ptr %39) #8
  br label %398

395:                                              ; preds = %390, %372
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #8
  br label %396

396:                                              ; preds = %395, %371, %331
  call void @_ZN11spirv_cross8SPIRTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(336) %39) #8
  br label %397

397:                                              ; preds = %396, %327
  call void @llvm.lifetime.end.p0(i64 336, ptr %39) #8
  br label %399

398:                                              ; preds = %394, %304
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #8
  br label %417

399:                                              ; preds = %397, %303, %207, %203
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #8
  br label %400

400:                                              ; preds = %399, %199
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #8
  br label %401

401:                                              ; preds = %400, %171
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #8
  br label %418

402:                                              ; preds = %150
  call void @llvm.lifetime.start.p0(i64 32, ptr %48) #8
  %403 = load ptr, ptr %49, align 8, !tbaa !169
  %404 = getelementptr inbounds ptr, ptr %403, i64 27
  %405 = load ptr, ptr %404, align 8
  invoke void %405(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %48, ptr noundef nonnull align 8 dereferenceable(9848) %49, ptr noundef nonnull align 8 dereferenceable(336) %8, ptr noundef nonnull align 8 dereferenceable(32) %23, i32 noundef 0)
          to label %406 unwind label %408

406:                                              ; preds = %402
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA4_KcRS7_RA2_S8_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %49, ptr noundef nonnull align 8 dereferenceable(32) %48, ptr noundef nonnull align 1 dereferenceable(4) @.str.64, ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 1 dereferenceable(2) @.str.53)
          to label %407 unwind label %412

407:                                              ; preds = %406
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %48) #8
  br label %417

408:                                              ; preds = %402
  %409 = landingpad { ptr, i32 }
          cleanup
  %410 = extractvalue { ptr, i32 } %409, 0
  store ptr %410, ptr %15, align 8
  %411 = extractvalue { ptr, i32 } %409, 1
  store i32 %411, ptr %16, align 4
  br label %416

412:                                              ; preds = %406
  %413 = landingpad { ptr, i32 }
          cleanup
  %414 = extractvalue { ptr, i32 } %413, 0
  store ptr %414, ptr %15, align 8
  %415 = extractvalue { ptr, i32 } %413, 1
  store i32 %415, ptr %16, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #8
  br label %416

416:                                              ; preds = %412, %408
  call void @llvm.lifetime.end.p0(i64 32, ptr %48) #8
  br label %418

417:                                              ; preds = %407, %398
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %12) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %9) #8
  call void @_ZN11spirv_cross8SPIRTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(336) %8) #8
  call void @llvm.lifetime.end.p0(i64 336, ptr %8) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #8
  ret void

418:                                              ; preds = %416, %401
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #8
  br label %419

419:                                              ; preds = %418, %167
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #8
  br label %420

420:                                              ; preds = %419, %122
  call void @llvm.lifetime.end.p0(i64 1, ptr %12) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %9) #8
  call void @_ZN11spirv_cross8SPIRTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(336) %8) #8
  call void @llvm.lifetime.end.p0(i64 336, ptr %8) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #8
  br label %421

421:                                              ; preds = %420
  %422 = load ptr, ptr %15, align 8
  %423 = load i32, ptr %16, align 4
  %424 = insertvalue { ptr, i32 } poison, ptr %422, 0
  %425 = insertvalue { ptr, i32 } %424, i32 %423, 1
  resume { ptr, i32 } %425

426:                                              ; preds = %198, %89
  unreachable
}

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef i32 @"_ZZN11spirv_cross12CompilerHLSL30emit_interface_block_in_structERKNS_12SPIRVariableERSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEEENK3$_0clEv"(ptr noundef nonnull align 8 dereferenceable(8)) #6 align 2

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

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

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

declare noundef nonnull align 8 dereferenceable(64) ptr @_ZNK11spirv_cross8Compiler21get_decoration_bitsetENS_7TypedIDILNS_5TypesE0EEE(ptr noundef nonnull align 8 dereferenceable(3176), i32) #3

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

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

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

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

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

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


; 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] }
%"struct.spirv_cross::SPIRType" = type { %"struct.spirv_cross::IVariant.base", i32, i32, i32, i32, i32, %"class.spirv_cross::SmallVector.92", %"class.spirv_cross::SmallVector.325", i32, i8, i8, i32, %"class.spirv_cross::SmallVector.227", %"class.spirv_cross::SmallVector.92", %"struct.spirv_cross::SPIRType::ImageType", %"class.spirv_cross::TypedID.328", %"class.spirv_cross::TypedID.328", %"class.std::unordered_set.165" }
%"struct.spirv_cross::IVariant.base" = type <{ ptr, %"class.spirv_cross::TypedID.324" }>
%"class.spirv_cross::TypedID.324" = type { i32 }
%"class.spirv_cross::SmallVector.325" = type { %"class.spirv_cross::VectorView.326", i64, %"class.spirv_cross::AlignedBuffer.327" }
%"class.spirv_cross::VectorView.326" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.327" = type { [8 x i8] }
%"class.spirv_cross::SmallVector.227" = type { %"class.spirv_cross::VectorView.228", i64, %"class.spirv_cross::AlignedBuffer.229" }
%"class.spirv_cross::VectorView.228" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.229" = type { [32 x i8] }
%"class.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] }
%"struct.spirv_cross::SPIRType::ImageType" = type { %"class.spirv_cross::TypedID.328", i32, i8, i8, i8, i32, i32, i32 }
%"class.spirv_cross::TypedID.328" = type { 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 }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%class.anon.342 = type { ptr }

@_ZTIN11spirv_cross13CompilerErrorE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.53 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [64 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: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #2 align 2

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross8SPIRTypeC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(336), ptr noundef nonnull align 8 dereferenceable(336)) unnamed_addr #5 align 2

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11spirv_cross12CompilerHLSL30emit_interface_block_in_structERKNS_12SPIRVariableERSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEE(ptr noundef nonnull align 8 dereferenceable(10528) %0, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull align 8 dereferenceable(56) %2) local_unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca %"struct.spirv_cross::SPIRType", align 8
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca %"class.std::__cxx11::basic_string", align 8
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca %class.anon.342, align 8
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca i32, align 4
  %13 = alloca %"struct.spirv_cross::SPIRType", 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 i32, align 4
  %21 = alloca %"struct.spirv_cross::SPIRType", align 8
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca i32, align 4
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = tail call noundef nonnull align 8 dereferenceable(237) ptr @_ZN11spirv_cross8Compiler15get_entry_pointEv(ptr noundef nonnull align 8 dereferenceable(3176) %0)
  call void @llvm.lifetime.start.p0(i64 336, ptr nonnull %4) #7
  %27 = getelementptr inbounds i8, ptr %1, i64 12
  %28 = tail call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE1EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %27)
  %29 = tail call noundef nonnull align 8 dereferenceable(336) ptr @_ZN11spirv_cross8Compiler3getINS_8SPIRTypeEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %28)
  call void @_ZN11spirv_cross8SPIRTypeC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(336) %4, ptr noundef nonnull align 8 dereferenceable(336) %29)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #7
  %30 = getelementptr inbounds i8, ptr %0, i64 9848
  %31 = load i32, ptr %30, align 8, !tbaa !5
  %32 = icmp ugt i32 %31, 30
  %33 = getelementptr inbounds i8, ptr %26, i64 232
  %34 = load i32, ptr %33, align 8
  %35 = icmp ne i32 %34, 4
  %36 = getelementptr inbounds i8, ptr %1, i64 16
  %37 = load i32, ptr %36, align 8
  %38 = icmp ne i32 %37, 3
  %or.cond103.not = select i1 %35, i1 true, i1 %38
  %.sink117.sroa.gep = getelementptr inbounds i8, ptr %4, i64 24
  br i1 %or.cond103.not, label %63, label %39

39:                                               ; preds = %3
  %40 = getelementptr inbounds i8, ptr %1, i64 8
  %.sroa.023.0.copyload = load i32, ptr %40, align 8, !tbaa !137
  %41 = invoke noundef i32 @_ZNK11spirv_cross8Compiler14get_decorationENS_7TypedIDILNS_5TypesE0EEEN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 %.sroa.023.0.copyload, i32 noundef 32)
          to label %42 unwind label %50

42:                                               ; preds = %39
  %.sroa.019.0.copyload = load i32, ptr %40, align 8, !tbaa !137
  %43 = invoke noundef i32 @_ZNK11spirv_cross8Compiler14get_decorationENS_7TypedIDILNS_5TypesE0EEEN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 %.sroa.019.0.copyload, i32 noundef 30)
          to label %44 unwind label %52

44:                                               ; preds = %42
  %45 = icmp ne i32 %41, 0
  %46 = icmp ne i32 %43, 0
  %or.cond = and i1 %45, %46
  br i1 %or.cond, label %47, label %56

47:                                               ; preds = %44
  %48 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %48, ptr noundef nonnull @.str.65)
          to label %49 unwind label %54

49:                                               ; preds = %47
  invoke void @__cxa_throw(ptr nonnull %48, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #8
          to label %227 unwind label %52

50:                                               ; preds = %39
  %51 = landingpad { ptr, i32 }
          cleanup
  br label %226

52:                                               ; preds = %49, %42
  %53 = landingpad { ptr, i32 }
          cleanup
  br label %226

54:                                               ; preds = %47
  %55 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %48) #7
  br label %226

56:                                               ; preds = %44
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #7
  %57 = select i1 %32, ptr @.str.67, ptr @.str.66
  store ptr %57, ptr %7, align 8, !tbaa !138
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #7
  %58 = add i32 %43, %41
  store i32 %58, ptr %8, align 4, !tbaa !137
  invoke void @_ZN11spirv_cross4joinIJPKcjEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %6, ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 4 dereferenceable(4) %8)
          to label %59 unwind label %61

59:                                               ; preds = %56
  %60 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(32) %6) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #7
  br i1 %32, label %66, label %.sink.split

61:                                               ; preds = %56
  %62 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #7
  br label %226

63:                                               ; preds = %3
  %.sink117.sroa.gep118 = getelementptr inbounds i8, ptr %4, i64 16
  %64 = icmp ne i32 %37, 1
  %65 = icmp ne i32 %34, 0
  %or.cond105.not108 = or i1 %65, %64
  %brmerge = select i1 %or.cond105.not108, i1 true, i1 %32
  %not.or.cond105.not108 = xor i1 %or.cond105.not108, true
  br i1 %brmerge, label %66, label %.sink.split

.sink.split:                                      ; preds = %63, %59
  %.sink117.sroa.phi = phi ptr [ %.sink117.sroa.gep, %59 ], [ %.sink117.sroa.gep118, %63 ]
  %.sink = phi i32 [ 4, %59 ], [ 13, %63 ]
  store i32 %.sink, ptr %.sink117.sroa.phi, align 8, !tbaa !139
  br label %66

66:                                               ; preds = %.sink.split, %63, %59
  %.053 = phi i1 [ %not.or.cond105.not108, %63 ], [ false, %59 ], [ %or.cond103.not, %.sink.split ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #7
  store ptr %2, ptr %9, align 8, !tbaa !138
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #7
  %67 = getelementptr inbounds i8, ptr %1, i64 8
  %68 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %67)
  %69 = load ptr, ptr %0, align 8, !tbaa !140
  %70 = getelementptr inbounds i8, ptr %69, i64 48
  %71 = load ptr, ptr %70, align 8
  invoke void %71(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %10, ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %68, i1 noundef zeroext true)
          to label %72 unwind label %78

72:                                               ; preds = %66
  br i1 %or.cond103.not, label %73, label %212

73:                                               ; preds = %72
  %.sroa.014.0.copyload = load i32, ptr %67, align 8, !tbaa !137
  %74 = invoke noundef zeroext i1 @_ZNK11spirv_cross8Compiler14has_decorationENS_7TypedIDILNS_5TypesE0EEEN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 %.sroa.014.0.copyload, i32 noundef 30)
          to label %75 unwind label %80

75:                                               ; preds = %73
  br i1 %74, label %76, label %82

76:                                               ; preds = %75
  %.sroa.013.0.copyload = load i32, ptr %67, align 8, !tbaa !137
  %77 = invoke noundef i32 @_ZNK11spirv_cross8Compiler14get_decorationENS_7TypedIDILNS_5TypesE0EEEN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 %.sroa.013.0.copyload, i32 noundef 30)
          to label %84 unwind label %80

78:                                               ; preds = %66
  %79 = landingpad { ptr, i32 }
          cleanup
  br label %225

80:                                               ; preds = %82, %76, %73
  %81 = landingpad { ptr, i32 }
          cleanup
  br label %224

82:                                               ; preds = %75
  %83 = invoke noundef i32 @"_ZZN11spirv_cross12CompilerHLSL30emit_interface_block_in_structERKNS_12SPIRVariableERSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEEENK3$_0clEv"(ptr noundef nonnull align 8 dereferenceable(8) %9)
          to label %84 unwind label %80

84:                                               ; preds = %82, %76
  %.075 = phi i32 [ %77, %76 ], [ %83, %82 ]
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #7
  %85 = load i32, ptr %33, align 8, !tbaa !142
  %86 = load i32, ptr %36, align 8, !tbaa !149
  invoke void @_ZN11spirv_cross12CompilerHLSL11to_semanticB5cxx11EjN3spv14ExecutionModelENS1_12StorageClassE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %11, ptr noundef nonnull align 8 dereferenceable(10528) %0, i32 noundef %.075, i32 noundef %85, i32 noundef %86)
          to label %87 unwind label %97

87:                                               ; preds = %84
  %88 = getelementptr inbounds i8, ptr %4, i64 28
  %89 = load i32, ptr %88, align 4
  %90 = icmp ugt i32 %89, 1
  %or.cond4 = select i1 %.053, i1 %90, i1 false
  br i1 %or.cond4, label %91, label %160

91:                                               ; preds = %87
  %92 = getelementptr inbounds i8, ptr %4, i64 32
  %93 = call noundef zeroext i1 @_ZNK11spirv_cross10VectorViewIjE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %92) #7
  br i1 %93, label %103, label %94

94:                                               ; preds = %91
  %95 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %95, ptr noundef nonnull @.str.68)
          to label %96 unwind label %99

96:                                               ; preds = %94
  invoke void @__cxa_throw(ptr nonnull %95, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #8
          to label %227 unwind label %101

97:                                               ; preds = %84
  %98 = landingpad { ptr, i32 }
          cleanup
  br label %211

99:                                               ; preds = %94
  %100 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %95) #7
  br label %210

101:                                              ; preds = %96
  %102 = landingpad { ptr, i32 }
          cleanup
  br label %210

103:                                              ; preds = %91
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #7
  store i32 0, ptr %12, align 4, !tbaa !137
  %104 = load i32, ptr %88, align 4, !tbaa !157
  %.not115 = icmp eq i32 %104, 0
  br i1 %.not115, label %._crit_edge114, label %.lr.ph113

.lr.ph113:                                        ; preds = %103
  %105 = getelementptr inbounds i8, ptr %13, i64 28
  %106 = getelementptr inbounds i8, ptr %0, i64 9858
  br label %107

._crit_edge114:                                   ; preds = %139, %103
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #7
  br label %209

107:                                              ; preds = %.lr.ph113, %139
  %.176111 = phi i32 [ %.075, %.lr.ph113 ], [ %140, %139 ]
  call void @llvm.lifetime.start.p0(i64 336, ptr nonnull %13) #7
  invoke void @_ZN11spirv_cross8SPIRTypeC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(336) %13, ptr noundef nonnull align 8 dereferenceable(336) %4)
          to label %108 unwind label %116

108:                                              ; preds = %107
  store i32 1, ptr %105, align 4, !tbaa !157
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #7
  %109 = load i8, ptr %106, align 2, !tbaa !167, !range !168, !noundef !169
  %110 = trunc nuw i8 %109 to i1
  br i1 %110, label %111, label %120

111:                                              ; preds = %108
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #7
  %112 = load i32, ptr %33, align 8, !tbaa !142
  %113 = load i32, ptr %36, align 8, !tbaa !149
  invoke void @_ZN11spirv_cross12CompilerHLSL11to_semanticB5cxx11EjN3spv14ExecutionModelENS1_12StorageClassE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %15, ptr noundef nonnull align 8 dereferenceable(10528) %0, i32 noundef %.176111, i32 noundef %112, i32 noundef %113)
          to label %114 unwind label %118

114:                                              ; preds = %111
  %115 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #7
  br label %125

116:                                              ; preds = %107
  %117 = landingpad { ptr, i32 }
          cleanup
  br label %159

118:                                              ; preds = %111
  %119 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #7
  br label %158

120:                                              ; preds = %108
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %16) #7
  invoke void @_ZN11spirv_cross4joinIJRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_KcRjEEES6_DpOT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %16, ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 1 dereferenceable(2) @.str.62, ptr noundef nonnull align 4 dereferenceable(4) %12)
          to label %121 unwind label %123

121:                                              ; preds = %120
  %122 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull align 8 dereferenceable(32) %16) #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
  br label %125

123:                                              ; preds = %120
  %124 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #7
  br label %158

125:                                              ; preds = %121, %114
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #7
  %.sroa.012.0.copyload = load i32, ptr %67, align 8, !tbaa !137
  %126 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZNK11spirv_cross8Compiler21get_decoration_bitsetENS_7TypedIDILNS_5TypesE0EEE(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 %.sroa.012.0.copyload)
          to label %127 unwind label %145

127:                                              ; preds = %125
  %128 = load ptr, ptr %0, align 8, !tbaa !140
  %129 = getelementptr inbounds i8, ptr %128, i64 424
  %130 = load ptr, ptr %129, align 8
  invoke void %130(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %17, ptr noundef nonnull align 8 dereferenceable(10528) %0, ptr noundef nonnull align 8 dereferenceable(64) %126)
          to label %131 unwind label %145

131:                                              ; preds = %127
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %18) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #7
  invoke void @_ZN11spirv_cross4joinIJRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_KcRjEEES6_DpOT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %19, ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull align 1 dereferenceable(2) @.str.62, ptr noundef nonnull align 4 dereferenceable(4) %12)
          to label %132 unwind label %147

132:                                              ; preds = %131
  %133 = load ptr, ptr %0, align 8, !tbaa !140
  %134 = getelementptr inbounds i8, ptr %133, i64 216
  %135 = load ptr, ptr %134, align 8
  invoke void %135(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %18, ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(336) %13, ptr noundef nonnull align 8 dereferenceable(32) %19, i32 noundef 0)
          to label %136 unwind label %149

136:                                              ; preds = %132
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_RA4_KcRS7_RA2_S8_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull align 1 dereferenceable(4) @.str.64, ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull align 1 dereferenceable(2) @.str.53)
          to label %137 unwind label %151

137:                                              ; preds = %136
  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 @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #7
  store i32 %.176111, ptr %20, align 4, !tbaa !137
  %138 = invoke { ptr, i8 } @_ZNSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEE6insertEOj(ptr noundef nonnull align 8 dereferenceable(56) %2, ptr noundef nonnull align 4 dereferenceable(4) %20)
          to label %139 unwind label %156

139:                                              ; preds = %137
  %140 = add i32 %.176111, 1
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #7
  call void @_ZN11spirv_cross8SPIRTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(336) %13) #7
  call void @llvm.lifetime.end.p0(i64 336, ptr nonnull %13) #7
  %141 = load i32, ptr %12, align 4, !tbaa !137
  %142 = add i32 %141, 1
  store i32 %142, ptr %12, align 4, !tbaa !137
  %143 = load i32, ptr %88, align 4, !tbaa !157
  %144 = icmp ult i32 %142, %143
  br i1 %144, label %107, label %._crit_edge114, !llvm.loop !170

145:                                              ; preds = %127, %125
  %146 = landingpad { ptr, i32 }
          cleanup
  br label %155

147:                                              ; preds = %131
  %148 = landingpad { ptr, i32 }
          cleanup
  br label %154

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

151:                                              ; preds = %136
  %152 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #7
  br label %153

153:                                              ; preds = %151, %149
  %.pn85 = phi { ptr, i32 } [ %152, %151 ], [ %150, %149 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #7
  br label %154

154:                                              ; preds = %153, %147
  %.pn85.pn = phi { ptr, i32 } [ %.pn85, %153 ], [ %148, %147 ]
  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 @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #7
  br label %155

155:                                              ; preds = %154, %145
  %.pn85.pn.pn = phi { ptr, i32 } [ %.pn85.pn, %154 ], [ %146, %145 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #7
  br label %158

156:                                              ; preds = %137
  %157 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #7
  br label %158

158:                                              ; preds = %156, %155, %123, %118
  %.pn89 = phi { ptr, i32 } [ %157, %156 ], [ %.pn85.pn.pn, %155 ], [ %119, %118 ], [ %124, %123 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #7
  call void @_ZN11spirv_cross8SPIRTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(336) %13) #7
  br label %159

159:                                              ; preds = %158, %116
  %.pn89.pn = phi { ptr, i32 } [ %.pn89, %158 ], [ %117, %116 ]
  call void @llvm.lifetime.end.p0(i64 336, ptr nonnull %13) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #7
  br label %210

160:                                              ; preds = %87
  call void @llvm.lifetime.start.p0(i64 336, ptr nonnull %21) #7
  invoke void @_ZN11spirv_cross8SPIRTypeC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(336) %21, ptr noundef nonnull align 8 dereferenceable(336) %4)
          to label %161 unwind label %174

161:                                              ; preds = %160
  %162 = load i32, ptr %33, align 8, !tbaa !142
  %163 = icmp eq i32 %162, 5365
  br i1 %163, label %167, label %164

164:                                              ; preds = %161
  %.sroa.09.0.copyload = load i32, ptr %67, align 8, !tbaa !137
  %165 = invoke noundef zeroext i1 @_ZNK11spirv_cross8Compiler14has_decorationENS_7TypedIDILNS_5TypesE0EEEN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 %.sroa.09.0.copyload, i32 noundef 5285)
          to label %166 unwind label %176

166:                                              ; preds = %164
  br i1 %165, label %167, label %178

167:                                              ; preds = %166, %161
  %168 = getelementptr inbounds i8, ptr %21, i64 32
  %169 = call noundef ptr @_ZN11spirv_cross10VectorViewIjE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %168) #7
  %170 = call noundef ptr @_ZN11spirv_cross11SmallVectorIjLm8EE5eraseEPj(ptr noundef nonnull align 8 dereferenceable(56) %168, ptr noundef %169) #7
  %171 = getelementptr inbounds i8, ptr %21, i64 88
  %172 = call noundef ptr @_ZN11spirv_cross10VectorViewIbE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %171) #7
  %173 = call noundef ptr @_ZN11spirv_cross11SmallVectorIbLm8EE5eraseEPb(ptr noundef nonnull align 8 dereferenceable(32) %171, ptr noundef %172) #7
  br label %178

174:                                              ; preds = %160
  %175 = landingpad { ptr, i32 }
          cleanup
  br label %208

176:                                              ; preds = %164
  %177 = landingpad { ptr, i32 }
          cleanup
  br label %207

178:                                              ; preds = %167, %166
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %22) #7
  %.sroa.08.0.copyload = load i32, ptr %67, align 8, !tbaa !137
  %179 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZNK11spirv_cross8Compiler21get_decoration_bitsetENS_7TypedIDILNS_5TypesE0EEE(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 %.sroa.08.0.copyload)
          to label %180 unwind label %191

180:                                              ; preds = %178
  %181 = load ptr, ptr %0, align 8, !tbaa !140
  %182 = getelementptr inbounds i8, ptr %181, i64 424
  %183 = load ptr, ptr %182, align 8
  invoke void %183(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %22, ptr noundef nonnull align 8 dereferenceable(10528) %0, ptr noundef nonnull align 8 dereferenceable(64) %179)
          to label %184 unwind label %191

184:                                              ; preds = %180
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %23) #7
  %185 = load ptr, ptr %0, align 8, !tbaa !140
  %186 = getelementptr inbounds i8, ptr %185, i64 216
  %187 = load ptr, ptr %186, align 8
  invoke void %187(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %23, ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(336) %21, ptr noundef nonnull align 8 dereferenceable(32) %10, i32 noundef 0)
          to label %188 unwind label %193

188:                                              ; preds = %184
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_RA4_KcRS7_RA2_S8_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull align 1 dereferenceable(4) @.str.64, ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 1 dereferenceable(2) @.str.53)
          to label %189 unwind label %195

189:                                              ; preds = %188
  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 @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #7
  %190 = invoke noundef i32 @_ZNK11spirv_cross12CompilerHLSL26type_to_consumed_locationsERKNS_8SPIRTypeE(ptr noundef nonnull align 8 dereferenceable(10528) %0, ptr noundef nonnull align 8 dereferenceable(336) %21)
          to label %.preheader unwind label %199

.preheader:                                       ; preds = %189
  %.not = icmp eq i32 %190, 0
  br i1 %.not, label %._crit_edge, label %.lr.ph

._crit_edge:                                      ; preds = %203, %.preheader
  call void @_ZN11spirv_cross8SPIRTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(336) %21) #7
  call void @llvm.lifetime.end.p0(i64 336, ptr nonnull %21) #7
  br label %209

191:                                              ; preds = %180, %178
  %192 = landingpad { ptr, i32 }
          cleanup
  br label %198

193:                                              ; preds = %184
  %194 = landingpad { ptr, i32 }
          cleanup
  br label %197

195:                                              ; preds = %188
  %196 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #7
  br label %197

197:                                              ; preds = %195, %193
  %.pn78 = phi { ptr, i32 } [ %196, %195 ], [ %194, %193 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #7
  br label %198

198:                                              ; preds = %197, %191
  %.pn78.pn = phi { ptr, i32 } [ %.pn78, %197 ], [ %192, %191 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #7
  br label %207

199:                                              ; preds = %189
  %200 = landingpad { ptr, i32 }
          cleanup
  br label %207

.lr.ph:                                           ; preds = %.preheader, %203
  %.054110 = phi i32 [ %204, %203 ], [ 0, %.preheader ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #7
  %201 = add i32 %.054110, %.075
  store i32 %201, ptr %24, align 4, !tbaa !137
  %202 = invoke { ptr, i8 } @_ZNSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEE6insertEOj(ptr noundef nonnull align 8 dereferenceable(56) %2, ptr noundef nonnull align 4 dereferenceable(4) %24)
          to label %203 unwind label %205

203:                                              ; preds = %.lr.ph
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #7
  %204 = add nuw i32 %.054110, 1
  %exitcond.not = icmp eq i32 %204, %190
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !172

205:                                              ; preds = %.lr.ph
  %206 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #7
  br label %207

207:                                              ; preds = %199, %205, %198, %176
  %.pn81.pn = phi { ptr, i32 } [ %.pn78.pn, %198 ], [ %177, %176 ], [ %206, %205 ], [ %200, %199 ]
  call void @_ZN11spirv_cross8SPIRTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(336) %21) #7
  br label %208

208:                                              ; preds = %207, %174
  %.pn81.pn.pn = phi { ptr, i32 } [ %.pn81.pn, %207 ], [ %175, %174 ]
  call void @llvm.lifetime.end.p0(i64 336, ptr nonnull %21) #7
  br label %210

209:                                              ; preds = %._crit_edge, %._crit_edge114
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #7
  br label %223

210:                                              ; preds = %208, %159, %101, %99
  %.pn89.pn.pn = phi { ptr, i32 } [ %.pn89.pn, %159 ], [ %102, %101 ], [ %100, %99 ], [ %.pn81.pn.pn, %208 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #7
  br label %211

211:                                              ; preds = %210, %97
  %.pn89.pn.pn.pn = phi { ptr, i32 } [ %.pn89.pn.pn, %210 ], [ %98, %97 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #7
  br label %224

212:                                              ; preds = %72
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %25) #7
  %213 = load ptr, ptr %0, align 8, !tbaa !140
  %214 = getelementptr inbounds i8, ptr %213, i64 216
  %215 = load ptr, ptr %214, align 8
  invoke void %215(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %25, ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(336) %4, ptr noundef nonnull align 8 dereferenceable(32) %10, i32 noundef 0)
          to label %216 unwind label %218

216:                                              ; preds = %212
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA4_KcRS7_RA2_S8_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull align 1 dereferenceable(4) @.str.64, ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 1 dereferenceable(2) @.str.53)
          to label %217 unwind label %220

217:                                              ; preds = %216
  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
  br label %223

218:                                              ; preds = %212
  %219 = landingpad { ptr, i32 }
          cleanup
  br label %222

220:                                              ; preds = %216
  %221 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #7
  br label %222

222:                                              ; preds = %220, %218
  %.pn = phi { ptr, i32 } [ %221, %220 ], [ %219, %218 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #7
  br label %224

223:                                              ; preds = %217, %209
  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 8, ptr nonnull %9) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #7
  call void @_ZN11spirv_cross8SPIRTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(336) %4) #7
  call void @llvm.lifetime.end.p0(i64 336, ptr nonnull %4) #7
  ret void

224:                                              ; preds = %80, %211, %222
  %.pn89.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn, %222 ], [ %.pn89.pn.pn.pn, %211 ], [ %81, %80 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #7
  br label %225

225:                                              ; preds = %224, %78
  %.pn89.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn89.pn.pn.pn.pn.pn, %224 ], [ %79, %78 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #7
  br label %226

226:                                              ; preds = %50, %61, %54, %52, %225
  %.pn97.pn.pn = phi { ptr, i32 } [ %.pn89.pn.pn.pn.pn.pn.pn, %225 ], [ %51, %50 ], [ %53, %52 ], [ %55, %54 ], [ %62, %61 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #7
  call void @_ZN11spirv_cross8SPIRTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(336) %4) #7
  call void @llvm.lifetime.end.p0(i64 336, ptr nonnull %4) #7
  resume { ptr, i32 } %.pn97.pn.pn

227:                                              ; preds = %96, %49
  unreachable
}

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef i32 @"_ZZN11spirv_cross12CompilerHLSL30emit_interface_block_in_structERKNS_12SPIRVariableERSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEEENK3$_0clEv"(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5 align 2

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA4_KcRS7_RA2_S8_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(4), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(2)) local_unnamed_addr #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, !51, i64 9848}
!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 = !{!51, !51, i64 0}
!138 = !{!16, !16, i64 0}
!139 = !{!17, !17, i64 0}
!140 = !{!141, !141, i64 0}
!141 = !{!"vtable pointer", !18, i64 0}
!142 = !{!143, !148, i64 232}
!143 = !{!"_ZTSN11spirv_cross14SPIREntryPointE", !50, i64 0, !56, i64 8, !56, i64 40, !144, i64 72, !58, i64 128, !147, i64 192, !51, i64 220, !51, i64 224, !51, i64 228, !148, i64 232, !53, i64 236}
!144 = !{!"_ZTSN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE2EEELm8EEE", !145, i64 0, !25, i64 16, !146, i64 24}
!145 = !{!"_ZTSN11spirv_cross10VectorViewINS_7TypedIDILNS_5TypesE2EEEEE", !16, i64 0, !25, i64 8}
!146 = !{!"_ZTSN11spirv_cross13AlignedBufferINS_7TypedIDILNS_5TypesE2EEELm8EEE", !17, i64 0}
!147 = !{!"_ZTSN11spirv_cross14SPIREntryPoint13WorkgroupSizeE", !51, i64 0, !51, i64 4, !51, i64 8, !51, i64 12, !51, i64 16, !51, i64 20, !51, i64 24}
!148 = !{!"_ZTSN3spv14ExecutionModelE", !17, i64 0}
!149 = !{!150, !154, i64 16}
!150 = !{!"_ZTSN11spirv_cross12SPIRVariableE", !151, i64 0, !153, i64 12, !154, i64 16, !51, i64 20, !152, i64 24, !155, i64 28, !61, i64 32, !53, i64 88, !53, i64 89, !152, i64 92, !32, i64 96, !53, i64 152, !53, i64 153, !53, i64 154, !53, i64 155, !51, i64 156, !156, i64 160, !53, i64 164, !53, i64 165, !53, i64 166, !16, i64 168}
!151 = !{!"_ZTSN11spirv_cross8IVariantE", !152, i64 8}
!152 = !{!"_ZTSN11spirv_cross7TypedIDILNS_5TypesE0EEE", !51, i64 0}
!153 = !{!"_ZTSN11spirv_cross7TypedIDILNS_5TypesE1EEE", !51, i64 0}
!154 = !{!"_ZTSN3spv12StorageClassE", !17, i64 0}
!155 = !{!"_ZTSN11spirv_cross7TypedIDILNS_5TypesE2EEE", !51, i64 0}
!156 = !{!"_ZTSN11spirv_cross7TypedIDILNS_5TypesE6EEE", !51, i64 0}
!157 = !{!158, !51, i64 28}
!158 = !{!"_ZTSN11spirv_cross8SPIRTypeE", !151, i64 0, !159, i64 12, !94, i64 16, !51, i64 20, !51, i64 24, !51, i64 28, !61, i64 32, !160, i64 88, !51, i64 120, !53, i64 124, !53, i64 125, !154, i64 128, !100, i64 136, !61, i64 192, !163, i64 248, !153, i64 272, !153, i64 276, !89, i64 280}
!159 = !{!"_ZTSN3spv2OpE", !17, i64 0}
!160 = !{!"_ZTSN11spirv_cross11SmallVectorIbLm8EEE", !161, i64 0, !25, i64 16, !162, i64 24}
!161 = !{!"_ZTSN11spirv_cross10VectorViewIbEE", !16, i64 0, !25, i64 8}
!162 = !{!"_ZTSN11spirv_cross13AlignedBufferIbLm8EEE", !17, i64 0}
!163 = !{!"_ZTSN11spirv_cross8SPIRType9ImageTypeE", !153, i64 0, !164, i64 4, !53, i64 8, !53, i64 9, !53, i64 10, !51, i64 12, !165, i64 16, !166, i64 20}
!164 = !{!"_ZTSN3spv3DimE", !17, i64 0}
!165 = !{!"_ZTSN3spv11ImageFormatE", !17, i64 0}
!166 = !{!"_ZTSN3spv15AccessQualifierE", !17, i64 0}
!167 = !{!6, !53, i64 9858}
!168 = !{i8 0, i8 2}
!169 = !{}
!170 = distinct !{!170, !171}
!171 = !{!"llvm.loop.mustprogress"}
!172 = distinct !{!172, !171}


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