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

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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.spirv_cross::TypedID.324" = type { i32 }
%"class.spirv_cross::Bitset" = type { i64, %"class.std::unordered_set" }
%"class.std::unordered_set" = type { %"class.std::_Hashtable.74" }
%"class.std::_Hashtable.74" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%class.anon.420 = type { ptr }
%"struct.std::__detail::_Node_iterator.421" = type { %"struct.std::__detail::_Node_iterator_base.422" }
%"struct.std::__detail::_Node_iterator_base.422" = type { ptr }
%"class.spirv_cross::TypedID.330" = type { i32 }
%"struct.std::pair.423" = type <{ %"struct.std::__detail::_Node_iterator.421", i8, [7 x i8] }>
%"class.spirv_cross::TypedID.328" = type { i32 }
%"class.std::allocator" = type { i8 }
%"struct.spirv_cross::SPIRVariable" = type { %"struct.spirv_cross::IVariant.base", %"class.spirv_cross::TypedID.328", i32, i32, %"class.spirv_cross::TypedID.324", %"class.spirv_cross::TypedID.330", %"class.spirv_cross::SmallVector.92", i8, i8, %"class.spirv_cross::TypedID.324", %"class.spirv_cross::SmallVector.10", i8, i8, i8, i8, i32, %"class.spirv_cross::TypedID.331", i8, i8, i8, ptr }
%"struct.spirv_cross::IVariant.base" = type <{ ptr, %"class.spirv_cross::TypedID.324" }>
%"class.spirv_cross::SmallVector.92" = type { %"class.spirv_cross::VectorView.93", i64, %"class.spirv_cross::AlignedBuffer.94" }
%"class.spirv_cross::VectorView.93" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.94" = type { [32 x i8] }
%"class.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 }
%"struct.spirv_cross::IVariant" = type <{ ptr, %"class.spirv_cross::TypedID.324", [4 x i8] }>
%"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.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_set.165" = type { %"class.std::_Hashtable.166" }
%"class.std::_Hashtable.166" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.185" = type { %"class.std::_Hashtable.186" }
%"class.std::_Hashtable.186" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.145" = type { %"class.std::_Hashtable.146" }
%"class.std::_Hashtable.146" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.spirv_cross::CompilerGLSL::BackendVariations" = type <{ %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", i8, i8, i8, i8, [4 x i8], ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, [4 x i8] }>
%"class.std::unordered_map.199" = type { %"class.std::_Hashtable.200" }
%"class.std::_Hashtable.200" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.spirv_cross::CompilerGLSL::ShaderSubgroupSupportHelper" = type { i32 }
%"class.spirv_cross::SmallVector.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.spirv_cross::SmallVector.227" = type { %"class.spirv_cross::VectorView.228", i64, %"class.spirv_cross::AlignedBuffer.229" }
%"class.spirv_cross::VectorView.228" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.229" = type { [32 x i8] }
%"class.std::vector.230" = type { %"struct.std::_Vector_base.231" }
%"struct.std::_Vector_base.231" = type { %"struct.std::_Vector_base<spirv_cross::PlsRemap, std::allocator<spirv_cross::PlsRemap>>::_Vector_impl" }
%"struct.std::_Vector_base<spirv_cross::PlsRemap, std::allocator<spirv_cross::PlsRemap>>::_Vector_impl" = type { %"struct.std::_Vector_base<spirv_cross::PlsRemap, std::allocator<spirv_cross::PlsRemap>>::_Vector_impl_data" }
%"struct.std::_Vector_base<spirv_cross::PlsRemap, std::allocator<spirv_cross::PlsRemap>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.235" = type { %"struct.std::_Vector_base.236" }
%"struct.std::_Vector_base.236" = type { %"struct.std::_Vector_base<std::pair<unsigned int, unsigned int>, std::allocator<std::pair<unsigned int, unsigned int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<unsigned int, unsigned int>, std::allocator<std::pair<unsigned int, unsigned int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<unsigned int, unsigned int>, std::allocator<std::pair<unsigned int, unsigned int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<unsigned int, unsigned int>, std::allocator<std::pair<unsigned int, unsigned int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.240" = type { %"struct.std::_Vector_base.241" }
%"struct.std::_Vector_base.241" = type { %"struct.std::_Vector_base<std::pair<unsigned int, bool>, std::allocator<std::pair<unsigned int, bool>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<unsigned int, bool>, std::allocator<std::pair<unsigned int, bool>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<unsigned int, bool>, std::allocator<std::pair<unsigned int, bool>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<unsigned int, bool>, std::allocator<std::pair<unsigned int, bool>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::unordered_map.213" = type { %"class.std::_Hashtable.214" }
%"class.std::_Hashtable.214" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_set.245" = type { %"class.std::_Hashtable.246" }
%"class.std::_Hashtable.246" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.263" = type { %"class.std::_Hashtable.264" }
%"class.std::_Hashtable.264" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.spirv_cross::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" }
%"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] }
%"struct.spirv_cross::SPIRType::ImageType" = type { %"class.spirv_cross::TypedID.328", i32, i8, i8, i8, i32, i32, i32 }
%"struct.spirv_cross::Meta" = type { %"struct.spirv_cross::Meta::Decoration", %"class.spirv_cross::SmallVector.332", %"class.std::unordered_map.213", i8, i32 }
%"struct.spirv_cross::Meta::Decoration" = type { %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.spirv_cross::Bitset", i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i8, %"struct.spirv_cross::Meta::Decoration::Extended" }
%"struct.spirv_cross::Meta::Decoration::Extended" = type { %"class.spirv_cross::Bitset", [18 x i32] }
%"class.spirv_cross::SmallVector.332" = type <{ %"class.spirv_cross::VectorView.333", i64, [8 x i8] }>
%"class.spirv_cross::VectorView.333" = type { ptr, i64 }
%"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" }
%"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 }

@_ZTIN11spirv_cross13CompilerErrorE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [18 x i8], align 1
@.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.63 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.93 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.154 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.381 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.382 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.383 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.384 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.385 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.386 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.387 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.388 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.389 = external hidden unnamed_addr constant [84 x i8], align 1
@.str.390 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.391 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.392 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.393 = external hidden unnamed_addr constant [3 x i8], align 1

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

; Function Attrs: 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 uwtable
declare dso_local noundef i64 @_ZNKSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEE5countERKj(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 4 dereferenceable(4)) #1 align 2

; 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 uwtable
declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #1 align 2

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

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

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

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

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

declare void @_ZN11spirv_cross12CompilerGLSL17add_resource_nameEj(ptr noundef nonnull align 8 dereferenceable(9848), i32 noundef) #3

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(488) ptr @_ZNSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE0EEENS0_4MetaESt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S4_EEEixERSA_(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_cross6BitsetD2Ev(ptr noundef nonnull align 8 dereferenceable(64)) unnamed_addr #6 align 2

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

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

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

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

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

; 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: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK11spirv_cross10VectorViewIjE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16)) #2 align 2

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

declare void @_ZN11spirv_cross8ParsedIR20sanitize_underscoresERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32)) #3

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

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

declare void @_ZN11spirv_cross12CompilerGLSL11emit_structERNS_8SPIRTypeE(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 8 dereferenceable(336)) #3

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11spirv_cross12CompilerHLSL17emit_buffer_blockERKNS_12SPIRVariableE(ptr noundef nonnull align 8 dereferenceable(10528) %0, ptr noundef nonnull align 8 dereferenceable(176) %1) unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca i8, align 1
  %7 = alloca %"class.spirv_cross::TypedID.324", align 4
  %8 = alloca i32, align 4
  %9 = alloca %"class.spirv_cross::Bitset", align 8
  %10 = alloca i8, align 1
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca %"class.spirv_cross::TypedID.324", align 4
  %14 = alloca i8, align 1
  %15 = alloca i8, align 1
  %16 = alloca i32, align 4
  %17 = alloca %class.anon.420, align 8
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca ptr, align 8
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca ptr, align 8
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca i32, align 4
  %27 = alloca %"class.std::__cxx11::basic_string", align 8
  %28 = alloca %"struct.std::__detail::_Node_iterator.421", align 8
  %29 = alloca %"struct.std::__detail::_Node_iterator.421", align 8
  %30 = alloca %"struct.std::__detail::_Node_iterator.421", align 8
  %31 = alloca %"struct.std::__detail::_Node_iterator.421", align 8
  %32 = alloca %"class.std::__cxx11::basic_string", align 8
  %33 = alloca %"class.spirv_cross::TypedID.330", align 4
  %34 = alloca %"class.std::__cxx11::basic_string", align 8
  %35 = alloca i32, align 4
  %36 = alloca %"class.std::__cxx11::basic_string", align 8
  %37 = alloca %"class.std::__cxx11::basic_string", align 8
  %38 = alloca i1, align 1
  %39 = alloca %"struct.std::pair.423", align 8
  %40 = alloca i32, align 4
  %41 = alloca %"class.std::__cxx11::basic_string", align 8
  %42 = alloca i32, align 4
  %43 = alloca ptr, align 8
  %44 = alloca ptr, align 8
  %45 = alloca ptr, align 8
  %46 = alloca ptr, align 8
  %47 = alloca %"class.std::__cxx11::basic_string", align 8
  %48 = alloca %"class.spirv_cross::TypedID.328", align 4
  %49 = alloca %"class.std::__cxx11::basic_string", align 8
  %50 = alloca %"class.std::__cxx11::basic_string", align 8
  %51 = alloca %"class.std::__cxx11::basic_string", align 8
  %52 = alloca %"class.spirv_cross::TypedID.328", align 4
  %53 = alloca %"class.std::__cxx11::basic_string", align 8
  %54 = alloca %"class.std::allocator", align 1
  %55 = alloca %"class.spirv_cross::TypedID.328", align 4
  %56 = alloca i32, align 4
  %57 = alloca %"class.std::__cxx11::basic_string", align 8
  %58 = alloca %"class.std::__cxx11::basic_string", align 8
  %59 = alloca %"class.std::__cxx11::basic_string", align 8
  %60 = alloca i1, align 1
  %61 = alloca %"class.std::__cxx11::basic_string", align 8
  %62 = alloca %"class.std::__cxx11::basic_string", align 8
  %63 = alloca %"class.std::__cxx11::basic_string", align 8
  %64 = alloca %"class.std::__cxx11::basic_string", align 8
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  %65 = load ptr, ptr %3, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #8
  %66 = load ptr, ptr %4, align 8, !tbaa !5
  %67 = getelementptr inbounds %"struct.spirv_cross::SPIRVariable", ptr %66, i32 0, i32 1
  %68 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE1EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %67)
  %69 = call noundef nonnull align 8 dereferenceable(336) ptr @_ZN11spirv_cross8Compiler3getINS_8SPIRTypeEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %65, i32 noundef %68)
  store ptr %69, ptr %5, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %6) #8
  %70 = load ptr, ptr %4, align 8, !tbaa !5
  %71 = getelementptr inbounds %"struct.spirv_cross::SPIRVariable", ptr %70, i32 0, i32 2
  %72 = load i32, ptr %71, align 8, !tbaa !9
  %73 = icmp eq i32 %72, 12
  br i1 %73, label %80, label %74

74:                                               ; preds = %2
  %75 = load ptr, ptr %5, align 8, !tbaa !5
  %76 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %75, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %7, ptr align 8 %76, i64 4, i1 false), !tbaa.struct !26
  %77 = getelementptr inbounds %"class.spirv_cross::TypedID.324", ptr %7, i32 0, i32 0
  %78 = load i32, ptr %77, align 4
  %79 = call noundef zeroext i1 @_ZNK11spirv_cross8Compiler14has_decorationENS_7TypedIDILNS_5TypesE0EEEN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %65, i32 %78, i32 noundef 3)
  br label %80

80:                                               ; preds = %74, %2
  %81 = phi i1 [ true, %2 ], [ %79, %74 ]
  %82 = zext i1 %81 to i8
  store i8 %82, ptr %6, align 1, !tbaa !28
  %83 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %65, i32 0, i32 25
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #8
  %84 = load ptr, ptr %4, align 8, !tbaa !5
  %85 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %84, i32 0, i32 1
  %86 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %85)
  store i32 %86, ptr %8, align 4, !tbaa !27
  %87 = call noundef i64 @_ZNKSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEE5countERKj(ptr noundef nonnull align 8 dereferenceable(56) %83, ptr noundef nonnull align 4 dereferenceable(4) %8)
  %88 = icmp ne i64 %87, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #8
  br i1 %88, label %89, label %91

89:                                               ; preds = %80
  %90 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11spirv_cross12CompilerGLSL27emit_buffer_block_flattenedERKNS_12SPIRVariableE(ptr noundef nonnull align 8 dereferenceable(9848) %65, ptr noundef nonnull align 8 dereferenceable(176) %90)
  br label %683

91:                                               ; preds = %80
  %92 = load i8, ptr %6, align 1, !tbaa !28, !range !29, !noundef !30
  %93 = trunc i8 %92 to i1
  br i1 %93, label %94, label %244

94:                                               ; preds = %91
  call void @llvm.lifetime.start.p0(i64 64, ptr %9) #8
  %95 = getelementptr inbounds %"class.spirv_cross::Compiler", ptr %65, i32 0, i32 1
  %96 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZNK11spirv_cross8ParsedIR22get_buffer_block_flagsERKNS_12SPIRVariableE(ptr dead_on_unwind writable sret(%"class.spirv_cross::Bitset") align 8 %9, ptr noundef nonnull align 8 dereferenceable(1920) %95, ptr noundef nonnull align 8 dereferenceable(176) %96)
  call void @llvm.lifetime.start.p0(i64 1, ptr %10) #8
  %97 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %9, i32 noundef 24)
          to label %98 unwind label %153

98:                                               ; preds = %94
  br i1 %97, label %99, label %107

99:                                               ; preds = %98
  %100 = load ptr, ptr %4, align 8, !tbaa !5
  %101 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %100, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %13, ptr align 8 %101, i64 4, i1 false), !tbaa.struct !26
  %102 = getelementptr inbounds %"class.spirv_cross::TypedID.324", ptr %13, i32 0, i32 0
  %103 = load i32, ptr %102, align 4
  %104 = invoke noundef zeroext i1 @_ZNK11spirv_cross12CompilerHLSL35is_hlsl_force_storage_buffer_as_uavENS_7TypedIDILNS_5TypesE0EEE(ptr noundef nonnull align 8 dereferenceable(10528) %65, i32 %103)
          to label %105 unwind label %153

105:                                              ; preds = %99
  %106 = xor i1 %104, true
  br label %107

107:                                              ; preds = %105, %98
  %108 = phi i1 [ false, %98 ], [ %106, %105 ]
  %109 = zext i1 %108 to i8
  store i8 %109, ptr %10, align 1, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #8
  %110 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %9, i32 noundef 23)
          to label %111 unwind label %157

111:                                              ; preds = %107
  br i1 %110, label %112, label %116

112:                                              ; preds = %111
  %113 = load i8, ptr %10, align 1, !tbaa !28, !range !29, !noundef !30
  %114 = trunc i8 %113 to i1
  %115 = xor i1 %114, true
  br label %116

116:                                              ; preds = %112, %111
  %117 = phi i1 [ false, %111 ], [ %115, %112 ]
  %118 = zext i1 %117 to i8
  store i8 %118, ptr %14, align 1, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 1, ptr %15) #8
  %119 = getelementptr inbounds %"class.spirv_cross::Compiler", ptr %65, i32 0, i32 32
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #8
  %120 = load ptr, ptr %4, align 8, !tbaa !5
  %121 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %120, i32 0, i32 1
  %122 = invoke noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %121)
          to label %123 unwind label %161

123:                                              ; preds = %116
  store i32 %122, ptr %16, align 4, !tbaa !27
  %124 = invoke noundef i64 @_ZNKSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEE5countERKj(ptr noundef nonnull align 8 dereferenceable(56) %119, ptr noundef nonnull align 4 dereferenceable(4) %16)
          to label %125 unwind label %161

125:                                              ; preds = %123
  %126 = icmp ugt i64 %124, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #8
  %127 = zext i1 %126 to i8
  store i8 %127, ptr %15, align 1, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #8
  %128 = getelementptr inbounds %class.anon.420, ptr %17, i32 0, i32 0
  store ptr %65, ptr %128, align 8, !tbaa !31
  call void @llvm.lifetime.start.p0(i64 32, ptr %18) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #8
  %129 = load ptr, ptr %4, align 8, !tbaa !5
  %130 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %129, i32 0, i32 1
  %131 = invoke noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %130)
          to label %132 unwind label %165

132:                                              ; preds = %125
  %133 = load ptr, ptr %65, align 8, !tbaa !33
  %134 = getelementptr inbounds ptr, ptr %133, i64 37
  %135 = load ptr, ptr %134, align 8
  %136 = invoke noundef zeroext i1 %135(ptr noundef nonnull align 8 dereferenceable(10528) %65, i32 noundef %131)
          to label %137 unwind label %165

137:                                              ; preds = %132
  br i1 %136, label %138, label %178

138:                                              ; preds = %137
  call void @llvm.lifetime.start.p0(i64 32, ptr %19) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #8
  %139 = load i8, ptr %10, align 1, !tbaa !28, !range !29, !noundef !30
  %140 = trunc i8 %139 to i1
  br i1 %140, label %141, label %142

141:                                              ; preds = %138
  br label %147

142:                                              ; preds = %138
  %143 = load i8, ptr %15, align 1, !tbaa !28, !range !29, !noundef !30
  %144 = trunc i8 %143 to i1
  %145 = zext i1 %144 to i64
  %146 = select i1 %144, ptr @.str.15, ptr @.str.10
  br label %147

147:                                              ; preds = %142, %141
  %148 = phi ptr [ @.str.9, %141 ], [ %146, %142 ]
  store ptr %148, ptr %20, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %21) #8
  %149 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @"_ZZN11spirv_cross12CompilerHLSL17emit_buffer_blockERKNS_12SPIRVariableEENK3$_0clB5cxx11ERKNS_8SPIRTypeE"(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %21, ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(336) %149)
          to label %150 unwind label %169

150:                                              ; preds = %147
  invoke void @_ZN11spirv_cross4joinIJPKcRA18_S1_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_S1_EEESA_DpOT_(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 1 dereferenceable(18) @.str.381, ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull align 1 dereferenceable(2) @.str.7)
          to label %151 unwind label %173

151:                                              ; preds = %150
  %152 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %18, 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 @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #8
  call void @llvm.lifetime.end.p0(i64 32, 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 %191

153:                                              ; preds = %99, %94
  %154 = landingpad { ptr, i32 }
          cleanup
  %155 = extractvalue { ptr, i32 } %154, 0
  store ptr %155, ptr %11, align 8
  %156 = extractvalue { ptr, i32 } %154, 1
  store i32 %156, ptr %12, align 4
  br label %243

157:                                              ; preds = %107
  %158 = landingpad { ptr, i32 }
          cleanup
  %159 = extractvalue { ptr, i32 } %158, 0
  store ptr %159, ptr %11, align 8
  %160 = extractvalue { ptr, i32 } %158, 1
  store i32 %160, ptr %12, align 4
  br label %242

161:                                              ; preds = %123, %116
  %162 = landingpad { ptr, i32 }
          cleanup
  %163 = extractvalue { ptr, i32 } %162, 0
  store ptr %163, ptr %11, align 8
  %164 = extractvalue { ptr, i32 } %162, 1
  store i32 %164, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #8
  br label %241

165:                                              ; preds = %195, %191, %187, %132, %125
  %166 = landingpad { ptr, i32 }
          cleanup
  %167 = extractvalue { ptr, i32 } %166, 0
  store ptr %167, ptr %11, align 8
  %168 = extractvalue { ptr, i32 } %166, 1
  store i32 %168, ptr %12, align 4
  br label %240

169:                                              ; preds = %147
  %170 = landingpad { ptr, i32 }
          cleanup
  %171 = extractvalue { ptr, i32 } %170, 0
  store ptr %171, ptr %11, align 8
  %172 = extractvalue { ptr, i32 } %170, 1
  store i32 %172, ptr %12, align 4
  br label %177

173:                                              ; preds = %150
  %174 = landingpad { ptr, i32 }
          cleanup
  %175 = extractvalue { ptr, i32 } %174, 0
  store ptr %175, ptr %11, align 8
  %176 = extractvalue { ptr, i32 } %174, 1
  store i32 %176, ptr %12, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #8
  br label %177

177:                                              ; preds = %173, %169
  call void @llvm.lifetime.end.p0(i64 32, 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 %240

178:                                              ; preds = %137
  %179 = load i8, ptr %10, align 1, !tbaa !28, !range !29, !noundef !30
  %180 = trunc i8 %179 to i1
  br i1 %180, label %181, label %182

181:                                              ; preds = %178
  br label %187

182:                                              ; preds = %178
  %183 = load i8, ptr %15, align 1, !tbaa !28, !range !29, !noundef !30
  %184 = trunc i8 %183 to i1
  %185 = zext i1 %184 to i64
  %186 = select i1 %184, ptr @.str.382, ptr @.str.154
  br label %187

187:                                              ; preds = %182, %181
  %188 = phi ptr [ @.str.93, %181 ], [ %186, %182 ]
  %189 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef %188)
          to label %190 unwind label %165

190:                                              ; preds = %187
  br label %191

191:                                              ; preds = %190, %151
  %192 = load ptr, ptr %4, align 8, !tbaa !5
  %193 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %192, i32 0, i32 1
  %194 = invoke noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %193)
          to label %195 unwind label %165

195:                                              ; preds = %191
  invoke void @_ZN11spirv_cross12CompilerGLSL17add_resource_nameEj(ptr noundef nonnull align 8 dereferenceable(9848) %65, i32 noundef %194)
          to label %196 unwind label %165

196:                                              ; preds = %195
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #8
  %197 = load i8, ptr %14, align 1, !tbaa !28, !range !29, !noundef !30
  %198 = trunc i8 %197 to i1
  %199 = zext i1 %198 to i64
  %200 = select i1 %198, ptr @.str.383, ptr @.str.9
  store ptr %200, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %23) #8
  %201 = load ptr, ptr %4, align 8, !tbaa !5
  %202 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %201, i32 0, i32 1
  %203 = invoke noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %202)
          to label %204 unwind label %221

204:                                              ; preds = %196
  %205 = load ptr, ptr %65, align 8, !tbaa !33
  %206 = getelementptr inbounds ptr, ptr %205, i64 6
  %207 = load ptr, ptr %206, align 8
  invoke void %207(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %23, ptr noundef nonnull align 8 dereferenceable(3176) %65, i32 noundef %203, i1 noundef zeroext true)
          to label %208 unwind label %221

208:                                              ; preds = %204
  call void @llvm.lifetime.start.p0(i64 32, ptr %24) #8
  %209 = load ptr, ptr %5, align 8, !tbaa !5
  %210 = load ptr, ptr %4, align 8, !tbaa !5
  %211 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %210, i32 0, i32 1
  %212 = invoke noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %211)
          to label %213 unwind label %225

213:                                              ; preds = %208
  %214 = load ptr, ptr %65, align 8, !tbaa !33
  %215 = getelementptr inbounds ptr, ptr %214, i64 38
  %216 = load ptr, ptr %215, align 8
  invoke void %216(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %24, ptr noundef nonnull align 8 dereferenceable(9848) %65, ptr noundef nonnull align 8 dereferenceable(336) %209, i32 noundef %212)
          to label %217 unwind label %225

217:                                              ; preds = %213
  call void @llvm.lifetime.start.p0(i64 32, ptr %25) #8
  %218 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN11spirv_cross12CompilerHLSL19to_resource_bindingB5cxx11ERKNS_12SPIRVariableE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %25, ptr noundef nonnull align 8 dereferenceable(10528) %65, ptr noundef nonnull align 8 dereferenceable(176) %218)
          to label %219 unwind label %229

219:                                              ; preds = %217
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJPKcRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_S2_S9_S9_S9_SC_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %65, ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull align 1 dereferenceable(2) @.str.63, ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull align 1 dereferenceable(2) @.str.53)
          to label %220 unwind label %233

220:                                              ; preds = %219
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #8
  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 @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #8
  call void @_ZN11spirv_cross6BitsetD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %9) #8
  call void @llvm.lifetime.end.p0(i64 64, ptr %9) #8
  br label %682

221:                                              ; preds = %204, %196
  %222 = landingpad { ptr, i32 }
          cleanup
  %223 = extractvalue { ptr, i32 } %222, 0
  store ptr %223, ptr %11, align 8
  %224 = extractvalue { ptr, i32 } %222, 1
  store i32 %224, ptr %12, align 4
  br label %239

225:                                              ; preds = %213, %208
  %226 = landingpad { ptr, i32 }
          cleanup
  %227 = extractvalue { ptr, i32 } %226, 0
  store ptr %227, ptr %11, align 8
  %228 = extractvalue { ptr, i32 } %226, 1
  store i32 %228, ptr %12, align 4
  br label %238

229:                                              ; preds = %217
  %230 = landingpad { ptr, i32 }
          cleanup
  %231 = extractvalue { ptr, i32 } %230, 0
  store ptr %231, ptr %11, align 8
  %232 = extractvalue { ptr, i32 } %230, 1
  store i32 %232, ptr %12, align 4
  br label %237

233:                                              ; preds = %219
  %234 = landingpad { ptr, i32 }
          cleanup
  %235 = extractvalue { ptr, i32 } %234, 0
  store ptr %235, ptr %11, align 8
  %236 = extractvalue { ptr, i32 } %234, 1
  store i32 %236, ptr %12, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #8
  br label %237

237:                                              ; preds = %233, %229
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #8
  br label %238

238:                                              ; preds = %237, %225
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #8
  br label %239

239:                                              ; preds = %238, %221
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #8
  br label %240

240:                                              ; preds = %239, %177, %165
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #8
  br label %241

241:                                              ; preds = %240, %161
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #8
  br label %242

242:                                              ; preds = %241, %157
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #8
  br label %243

243:                                              ; preds = %242, %153
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #8
  call void @_ZN11spirv_cross6BitsetD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %9) #8
  call void @llvm.lifetime.end.p0(i64 64, ptr %9) #8
  br label %684

244:                                              ; preds = %91
  %245 = load ptr, ptr %5, align 8, !tbaa !5
  %246 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %245, i32 0, i32 6
  %247 = call noundef zeroext i1 @_ZNK11spirv_cross10VectorViewIjE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %246) #8
  br i1 %247, label %248, label %570

248:                                              ; preds = %244
  %249 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %65, i32 0, i32 26
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #8
  %250 = load ptr, ptr %4, align 8, !tbaa !5
  %251 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %250, i32 0, i32 1
  %252 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %251)
  store i32 %252, ptr %26, align 4, !tbaa !27
  %253 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt13unordered_mapIjbSt4hashIjESt8equal_toIjESaISt4pairIKjbEEEixEOj(ptr noundef nonnull align 8 dereferenceable(56) %249, ptr noundef nonnull align 4 dereferenceable(4) %26)
  store i8 0, ptr %253, align 1, !tbaa !28
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %27) #8
  %254 = load ptr, ptr %5, align 8, !tbaa !5
  %255 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %254, i32 0, i32 1
  %256 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %255)
  %257 = load ptr, ptr %65, align 8, !tbaa !33
  %258 = getelementptr inbounds ptr, ptr %257, i64 6
  %259 = load ptr, ptr %258, align 8
  call void %259(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %27, ptr noundef nonnull align 8 dereferenceable(3176) %65, i32 noundef %256, i1 noundef zeroext false)
  %260 = getelementptr inbounds %"class.spirv_cross::Compiler", ptr %65, i32 0, i32 1
  %261 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %260, i32 0, i32 3
  %262 = load ptr, ptr %5, align 8, !tbaa !5
  %263 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %262, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #8
  %264 = invoke noundef nonnull align 8 dereferenceable(488) ptr @_ZNSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE0EEENS0_4MetaESt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S4_EEEixERSA_(ptr noundef nonnull align 8 dereferenceable(56) %261, ptr noundef nonnull align 4 dereferenceable(4) %263)
          to label %265 unwind label %309

265:                                              ; preds = %248
  %266 = getelementptr inbounds %"struct.spirv_cross::Meta", ptr %264, i32 0, i32 0
  %267 = getelementptr inbounds %"struct.spirv_cross::Meta::Decoration", ptr %266, i32 0, i32 0
  %268 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %267) #8
  br i1 %268, label %293, label %269

269:                                              ; preds = %265
  %270 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %65, i32 0, i32 11
  %271 = invoke ptr @_ZNSt13unordered_setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4hashIS5_ESt8equal_toIS5_ESaIS5_EE4findERKS5_(ptr noundef nonnull align 8 dereferenceable(56) %270, ptr noundef nonnull align 8 dereferenceable(32) %27)
          to label %272 unwind label %313

272:                                              ; preds = %269
  %273 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.421", ptr %28, i32 0, i32 0
  %274 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.422", ptr %273, i32 0, i32 0
  store ptr %271, ptr %274, align 8
  %275 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %65, i32 0, i32 11
  %276 = invoke ptr @_ZSt3endISt13unordered_setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4hashIS6_ESt8equal_toIS6_ESaIS6_EEEDTcldtfp_3endEERT_(ptr noundef nonnull align 8 dereferenceable(56) %275)
          to label %277 unwind label %317

277:                                              ; preds = %272
  %278 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.421", ptr %29, i32 0, i32 0
  %279 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.422", ptr %278, i32 0, i32 0
  store ptr %276, ptr %279, align 8
  %280 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELb1EEES9_(ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull align 8 dereferenceable(8) %29) #8
  br i1 %280, label %293, label %281

281:                                              ; preds = %277
  %282 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %65, i32 0, i32 16
  %283 = invoke ptr @_ZNSt13unordered_setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4hashIS5_ESt8equal_toIS5_ESaIS5_EE4findERKS5_(ptr noundef nonnull align 8 dereferenceable(56) %282, ptr noundef nonnull align 8 dereferenceable(32) %27)
          to label %284 unwind label %321

284:                                              ; preds = %281
  %285 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.421", ptr %30, i32 0, i32 0
  %286 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.422", ptr %285, i32 0, i32 0
  store ptr %283, ptr %286, align 8
  %287 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %65, i32 0, i32 16
  %288 = invoke ptr @_ZSt3endISt13unordered_setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4hashIS6_ESt8equal_toIS6_ESaIS6_EEEDTcldtfp_3endEERT_(ptr noundef nonnull align 8 dereferenceable(56) %287)
          to label %289 unwind label %325

289:                                              ; preds = %284
  %290 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.421", ptr %31, i32 0, i32 0
  %291 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.422", ptr %290, i32 0, i32 0
  store ptr %288, ptr %291, align 8
  %292 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELb1EEES9_(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull align 8 dereferenceable(8) %31) #8
  br label %293

293:                                              ; preds = %289, %277, %265
  %294 = phi i1 [ true, %277 ], [ true, %265 ], [ %292, %289 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #8
  br i1 %294, label %295, label %341

295:                                              ; preds = %293
  call void @llvm.lifetime.start.p0(i64 32, ptr %32) #8
  %296 = load ptr, ptr %4, align 8, !tbaa !5
  %297 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %296, i32 0, i32 1
  %298 = invoke i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvNS0_IXT_EEEILS1_2EEEv(ptr noundef nonnull align 4 dereferenceable(4) %297)
          to label %299 unwind label %332

299:                                              ; preds = %295
  %300 = getelementptr inbounds %"class.spirv_cross::TypedID.330", ptr %33, i32 0, i32 0
  store i32 %298, ptr %300, align 4
  %301 = getelementptr inbounds %"class.spirv_cross::TypedID.330", ptr %33, i32 0, i32 0
  %302 = load i32, ptr %301, align 4
  %303 = load ptr, ptr %65, align 8, !tbaa !33
  %304 = getelementptr inbounds ptr, ptr %303, i64 4
  %305 = load ptr, ptr %304, align 8
  invoke void %305(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %32, ptr noundef nonnull align 8 dereferenceable(3176) %65, i32 %302)
          to label %306 unwind label %332

306:                                              ; preds = %299
  %307 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull align 8 dereferenceable(32) %32)
          to label %308 unwind label %336

308:                                              ; preds = %306
  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 %341

309:                                              ; preds = %341, %248
  %310 = landingpad { ptr, i32 }
          cleanup
  %311 = extractvalue { ptr, i32 } %310, 0
  store ptr %311, ptr %11, align 8
  %312 = extractvalue { ptr, i32 } %310, 1
  store i32 %312, ptr %12, align 4
  br label %569

313:                                              ; preds = %269
  %314 = landingpad { ptr, i32 }
          cleanup
  %315 = extractvalue { ptr, i32 } %314, 0
  store ptr %315, ptr %11, align 8
  %316 = extractvalue { ptr, i32 } %314, 1
  store i32 %316, ptr %12, align 4
  br label %331

317:                                              ; preds = %272
  %318 = landingpad { ptr, i32 }
          cleanup
  %319 = extractvalue { ptr, i32 } %318, 0
  store ptr %319, ptr %11, align 8
  %320 = extractvalue { ptr, i32 } %318, 1
  store i32 %320, ptr %12, align 4
  br label %330

321:                                              ; preds = %281
  %322 = landingpad { ptr, i32 }
          cleanup
  %323 = extractvalue { ptr, i32 } %322, 0
  store ptr %323, ptr %11, align 8
  %324 = extractvalue { ptr, i32 } %322, 1
  store i32 %324, ptr %12, align 4
  br label %329

325:                                              ; preds = %284
  %326 = landingpad { ptr, i32 }
          cleanup
  %327 = extractvalue { ptr, i32 } %326, 0
  store ptr %327, ptr %11, align 8
  %328 = extractvalue { ptr, i32 } %326, 1
  store i32 %328, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #8
  br label %329

329:                                              ; preds = %325, %321
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #8
  br label %330

330:                                              ; preds = %329, %317
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #8
  br label %331

331:                                              ; preds = %330, %313
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #8
  br label %569

332:                                              ; preds = %299, %295
  %333 = landingpad { ptr, i32 }
          cleanup
  %334 = extractvalue { ptr, i32 } %333, 0
  store ptr %334, ptr %11, align 8
  %335 = extractvalue { ptr, i32 } %333, 1
  store i32 %335, ptr %12, align 4
  br label %340

336:                                              ; preds = %306
  %337 = landingpad { ptr, i32 }
          cleanup
  %338 = extractvalue { ptr, i32 } %337, 0
  store ptr %338, ptr %11, align 8
  %339 = extractvalue { ptr, i32 } %337, 1
  store i32 %339, ptr %12, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #8
  br label %340

340:                                              ; preds = %336, %332
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #8
  br label %569

341:                                              ; preds = %308, %293
  %342 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %65, i32 0, i32 16
  %343 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %65, i32 0, i32 11
  invoke void @_ZN11spirv_cross12CompilerGLSL12add_variableERSt13unordered_setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4hashIS7_ESt8equal_toIS7_ESaIS7_EERKSD_RS7_(ptr noundef nonnull align 8 dereferenceable(9848) %65, ptr noundef nonnull align 8 dereferenceable(56) %342, ptr noundef nonnull align 8 dereferenceable(56) %343, ptr noundef nonnull align 8 dereferenceable(32) %27)
          to label %344 unwind label %309

344:                                              ; preds = %341
  %345 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %27) #8
  br i1 %345, label %346, label %362

346:                                              ; preds = %344
  call void @llvm.lifetime.start.p0(i64 32, ptr %34) #8
  %347 = load ptr, ptr %4, align 8, !tbaa !5
  %348 = getelementptr inbounds %"struct.spirv_cross::SPIRVariable", ptr %347, i32 0, i32 1
  %349 = invoke noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE1EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %348)
          to label %350 unwind label %358

350:                                              ; preds = %346
  %351 = invoke noundef nonnull align 8 dereferenceable(336) ptr @_ZN11spirv_cross8Compiler3getINS_8SPIRTypeEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %65, i32 noundef %349)
          to label %352 unwind label %358

352:                                              ; preds = %350
  %353 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %351, i32 0, i32 1
  %354 = load ptr, ptr %4, align 8, !tbaa !5
  %355 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %354, i32 0, i32 1
  invoke void @_ZN11spirv_cross4joinIJRA2_KcRNS_7TypedIDILNS_5TypesE0EEES3_RKS6_EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %34, ptr noundef nonnull align 1 dereferenceable(2) @.str.62, ptr noundef nonnull align 4 dereferenceable(4) %353, ptr noundef nonnull align 1 dereferenceable(2) @.str.62, ptr noundef nonnull align 4 dereferenceable(4) %355)
          to label %356 unwind label %358

356:                                              ; preds = %352
  %357 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull align 8 dereferenceable(32) %34) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %34) #8
  br label %362

358:                                              ; preds = %352, %350, %346
  %359 = landingpad { ptr, i32 }
          cleanup
  %360 = extractvalue { ptr, i32 } %359, 0
  store ptr %360, ptr %11, align 8
  %361 = extractvalue { ptr, i32 } %359, 1
  store i32 %361, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %34) #8
  br label %569

362:                                              ; preds = %356, %344
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #8
  store i32 0, ptr %35, align 4, !tbaa !27
  %363 = load ptr, ptr %5, align 8, !tbaa !5
  %364 = invoke noundef zeroext i1 @_ZN11spirv_cross12CompilerGLSL26buffer_is_packing_standardERKNS_8SPIRTypeENS_21BufferPackingStandardEPjjj(ptr noundef nonnull align 8 dereferenceable(9848) %65, ptr noundef nonnull align 8 dereferenceable(336) %363, i32 noundef 5, ptr noundef %35, i32 noundef 0, i32 noundef -1)
          to label %365 unwind label %372

365:                                              ; preds = %362
  br i1 %364, label %366, label %376

366:                                              ; preds = %365
  %367 = load ptr, ptr %5, align 8, !tbaa !5
  %368 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %367, i32 0, i32 1
  %369 = invoke noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %368)
          to label %370 unwind label %372

370:                                              ; preds = %366
  invoke void @_ZN11spirv_cross8Compiler23set_extended_decorationEjNS_19ExtendedDecorationsEj(ptr noundef nonnull align 8 dereferenceable(3176) %65, i32 noundef %369, i32 noundef 10, i32 noundef 0)
          to label %371 unwind label %372

371:                                              ; preds = %370
  br label %402

372:                                              ; preds = %433, %429, %425, %424, %418, %402, %370, %366, %362
  %373 = landingpad { ptr, i32 }
          cleanup
  %374 = extractvalue { ptr, i32 } %373, 0
  store ptr %374, ptr %11, align 8
  %375 = extractvalue { ptr, i32 } %373, 1
  store i32 %375, ptr %12, align 4
  br label %568

376:                                              ; preds = %365
  store i1 true, ptr %38, align 1
  %377 = call ptr @__cxa_allocate_exception(i64 16) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %36) #8
  %378 = load ptr, ptr %4, align 8, !tbaa !5
  %379 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %378, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %37) #8
  %380 = load ptr, ptr %5, align 8, !tbaa !5
  %381 = load i32, ptr %35, align 4, !tbaa !27
  invoke void @_ZN11spirv_cross12CompilerGLSL14to_member_nameB5cxx11ERKNS_8SPIRTypeEj(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %37, ptr noundef nonnull align 8 dereferenceable(9848) %65, ptr noundef nonnull align 8 dereferenceable(336) %380, i32 noundef %381)
          to label %382 unwind label %385

382:                                              ; preds = %376
  invoke void @_ZN11spirv_cross4joinIJRA12_KcRKNS_7TypedIDILNS_5TypesE0EEERA9_S1_RNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA17_S1_RjSA_SG_RA69_S1_EEESG_DpOT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %36, ptr noundef nonnull align 1 dereferenceable(12) @.str.384, ptr noundef nonnull align 4 dereferenceable(4) %379, ptr noundef nonnull align 1 dereferenceable(9) @.str.385, ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull align 1 dereferenceable(17) @.str.386, ptr noundef nonnull align 4 dereferenceable(4) %35, ptr noundef nonnull align 1 dereferenceable(9) @.str.385, ptr noundef nonnull align 8 dereferenceable(32) %37, ptr noundef nonnull align 1 dereferenceable(69) @.str.387)
          to label %383 unwind label %389

383:                                              ; preds = %382
  invoke void @_ZN11spirv_cross13CompilerErrorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16) %377, ptr noundef nonnull align 8 dereferenceable(32) %36)
          to label %384 unwind label %393

384:                                              ; preds = %383
  store i1 false, ptr %38, align 1
  invoke void @__cxa_throw(ptr %377, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #9
          to label %690 unwind label %393

385:                                              ; preds = %376
  %386 = landingpad { ptr, i32 }
          cleanup
  %387 = extractvalue { ptr, i32 } %386, 0
  store ptr %387, ptr %11, align 8
  %388 = extractvalue { ptr, i32 } %386, 1
  store i32 %388, ptr %12, align 4
  br label %398

389:                                              ; preds = %382
  %390 = landingpad { ptr, i32 }
          cleanup
  %391 = extractvalue { ptr, i32 } %390, 0
  store ptr %391, ptr %11, align 8
  %392 = extractvalue { ptr, i32 } %390, 1
  store i32 %392, ptr %12, align 4
  br label %397

393:                                              ; preds = %384, %383
  %394 = landingpad { ptr, i32 }
          cleanup
  %395 = extractvalue { ptr, i32 } %394, 0
  store ptr %395, ptr %11, align 8
  %396 = extractvalue { ptr, i32 } %394, 1
  store i32 %396, ptr %12, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #8
  br label %397

397:                                              ; preds = %393, %389
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #8
  br label %398

398:                                              ; preds = %397, %385
  call void @llvm.lifetime.end.p0(i64 32, ptr %37) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #8
  %399 = load i1, ptr %38, align 1
  br i1 %399, label %400, label %401

400:                                              ; preds = %398
  call void @__cxa_free_exception(ptr %377) #8
  br label %401

401:                                              ; preds = %400, %398
  br label %568

402:                                              ; preds = %371
  %403 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %65, i32 0, i32 16
  %404 = invoke { ptr, i8 } @_ZNSt13unordered_setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4hashIS5_ESt8equal_toIS5_ESaIS5_EE6insertERKS5_(ptr noundef nonnull align 8 dereferenceable(56) %403, ptr noundef nonnull align 8 dereferenceable(32) %27)
          to label %405 unwind label %372

405:                                              ; preds = %402
  %406 = getelementptr inbounds { ptr, i8 }, ptr %39, i32 0, i32 0
  %407 = extractvalue { ptr, i8 } %404, 0
  store ptr %407, ptr %406, align 8
  %408 = getelementptr inbounds { ptr, i8 }, ptr %39, i32 0, i32 1
  %409 = extractvalue { ptr, i8 } %404, 1
  store i8 %409, ptr %408, align 8
  %410 = getelementptr inbounds %"class.spirv_cross::Compiler", ptr %65, i32 0, i32 34
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #8
  %411 = load ptr, ptr %4, align 8, !tbaa !5
  %412 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %411, i32 0, i32 1
  %413 = invoke noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %412)
          to label %414 unwind label %446

414:                                              ; preds = %405
  store i32 %413, ptr %40, align 4, !tbaa !27
  %415 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt13unordered_mapIjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4hashIjESt8equal_toIjESaISt4pairIKjS5_EEEixEOj(ptr noundef nonnull align 8 dereferenceable(56) %410, ptr noundef nonnull align 4 dereferenceable(4) %40)
          to label %416 unwind label %446

416:                                              ; preds = %414
  %417 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %415, ptr noundef nonnull align 8 dereferenceable(32) %27)
          to label %418 unwind label %446

418:                                              ; preds = %416
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #8
  %419 = load ptr, ptr %5, align 8, !tbaa !5
  %420 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %419, i32 0, i32 17
  call void @_ZNSt13unordered_setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4hashIS5_ESt8equal_toIS5_ESaIS5_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(56) %420) #8
  %421 = load ptr, ptr %4, align 8, !tbaa !5
  %422 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %421, i32 0, i32 1
  %423 = invoke noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %422)
          to label %424 unwind label %372

424:                                              ; preds = %418
  invoke void @_ZN11spirv_cross12CompilerGLSL23preserve_alias_on_resetEj(ptr noundef nonnull align 8 dereferenceable(9848) %65, i32 noundef %423)
          to label %425 unwind label %372

425:                                              ; preds = %424
  %426 = load ptr, ptr %4, align 8, !tbaa !5
  %427 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %426, i32 0, i32 1
  %428 = invoke noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %427)
          to label %429 unwind label %372

429:                                              ; preds = %425
  invoke void @_ZN11spirv_cross12CompilerGLSL17add_resource_nameEj(ptr noundef nonnull align 8 dereferenceable(9848) %65, i32 noundef %428)
          to label %430 unwind label %372

430:                                              ; preds = %429
  call void @llvm.lifetime.start.p0(i64 32, ptr %41) #8
  %431 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN11spirv_cross12CompilerHLSL19to_resource_bindingB5cxx11ERKNS_12SPIRVariableE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %41, ptr noundef nonnull align 8 dereferenceable(10528) %65, ptr noundef nonnull align 8 dereferenceable(176) %431)
          to label %432 unwind label %450

432:                                              ; preds = %430
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA9_KcRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %65, ptr noundef nonnull align 1 dereferenceable(9) @.str.388, ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull align 8 dereferenceable(32) %41)
          to label %433 unwind label %454

433:                                              ; preds = %432
  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
  invoke void @_ZN11spirv_cross12CompilerGLSL11begin_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848) %65)
          to label %434 unwind label %372

434:                                              ; preds = %433
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #8
  store i32 0, ptr %42, align 4, !tbaa !27
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #8
  %435 = load ptr, ptr %5, align 8, !tbaa !5
  %436 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %435, i32 0, i32 12
  store ptr %436, ptr %43, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #8
  %437 = load ptr, ptr %43, align 8, !tbaa !5
  %438 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_7TypedIDILNS_5TypesE1EEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %437) #8
  store ptr %438, ptr %44, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #8
  %439 = load ptr, ptr %43, align 8, !tbaa !5
  %440 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_7TypedIDILNS_5TypesE1EEEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %439) #8
  store ptr %440, ptr %45, align 8, !tbaa !5
  br label %441

441:                                              ; preds = %519, %434
  %442 = load ptr, ptr %44, align 8, !tbaa !5
  %443 = load ptr, ptr %45, align 8, !tbaa !5
  %444 = icmp ne ptr %442, %443
  br i1 %444, label %459, label %445

445:                                              ; preds = %441
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #8
  br label %560

446:                                              ; preds = %416, %414, %405
  %447 = landingpad { ptr, i32 }
          cleanup
  %448 = extractvalue { ptr, i32 } %447, 0
  store ptr %448, ptr %11, align 8
  %449 = extractvalue { ptr, i32 } %447, 1
  store i32 %449, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #8
  br label %568

450:                                              ; preds = %430
  %451 = landingpad { ptr, i32 }
          cleanup
  %452 = extractvalue { ptr, i32 } %451, 0
  store ptr %452, ptr %11, align 8
  %453 = extractvalue { ptr, i32 } %451, 1
  store i32 %453, ptr %12, align 4
  br label %458

454:                                              ; preds = %432
  %455 = landingpad { ptr, i32 }
          cleanup
  %456 = extractvalue { ptr, i32 } %455, 0
  store ptr %456, ptr %11, align 8
  %457 = extractvalue { ptr, i32 } %455, 1
  store i32 %457, ptr %12, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #8
  br label %458

458:                                              ; preds = %454, %450
  call void @llvm.lifetime.end.p0(i64 32, ptr %41) #8
  br label %568

459:                                              ; preds = %441
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #8
  %460 = load ptr, ptr %44, align 8, !tbaa !5
  store ptr %460, ptr %46, align 8, !tbaa !5
  %461 = load ptr, ptr %5, align 8, !tbaa !5
  %462 = load i32, ptr %42, align 4, !tbaa !27
  invoke void @_ZN11spirv_cross12CompilerGLSL15add_member_nameERNS_8SPIRTypeEj(ptr noundef nonnull align 8 dereferenceable(9848) %65, ptr noundef nonnull align 8 dereferenceable(336) %461, i32 noundef %462)
          to label %463 unwind label %522

463:                                              ; preds = %459
  call void @llvm.lifetime.start.p0(i64 32, ptr %47) #8
  %464 = load ptr, ptr %5, align 8, !tbaa !5
  %465 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %464, i32 0, i32 1
  %466 = invoke i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvNS0_IXT_EEEILS1_1EEEv(ptr noundef nonnull align 4 dereferenceable(4) %465)
          to label %467 unwind label %526

467:                                              ; preds = %463
  %468 = getelementptr inbounds %"class.spirv_cross::TypedID.328", ptr %48, i32 0, i32 0
  store i32 %466, ptr %468, align 4
  %469 = load i32, ptr %42, align 4, !tbaa !27
  %470 = getelementptr inbounds %"class.spirv_cross::TypedID.328", ptr %48, i32 0, i32 0
  %471 = load i32, ptr %470, align 4
  %472 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK11spirv_cross8Compiler15get_member_nameB5cxx11ENS_7TypedIDILNS_5TypesE1EEEj(ptr noundef nonnull align 8 dereferenceable(3176) %65, i32 %471, i32 noundef %469)
          to label %473 unwind label %526

473:                                              ; preds = %467
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef nonnull align 8 dereferenceable(32) %472)
          to label %474 unwind label %526

474:                                              ; preds = %473
  call void @llvm.lifetime.start.p0(i64 32, ptr %49) #8
  %475 = load ptr, ptr %5, align 8, !tbaa !5
  %476 = load i32, ptr %42, align 4, !tbaa !27
  invoke void @_ZN11spirv_cross12CompilerGLSL14to_member_nameB5cxx11ERKNS_8SPIRTypeEj(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %49, ptr noundef nonnull align 8 dereferenceable(9848) %65, ptr noundef nonnull align 8 dereferenceable(336) %475, i32 noundef %476)
          to label %477 unwind label %530

477:                                              ; preds = %474
  call void @llvm.lifetime.start.p0(i64 32, ptr %50) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %51) #8
  %478 = load ptr, ptr %4, align 8, !tbaa !5
  %479 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %478, i32 0, i32 1
  %480 = invoke noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %479)
          to label %481 unwind label %534

481:                                              ; preds = %477
  %482 = load ptr, ptr %65, align 8, !tbaa !33
  %483 = getelementptr inbounds ptr, ptr %482, i64 6
  %484 = load ptr, ptr %483, align 8
  invoke void %484(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %51, ptr noundef nonnull align 8 dereferenceable(3176) %65, i32 noundef %480, i1 noundef zeroext true)
          to label %485 unwind label %534

485:                                              ; preds = %481
  invoke void @_ZN11spirv_cross4joinIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_KcRS6_EEES6_DpOT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %50, ptr noundef nonnull align 8 dereferenceable(32) %51, ptr noundef nonnull align 1 dereferenceable(2) @.str.62, ptr noundef nonnull align 8 dereferenceable(32) %49)
          to label %486 unwind label %538

486:                                              ; preds = %485
  %487 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %49, ptr noundef nonnull align 8 dereferenceable(32) %50) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %51) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %50) #8
  invoke void @_ZN11spirv_cross8ParsedIR20sanitize_underscoresERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %49)
          to label %488 unwind label %543

488:                                              ; preds = %486
  %489 = load ptr, ptr %5, align 8, !tbaa !5
  %490 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %489, i32 0, i32 1
  %491 = invoke i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvNS0_IXT_EEEILS1_1EEEv(ptr noundef nonnull align 4 dereferenceable(4) %490)
          to label %492 unwind label %543

492:                                              ; preds = %488
  %493 = getelementptr inbounds %"class.spirv_cross::TypedID.328", ptr %52, i32 0, i32 0
  store i32 %491, ptr %493, align 4
  %494 = load i32, ptr %42, align 4, !tbaa !27
  %495 = getelementptr inbounds %"class.spirv_cross::TypedID.328", ptr %52, i32 0, i32 0
  %496 = load i32, ptr %495, align 4
  invoke void @_ZN11spirv_cross8Compiler15set_member_nameENS_7TypedIDILNS_5TypesE1EEEjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(3176) %65, i32 %496, i32 noundef %494, ptr noundef nonnull align 8 dereferenceable(32) %49)
          to label %497 unwind label %543

497:                                              ; preds = %492
  %498 = load ptr, ptr %5, align 8, !tbaa !5
  %499 = load ptr, ptr %46, align 8, !tbaa !5
  %500 = invoke noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE1EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %499)
          to label %501 unwind label %543

501:                                              ; preds = %497
  %502 = load i32, ptr %42, align 4, !tbaa !27
  call void @llvm.lifetime.start.p0(i64 32, ptr %53) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %54) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %53, ptr noundef @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %54)
          to label %503 unwind label %547

503:                                              ; preds = %501
  %504 = load ptr, ptr %65, align 8, !tbaa !33
  %505 = getelementptr inbounds ptr, ptr %504, i64 21
  %506 = load ptr, ptr %505, align 8
  invoke void %506(ptr noundef nonnull align 8 dereferenceable(10528) %65, ptr noundef nonnull align 8 dereferenceable(336) %498, i32 noundef %500, i32 noundef %502, ptr noundef nonnull align 8 dereferenceable(32) %53, i32 noundef 0)
          to label %507 unwind label %551

507:                                              ; preds = %503
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %54) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %53) #8
  %508 = load ptr, ptr %5, align 8, !tbaa !5
  %509 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %508, i32 0, i32 1
  %510 = invoke i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvNS0_IXT_EEEILS1_1EEEv(ptr noundef nonnull align 4 dereferenceable(4) %509)
          to label %511 unwind label %543

511:                                              ; preds = %507
  %512 = getelementptr inbounds %"class.spirv_cross::TypedID.328", ptr %55, i32 0, i32 0
  store i32 %510, ptr %512, align 4
  %513 = load i32, ptr %42, align 4, !tbaa !27
  %514 = getelementptr inbounds %"class.spirv_cross::TypedID.328", ptr %55, i32 0, i32 0
  %515 = load i32, ptr %514, align 4
  invoke void @_ZN11spirv_cross8Compiler15set_member_nameENS_7TypedIDILNS_5TypesE1EEEjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(3176) %65, i32 %515, i32 noundef %513, ptr noundef nonnull align 8 dereferenceable(32) %47)
          to label %516 unwind label %543

516:                                              ; preds = %511
  %517 = load i32, ptr %42, align 4, !tbaa !27
  %518 = add i32 %517, 1
  store i32 %518, ptr %42, align 4, !tbaa !27
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %49) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %47) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #8
  br label %519

519:                                              ; preds = %516
  %520 = load ptr, ptr %44, align 8, !tbaa !5
  %521 = getelementptr inbounds %"class.spirv_cross::TypedID.328", ptr %520, i32 1
  store ptr %521, ptr %44, align 8, !tbaa !5
  br label %441

522:                                              ; preds = %459
  %523 = landingpad { ptr, i32 }
          cleanup
  %524 = extractvalue { ptr, i32 } %523, 0
  store ptr %524, ptr %11, align 8
  %525 = extractvalue { ptr, i32 } %523, 1
  store i32 %525, ptr %12, align 4
  br label %559

526:                                              ; preds = %473, %467, %463
  %527 = landingpad { ptr, i32 }
          cleanup
  %528 = extractvalue { ptr, i32 } %527, 0
  store ptr %528, ptr %11, align 8
  %529 = extractvalue { ptr, i32 } %527, 1
  store i32 %529, ptr %12, align 4
  br label %558

530:                                              ; preds = %474
  %531 = landingpad { ptr, i32 }
          cleanup
  %532 = extractvalue { ptr, i32 } %531, 0
  store ptr %532, ptr %11, align 8
  %533 = extractvalue { ptr, i32 } %531, 1
  store i32 %533, ptr %12, align 4
  br label %557

534:                                              ; preds = %481, %477
  %535 = landingpad { ptr, i32 }
          cleanup
  %536 = extractvalue { ptr, i32 } %535, 0
  store ptr %536, ptr %11, align 8
  %537 = extractvalue { ptr, i32 } %535, 1
  store i32 %537, ptr %12, align 4
  br label %542

538:                                              ; preds = %485
  %539 = landingpad { ptr, i32 }
          cleanup
  %540 = extractvalue { ptr, i32 } %539, 0
  store ptr %540, ptr %11, align 8
  %541 = extractvalue { ptr, i32 } %539, 1
  store i32 %541, ptr %12, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #8
  br label %542

542:                                              ; preds = %538, %534
  call void @llvm.lifetime.end.p0(i64 32, ptr %51) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %50) #8
  br label %556

543:                                              ; preds = %511, %507, %497, %492, %488, %486
  %544 = landingpad { ptr, i32 }
          cleanup
  %545 = extractvalue { ptr, i32 } %544, 0
  store ptr %545, ptr %11, align 8
  %546 = extractvalue { ptr, i32 } %544, 1
  store i32 %546, ptr %12, align 4
  br label %556

547:                                              ; preds = %501
  %548 = landingpad { ptr, i32 }
          cleanup
  %549 = extractvalue { ptr, i32 } %548, 0
  store ptr %549, ptr %11, align 8
  %550 = extractvalue { ptr, i32 } %548, 1
  store i32 %550, ptr %12, align 4
  br label %555

551:                                              ; preds = %503
  %552 = landingpad { ptr, i32 }
          cleanup
  %553 = extractvalue { ptr, i32 } %552, 0
  store ptr %553, ptr %11, align 8
  %554 = extractvalue { ptr, i32 } %552, 1
  store i32 %554, ptr %12, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #8
  br label %555

555:                                              ; preds = %551, %547
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %54) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %53) #8
  br label %556

556:                                              ; preds = %555, %543, %542
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #8
  br label %557

557:                                              ; preds = %556, %530
  call void @llvm.lifetime.end.p0(i64 32, ptr %49) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #8
  br label %558

558:                                              ; preds = %557, %526
  call void @llvm.lifetime.end.p0(i64 32, ptr %47) #8
  br label %559

559:                                              ; preds = %558, %522
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #8
  br label %567

560:                                              ; preds = %445
  invoke void @_ZN11spirv_cross12CompilerGLSL14end_scope_declEv(ptr noundef nonnull align 8 dereferenceable(9848) %65)
          to label %561 unwind label %563

561:                                              ; preds = %560
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA1_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %65, ptr noundef nonnull align 1 dereferenceable(1) @.str.9)
          to label %562 unwind label %563

562:                                              ; preds = %561
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #8
  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
  br label %681

563:                                              ; preds = %561, %560
  %564 = landingpad { ptr, i32 }
          cleanup
  %565 = extractvalue { ptr, i32 } %564, 0
  store ptr %565, ptr %11, align 8
  %566 = extractvalue { ptr, i32 } %564, 1
  store i32 %566, ptr %12, align 4
  br label %567

567:                                              ; preds = %563, %559
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #8
  br label %568

568:                                              ; preds = %567, %458, %446, %401, %372
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #8
  br label %569

569:                                              ; preds = %568, %358, %340, %331, %309
  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
  br label %684

570:                                              ; preds = %244
  %571 = getelementptr inbounds %"class.spirv_cross::CompilerHLSL", ptr %65, i32 0, i32 1
  %572 = getelementptr inbounds %"struct.spirv_cross::CompilerHLSL::Options", ptr %571, i32 0, i32 0
  %573 = load i32, ptr %572, align 8, !tbaa !35
  %574 = icmp ult i32 %573, 51
  br i1 %574, label %575, label %582

575:                                              ; preds = %570
  %576 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %576, ptr noundef @.str.389)
          to label %577 unwind label %578

577:                                              ; preds = %575
  call void @__cxa_throw(ptr %576, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #9
  unreachable

578:                                              ; preds = %575
  %579 = landingpad { ptr, i32 }
          cleanup
  %580 = extractvalue { ptr, i32 } %579, 0
  store ptr %580, ptr %11, align 8
  %581 = extractvalue { ptr, i32 } %579, 1
  store i32 %581, ptr %12, align 4
  call void @__cxa_free_exception(ptr %576) #8
  br label %684

582:                                              ; preds = %570
  %583 = load ptr, ptr %5, align 8, !tbaa !5
  %584 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %583, i32 0, i32 1
  %585 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %584)
  call void @_ZN11spirv_cross12CompilerGLSL17add_resource_nameEj(ptr noundef nonnull align 8 dereferenceable(9848) %65, i32 noundef %585)
  %586 = load ptr, ptr %4, align 8, !tbaa !5
  %587 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %586, i32 0, i32 1
  %588 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %587)
  call void @_ZN11spirv_cross12CompilerGLSL17add_resource_nameEj(ptr noundef nonnull align 8 dereferenceable(9848) %65, i32 noundef %588)
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #8
  store i32 0, ptr %56, align 4, !tbaa !27
  %589 = load ptr, ptr %5, align 8, !tbaa !5
  %590 = call noundef zeroext i1 @_ZN11spirv_cross12CompilerGLSL26buffer_is_packing_standardERKNS_8SPIRTypeENS_21BufferPackingStandardEPjjj(ptr noundef nonnull align 8 dereferenceable(9848) %65, ptr noundef nonnull align 8 dereferenceable(336) %589, i32 noundef 4, ptr noundef %56, i32 noundef 0, i32 noundef -1)
  br i1 %590, label %630, label %591

591:                                              ; preds = %582
  store i1 true, ptr %60, align 1
  %592 = call ptr @__cxa_allocate_exception(i64 16) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %57) #8
  %593 = load ptr, ptr %4, align 8, !tbaa !5
  %594 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %593, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %58) #8
  %595 = load ptr, ptr %5, align 8, !tbaa !5
  %596 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %595, i32 0, i32 1
  %597 = invoke noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %596)
          to label %598 unwind label %608

598:                                              ; preds = %591
  %599 = load ptr, ptr %65, align 8, !tbaa !33
  %600 = getelementptr inbounds ptr, ptr %599, i64 6
  %601 = load ptr, ptr %600, align 8
  invoke void %601(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %58, ptr noundef nonnull align 8 dereferenceable(3176) %65, i32 noundef %597, i1 noundef zeroext true)
          to label %602 unwind label %608

602:                                              ; preds = %598
  call void @llvm.lifetime.start.p0(i64 32, ptr %59) #8
  %603 = load ptr, ptr %5, align 8, !tbaa !5
  %604 = load i32, ptr %56, align 4, !tbaa !27
  invoke void @_ZN11spirv_cross12CompilerGLSL14to_member_nameB5cxx11ERKNS_8SPIRTypeEj(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %59, ptr noundef nonnull align 8 dereferenceable(9848) %65, ptr noundef nonnull align 8 dereferenceable(336) %603, i32 noundef %604)
          to label %605 unwind label %612

605:                                              ; preds = %602
  invoke void @_ZN11spirv_cross4joinIJRA27_KcRKNS_7TypedIDILNS_5TypesE0EEERA9_S1_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA17_S1_RjSA_SG_RA54_S1_EEESG_DpOT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %57, ptr noundef nonnull align 1 dereferenceable(27) @.str.390, ptr noundef nonnull align 4 dereferenceable(4) %594, ptr noundef nonnull align 1 dereferenceable(9) @.str.385, ptr noundef nonnull align 8 dereferenceable(32) %58, ptr noundef nonnull align 1 dereferenceable(17) @.str.386, ptr noundef nonnull align 4 dereferenceable(4) %56, ptr noundef nonnull align 1 dereferenceable(9) @.str.385, ptr noundef nonnull align 8 dereferenceable(32) %59, ptr noundef nonnull align 1 dereferenceable(54) @.str.391)
          to label %606 unwind label %616

606:                                              ; preds = %605
  invoke void @_ZN11spirv_cross13CompilerErrorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16) %592, ptr noundef nonnull align 8 dereferenceable(32) %57)
          to label %607 unwind label %620

607:                                              ; preds = %606
  store i1 false, ptr %60, align 1
  invoke void @__cxa_throw(ptr %592, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #9
          to label %690 unwind label %620

608:                                              ; preds = %598, %591
  %609 = landingpad { ptr, i32 }
          cleanup
  %610 = extractvalue { ptr, i32 } %609, 0
  store ptr %610, ptr %11, align 8
  %611 = extractvalue { ptr, i32 } %609, 1
  store i32 %611, ptr %12, align 4
  br label %626

612:                                              ; preds = %602
  %613 = landingpad { ptr, i32 }
          cleanup
  %614 = extractvalue { ptr, i32 } %613, 0
  store ptr %614, ptr %11, align 8
  %615 = extractvalue { ptr, i32 } %613, 1
  store i32 %615, ptr %12, align 4
  br label %625

616:                                              ; preds = %605
  %617 = landingpad { ptr, i32 }
          cleanup
  %618 = extractvalue { ptr, i32 } %617, 0
  store ptr %618, ptr %11, align 8
  %619 = extractvalue { ptr, i32 } %617, 1
  store i32 %619, ptr %12, align 4
  br label %624

620:                                              ; preds = %607, %606
  %621 = landingpad { ptr, i32 }
          cleanup
  %622 = extractvalue { ptr, i32 } %621, 0
  store ptr %622, ptr %11, align 8
  %623 = extractvalue { ptr, i32 } %621, 1
  store i32 %623, ptr %12, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #8
  br label %624

624:                                              ; preds = %620, %616
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #8
  br label %625

625:                                              ; preds = %624, %612
  call void @llvm.lifetime.end.p0(i64 32, ptr %59) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #8
  br label %626

626:                                              ; preds = %625, %608
  call void @llvm.lifetime.end.p0(i64 32, ptr %58) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %57) #8
  %627 = load i1, ptr %60, align 1
  br i1 %627, label %628, label %629

628:                                              ; preds = %626
  call void @__cxa_free_exception(ptr %592) #8
  br label %629

629:                                              ; preds = %628, %626
  br label %680

630:                                              ; preds = %582
  %631 = load ptr, ptr %5, align 8, !tbaa !5
  %632 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %631, i32 0, i32 1
  %633 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %632)
  %634 = call noundef nonnull align 8 dereferenceable(336) ptr @_ZN11spirv_cross8Compiler3getINS_8SPIRTypeEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %65, i32 noundef %633)
  call void @_ZN11spirv_cross12CompilerGLSL11emit_structERNS_8SPIRTypeE(ptr noundef nonnull align 8 dereferenceable(9848) %65, ptr noundef nonnull align 8 dereferenceable(336) %634)
  call void @llvm.lifetime.start.p0(i64 32, ptr %61) #8
  %635 = load ptr, ptr %5, align 8, !tbaa !5
  %636 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %635, i32 0, i32 1
  %637 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %636)
  %638 = load ptr, ptr %65, align 8, !tbaa !33
  %639 = getelementptr inbounds ptr, ptr %638, i64 6
  %640 = load ptr, ptr %639, align 8
  call void %640(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %61, ptr noundef nonnull align 8 dereferenceable(3176) %65, i32 noundef %637, i1 noundef zeroext true)
  call void @llvm.lifetime.start.p0(i64 32, ptr %62) #8
  %641 = load ptr, ptr %4, align 8, !tbaa !5
  %642 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %641, i32 0, i32 1
  %643 = invoke noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %642)
          to label %644 unwind label %661

644:                                              ; preds = %630
  %645 = load ptr, ptr %65, align 8, !tbaa !33
  %646 = getelementptr inbounds ptr, ptr %645, i64 6
  %647 = load ptr, ptr %646, align 8
  invoke void %647(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %62, ptr noundef nonnull align 8 dereferenceable(3176) %65, i32 noundef %643, i1 noundef zeroext true)
          to label %648 unwind label %661

648:                                              ; preds = %644
  call void @llvm.lifetime.start.p0(i64 32, ptr %63) #8
  %649 = load ptr, ptr %5, align 8, !tbaa !5
  %650 = load ptr, ptr %4, align 8, !tbaa !5
  %651 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %650, i32 0, i32 1
  %652 = invoke noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %651)
          to label %653 unwind label %665

653:                                              ; preds = %648
  %654 = load ptr, ptr %65, align 8, !tbaa !33
  %655 = getelementptr inbounds ptr, ptr %654, i64 38
  %656 = load ptr, ptr %655, align 8
  invoke void %656(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %63, ptr noundef nonnull align 8 dereferenceable(9848) %65, ptr noundef nonnull align 8 dereferenceable(336) %649, i32 noundef %652)
          to label %657 unwind label %665

657:                                              ; preds = %653
  call void @llvm.lifetime.start.p0(i64 32, ptr %64) #8
  %658 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN11spirv_cross12CompilerHLSL19to_resource_bindingB5cxx11ERKNS_12SPIRVariableE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %64, ptr noundef nonnull align 8 dereferenceable(10528) %65, ptr noundef nonnull align 8 dereferenceable(176) %658)
          to label %659 unwind label %669

659:                                              ; preds = %657
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA16_KcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA3_S2_SA_SA_SA_RA2_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %65, ptr noundef nonnull align 1 dereferenceable(16) @.str.392, ptr noundef nonnull align 8 dereferenceable(32) %61, ptr noundef nonnull align 1 dereferenceable(3) @.str.393, ptr noundef nonnull align 8 dereferenceable(32) %62, ptr noundef nonnull align 8 dereferenceable(32) %63, ptr noundef nonnull align 8 dereferenceable(32) %64, ptr noundef nonnull align 1 dereferenceable(2) @.str.53)
          to label %660 unwind label %673

660:                                              ; preds = %659
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %64) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %63) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %62) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %61) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #8
  br label %681

661:                                              ; preds = %644, %630
  %662 = landingpad { ptr, i32 }
          cleanup
  %663 = extractvalue { ptr, i32 } %662, 0
  store ptr %663, ptr %11, align 8
  %664 = extractvalue { ptr, i32 } %662, 1
  store i32 %664, ptr %12, align 4
  br label %679

665:                                              ; preds = %653, %648
  %666 = landingpad { ptr, i32 }
          cleanup
  %667 = extractvalue { ptr, i32 } %666, 0
  store ptr %667, ptr %11, align 8
  %668 = extractvalue { ptr, i32 } %666, 1
  store i32 %668, ptr %12, align 4
  br label %678

669:                                              ; preds = %657
  %670 = landingpad { ptr, i32 }
          cleanup
  %671 = extractvalue { ptr, i32 } %670, 0
  store ptr %671, ptr %11, align 8
  %672 = extractvalue { ptr, i32 } %670, 1
  store i32 %672, ptr %12, align 4
  br label %677

673:                                              ; preds = %659
  %674 = landingpad { ptr, i32 }
          cleanup
  %675 = extractvalue { ptr, i32 } %674, 0
  store ptr %675, ptr %11, align 8
  %676 = extractvalue { ptr, i32 } %674, 1
  store i32 %676, ptr %12, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #8
  br label %677

677:                                              ; preds = %673, %669
  call void @llvm.lifetime.end.p0(i64 32, ptr %64) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #8
  br label %678

678:                                              ; preds = %677, %665
  call void @llvm.lifetime.end.p0(i64 32, ptr %63) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #8
  br label %679

679:                                              ; preds = %678, %661
  call void @llvm.lifetime.end.p0(i64 32, ptr %62) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %61) #8
  br label %680

680:                                              ; preds = %679, %629
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #8
  br label %684

681:                                              ; preds = %660, %562
  br label %682

682:                                              ; preds = %681, %220
  br label %683

683:                                              ; preds = %682, %89
  call void @llvm.lifetime.end.p0(i64 1, ptr %6) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #8
  ret void

684:                                              ; preds = %680, %578, %569, %243
  call void @llvm.lifetime.end.p0(i64 1, ptr %6) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #8
  br label %685

685:                                              ; preds = %684
  %686 = load ptr, ptr %11, align 8
  %687 = load i32, ptr %12, align 4
  %688 = insertvalue { ptr, i32 } poison, ptr %686, 0
  %689 = insertvalue { ptr, i32 } %688, i32 %687, 1
  resume { ptr, i32 } %689

690:                                              ; preds = %607, %384
  unreachable
}

declare void @_ZN11spirv_cross12CompilerGLSL27emit_buffer_block_flattenedERKNS_12SPIRVariableE(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 8 dereferenceable(176)) #3

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZZN11spirv_cross12CompilerHLSL17emit_buffer_blockERKNS_12SPIRVariableEENK3$_0clB5cxx11ERKNS_8SPIRTypeE"(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 8 dereferenceable(336)) #5 align 2

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

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

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

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

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

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

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

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

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

declare void @_ZN11spirv_cross12CompilerGLSL12add_variableERSt13unordered_setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4hashIS7_ESt8equal_toIS7_ESaIS7_EERKSD_RS7_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(32)) #3

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

declare noundef zeroext i1 @_ZN11spirv_cross12CompilerGLSL26buffer_is_packing_standardERKNS_8SPIRTypeENS_21BufferPackingStandardEPjjj(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 8 dereferenceable(336), i32 noundef, ptr noundef, i32 noundef, i32 noundef) #3

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

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

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

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

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

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

declare void @_ZN11spirv_cross12CompilerGLSL23preserve_alias_on_resetEj(ptr noundef nonnull align 8 dereferenceable(9848), i32 noundef) #3

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

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

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

declare void @_ZN11spirv_cross12CompilerGLSL15add_member_nameERNS_8SPIRTypeEj(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 8 dereferenceable(336), i32 noundef) #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11spirv_cross4joinIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_KcRS6_EEES6_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 8 dereferenceable(32)) #1

declare void @_ZN11spirv_cross8Compiler15set_member_nameENS_7TypedIDILNS_5TypesE1EEEjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(3176), i32, i32 noundef, ptr noundef nonnull align 8 dereferenceable(32)) #3

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

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

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

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

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


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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.spirv_cross::Bitset" = type { i64, %"class.std::unordered_set" }
%"class.std::unordered_set" = type { %"class.std::_Hashtable.74" }
%"class.std::_Hashtable.74" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%class.anon.420 = type { ptr }
%"struct.std::__detail::_Node_iterator.421" = type { %"struct.std::__detail::_Node_iterator_base.422" }
%"struct.std::__detail::_Node_iterator_base.422" = type { ptr }
%"class.std::allocator" = type { i8 }

@_ZTIN11spirv_cross13CompilerErrorE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [18 x i8], align 1
@.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.63 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.93 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.154 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.381 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.382 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.383 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.384 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.385 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.386 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.387 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.388 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.389 = external hidden unnamed_addr constant [84 x i8], align 1
@.str.390 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.391 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.392 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.393 = external hidden unnamed_addr constant [3 x i8], align 1

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

; Function Attrs: mustprogress 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 uwtable
declare dso_local noundef i64 @_ZNKSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEE5countERKj(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #1 align 2

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

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

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

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

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

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

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

declare void @_ZN11spirv_cross12CompilerGLSL17add_resource_nameEj(ptr noundef nonnull align 8 dereferenceable(9848), i32 noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(488) ptr @_ZNSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE0EEENS0_4MetaESt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S4_EEEixERSA_(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_cross6BitsetD2Ev(ptr noundef nonnull align 8 dereferenceable(64)) unnamed_addr #6 align 2

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

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

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

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

; 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: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK11spirv_cross10VectorViewIjE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #2 align 2

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

declare void @_ZN11spirv_cross8ParsedIR20sanitize_underscoresERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #3

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

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

declare void @_ZN11spirv_cross12CompilerGLSL11emit_structERNS_8SPIRTypeE(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 8 dereferenceable(336)) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11spirv_cross12CompilerHLSL17emit_buffer_blockERKNS_12SPIRVariableE(ptr noundef nonnull align 8 dereferenceable(10528) %0, ptr noundef nonnull align 8 dereferenceable(176) %1) unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca i32, align 4
  %4 = alloca %"class.spirv_cross::Bitset", align 8
  %5 = alloca i32, align 4
  %6 = alloca %class.anon.420, align 8
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca ptr, align 8
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca ptr, align 8
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca i32, align 4
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca %"struct.std::__detail::_Node_iterator.421", align 8
  %18 = alloca %"struct.std::__detail::_Node_iterator.421", align 8
  %19 = alloca %"struct.std::__detail::_Node_iterator.421", align 8
  %20 = alloca %"struct.std::__detail::_Node_iterator.421", align 8
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  %23 = alloca i32, align 4
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca i32, align 4
  %27 = alloca %"class.std::__cxx11::basic_string", align 8
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  %29 = alloca %"class.std::__cxx11::basic_string", align 8
  %30 = alloca %"class.std::__cxx11::basic_string", align 8
  %31 = alloca %"class.std::__cxx11::basic_string", align 8
  %32 = alloca %"class.std::__cxx11::basic_string", align 8
  %33 = alloca %"class.std::allocator", align 1
  %34 = alloca i32, align 4
  %35 = alloca %"class.std::__cxx11::basic_string", align 8
  %36 = alloca %"class.std::__cxx11::basic_string", align 8
  %37 = alloca %"class.std::__cxx11::basic_string", align 8
  %38 = alloca %"class.std::__cxx11::basic_string", align 8
  %39 = alloca %"class.std::__cxx11::basic_string", align 8
  %40 = alloca %"class.std::__cxx11::basic_string", align 8
  %41 = alloca %"class.std::__cxx11::basic_string", align 8
  %42 = getelementptr inbounds i8, ptr %1, i64 12
  %43 = tail call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE1EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %42)
  %44 = tail call noundef nonnull align 8 dereferenceable(336) ptr @_ZN11spirv_cross8Compiler3getINS_8SPIRTypeEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %43)
  %45 = getelementptr inbounds i8, ptr %1, i64 16
  %46 = load i32, ptr %45, align 8, !tbaa !5
  %47 = icmp eq i32 %46, 12
  br i1 %47, label %51, label %48

48:                                               ; preds = %2
  %49 = getelementptr inbounds i8, ptr %44, i64 8
  %.sroa.028.0.copyload = load i32, ptr %49, align 8, !tbaa !25
  %50 = tail call noundef zeroext i1 @_ZNK11spirv_cross8Compiler14has_decorationENS_7TypedIDILNS_5TypesE0EEEN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 %.sroa.028.0.copyload, i32 noundef 3)
  br label %51

51:                                               ; preds = %48, %2
  %52 = phi i1 [ true, %2 ], [ %50, %48 ]
  %53 = getelementptr inbounds i8, ptr %0, i64 8536
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3) #7
  %54 = getelementptr inbounds i8, ptr %1, i64 8
  %55 = tail call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %54)
  store i32 %55, ptr %3, align 4, !tbaa !25
  %56 = call noundef i64 @_ZNKSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEE5countERKj(ptr noundef nonnull align 8 dereferenceable(56) %53, ptr noundef nonnull align 4 dereferenceable(4) %3)
  %.not = icmp eq i64 %56, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #7
  br i1 %.not, label %58, label %57

57:                                               ; preds = %51
  call void @_ZN11spirv_cross12CompilerGLSL27emit_buffer_block_flattenedERKNS_12SPIRVariableE(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(176) %1)
  br label %361

58:                                               ; preds = %51
  br i1 %52, label %59, label %133

59:                                               ; preds = %58
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %4) #7
  %60 = getelementptr inbounds i8, ptr %0, i64 8
  call void @_ZNK11spirv_cross8ParsedIR22get_buffer_block_flagsERKNS_12SPIRVariableE(ptr dead_on_unwind nonnull writable sret(%"class.spirv_cross::Bitset") align 8 %4, ptr noundef nonnull align 8 dereferenceable(1920) %60, ptr noundef nonnull align 8 dereferenceable(176) %1)
  %61 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %4, i32 noundef 24)
          to label %62 unwind label %88

62:                                               ; preds = %59
  br i1 %61, label %63, label %67

63:                                               ; preds = %62
  %.sroa.022.0.copyload = load i32, ptr %54, align 8, !tbaa !25
  %64 = invoke noundef zeroext i1 @_ZNK11spirv_cross12CompilerHLSL35is_hlsl_force_storage_buffer_as_uavENS_7TypedIDILNS_5TypesE0EEE(ptr noundef nonnull align 8 dereferenceable(10528) %0, i32 %.sroa.022.0.copyload)
          to label %65 unwind label %88

65:                                               ; preds = %63
  %66 = xor i1 %64, true
  br label %67

67:                                               ; preds = %65, %62
  %68 = phi i1 [ false, %62 ], [ %66, %65 ]
  %69 = invoke noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %4, i32 noundef 23)
          to label %70 unwind label %90

70:                                               ; preds = %67
  %71 = xor i1 %68, true
  %72 = and i1 %69, %71
  %73 = getelementptr inbounds i8, ptr %0, i64 3056
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #7
  %74 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %54)
  store i32 %74, ptr %5, align 4, !tbaa !25
  %75 = invoke noundef i64 @_ZNKSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEE5countERKj(ptr noundef nonnull align 8 dereferenceable(56) %73, ptr noundef nonnull align 4 dereferenceable(4) %5)
          to label %76 unwind label %92

76:                                               ; preds = %70
  %.not151 = icmp eq i64 %75, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #7
  store ptr %0, ptr %6, align 8, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #7
  %77 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %54)
  %78 = load ptr, ptr %0, align 8, !tbaa !28
  %79 = getelementptr inbounds i8, ptr %78, i64 296
  %80 = load ptr, ptr %79, align 8
  %81 = invoke noundef zeroext i1 %80(ptr noundef nonnull align 8 dereferenceable(10528) %0, i32 noundef %77)
          to label %82 unwind label %94

82:                                               ; preds = %76
  br i1 %81, label %83, label %101

83:                                               ; preds = %82
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #7
  %84 = select i1 %.not151, ptr @.str.10, ptr @.str.15
  %spec.select = select i1 %68, ptr @.str.9, ptr %84
  store ptr %spec.select, ptr %9, align 8, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #7
  invoke void @"_ZZN11spirv_cross12CompilerHLSL17emit_buffer_blockERKNS_12SPIRVariableEENK3$_0clB5cxx11ERKNS_8SPIRTypeE"(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %10, ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(336) %44)
          to label %85 unwind label %96

85:                                               ; preds = %83
  invoke void @_ZN11spirv_cross4joinIJPKcRA18_S1_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_S1_EEESA_DpOT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %8, ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 1 dereferenceable(18) @.str.381, ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull align 1 dereferenceable(2) @.str.7)
          to label %86 unwind label %98

86:                                               ; preds = %85
  %87 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull align 8 dereferenceable(32) %8) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %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 @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #7
  br label %104

88:                                               ; preds = %63, %59
  %89 = landingpad { ptr, i32 }
          cleanup
  br label %132

90:                                               ; preds = %67
  %91 = landingpad { ptr, i32 }
          cleanup
  br label %132

92:                                               ; preds = %70
  %93 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #7
  br label %132

94:                                               ; preds = %104, %101, %76
  %95 = landingpad { ptr, i32 }
          cleanup
  br label %131

96:                                               ; preds = %83
  %97 = landingpad { ptr, i32 }
          cleanup
  br label %100

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

100:                                              ; preds = %98, %96
  %.pn152 = phi { ptr, i32 } [ %99, %98 ], [ %97, %96 ]
  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 @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #7
  br label %131

101:                                              ; preds = %82
  %102 = select i1 %.not151, ptr @.str.154, ptr @.str.382
  %spec.select163 = select i1 %68, ptr @.str.93, ptr %102
  %103 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull %spec.select163)
          to label %104 unwind label %94

104:                                              ; preds = %101, %86
  %105 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %54)
  invoke void @_ZN11spirv_cross12CompilerGLSL17add_resource_nameEj(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %105)
          to label %106 unwind label %94

106:                                              ; preds = %104
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #7
  %107 = select i1 %72, ptr @.str.383, ptr @.str.9
  store ptr %107, ptr %11, align 8, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #7
  %108 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %54)
  %109 = load ptr, ptr %0, align 8, !tbaa !28
  %110 = getelementptr inbounds i8, ptr %109, i64 48
  %111 = load ptr, ptr %110, align 8
  invoke void %111(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %12, ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %108, i1 noundef zeroext true)
          to label %112 unwind label %120

112:                                              ; preds = %106
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #7
  %113 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %54)
  %114 = load ptr, ptr %0, align 8, !tbaa !28
  %115 = getelementptr inbounds i8, ptr %114, i64 304
  %116 = load ptr, ptr %115, align 8
  invoke void %116(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %13, ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(336) %44, i32 noundef %113)
          to label %117 unwind label %122

117:                                              ; preds = %112
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14) #7
  invoke void @_ZN11spirv_cross12CompilerHLSL19to_resource_bindingB5cxx11ERKNS_12SPIRVariableE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %14, ptr noundef nonnull align 8 dereferenceable(10528) %0, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %118 unwind label %124

118:                                              ; preds = %117
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJPKcRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_S2_S9_S9_S9_SC_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull align 1 dereferenceable(2) @.str.63, ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull align 1 dereferenceable(2) @.str.53)
          to label %119 unwind label %126

119:                                              ; preds = %118
  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 @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #7
  call void @_ZN11spirv_cross6BitsetD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %4) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %4) #7
  br label %361

120:                                              ; preds = %106
  %121 = landingpad { ptr, i32 }
          cleanup
  br label %130

122:                                              ; preds = %112
  %123 = landingpad { ptr, i32 }
          cleanup
  br label %129

124:                                              ; preds = %117
  %125 = landingpad { ptr, i32 }
          cleanup
  br label %128

126:                                              ; preds = %118
  %127 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #7
  br label %128

128:                                              ; preds = %126, %124
  %.pn154 = phi { ptr, i32 } [ %127, %126 ], [ %125, %124 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  br label %129

129:                                              ; preds = %128, %122
  %.pn154.pn = phi { ptr, i32 } [ %.pn154, %128 ], [ %123, %122 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #7
  br label %130

130:                                              ; preds = %129, %120
  %.pn154.pn.pn = phi { ptr, i32 } [ %.pn154.pn, %129 ], [ %121, %120 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #7
  br label %131

131:                                              ; preds = %130, %100, %94
  %.pn154.pn.pn.pn = phi { ptr, i32 } [ %.pn154.pn.pn, %130 ], [ %95, %94 ], [ %.pn152, %100 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #7
  br label %132

132:                                              ; preds = %90, %131, %92, %88
  %.pn154.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %89, %88 ], [ %91, %90 ], [ %.pn154.pn.pn.pn, %131 ], [ %93, %92 ]
  call void @_ZN11spirv_cross6BitsetD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %4) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %4) #7
  br label %362

133:                                              ; preds = %58
  %134 = getelementptr inbounds i8, ptr %44, i64 32
  %135 = call noundef zeroext i1 @_ZNK11spirv_cross10VectorViewIjE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %134) #7
  br i1 %135, label %136, label %297

136:                                              ; preds = %133
  %137 = getelementptr inbounds i8, ptr %0, i64 8592
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #7
  %138 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %54)
  store i32 %138, ptr %15, align 4, !tbaa !25
  %139 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt13unordered_mapIjbSt4hashIjESt8equal_toIjESaISt4pairIKjbEEEixEOj(ptr noundef nonnull align 8 dereferenceable(56) %137, ptr noundef nonnull align 4 dereferenceable(4) %15)
  store i8 0, ptr %139, align 1, !tbaa !31
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %16) #7
  %140 = getelementptr inbounds i8, ptr %44, i64 8
  %141 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %140)
  %142 = load ptr, ptr %0, align 8, !tbaa !28
  %143 = getelementptr inbounds i8, ptr %142, i64 48
  %144 = load ptr, ptr %143, align 8
  call void %144(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %16, ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %141, i1 noundef zeroext false)
  %145 = getelementptr inbounds i8, ptr %0, i64 256
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #7
  %146 = invoke noundef nonnull align 8 dereferenceable(488) ptr @_ZNSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE0EEENS0_4MetaESt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S4_EEEixERSA_(ptr noundef nonnull align 8 dereferenceable(56) %145, ptr noundef nonnull align 4 dereferenceable(4) %140)
          to label %147 unwind label %170

147:                                              ; preds = %136
  %148 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %146) #7
  br i1 %148, label %.critedge, label %149

149:                                              ; preds = %147
  %150 = getelementptr inbounds i8, ptr %0, i64 7736
  %151 = invoke ptr @_ZNSt13unordered_setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4hashIS5_ESt8equal_toIS5_ESaIS5_EE4findERKS5_(ptr noundef nonnull align 8 dereferenceable(56) %150, ptr noundef nonnull align 8 dereferenceable(32) %16)
          to label %152 unwind label %172

152:                                              ; preds = %149
  store ptr %151, ptr %17, align 8
  %153 = call ptr @_ZSt3endISt13unordered_setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4hashIS6_ESt8equal_toIS6_ESaIS6_EEEDTcldtfp_3endEERT_(ptr noundef nonnull align 8 dereferenceable(56) %150)
  store ptr %153, ptr %18, align 8
  %154 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELb1EEES9_(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %18) #7
  br i1 %154, label %.critedge, label %155

155:                                              ; preds = %152
  %156 = getelementptr inbounds i8, ptr %0, i64 8016
  %157 = invoke ptr @_ZNSt13unordered_setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4hashIS5_ESt8equal_toIS5_ESaIS5_EE4findERKS5_(ptr noundef nonnull align 8 dereferenceable(56) %156, ptr noundef nonnull align 8 dereferenceable(32) %16)
          to label %158 unwind label %174

158:                                              ; preds = %155
  store ptr %157, ptr %19, align 8
  %159 = call ptr @_ZSt3endISt13unordered_setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4hashIS6_ESt8equal_toIS6_ESaIS6_EEEDTcldtfp_3endEERT_(ptr noundef nonnull align 8 dereferenceable(56) %156)
  store ptr %159, ptr %20, align 8
  %160 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELb1EEES9_(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(8) %20) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #7
  br i1 %160, label %161, label %182

.critedge:                                        ; preds = %147, %152
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #7
  br label %161

161:                                              ; preds = %.critedge, %158
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %21) #7
  %162 = invoke i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvNS0_IXT_EEEILS1_2EEEv(ptr noundef nonnull align 4 dereferenceable(4) %54)
          to label %163 unwind label %177

163:                                              ; preds = %161
  %164 = load ptr, ptr %0, align 8, !tbaa !28
  %165 = getelementptr inbounds i8, ptr %164, i64 32
  %166 = load ptr, ptr %165, align 8
  invoke void %166(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %21, ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 %162)
          to label %167 unwind label %177

167:                                              ; preds = %163
  %168 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull align 8 dereferenceable(32) %21)
          to label %169 unwind label %179

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

170:                                              ; preds = %182, %136
  %171 = landingpad { ptr, i32 }
          cleanup
  br label %296

172:                                              ; preds = %149
  %173 = landingpad { ptr, i32 }
          cleanup
  br label %176

174:                                              ; preds = %155
  %175 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #7
  br label %176

176:                                              ; preds = %174, %172
  %.pn129 = phi { ptr, i32 } [ %175, %174 ], [ %173, %172 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #7
  br label %296

177:                                              ; preds = %163, %161
  %178 = landingpad { ptr, i32 }
          cleanup
  br label %181

179:                                              ; preds = %167
  %180 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #7
  br label %181

181:                                              ; preds = %179, %177
  %.pn131 = phi { ptr, i32 } [ %180, %179 ], [ %178, %177 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #7
  br label %296

182:                                              ; preds = %169, %158
  %183 = getelementptr inbounds i8, ptr %0, i64 8016
  %184 = getelementptr inbounds i8, ptr %0, i64 7736
  invoke void @_ZN11spirv_cross12CompilerGLSL12add_variableERSt13unordered_setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4hashIS7_ESt8equal_toIS7_ESaIS7_EERKSD_RS7_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(56) %183, ptr noundef nonnull align 8 dereferenceable(56) %184, ptr noundef nonnull align 8 dereferenceable(32) %16)
          to label %185 unwind label %170

185:                                              ; preds = %182
  %186 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %16) #7
  br i1 %186, label %187, label %196

187:                                              ; preds = %185
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %22) #7
  %188 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE1EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %42)
  %189 = invoke noundef nonnull align 8 dereferenceable(336) ptr @_ZN11spirv_cross8Compiler3getINS_8SPIRTypeEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %188)
          to label %190 unwind label %194

190:                                              ; preds = %187
  %191 = getelementptr inbounds i8, ptr %189, i64 8
  invoke void @_ZN11spirv_cross4joinIJRA2_KcRNS_7TypedIDILNS_5TypesE0EEES3_RKS6_EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %22, ptr noundef nonnull align 1 dereferenceable(2) @.str.62, ptr noundef nonnull align 4 dereferenceable(4) %191, ptr noundef nonnull align 1 dereferenceable(2) @.str.62, ptr noundef nonnull align 4 dereferenceable(4) %54)
          to label %192 unwind label %194

192:                                              ; preds = %190
  %193 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull align 8 dereferenceable(32) %22) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #7
  br label %196

194:                                              ; preds = %190, %187
  %195 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #7
  br label %296

196:                                              ; preds = %192, %185
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #7
  store i32 0, ptr %23, align 4, !tbaa !25
  %197 = invoke noundef zeroext i1 @_ZN11spirv_cross12CompilerGLSL26buffer_is_packing_standardERKNS_8SPIRTypeENS_21BufferPackingStandardEPjjj(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(336) %44, i32 noundef 5, ptr noundef nonnull %23, i32 noundef 0, i32 noundef -1)
          to label %198 unwind label %201

198:                                              ; preds = %196
  br i1 %197, label %199, label %203

199:                                              ; preds = %198
  %200 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %140)
  invoke void @_ZN11spirv_cross8Compiler23set_extended_decorationEjNS_19ExtendedDecorationsEj(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %200, i32 noundef 10, i32 noundef 0)
          to label %214 unwind label %201

201:                                              ; preds = %229, %225, %222, %214, %199, %196
  %202 = landingpad { ptr, i32 }
          cleanup
  br label %295

203:                                              ; preds = %198
  %204 = call ptr @__cxa_allocate_exception(i64 16) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %24) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %25) #7
  %205 = load i32, ptr %23, align 4, !tbaa !25
  invoke void @_ZN11spirv_cross12CompilerGLSL14to_member_nameB5cxx11ERKNS_8SPIRTypeEj(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) %44, i32 noundef %205)
          to label %206 unwind label %.thread

206:                                              ; preds = %203
  invoke void @_ZN11spirv_cross4joinIJRA12_KcRKNS_7TypedIDILNS_5TypesE0EEERA9_S1_RNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA17_S1_RjSA_SG_RA69_S1_EEESG_DpOT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %24, ptr noundef nonnull align 1 dereferenceable(12) @.str.384, ptr noundef nonnull align 4 dereferenceable(4) %54, ptr noundef nonnull align 1 dereferenceable(9) @.str.385, ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull align 1 dereferenceable(17) @.str.386, ptr noundef nonnull align 4 dereferenceable(4) %23, ptr noundef nonnull align 1 dereferenceable(9) @.str.385, ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull align 1 dereferenceable(69) @.str.387)
          to label %207 unwind label %.thread167

207:                                              ; preds = %206
  invoke void @_ZN11spirv_cross13CompilerErrorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16) %204, ptr noundef nonnull align 8 dereferenceable(32) %24)
          to label %208 unwind label %211

208:                                              ; preds = %207
  invoke void @__cxa_throw(ptr nonnull %204, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #8
          to label %363 unwind label %211

.thread:                                          ; preds = %203
  %209 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #7
  br label %213

.thread167:                                       ; preds = %206
  %210 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #7
  br label %213

211:                                              ; preds = %207, %208
  %.0116 = phi i1 [ false, %208 ], [ true, %207 ]
  %212 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #7
  br i1 %.0116, label %213, label %295

213:                                              ; preds = %.thread167, %.thread, %211
  %.pn133.pn166 = phi { ptr, i32 } [ %209, %.thread ], [ %212, %211 ], [ %210, %.thread167 ]
  call void @__cxa_free_exception(ptr %204) #7
  br label %295

214:                                              ; preds = %199
  %215 = invoke { ptr, i8 } @_ZNSt13unordered_setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4hashIS5_ESt8equal_toIS5_ESaIS5_EE6insertERKS5_(ptr noundef nonnull align 8 dereferenceable(56) %183, ptr noundef nonnull align 8 dereferenceable(32) %16)
          to label %216 unwind label %201

216:                                              ; preds = %214
  %217 = getelementptr inbounds i8, ptr %0, i64 3120
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %26) #7
  %218 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %54)
  store i32 %218, ptr %26, align 4, !tbaa !25
  %219 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt13unordered_mapIjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4hashIjESt8equal_toIjESaISt4pairIKjS5_EEEixEOj(ptr noundef nonnull align 8 dereferenceable(56) %217, ptr noundef nonnull align 4 dereferenceable(4) %26)
          to label %220 unwind label %234

220:                                              ; preds = %216
  %221 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %219, ptr noundef nonnull align 8 dereferenceable(32) %16)
          to label %222 unwind label %234

222:                                              ; preds = %220
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #7
  %223 = getelementptr inbounds i8, ptr %44, i64 280
  call void @_ZNSt13unordered_setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4hashIS5_ESt8equal_toIS5_ESaIS5_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(56) %223) #7
  %224 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %54)
  invoke void @_ZN11spirv_cross12CompilerGLSL23preserve_alias_on_resetEj(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %224)
          to label %225 unwind label %201

225:                                              ; preds = %222
  %226 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %54)
  invoke void @_ZN11spirv_cross12CompilerGLSL17add_resource_nameEj(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %226)
          to label %227 unwind label %201

227:                                              ; preds = %225
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %27) #7
  invoke void @_ZN11spirv_cross12CompilerHLSL19to_resource_bindingB5cxx11ERKNS_12SPIRVariableE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %27, ptr noundef nonnull align 8 dereferenceable(10528) %0, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %228 unwind label %236

228:                                              ; preds = %227
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA9_KcRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(9) @.str.388, ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull align 8 dereferenceable(32) %27)
          to label %229 unwind label %238

229:                                              ; preds = %228
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #7
  invoke void @_ZN11spirv_cross12CompilerGLSL11begin_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848) %0)
          to label %230 unwind label %201

230:                                              ; preds = %229
  %231 = getelementptr inbounds i8, ptr %44, i64 136
  %232 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_7TypedIDILNS_5TypesE1EEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %231) #7
  %233 = call noundef ptr @_ZN11spirv_cross10VectorViewINS_7TypedIDILNS_5TypesE1EEEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %231) #7
  %.not138177 = icmp eq ptr %232, %233
  br i1 %.not138177, label %._crit_edge, label %.lr.ph

._crit_edge:                                      ; preds = %267, %230
  invoke void @_ZN11spirv_cross12CompilerGLSL14end_scope_declEv(ptr noundef nonnull align 8 dereferenceable(9848) %0)
          to label %291 unwind label %293

234:                                              ; preds = %220, %216
  %235 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #7
  br label %295

236:                                              ; preds = %227
  %237 = landingpad { ptr, i32 }
          cleanup
  br label %240

238:                                              ; preds = %228
  %239 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #7
  br label %240

240:                                              ; preds = %238, %236
  %.pn136 = phi { ptr, i32 } [ %239, %238 ], [ %237, %236 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #7
  br label %295

.lr.ph:                                           ; preds = %230, %267
  %.0119179 = phi i32 [ %268, %267 ], [ 0, %230 ]
  %.0120178 = phi ptr [ %269, %267 ], [ %232, %230 ]
  invoke void @_ZN11spirv_cross12CompilerGLSL15add_member_nameERNS_8SPIRTypeEj(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(336) %44, i32 noundef %.0119179)
          to label %241 unwind label %270

241:                                              ; preds = %.lr.ph
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %28) #7
  %242 = invoke i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvNS0_IXT_EEEILS1_1EEEv(ptr noundef nonnull align 4 dereferenceable(4) %140)
          to label %243 unwind label %272

243:                                              ; preds = %241
  %244 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK11spirv_cross8Compiler15get_member_nameB5cxx11ENS_7TypedIDILNS_5TypesE1EEEj(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 %242, i32 noundef %.0119179)
          to label %245 unwind label %272

245:                                              ; preds = %243
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef nonnull align 8 dereferenceable(32) %244)
          to label %246 unwind label %272

246:                                              ; preds = %245
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %29) #7
  invoke void @_ZN11spirv_cross12CompilerGLSL14to_member_nameB5cxx11ERKNS_8SPIRTypeEj(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %29, ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(336) %44, i32 noundef %.0119179)
          to label %247 unwind label %274

247:                                              ; preds = %246
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %30) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %31) #7
  %248 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %54)
  %249 = load ptr, ptr %0, align 8, !tbaa !28
  %250 = getelementptr inbounds i8, ptr %249, i64 48
  %251 = load ptr, ptr %250, align 8
  invoke void %251(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %31, ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %248, i1 noundef zeroext true)
          to label %252 unwind label %276

252:                                              ; preds = %247
  invoke void @_ZN11spirv_cross4joinIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_KcRS6_EEES6_DpOT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %30, ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef nonnull align 1 dereferenceable(2) @.str.62, ptr noundef nonnull align 8 dereferenceable(32) %29)
          to label %253 unwind label %278

253:                                              ; preds = %252
  %254 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef nonnull align 8 dereferenceable(32) %30) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #7
  invoke void @_ZN11spirv_cross8ParsedIR20sanitize_underscoresERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %29)
          to label %255 unwind label %281

255:                                              ; preds = %253
  %256 = invoke i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvNS0_IXT_EEEILS1_1EEEv(ptr noundef nonnull align 4 dereferenceable(4) %140)
          to label %257 unwind label %281

257:                                              ; preds = %255
  invoke void @_ZN11spirv_cross8Compiler15set_member_nameENS_7TypedIDILNS_5TypesE1EEEjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 %256, i32 noundef %.0119179, ptr noundef nonnull align 8 dereferenceable(32) %29)
          to label %258 unwind label %281

258:                                              ; preds = %257
  %259 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE1EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %.0120178)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %32) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %33) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef nonnull @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %33)
          to label %260 unwind label %283

260:                                              ; preds = %258
  %261 = load ptr, ptr %0, align 8, !tbaa !28
  %262 = getelementptr inbounds i8, ptr %261, i64 168
  %263 = load ptr, ptr %262, align 8
  invoke void %263(ptr noundef nonnull align 8 dereferenceable(10528) %0, ptr noundef nonnull align 8 dereferenceable(336) %44, i32 noundef %259, i32 noundef %.0119179, ptr noundef nonnull align 8 dereferenceable(32) %32, i32 noundef 0)
          to label %264 unwind label %285

264:                                              ; preds = %260
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %33) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #7
  %265 = invoke i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvNS0_IXT_EEEILS1_1EEEv(ptr noundef nonnull align 4 dereferenceable(4) %140)
          to label %266 unwind label %281

266:                                              ; preds = %264
  invoke void @_ZN11spirv_cross8Compiler15set_member_nameENS_7TypedIDILNS_5TypesE1EEEjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 %265, i32 noundef %.0119179, ptr noundef nonnull align 8 dereferenceable(32) %28)
          to label %267 unwind label %281

267:                                              ; preds = %266
  %268 = add i32 %.0119179, 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %29) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #7
  %269 = getelementptr inbounds i8, ptr %.0120178, i64 4
  %.not138 = icmp eq ptr %269, %233
  br i1 %.not138, label %._crit_edge, label %.lr.ph

270:                                              ; preds = %.lr.ph
  %271 = landingpad { ptr, i32 }
          cleanup
  br label %295

272:                                              ; preds = %245, %243, %241
  %273 = landingpad { ptr, i32 }
          cleanup
  br label %290

274:                                              ; preds = %246
  %275 = landingpad { ptr, i32 }
          cleanup
  br label %289

276:                                              ; preds = %247
  %277 = landingpad { ptr, i32 }
          cleanup
  br label %280

278:                                              ; preds = %252
  %279 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #7
  br label %280

280:                                              ; preds = %278, %276
  %.pn139 = phi { ptr, i32 } [ %279, %278 ], [ %277, %276 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #7
  br label %288

281:                                              ; preds = %266, %264, %257, %255, %253
  %282 = landingpad { ptr, i32 }
          cleanup
  br label %288

283:                                              ; preds = %258
  %284 = landingpad { ptr, i32 }
          cleanup
  br label %287

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

287:                                              ; preds = %285, %283
  %.pn141 = phi { ptr, i32 } [ %286, %285 ], [ %284, %283 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %33) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #7
  br label %288

288:                                              ; preds = %287, %281, %280
  %.pn143 = phi { ptr, i32 } [ %282, %281 ], [ %.pn141, %287 ], [ %.pn139, %280 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #7
  br label %289

289:                                              ; preds = %288, %274
  %.pn143.pn = phi { ptr, i32 } [ %.pn143, %288 ], [ %275, %274 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %29) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #7
  br label %290

290:                                              ; preds = %289, %272
  %.pn143.pn.pn = phi { ptr, i32 } [ %.pn143.pn, %289 ], [ %273, %272 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #7
  br label %295

291:                                              ; preds = %._crit_edge
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA1_KcEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(1) @.str.9)
          to label %292 unwind label %293

292:                                              ; preds = %291
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #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 %361

293:                                              ; preds = %291, %._crit_edge
  %294 = landingpad { ptr, i32 }
          cleanup
  br label %295

295:                                              ; preds = %293, %290, %270, %211, %213, %240, %234, %201
  %.pn143.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %202, %201 ], [ %.pn136, %240 ], [ %235, %234 ], [ %.pn133.pn166, %213 ], [ %212, %211 ], [ %294, %293 ], [ %.pn143.pn.pn, %290 ], [ %271, %270 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #7
  br label %296

296:                                              ; preds = %295, %194, %181, %176, %170
  %.pn143.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn143.pn.pn.pn.pn.pn, %295 ], [ %195, %194 ], [ %171, %170 ], [ %.pn131, %181 ], [ %.pn129, %176 ]
  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 %362

297:                                              ; preds = %133
  %298 = getelementptr inbounds i8, ptr %0, i64 9848
  %299 = load i32, ptr %298, align 8, !tbaa !32
  %300 = icmp ult i32 %299, 51
  br i1 %300, label %301, label %306

301:                                              ; preds = %297
  %302 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %302, ptr noundef nonnull @.str.389)
          to label %303 unwind label %304

303:                                              ; preds = %301
  call void @__cxa_throw(ptr nonnull %302, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #8
  unreachable

304:                                              ; preds = %301
  %305 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %302) #7
  br label %362

306:                                              ; preds = %297
  %307 = getelementptr inbounds i8, ptr %44, i64 8
  %308 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %307)
  call void @_ZN11spirv_cross12CompilerGLSL17add_resource_nameEj(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %308)
  %309 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %54)
  call void @_ZN11spirv_cross12CompilerGLSL17add_resource_nameEj(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %309)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %34) #7
  store i32 0, ptr %34, align 4, !tbaa !25
  %310 = call noundef zeroext i1 @_ZN11spirv_cross12CompilerGLSL26buffer_is_packing_standardERKNS_8SPIRTypeENS_21BufferPackingStandardEPjjj(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(336) %44, i32 noundef 4, ptr noundef nonnull %34, i32 noundef 0, i32 noundef -1)
  br i1 %310, label %330, label %311

311:                                              ; preds = %306
  %312 = call ptr @__cxa_allocate_exception(i64 16) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %35) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %36) #7
  %313 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %307)
  %314 = load ptr, ptr %0, align 8, !tbaa !28
  %315 = getelementptr inbounds i8, ptr %314, i64 48
  %316 = load ptr, ptr %315, align 8
  invoke void %316(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %36, ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %313, i1 noundef zeroext true)
          to label %317 unwind label %.thread170

317:                                              ; preds = %311
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %37) #7
  %318 = load i32, ptr %34, align 4, !tbaa !25
  invoke void @_ZN11spirv_cross12CompilerGLSL14to_member_nameB5cxx11ERKNS_8SPIRTypeEj(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %37, ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(336) %44, i32 noundef %318)
          to label %319 unwind label %.thread174

319:                                              ; preds = %317
  invoke void @_ZN11spirv_cross4joinIJRA27_KcRKNS_7TypedIDILNS_5TypesE0EEERA9_S1_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA17_S1_RjSA_SG_RA54_S1_EEESG_DpOT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %35, ptr noundef nonnull align 1 dereferenceable(27) @.str.390, ptr noundef nonnull align 4 dereferenceable(4) %54, ptr noundef nonnull align 1 dereferenceable(9) @.str.385, ptr noundef nonnull align 8 dereferenceable(32) %36, ptr noundef nonnull align 1 dereferenceable(17) @.str.386, ptr noundef nonnull align 4 dereferenceable(4) %34, ptr noundef nonnull align 1 dereferenceable(9) @.str.385, ptr noundef nonnull align 8 dereferenceable(32) %37, ptr noundef nonnull align 1 dereferenceable(54) @.str.391)
          to label %320 unwind label %324

320:                                              ; preds = %319
  invoke void @_ZN11spirv_cross13CompilerErrorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16) %312, ptr noundef nonnull align 8 dereferenceable(32) %35)
          to label %321 unwind label %326

321:                                              ; preds = %320
  invoke void @__cxa_throw(ptr nonnull %312, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #8
          to label %363 unwind label %326

.thread170:                                       ; preds = %311
  %322 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %36) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %35) #7
  br label %329

.thread174:                                       ; preds = %317
  %323 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %37) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %36) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %35) #7
  br label %329

324:                                              ; preds = %319
  %325 = landingpad { ptr, i32 }
          cleanup
  br label %328

326:                                              ; preds = %321, %320
  %.0 = phi i1 [ false, %321 ], [ true, %320 ]
  %327 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #7
  br label %328

328:                                              ; preds = %324, %326
  %.pn = phi { ptr, i32 } [ %327, %326 ], [ %325, %324 ]
  %.1 = phi i1 [ %.0, %326 ], [ true, %324 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %37) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %36) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %35) #7
  br i1 %.1, label %329, label %360

329:                                              ; preds = %.thread174, %.thread170, %328
  %.pn.pn.pn173 = phi { ptr, i32 } [ %322, %.thread170 ], [ %.pn, %328 ], [ %323, %.thread174 ]
  call void @__cxa_free_exception(ptr %312) #7
  br label %360

330:                                              ; preds = %306
  %331 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %307)
  %332 = call noundef nonnull align 8 dereferenceable(336) ptr @_ZN11spirv_cross8Compiler3getINS_8SPIRTypeEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %331)
  call void @_ZN11spirv_cross12CompilerGLSL11emit_structERNS_8SPIRTypeE(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(336) %332)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %38) #7
  %333 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %307)
  %334 = load ptr, ptr %0, align 8, !tbaa !28
  %335 = getelementptr inbounds i8, ptr %334, i64 48
  %336 = load ptr, ptr %335, align 8
  call void %336(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %38, ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %333, i1 noundef zeroext true)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %39) #7
  %337 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %54)
  %338 = load ptr, ptr %0, align 8, !tbaa !28
  %339 = getelementptr inbounds i8, ptr %338, i64 48
  %340 = load ptr, ptr %339, align 8
  invoke void %340(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %39, ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %337, i1 noundef zeroext true)
          to label %341 unwind label %349

341:                                              ; preds = %330
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %40) #7
  %342 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %54)
  %343 = load ptr, ptr %0, align 8, !tbaa !28
  %344 = getelementptr inbounds i8, ptr %343, i64 304
  %345 = load ptr, ptr %344, align 8
  invoke void %345(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %40, ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(336) %44, i32 noundef %342)
          to label %346 unwind label %351

346:                                              ; preds = %341
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %41) #7
  invoke void @_ZN11spirv_cross12CompilerHLSL19to_resource_bindingB5cxx11ERKNS_12SPIRVariableE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %41, ptr noundef nonnull align 8 dereferenceable(10528) %0, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %347 unwind label %353

347:                                              ; preds = %346
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA16_KcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA3_S2_SA_SA_SA_RA2_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(16) @.str.392, ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef nonnull align 1 dereferenceable(3) @.str.393, ptr noundef nonnull align 8 dereferenceable(32) %39, ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef nonnull align 8 dereferenceable(32) %41, ptr noundef nonnull align 1 dereferenceable(2) @.str.53)
          to label %348 unwind label %355

348:                                              ; preds = %347
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %41) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %40) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %39) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %38) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %34) #7
  br label %361

349:                                              ; preds = %330
  %350 = landingpad { ptr, i32 }
          cleanup
  br label %359

351:                                              ; preds = %341
  %352 = landingpad { ptr, i32 }
          cleanup
  br label %358

353:                                              ; preds = %346
  %354 = landingpad { ptr, i32 }
          cleanup
  br label %357

355:                                              ; preds = %347
  %356 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #7
  br label %357

357:                                              ; preds = %355, %353
  %.pn124 = phi { ptr, i32 } [ %356, %355 ], [ %354, %353 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %41) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #7
  br label %358

358:                                              ; preds = %357, %351
  %.pn124.pn = phi { ptr, i32 } [ %.pn124, %357 ], [ %352, %351 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %40) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #7
  br label %359

359:                                              ; preds = %358, %349
  %.pn124.pn.pn = phi { ptr, i32 } [ %.pn124.pn, %358 ], [ %350, %349 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %39) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %38) #7
  br label %360

360:                                              ; preds = %328, %329, %359
  %.pn124.pn.pn.pn = phi { ptr, i32 } [ %.pn124.pn.pn, %359 ], [ %.pn.pn.pn173, %329 ], [ %.pn, %328 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %34) #7
  br label %362

361:                                              ; preds = %119, %348, %292, %57
  ret void

362:                                              ; preds = %360, %304, %296, %132
  %.pn154.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn154.pn.pn.pn.pn.pn.pn, %132 ], [ %.pn143.pn.pn.pn.pn.pn.pn, %296 ], [ %305, %304 ], [ %.pn124.pn.pn.pn, %360 ]
  resume { ptr, i32 } %.pn154.pn.pn.pn.pn.pn.pn.pn

363:                                              ; preds = %321, %208
  unreachable
}

declare void @_ZN11spirv_cross12CompilerGLSL27emit_buffer_block_flattenedERKNS_12SPIRVariableE(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 8 dereferenceable(176)) local_unnamed_addr #3

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZZN11spirv_cross12CompilerHLSL17emit_buffer_blockERKNS_12SPIRVariableEENK3$_0clB5cxx11ERKNS_8SPIRTypeE"(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 8 dereferenceable(336)) local_unnamed_addr #5 align 2

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

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

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

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

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

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

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

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

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

declare void @_ZN11spirv_cross12CompilerGLSL12add_variableERSt13unordered_setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4hashIS7_ESt8equal_toIS7_ESaIS7_EERKSD_RS7_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #3

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

declare noundef zeroext i1 @_ZN11spirv_cross12CompilerGLSL26buffer_is_packing_standardERKNS_8SPIRTypeENS_21BufferPackingStandardEPjjj(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 8 dereferenceable(336), i32 noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #3

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

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

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

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

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

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

declare void @_ZN11spirv_cross12CompilerGLSL23preserve_alias_on_resetEj(ptr noundef nonnull align 8 dereferenceable(9848), i32 noundef) local_unnamed_addr #3

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

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

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

declare void @_ZN11spirv_cross12CompilerGLSL15add_member_nameERNS_8SPIRTypeEj(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 8 dereferenceable(336), i32 noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11spirv_cross4joinIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_KcRS6_EEES6_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 8 dereferenceable(32)) local_unnamed_addr #1

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

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

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


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