; 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.__gnu_cxx::__normal_iterator.426" = type { ptr }
%"class.spirv_cross::TypedID.328" = type { i32 }
%"class.std::allocator" = type { 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 }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"class.spirv_cross::SmallVector.10" = type { %"class.spirv_cross::VectorView.11", i64, %"class.spirv_cross::AlignedBuffer.12" }
%"class.spirv_cross::VectorView.11" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.12" = type { [32 x i8] }
%"class.std::unordered_map.13" = type { %"class.std::_Hashtable.14" }
%"class.std::_Hashtable.14" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.spirv_cross::SmallVector.27" = type { %"class.spirv_cross::VectorView.28", i64, %"class.spirv_cross::AlignedBuffer.29" }
%"class.spirv_cross::VectorView.28" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.29" = type { [32 x i8] }
%"class.spirv_cross::SmallVector.33" = type { %"class.spirv_cross::VectorView.34", i64, %"class.spirv_cross::AlignedBuffer.35" }
%"class.spirv_cross::VectorView.34" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.35" = type { [8 x i8] }
%"class.std::unordered_map.36" = type { %"class.std::_Hashtable.37" }
%"class.std::_Hashtable.37" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.55" = type { %"class.std::_Hashtable.56" }
%"class.std::_Hashtable.56" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.spirv_cross::TypedID" = type { i32 }
%"struct.spirv_cross::ParsedIR::Source" = type <{ i32, i8, i8, i8, i8 }>
%"class.std::unordered_set.95" = type { %"class.std::_Hashtable.96" }
%"class.std::_Hashtable.96" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.spirv_cross::SmallVector.114" = type { %"class.spirv_cross::VectorView.115", i64, %"class.spirv_cross::AlignedBuffer.116" }
%"class.spirv_cross::VectorView.115" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.116" = type { [96 x i8] }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%"class.spirv_cross::Bitset" = type { i64, %"class.std::unordered_set" }
%"class.std::unordered_map.117" = type { %"class.std::_Hashtable.118" }
%"class.std::_Hashtable.118" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.spirv_cross::SmallVector.92" = type { %"class.spirv_cross::VectorView.93", i64, %"class.spirv_cross::AlignedBuffer.94" }
%"class.spirv_cross::VectorView.93" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.94" = type { [32 x i8] }
%"class.std::unordered_map.131" = type { %"class.std::_Hashtable.132" }
%"class.std::_Hashtable.132" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.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_set" = type { %"class.std::_Hashtable.74" }
%"class.std::_Hashtable.74" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.263" = type { %"class.std::_Hashtable.264" }
%"class.std::_Hashtable.264" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.spirv_cross::IVariant" = type <{ ptr, %"class.spirv_cross::TypedID.324", [4 x i8] }>
%"class.spirv_cross::TypedID.324" = type { i32 }
%"class.spirv_cross::CompilerHLSL" = type { %"class.spirv_cross::CompilerGLSL", %"struct.spirv_cross::CompilerHLSL::Options", i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, %"struct.spirv_cross::CompilerHLSL::TextureSizeVariants", i8, i8, %"class.spirv_cross::SmallVector.277", i32, i32, %"class.std::vector.280", i32, %"class.std::unordered_map.285", %"class.std::unordered_set.302", %struct.anon, %"class.std::vector.319" }
%"struct.spirv_cross::CompilerHLSL::Options" = type <{ i32, i8, i8, i8, i8, i8, i8, i8, i8, i8, [3 x i8] }>
%"struct.spirv_cross::CompilerHLSL::TextureSizeVariants" = type { i64, [3 x [4 x i64]] }
%"class.spirv_cross::SmallVector.277" = type { %"class.spirv_cross::VectorView.278", i64, %"class.spirv_cross::AlignedBuffer.279" }
%"class.spirv_cross::VectorView.278" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.279" = type { [320 x i8] }
%"class.std::vector.280" = type { %"struct.std::_Vector_base.281" }
%"struct.std::_Vector_base.281" = type { %"struct.std::_Vector_base<spirv_cross::RootConstants, std::allocator<spirv_cross::RootConstants>>::_Vector_impl" }
%"struct.std::_Vector_base<spirv_cross::RootConstants, std::allocator<spirv_cross::RootConstants>>::_Vector_impl" = type { %"struct.std::_Vector_base<spirv_cross::RootConstants, std::allocator<spirv_cross::RootConstants>>::_Vector_impl_data" }
%"struct.std::_Vector_base<spirv_cross::RootConstants, std::allocator<spirv_cross::RootConstants>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::unordered_map.285" = type { %"class.std::_Hashtable.286" }
%"class.std::_Hashtable.286" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_set.302" = type { %"class.std::_Hashtable.303" }
%"class.std::_Hashtable.303" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%struct.anon = type <{ i32, i32, i8, i8, [2 x i8] }>
%"class.std::vector.319" = type { %"struct.std::_Vector_base.320" }
%"struct.std::_Vector_base.320" = type { %"struct.std::_Vector_base<spirv_cross::TypedID<spirv_cross::TypeType>, std::allocator<spirv_cross::TypedID<spirv_cross::TypeType>>>::_Vector_impl" }
%"struct.std::_Vector_base<spirv_cross::TypedID<spirv_cross::TypeType>, std::allocator<spirv_cross::TypedID<spirv_cross::TypeType>>>::_Vector_impl" = type { %"struct.std::_Vector_base<spirv_cross::TypedID<spirv_cross::TypeType>, std::allocator<spirv_cross::TypedID<spirv_cross::TypeType>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<spirv_cross::TypedID<spirv_cross::TypeType>, std::allocator<spirv_cross::TypedID<spirv_cross::TypeType>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.spirv_cross::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::TypedID.330" = type { i32 }
%"class.spirv_cross::TypedID.331" = type { i32 }
%"struct.spirv_cross::RootConstants" = type { i32, i32, i32, i32 }
%"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 }

@_ZTIN11spirv_cross13CompilerErrorE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.9 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.385 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.387 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.394 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.395 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.396 = external hidden unnamed_addr constant [34 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 ptr @__cxa_allocate_exception(i64)

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 #3

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 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

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

; 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: 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) #4

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

; 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

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

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

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

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

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

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

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

; 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

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) #4

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

; 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 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_cross12CompilerGLSL15add_member_nameERNS_8SPIRTypeEj(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 8 dereferenceable(336), i32 noundef) #4

; 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)) #4

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11spirv_cross12CompilerHLSL24emit_push_constant_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 i32, align 4
  %6 = alloca ptr, align 8
  %7 = alloca %"class.__gnu_cxx::__normal_iterator.426", align 8
  %8 = alloca %"class.__gnu_cxx::__normal_iterator.426", align 8
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca ptr, align 8
  %16 = alloca i32, align 4
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca i1, align 1
  %19 = alloca i32, align 4
  %20 = alloca ptr, 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 i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca ptr, align 8
  %27 = alloca %"class.std::__cxx11::basic_string", align 8
  %28 = alloca %"class.spirv_cross::TypedID.328", align 4
  %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.spirv_cross::TypedID.328", align 4
  %33 = alloca %"class.std::__cxx11::basic_string", align 8
  %34 = alloca %"class.std::allocator", align 1
  %35 = alloca %"class.spirv_cross::TypedID.328", align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  %36 = load ptr, ptr %3, align 8
  %37 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %36, i32 0, i32 25
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #7
  %38 = load ptr, ptr %4, align 8, !tbaa !5
  %39 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %38, i32 0, i32 1
  %40 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %39)
  store i32 %40, ptr %5, align 4, !tbaa !9
  %41 = call noundef i64 @_ZNKSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEE5countERKj(ptr noundef nonnull align 8 dereferenceable(56) %37, ptr noundef nonnull align 4 dereferenceable(4) %5)
  %42 = icmp ne i64 %41, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #7
  br i1 %42, label %43, label %45

43:                                               ; preds = %2
  %44 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11spirv_cross12CompilerGLSL27emit_buffer_block_flattenedERKNS_12SPIRVariableE(ptr noundef nonnull align 8 dereferenceable(9848) %36, ptr noundef nonnull align 8 dereferenceable(176) %44)
  br label %288

45:                                               ; preds = %2
  %46 = getelementptr inbounds %"class.spirv_cross::CompilerHLSL", ptr %36, i32 0, i32 24
  %47 = call noundef zeroext i1 @_ZNKSt6vectorIN11spirv_cross13RootConstantsESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %46) #7
  br i1 %47, label %48, label %53

48:                                               ; preds = %45
  %49 = load ptr, ptr %4, align 8, !tbaa !5
  %50 = load ptr, ptr %36, align 8, !tbaa !11
  %51 = getelementptr inbounds ptr, ptr %50, i64 32
  %52 = load ptr, ptr %51, align 8
  call void %52(ptr noundef nonnull align 8 dereferenceable(10528) %36, ptr noundef nonnull align 8 dereferenceable(176) %49)
  br label %287

53:                                               ; preds = %45
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #7
  %54 = getelementptr inbounds %"class.spirv_cross::CompilerHLSL", ptr %36, i32 0, i32 24
  store ptr %54, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #7
  %55 = load ptr, ptr %6, align 8, !tbaa !5
  %56 = call ptr @_ZNSt6vectorIN11spirv_cross13RootConstantsESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %55) #7
  %57 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.426", ptr %7, i32 0, i32 0
  store ptr %56, ptr %57, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #7
  %58 = load ptr, ptr %6, align 8, !tbaa !5
  %59 = call ptr @_ZNSt6vectorIN11spirv_cross13RootConstantsESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %58) #7
  %60 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.426", ptr %8, i32 0, i32 0
  store ptr %59, ptr %60, align 8
  br label %61

61:                                               ; preds = %282, %53
  %62 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN11spirv_cross13RootConstantsESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %8) #7
  br i1 %62, label %64, label %63

63:                                               ; preds = %61
  store i32 2, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #7
  br label %286

64:                                               ; preds = %61
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #7
  %65 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN11spirv_cross13RootConstantsESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %7) #7
  store ptr %65, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #7
  %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) %36, i32 noundef %68)
  store ptr %69, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #7
  store i32 0, ptr %12, align 4, !tbaa !9
  %70 = load ptr, ptr %11, align 8, !tbaa !5
  %71 = load ptr, ptr %10, align 8, !tbaa !5
  %72 = getelementptr inbounds %"struct.spirv_cross::RootConstants", ptr %71, i32 0, i32 0
  %73 = load i32, ptr %72, align 4, !tbaa !13
  %74 = load ptr, ptr %10, align 8, !tbaa !5
  %75 = getelementptr inbounds %"struct.spirv_cross::RootConstants", ptr %74, i32 0, i32 1
  %76 = load i32, ptr %75, align 4, !tbaa !15
  %77 = call noundef zeroext i1 @_ZN11spirv_cross12CompilerGLSL26buffer_is_packing_standardERKNS_8SPIRTypeENS_21BufferPackingStandardEPjjj(ptr noundef nonnull align 8 dereferenceable(9848) %36, ptr noundef nonnull align 8 dereferenceable(336) %70, i32 noundef 5, ptr noundef %12, i32 noundef %73, i32 noundef %76)
  br i1 %77, label %78, label %82

78:                                               ; preds = %64
  %79 = load ptr, ptr %11, align 8, !tbaa !5
  %80 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %79, i32 0, i32 1
  %81 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %80)
  call void @_ZN11spirv_cross8Compiler23set_extended_decorationEjNS_19ExtendedDecorationsEj(ptr noundef nonnull align 8 dereferenceable(3176) %36, i32 noundef %81, i32 noundef 10, i32 noundef 0)
  br label %121

82:                                               ; preds = %64
  store i1 true, ptr %18, align 1
  %83 = call ptr @__cxa_allocate_exception(i64 16) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %13) #7
  %84 = load ptr, ptr %4, align 8, !tbaa !5
  %85 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %84, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %14) #7
  %86 = load ptr, ptr %11, align 8, !tbaa !5
  %87 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %86, i32 0, i32 1
  %88 = invoke noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %87)
          to label %89 unwind label %99

89:                                               ; preds = %82
  %90 = load ptr, ptr %36, align 8, !tbaa !11
  %91 = getelementptr inbounds ptr, ptr %90, i64 6
  %92 = load ptr, ptr %91, align 8
  invoke void %92(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %14, ptr noundef nonnull align 8 dereferenceable(3176) %36, i32 noundef %88, i1 noundef zeroext true)
          to label %93 unwind label %99

93:                                               ; preds = %89
  call void @llvm.lifetime.start.p0(i64 32, ptr %17) #7
  %94 = load ptr, ptr %11, align 8, !tbaa !5
  %95 = load i32, ptr %12, align 4, !tbaa !9
  invoke void @_ZN11spirv_cross12CompilerGLSL14to_member_nameB5cxx11ERKNS_8SPIRTypeEj(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %17, ptr noundef nonnull align 8 dereferenceable(9848) %36, ptr noundef nonnull align 8 dereferenceable(336) %94, i32 noundef %95)
          to label %96 unwind label %103

96:                                               ; preds = %93
  invoke void @_ZN11spirv_cross4joinIJRA26_KcRKNS_7TypedIDILNS_5TypesE0EEERA9_S1_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_S1_RA16_S1_RjSA_SG_RA69_S1_EEESG_DpOT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %13, ptr noundef nonnull align 1 dereferenceable(26) @.str.394, ptr noundef nonnull align 4 dereferenceable(4) %85, ptr noundef nonnull align 1 dereferenceable(9) @.str.385, ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull align 1 dereferenceable(2) @.str.78, ptr noundef nonnull align 1 dereferenceable(16) @.str.395, ptr noundef nonnull align 4 dereferenceable(4) %12, ptr noundef nonnull align 1 dereferenceable(9) @.str.385, ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull align 1 dereferenceable(69) @.str.387)
          to label %97 unwind label %107

97:                                               ; preds = %96
  invoke void @_ZN11spirv_cross13CompilerErrorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16) %83, ptr noundef nonnull align 8 dereferenceable(32) %13)
          to label %98 unwind label %111

98:                                               ; preds = %97
  store i1 false, ptr %18, align 1
  invoke void @__cxa_throw(ptr %83, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #8
          to label %294 unwind label %111

99:                                               ; preds = %89, %82
  %100 = landingpad { ptr, i32 }
          cleanup
  %101 = extractvalue { ptr, i32 } %100, 0
  store ptr %101, ptr %15, align 8
  %102 = extractvalue { ptr, i32 } %100, 1
  store i32 %102, ptr %16, align 4
  br label %117

103:                                              ; preds = %93
  %104 = landingpad { ptr, i32 }
          cleanup
  %105 = extractvalue { ptr, i32 } %104, 0
  store ptr %105, ptr %15, align 8
  %106 = extractvalue { ptr, i32 } %104, 1
  store i32 %106, ptr %16, align 4
  br label %116

107:                                              ; preds = %96
  %108 = landingpad { ptr, i32 }
          cleanup
  %109 = extractvalue { ptr, i32 } %108, 0
  store ptr %109, ptr %15, align 8
  %110 = extractvalue { ptr, i32 } %108, 1
  store i32 %110, ptr %16, align 4
  br label %115

111:                                              ; preds = %98, %97
  %112 = landingpad { ptr, i32 }
          cleanup
  %113 = extractvalue { ptr, i32 } %112, 0
  store ptr %113, ptr %15, align 8
  %114 = extractvalue { ptr, i32 } %112, 1
  store i32 %114, ptr %16, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  br label %115

115:                                              ; preds = %111, %107
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #7
  br label %116

116:                                              ; preds = %115, %103
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #7
  br label %117

117:                                              ; preds = %116, %99
  call void @llvm.lifetime.end.p0(i64 32, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %13) #7
  %118 = load i1, ptr %18, align 1
  br i1 %118, label %119, label %120

119:                                              ; preds = %117
  call void @__cxa_free_exception(ptr %83) #7
  br label %120

120:                                              ; preds = %119, %117
  br label %285

121:                                              ; preds = %78
  %122 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %36, i32 0, i32 26
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #7
  %123 = load ptr, ptr %4, align 8, !tbaa !5
  %124 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %123, i32 0, i32 1
  %125 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %124)
  store i32 %125, ptr %19, align 4, !tbaa !9
  %126 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt13unordered_mapIjbSt4hashIjESt8equal_toIjESaISt4pairIKjbEEEixEOj(ptr noundef nonnull align 8 dereferenceable(56) %122, ptr noundef nonnull align 4 dereferenceable(4) %19)
  store i8 0, ptr %126, align 1, !tbaa !16
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #7
  %127 = load ptr, ptr %11, align 8, !tbaa !5
  %128 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %127, i32 0, i32 17
  call void @_ZNSt13unordered_setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4hashIS5_ESt8equal_toIS5_ESaIS5_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(56) %128) #7
  %129 = load ptr, ptr %4, align 8, !tbaa !5
  %130 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %129, i32 0, i32 1
  %131 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %130)
  call void @_ZN11spirv_cross12CompilerGLSL17add_resource_nameEj(ptr noundef nonnull align 8 dereferenceable(9848) %36, i32 noundef %131)
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #7
  %132 = getelementptr inbounds %"class.spirv_cross::Compiler", ptr %36, i32 0, i32 1
  %133 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %132, i32 0, i32 3
  %134 = load ptr, ptr %11, align 8, !tbaa !5
  %135 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %134, i32 0, i32 1
  %136 = call noundef nonnull align 8 dereferenceable(488) ptr @_ZNSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE0EEENS0_4MetaESt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S4_EEEixERSA_(ptr noundef nonnull align 8 dereferenceable(56) %133, ptr noundef nonnull align 4 dereferenceable(4) %135)
  %137 = getelementptr inbounds %"struct.spirv_cross::Meta", ptr %136, i32 0, i32 1
  store ptr %137, ptr %20, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %21) #7
  %138 = load ptr, ptr %4, align 8, !tbaa !5
  %139 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %138, i32 0, i32 1
  %140 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %139)
  %141 = load ptr, ptr %36, align 8, !tbaa !11
  %142 = getelementptr inbounds ptr, ptr %141, i64 6
  %143 = load ptr, ptr %142, align 8
  call void %143(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %21, ptr noundef nonnull align 8 dereferenceable(3176) %36, i32 noundef %140, i1 noundef zeroext true)
  call void @llvm.lifetime.start.p0(i64 32, ptr %22) #7
  %144 = load ptr, ptr %10, align 8, !tbaa !5
  %145 = getelementptr inbounds %"struct.spirv_cross::RootConstants", ptr %144, i32 0, i32 2
  %146 = load i32, ptr %145, align 4, !tbaa !18
  %147 = load ptr, ptr %10, align 8, !tbaa !5
  %148 = getelementptr inbounds %"struct.spirv_cross::RootConstants", ptr %147, i32 0, i32 3
  %149 = load i32, ptr %148, align 4, !tbaa !19
  invoke void @_ZN11spirv_cross12CompilerHLSL20to_resource_registerB5cxx11ENS_19HLSLBindingFlagBitsEcjj(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %22, ptr noundef nonnull align 8 dereferenceable(10528) %36, i32 noundef 1, i8 noundef signext 98, i32 noundef %146, i32 noundef %149)
          to label %150 unwind label %159

150:                                              ; preds = %121
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA34_KcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %36, ptr noundef nonnull align 1 dereferenceable(34) @.str.396, ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull align 8 dereferenceable(32) %22)
          to label %151 unwind label %163

151:                                              ; preds = %150
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #7
  call void @_ZN11spirv_cross12CompilerGLSL11begin_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848) %36)
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #7
  store i32 0, ptr %23, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #7
  store i32 0, ptr %24, align 4, !tbaa !9
  br label %152

152:                                              ; preds = %278, %151
  %153 = load i32, ptr %24, align 4, !tbaa !9
  %154 = zext i32 %153 to i64
  %155 = load ptr, ptr %20, align 8, !tbaa !5
  %156 = call noundef i64 @_ZNK11spirv_cross10VectorViewINS_4Meta10DecorationEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %155) #7
  %157 = icmp ult i64 %154, %156
  br i1 %157, label %168, label %158

158:                                              ; preds = %152
  store i32 4, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #7
  br label %281

159:                                              ; preds = %121
  %160 = landingpad { ptr, i32 }
          cleanup
  %161 = extractvalue { ptr, i32 } %160, 0
  store ptr %161, ptr %15, align 8
  %162 = extractvalue { ptr, i32 } %160, 1
  store i32 %162, ptr %16, align 4
  br label %167

163:                                              ; preds = %150
  %164 = landingpad { ptr, i32 }
          cleanup
  %165 = extractvalue { ptr, i32 } %164, 0
  store ptr %165, ptr %15, align 8
  %166 = extractvalue { ptr, i32 } %164, 1
  store i32 %166, ptr %16, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #7
  br label %167

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

168:                                              ; preds = %152
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #7
  %169 = load ptr, ptr %20, align 8, !tbaa !5
  %170 = load i32, ptr %24, align 4, !tbaa !9
  %171 = zext i32 %170 to i64
  %172 = call noundef nonnull align 8 dereferenceable(392) ptr @_ZN11spirv_cross10VectorViewINS_4Meta10DecorationEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %169, i64 noundef %171) #7
  %173 = getelementptr inbounds %"struct.spirv_cross::Meta::Decoration", ptr %172, i32 0, i32 10
  %174 = load i32, ptr %173, align 4, !tbaa !20
  store i32 %174, ptr %25, align 4, !tbaa !9
  %175 = load ptr, ptr %10, align 8, !tbaa !5
  %176 = getelementptr inbounds %"struct.spirv_cross::RootConstants", ptr %175, i32 0, i32 0
  %177 = load i32, ptr %176, align 4, !tbaa !13
  %178 = load i32, ptr %25, align 4, !tbaa !9
  %179 = icmp ule i32 %177, %178
  br i1 %179, label %180, label %277

180:                                              ; preds = %168
  %181 = load i32, ptr %25, align 4, !tbaa !9
  %182 = load ptr, ptr %10, align 8, !tbaa !5
  %183 = getelementptr inbounds %"struct.spirv_cross::RootConstants", ptr %182, i32 0, i32 1
  %184 = load i32, ptr %183, align 4, !tbaa !15
  %185 = icmp ult i32 %181, %184
  br i1 %185, label %186, label %277

186:                                              ; preds = %180
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #7
  %187 = load ptr, ptr %11, align 8, !tbaa !5
  %188 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %187, i32 0, i32 12
  %189 = load i32, ptr %24, align 4, !tbaa !9
  %190 = zext i32 %189 to i64
  %191 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN11spirv_cross10VectorViewINS_7TypedIDILNS_5TypesE1EEEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %188, i64 noundef %190) #7
  store ptr %191, ptr %26, align 8, !tbaa !5
  %192 = load ptr, ptr %11, align 8, !tbaa !5
  %193 = load i32, ptr %23, align 4, !tbaa !9
  call void @_ZN11spirv_cross12CompilerGLSL15add_member_nameERNS_8SPIRTypeEj(ptr noundef nonnull align 8 dereferenceable(9848) %36, ptr noundef nonnull align 8 dereferenceable(336) %192, i32 noundef %193)
  call void @llvm.lifetime.start.p0(i64 32, ptr %27) #7
  %194 = load ptr, ptr %11, align 8, !tbaa !5
  %195 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %194, i32 0, i32 1
  %196 = call i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvNS0_IXT_EEEILS1_1EEEv(ptr noundef nonnull align 4 dereferenceable(4) %195)
  %197 = getelementptr inbounds %"class.spirv_cross::TypedID.328", ptr %28, i32 0, i32 0
  store i32 %196, ptr %197, align 4
  %198 = load i32, ptr %24, align 4, !tbaa !9
  %199 = getelementptr inbounds %"class.spirv_cross::TypedID.328", ptr %28, i32 0, i32 0
  %200 = load i32, ptr %199, align 4
  %201 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK11spirv_cross8Compiler15get_member_nameB5cxx11ENS_7TypedIDILNS_5TypesE1EEEj(ptr noundef nonnull align 8 dereferenceable(3176) %36, i32 %200, i32 noundef %198)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull align 8 dereferenceable(32) %201)
  call void @llvm.lifetime.start.p0(i64 32, ptr %29) #7
  %202 = load ptr, ptr %11, align 8, !tbaa !5
  %203 = load i32, ptr %24, align 4, !tbaa !9
  invoke void @_ZN11spirv_cross12CompilerGLSL14to_member_nameB5cxx11ERKNS_8SPIRTypeEj(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %29, ptr noundef nonnull align 8 dereferenceable(9848) %36, ptr noundef nonnull align 8 dereferenceable(336) %202, i32 noundef %203)
          to label %204 unwind label %249

204:                                              ; preds = %186
  call void @llvm.lifetime.start.p0(i64 32, ptr %30) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %31) #7
  %205 = load ptr, ptr %4, align 8, !tbaa !5
  %206 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %205, i32 0, i32 1
  %207 = invoke noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %206)
          to label %208 unwind label %253

208:                                              ; preds = %204
  %209 = load ptr, ptr %36, align 8, !tbaa !11
  %210 = getelementptr inbounds ptr, ptr %209, i64 6
  %211 = load ptr, ptr %210, align 8
  invoke void %211(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %31, ptr noundef nonnull align 8 dereferenceable(3176) %36, i32 noundef %207, i1 noundef zeroext true)
          to label %212 unwind label %253

212:                                              ; preds = %208
  invoke void @_ZN11spirv_cross4joinIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_KcRS6_EEES6_DpOT_(ptr dead_on_unwind 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 %213 unwind label %257

213:                                              ; preds = %212
  %214 = 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 %31) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #7
  invoke void @_ZN11spirv_cross8ParsedIR20sanitize_underscoresERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %29)
          to label %215 unwind label %262

215:                                              ; preds = %213
  %216 = load ptr, ptr %11, align 8, !tbaa !5
  %217 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %216, i32 0, i32 1
  %218 = invoke i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvNS0_IXT_EEEILS1_1EEEv(ptr noundef nonnull align 4 dereferenceable(4) %217)
          to label %219 unwind label %262

219:                                              ; preds = %215
  %220 = getelementptr inbounds %"class.spirv_cross::TypedID.328", ptr %32, i32 0, i32 0
  store i32 %218, ptr %220, align 4
  %221 = load i32, ptr %23, align 4, !tbaa !9
  %222 = getelementptr inbounds %"class.spirv_cross::TypedID.328", ptr %32, i32 0, i32 0
  %223 = load i32, ptr %222, align 4
  invoke void @_ZN11spirv_cross8Compiler15set_member_nameENS_7TypedIDILNS_5TypesE1EEEjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(3176) %36, i32 %223, i32 noundef %221, ptr noundef nonnull align 8 dereferenceable(32) %29)
          to label %224 unwind label %262

224:                                              ; preds = %219
  %225 = load ptr, ptr %11, align 8, !tbaa !5
  %226 = load ptr, ptr %26, align 8, !tbaa !5
  %227 = invoke noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE1EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %226)
          to label %228 unwind label %262

228:                                              ; preds = %224
  %229 = load i32, ptr %24, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr %33) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %34) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %34)
          to label %230 unwind label %266

230:                                              ; preds = %228
  %231 = load ptr, ptr %10, align 8, !tbaa !5
  %232 = getelementptr inbounds %"struct.spirv_cross::RootConstants", ptr %231, i32 0, i32 0
  %233 = load i32, ptr %232, align 4, !tbaa !13
  %234 = load ptr, ptr %36, align 8, !tbaa !11
  %235 = getelementptr inbounds ptr, ptr %234, i64 21
  %236 = load ptr, ptr %235, align 8
  invoke void %236(ptr noundef nonnull align 8 dereferenceable(10528) %36, ptr noundef nonnull align 8 dereferenceable(336) %225, i32 noundef %227, i32 noundef %229, ptr noundef nonnull align 8 dereferenceable(32) %33, i32 noundef %233)
          to label %237 unwind label %270

237:                                              ; preds = %230
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %33) #7
  %238 = load ptr, ptr %11, align 8, !tbaa !5
  %239 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %238, i32 0, i32 1
  %240 = invoke i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvNS0_IXT_EEEILS1_1EEEv(ptr noundef nonnull align 4 dereferenceable(4) %239)
          to label %241 unwind label %262

241:                                              ; preds = %237
  %242 = getelementptr inbounds %"class.spirv_cross::TypedID.328", ptr %35, i32 0, i32 0
  store i32 %240, ptr %242, align 4
  %243 = load i32, ptr %23, align 4, !tbaa !9
  %244 = getelementptr inbounds %"class.spirv_cross::TypedID.328", ptr %35, i32 0, i32 0
  %245 = load i32, ptr %244, align 4
  invoke void @_ZN11spirv_cross8Compiler15set_member_nameENS_7TypedIDILNS_5TypesE1EEEjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(3176) %36, i32 %245, i32 noundef %243, ptr noundef nonnull align 8 dereferenceable(32) %27)
          to label %246 unwind label %262

246:                                              ; preds = %241
  %247 = load i32, ptr %23, align 4, !tbaa !9
  %248 = add i32 %247, 1
  store i32 %248, ptr %23, align 4, !tbaa !9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  br label %277

249:                                              ; preds = %186
  %250 = landingpad { ptr, i32 }
          cleanup
  %251 = extractvalue { ptr, i32 } %250, 0
  store ptr %251, ptr %15, align 8
  %252 = extractvalue { ptr, i32 } %250, 1
  store i32 %252, ptr %16, align 4
  br label %276

253:                                              ; preds = %208, %204
  %254 = landingpad { ptr, i32 }
          cleanup
  %255 = extractvalue { ptr, i32 } %254, 0
  store ptr %255, ptr %15, align 8
  %256 = extractvalue { ptr, i32 } %254, 1
  store i32 %256, ptr %16, align 4
  br label %261

257:                                              ; preds = %212
  %258 = landingpad { ptr, i32 }
          cleanup
  %259 = extractvalue { ptr, i32 } %258, 0
  store ptr %259, ptr %15, align 8
  %260 = extractvalue { ptr, i32 } %258, 1
  store i32 %260, ptr %16, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #7
  br label %261

261:                                              ; preds = %257, %253
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #7
  br label %275

262:                                              ; preds = %241, %237, %224, %219, %215, %213
  %263 = landingpad { ptr, i32 }
          cleanup
  %264 = extractvalue { ptr, i32 } %263, 0
  store ptr %264, ptr %15, align 8
  %265 = extractvalue { ptr, i32 } %263, 1
  store i32 %265, ptr %16, align 4
  br label %275

266:                                              ; preds = %228
  %267 = landingpad { ptr, i32 }
          cleanup
  %268 = extractvalue { ptr, i32 } %267, 0
  store ptr %268, ptr %15, align 8
  %269 = extractvalue { ptr, i32 } %267, 1
  store i32 %269, ptr %16, align 4
  br label %274

270:                                              ; preds = %230
  %271 = landingpad { ptr, i32 }
          cleanup
  %272 = extractvalue { ptr, i32 } %271, 0
  store ptr %272, ptr %15, align 8
  %273 = extractvalue { ptr, i32 } %271, 1
  store i32 %273, ptr %16, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #7
  br label %274

274:                                              ; preds = %270, %266
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %33) #7
  br label %275

275:                                              ; preds = %274, %262, %261
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #7
  br label %276

276:                                              ; preds = %275, %249
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #7
  br label %284

277:                                              ; preds = %246, %180, %168
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #7
  br label %278

278:                                              ; preds = %277
  %279 = load i32, ptr %24, align 4, !tbaa !9
  %280 = add i32 %279, 1
  store i32 %280, ptr %24, align 4, !tbaa !9
  br label %152, !llvm.loop !34

281:                                              ; preds = %158
  call void @_ZN11spirv_cross12CompilerGLSL14end_scope_declEv(ptr noundef nonnull align 8 dereferenceable(9848) %36)
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #7
  br label %282

282:                                              ; preds = %281
  %283 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN11spirv_cross13RootConstantsESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %7) #7
  br label %61

284:                                              ; preds = %276, %167
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #7
  br label %285

285:                                              ; preds = %284, %120
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #7
  br label %289

286:                                              ; preds = %63
  br label %287

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

288:                                              ; preds = %287, %43
  ret void

289:                                              ; preds = %285
  %290 = load ptr, ptr %15, align 8
  %291 = load i32, ptr %16, align 4
  %292 = insertvalue { ptr, i32 } poison, ptr %290, 0
  %293 = insertvalue { ptr, i32 } %292, i32 %291, 1
  resume { ptr, i32 } %293

294:                                              ; preds = %98
  unreachable
}

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11spirv_cross4joinIJRA26_KcRKNS_7TypedIDILNS_5TypesE0EEERA9_S1_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_S1_RA16_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(26), 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(2), ptr noundef nonnull align 1 dereferenceable(16), 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: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJRA34_KcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 1 dereferenceable(34), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) #6 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN11spirv_cross13RootConstantsESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8)) #2 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 = { 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 #4 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nounwind }
attributes #8 = { noreturn }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"vtable pointer", !8, i64 0}
!13 = !{!14, !10, i64 0}
!14 = !{!"_ZTSN11spirv_cross13RootConstantsE", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12}
!15 = !{!14, !10, i64 4}
!16 = !{!17, !17, i64 0}
!17 = !{!"bool", !7, i64 0}
!18 = !{!14, !10, i64 8}
!19 = !{!14, !10, i64 12}
!20 = !{!21, !10, i64 212}
!21 = !{!"_ZTSN11spirv_cross4Meta10DecorationE", !22, i64 0, !22, i64 32, !22, i64 64, !22, i64 96, !25, i64 128, !31, i64 192, !10, i64 196, !10, i64 200, !10, i64 204, !10, i64 208, !10, i64 212, !10, i64 216, !10, i64 220, !10, i64 224, !10, i64 228, !10, i64 232, !10, i64 236, !10, i64 240, !10, i64 244, !32, i64 248, !17, i64 252, !17, i64 253, !33, i64 256}
!22 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !23, i64 0, !24, i64 8, !7, i64 16}
!23 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!24 = !{!"long", !7, i64 0}
!25 = !{!"_ZTSN11spirv_cross6BitsetE", !24, i64 0, !26, i64 8}
!26 = !{!"_ZTSSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEE", !27, i64 0}
!27 = !{!"_ZTSSt10_HashtableIjjSaIjENSt8__detail9_IdentityESt8equal_toIjESt4hashIjENS1_18_Mod_range_hashingENS1_20_Default_ranged_hashENS1_20_Prime_rehash_policyENS1_17_Hashtable_traitsILb0ELb1ELb1EEEE", !6, i64 0, !24, i64 8, !28, i64 16, !24, i64 24, !29, i64 32, !6, i64 48}
!28 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!29 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !30, i64 0, !24, i64 8}
!30 = !{!"float", !7, i64 0}
!31 = !{!"_ZTSN3spv7BuiltInE", !7, i64 0}
!32 = !{!"_ZTSN3spv14FPRoundingModeE", !7, i64 0}
!33 = !{!"_ZTSN11spirv_cross4Meta10Decoration8ExtendedE", !25, i64 0, !7, i64 64}
!34 = distinct !{!34, !35}
!35 = !{!"llvm.loop.mustprogress"}


; 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.__gnu_cxx::__normal_iterator.426" = type { ptr }
%"class.std::allocator" = type { i8 }

@_ZTIN11spirv_cross13CompilerErrorE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.9 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.385 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.387 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.394 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.395 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.396 = external hidden unnamed_addr constant [34 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 ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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 #3

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 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

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

; 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: 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 #4

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

; 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

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 #4

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

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

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

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

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

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 #4

; 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

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 #4

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

; 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 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_cross12CompilerGLSL15add_member_nameERNS_8SPIRTypeEj(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 8 dereferenceable(336), i32 noundef) local_unnamed_addr #4

; 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 #4

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11spirv_cross12CompilerHLSL24emit_push_constant_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.__gnu_cxx::__normal_iterator.426", align 8
  %5 = alloca %"class.__gnu_cxx::__normal_iterator.426", align 8
  %6 = alloca i32, align 4
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca i32, align 4
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca %"class.std::allocator", align 1
  %19 = getelementptr inbounds i8, ptr %0, i64 8536
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3) #7
  %20 = getelementptr inbounds i8, ptr %1, i64 8
  %21 = tail call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %20)
  store i32 %21, ptr %3, align 4, !tbaa !5
  %22 = call noundef i64 @_ZNKSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEE5countERKj(ptr noundef nonnull align 8 dereferenceable(56) %19, ptr noundef nonnull align 4 dereferenceable(4) %3)
  %.not = icmp eq i64 %22, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #7
  br i1 %.not, label %24, label %23

23:                                               ; preds = %2
  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 %151

24:                                               ; preds = %2
  %25 = getelementptr inbounds i8, ptr %0, i64 10344
  %26 = call noundef zeroext i1 @_ZNKSt6vectorIN11spirv_cross13RootConstantsESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %25) #7
  br i1 %26, label %27, label %31

27:                                               ; preds = %24
  %28 = load ptr, ptr %0, align 8, !tbaa !9
  %29 = getelementptr inbounds i8, ptr %28, i64 256
  %30 = load ptr, ptr %29, align 8
  call void %30(ptr noundef nonnull align 8 dereferenceable(10528) %0, ptr noundef nonnull align 8 dereferenceable(176) %1)
  br label %151

31:                                               ; preds = %24
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #7
  %32 = call ptr @_ZNSt6vectorIN11spirv_cross13RootConstantsESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %25) #7
  store ptr %32, ptr %4, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #7
  %33 = call ptr @_ZNSt6vectorIN11spirv_cross13RootConstantsESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %25) #7
  store ptr %33, ptr %5, align 8
  %34 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN11spirv_cross13RootConstantsESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %5) #7
  br i1 %34, label %.lr.ph104, label %._crit_edge105

.lr.ph104:                                        ; preds = %31
  %35 = getelementptr inbounds i8, ptr %1, i64 12
  %36 = getelementptr inbounds i8, ptr %0, i64 8592
  %37 = getelementptr inbounds i8, ptr %0, i64 256
  br label %38

._crit_edge105:                                   ; preds = %._crit_edge, %31
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #7
  br label %151

38:                                               ; preds = %.lr.ph104, %._crit_edge
  %39 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN11spirv_cross13RootConstantsESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %4) #7
  %40 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE1EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %35)
  %41 = call noundef nonnull align 8 dereferenceable(336) ptr @_ZN11spirv_cross8Compiler3getINS_8SPIRTypeEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %40)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #7
  store i32 0, ptr %6, align 4, !tbaa !5
  %42 = load i32, ptr %39, align 4, !tbaa !11
  %43 = getelementptr inbounds i8, ptr %39, i64 4
  %44 = load i32, ptr %43, align 4, !tbaa !13
  %45 = 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) %41, i32 noundef 5, ptr noundef nonnull %6, i32 noundef %42, i32 noundef %44)
  br i1 %45, label %46, label %63

46:                                               ; preds = %38
  %47 = getelementptr inbounds i8, ptr %41, i64 8
  %48 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %47)
  call void @_ZN11spirv_cross8Compiler23set_extended_decorationEjNS_19ExtendedDecorationsEj(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %48, i32 noundef 10, i32 noundef 0)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #7
  %49 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %20)
  store i32 %49, ptr %10, align 4, !tbaa !5
  %50 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt13unordered_mapIjbSt4hashIjESt8equal_toIjESaISt4pairIKjbEEEixEOj(ptr noundef nonnull align 8 dereferenceable(56) %36, ptr noundef nonnull align 4 dereferenceable(4) %10)
  store i8 0, ptr %50, align 1, !tbaa !14
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #7
  %51 = getelementptr inbounds i8, ptr %41, i64 280
  call void @_ZNSt13unordered_setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4hashIS5_ESt8equal_toIS5_ESaIS5_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(56) %51) #7
  %52 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %20)
  call void @_ZN11spirv_cross12CompilerGLSL17add_resource_nameEj(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %52)
  %53 = call noundef nonnull align 8 dereferenceable(488) ptr @_ZNSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE0EEENS0_4MetaESt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S4_EEEixERSA_(ptr noundef nonnull align 8 dereferenceable(56) %37, ptr noundef nonnull align 4 dereferenceable(4) %47)
  %54 = getelementptr inbounds i8, ptr %53, i64 392
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #7
  %55 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %20)
  %56 = load ptr, ptr %0, align 8, !tbaa !9
  %57 = getelementptr inbounds i8, ptr %56, i64 48
  %58 = load ptr, ptr %57, align 8
  call void %58(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %11, ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %55, i1 noundef zeroext true)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #7
  %59 = getelementptr inbounds i8, ptr %39, i64 8
  %60 = load i32, ptr %59, align 4, !tbaa !16
  %61 = getelementptr inbounds i8, ptr %39, i64 12
  %62 = load i32, ptr %61, align 4, !tbaa !17
  invoke void @_ZN11spirv_cross12CompilerHLSL20to_resource_registerB5cxx11ENS_19HLSLBindingFlagBitsEcjj(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %12, ptr noundef nonnull align 8 dereferenceable(10528) %0, i32 noundef 1, i8 noundef signext 98, i32 noundef %60, i32 noundef %62)
          to label %83 unwind label %89

63:                                               ; preds = %38
  %64 = call ptr @__cxa_allocate_exception(i64 16) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #7
  %65 = getelementptr inbounds i8, ptr %41, i64 8
  %66 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %65)
  %67 = load ptr, ptr %0, align 8, !tbaa !9
  %68 = getelementptr inbounds i8, ptr %67, i64 48
  %69 = load ptr, ptr %68, align 8
  invoke void %69(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %8, ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %66, i1 noundef zeroext true)
          to label %70 unwind label %.thread

70:                                               ; preds = %63
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #7
  %71 = load i32, ptr %6, align 4, !tbaa !5
  invoke void @_ZN11spirv_cross12CompilerGLSL14to_member_nameB5cxx11ERKNS_8SPIRTypeEj(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %9, ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(336) %41, i32 noundef %71)
          to label %72 unwind label %.thread90

72:                                               ; preds = %70
  invoke void @_ZN11spirv_cross4joinIJRA26_KcRKNS_7TypedIDILNS_5TypesE0EEERA9_S1_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_S1_RA16_S1_RjSA_SG_RA69_S1_EEESG_DpOT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %7, ptr noundef nonnull align 1 dereferenceable(26) @.str.394, ptr noundef nonnull align 4 dereferenceable(4) %20, ptr noundef nonnull align 1 dereferenceable(9) @.str.385, ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 1 dereferenceable(2) @.str.78, ptr noundef nonnull align 1 dereferenceable(16) @.str.395, ptr noundef nonnull align 4 dereferenceable(4) %6, ptr noundef nonnull align 1 dereferenceable(9) @.str.385, ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 1 dereferenceable(69) @.str.387)
          to label %73 unwind label %77

73:                                               ; preds = %72
  invoke void @_ZN11spirv_cross13CompilerErrorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16) %64, ptr noundef nonnull align 8 dereferenceable(32) %7)
          to label %74 unwind label %79

74:                                               ; preds = %73
  invoke void @__cxa_throw(ptr nonnull %64, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #8
          to label %152 unwind label %79

.thread:                                          ; preds = %63
  %75 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #7
  br label %82

.thread90:                                        ; preds = %70
  %76 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #7
  br label %82

77:                                               ; preds = %72
  %78 = landingpad { ptr, i32 }
          cleanup
  br label %81

79:                                               ; preds = %74, %73
  %.062 = phi i1 [ false, %74 ], [ true, %73 ]
  %80 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #7
  br label %81

81:                                               ; preds = %77, %79
  %.163 = phi i1 [ %.062, %79 ], [ true, %77 ]
  %.pn = phi { ptr, i32 } [ %80, %79 ], [ %78, %77 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #7
  br i1 %.163, label %82, label %150

82:                                               ; preds = %.thread90, %.thread, %81
  %.pn.pn.pn89 = phi { ptr, i32 } [ %75, %.thread ], [ %.pn, %81 ], [ %76, %.thread90 ]
  call void @__cxa_free_exception(ptr %64) #7
  br label %150

83:                                               ; preds = %46
  invoke void @_ZN11spirv_cross12CompilerGLSL9statementIJRA34_KcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 1 dereferenceable(34) @.str.396, ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 8 dereferenceable(32) %12)
          to label %84 unwind label %91

84:                                               ; preds = %83
  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 @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #7
  call void @_ZN11spirv_cross12CompilerGLSL11begin_scopeEv(ptr noundef nonnull align 8 dereferenceable(9848) %0)
  %85 = call noundef i64 @_ZNK11spirv_cross10VectorViewINS_4Meta10DecorationEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %54) #7
  %.not106 = icmp eq i64 %85, 0
  br i1 %.not106, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %84
  %86 = getelementptr inbounds i8, ptr %41, i64 136
  br label %94

._crit_edge:                                      ; preds = %145, %84
  call void @_ZN11spirv_cross12CompilerGLSL14end_scope_declEv(ptr noundef nonnull align 8 dereferenceable(9848) %0)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #7
  %87 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN11spirv_cross13RootConstantsESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %4) #7
  %88 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN11spirv_cross13RootConstantsESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %5) #7
  br i1 %88, label %38, label %._crit_edge105

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

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

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

94:                                               ; preds = %.lr.ph, %145
  %95 = phi i64 [ 0, %.lr.ph ], [ %147, %145 ]
  %.066102 = phi i32 [ 0, %.lr.ph ], [ %.167, %145 ]
  %.068101 = phi i32 [ 0, %.lr.ph ], [ %146, %145 ]
  %96 = call noundef nonnull align 8 dereferenceable(392) ptr @_ZN11spirv_cross10VectorViewINS_4Meta10DecorationEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %54, i64 noundef %95) #7
  %97 = getelementptr inbounds i8, ptr %96, i64 212
  %98 = load i32, ptr %97, align 4, !tbaa !18
  %99 = load i32, ptr %39, align 4, !tbaa !11
  %.not76 = icmp ule i32 %99, %98
  %100 = load i32, ptr %43, align 4
  %101 = icmp ult i32 %98, %100
  %or.cond = select i1 %.not76, i1 %101, i1 false
  br i1 %or.cond, label %102, label %145

102:                                              ; preds = %94
  %103 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN11spirv_cross10VectorViewINS_7TypedIDILNS_5TypesE1EEEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %86, i64 noundef %95) #7
  call void @_ZN11spirv_cross12CompilerGLSL15add_member_nameERNS_8SPIRTypeEj(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(336) %41, i32 noundef %.066102)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #7
  %104 = call i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvNS0_IXT_EEEILS1_1EEEv(ptr noundef nonnull align 4 dereferenceable(4) %47)
  %105 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK11spirv_cross8Compiler15get_member_nameB5cxx11ENS_7TypedIDILNS_5TypesE1EEEj(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 %104, i32 noundef %.068101)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull align 8 dereferenceable(32) %105)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14) #7
  invoke void @_ZN11spirv_cross12CompilerGLSL14to_member_nameB5cxx11ERKNS_8SPIRTypeEj(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %14, ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(336) %41, i32 noundef %.068101)
          to label %106 unwind label %129

106:                                              ; preds = %102
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %16) #7
  %107 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %20)
  %108 = load ptr, ptr %0, align 8, !tbaa !9
  %109 = getelementptr inbounds i8, ptr %108, i64 48
  %110 = load ptr, ptr %109, align 8
  invoke void %110(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 %107, i1 noundef zeroext true)
          to label %111 unwind label %131

111:                                              ; preds = %106
  invoke void @_ZN11spirv_cross4joinIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_KcRS6_EEES6_DpOT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %15, ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull align 1 dereferenceable(2) @.str.62, ptr noundef nonnull align 8 dereferenceable(32) %14)
          to label %112 unwind label %133

112:                                              ; preds = %111
  %113 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #7
  invoke void @_ZN11spirv_cross8ParsedIR20sanitize_underscoresERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %14)
          to label %114 unwind label %136

114:                                              ; preds = %112
  %115 = invoke i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvNS0_IXT_EEEILS1_1EEEv(ptr noundef nonnull align 4 dereferenceable(4) %47)
          to label %116 unwind label %136

116:                                              ; preds = %114
  invoke void @_ZN11spirv_cross8Compiler15set_member_nameENS_7TypedIDILNS_5TypesE1EEEjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 %115, i32 noundef %.066102, ptr noundef nonnull align 8 dereferenceable(32) %14)
          to label %117 unwind label %136

117:                                              ; preds = %116
  %118 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE1EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %103)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %18) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %18)
          to label %119 unwind label %138

119:                                              ; preds = %117
  %120 = load i32, ptr %39, align 4, !tbaa !11
  %121 = load ptr, ptr %0, align 8, !tbaa !9
  %122 = getelementptr inbounds i8, ptr %121, i64 168
  %123 = load ptr, ptr %122, align 8
  invoke void %123(ptr noundef nonnull align 8 dereferenceable(10528) %0, ptr noundef nonnull align 8 dereferenceable(336) %41, i32 noundef %118, i32 noundef %.068101, ptr noundef nonnull align 8 dereferenceable(32) %17, i32 noundef %120)
          to label %124 unwind label %140

124:                                              ; preds = %119
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #7
  %125 = invoke i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvNS0_IXT_EEEILS1_1EEEv(ptr noundef nonnull align 4 dereferenceable(4) %47)
          to label %126 unwind label %136

126:                                              ; preds = %124
  invoke void @_ZN11spirv_cross8Compiler15set_member_nameENS_7TypedIDILNS_5TypesE1EEEjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 %125, i32 noundef %.066102, ptr noundef nonnull align 8 dereferenceable(32) %13)
          to label %127 unwind label %136

127:                                              ; preds = %126
  %128 = add i32 %.066102, 1
  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
  br label %145

129:                                              ; preds = %102
  %130 = landingpad { ptr, i32 }
          cleanup
  br label %144

131:                                              ; preds = %106
  %132 = landingpad { ptr, i32 }
          cleanup
  br label %135

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

135:                                              ; preds = %133, %131
  %.pn77 = phi { ptr, i32 } [ %134, %133 ], [ %132, %131 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #7
  br label %143

136:                                              ; preds = %126, %124, %116, %114, %112
  %137 = landingpad { ptr, i32 }
          cleanup
  br label %143

138:                                              ; preds = %117
  %139 = landingpad { ptr, i32 }
          cleanup
  br label %142

140:                                              ; preds = %119
  %141 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #7
  br label %142

142:                                              ; preds = %140, %138
  %.pn79 = phi { ptr, i32 } [ %141, %140 ], [ %139, %138 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #7
  br label %143

143:                                              ; preds = %142, %136, %135
  %.pn81 = phi { ptr, i32 } [ %137, %136 ], [ %.pn79, %142 ], [ %.pn77, %135 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #7
  br label %144

144:                                              ; preds = %143, %129
  %.pn81.pn = phi { ptr, i32 } [ %.pn81, %143 ], [ %130, %129 ]
  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
  br label %150

145:                                              ; preds = %127, %94
  %.167 = phi i32 [ %128, %127 ], [ %.066102, %94 ]
  %146 = add i32 %.068101, 1
  %147 = zext i32 %146 to i64
  %148 = call noundef i64 @_ZNK11spirv_cross10VectorViewINS_4Meta10DecorationEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %54) #7
  %149 = icmp ugt i64 %148, %147
  br i1 %149, label %94, label %._crit_edge, !llvm.loop !33

150:                                              ; preds = %93, %144, %81, %82
  %.pn81.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn89, %82 ], [ %.pn, %81 ], [ %.pn81.pn, %144 ], [ %.pn74, %93 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #7
  resume { ptr, i32 } %.pn81.pn.pn.pn

151:                                              ; preds = %27, %._crit_edge105, %23
  ret void

152:                                              ; preds = %74
  unreachable
}

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11spirv_cross4joinIJRA26_KcRKNS_7TypedIDILNS_5TypesE0EEERA9_S1_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_S1_RA16_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(26), 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(2), ptr noundef nonnull align 1 dereferenceable(16), 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: inlinehint mustprogress uwtable
declare dso_local void @_ZN11spirv_cross12CompilerGLSL9statementIJRA34_KcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 1 dereferenceable(34), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #6 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN11spirv_cross13RootConstantsESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2 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 = { 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 #4 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nounwind }
attributes #8 = { noreturn }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"vtable pointer", !8, i64 0}
!11 = !{!12, !6, i64 0}
!12 = !{!"_ZTSN11spirv_cross13RootConstantsE", !6, i64 0, !6, i64 4, !6, i64 8, !6, i64 12}
!13 = !{!12, !6, i64 4}
!14 = !{!15, !15, i64 0}
!15 = !{!"bool", !7, i64 0}
!16 = !{!12, !6, i64 8}
!17 = !{!12, !6, i64 12}
!18 = !{!19, !6, i64 212}
!19 = !{!"_ZTSN11spirv_cross4Meta10DecorationE", !20, i64 0, !20, i64 32, !20, i64 64, !20, i64 96, !24, i64 128, !30, i64 192, !6, i64 196, !6, i64 200, !6, i64 204, !6, i64 208, !6, i64 212, !6, i64 216, !6, i64 220, !6, i64 224, !6, i64 228, !6, i64 232, !6, i64 236, !6, i64 240, !6, i64 244, !31, i64 248, !15, i64 252, !15, i64 253, !32, i64 256}
!20 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !21, i64 0, !23, i64 8, !7, i64 16}
!21 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !22, i64 0}
!22 = !{!"any pointer", !7, i64 0}
!23 = !{!"long", !7, i64 0}
!24 = !{!"_ZTSN11spirv_cross6BitsetE", !23, i64 0, !25, i64 8}
!25 = !{!"_ZTSSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEE", !26, i64 0}
!26 = !{!"_ZTSSt10_HashtableIjjSaIjENSt8__detail9_IdentityESt8equal_toIjESt4hashIjENS1_18_Mod_range_hashingENS1_20_Default_ranged_hashENS1_20_Prime_rehash_policyENS1_17_Hashtable_traitsILb0ELb1ELb1EEEE", !22, i64 0, !23, i64 8, !27, i64 16, !23, i64 24, !28, i64 32, !22, i64 48}
!27 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !22, i64 0}
!28 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !29, i64 0, !23, i64 8}
!29 = !{!"float", !7, i64 0}
!30 = !{!"_ZTSN3spv7BuiltInE", !7, i64 0}
!31 = !{!"_ZTSN3spv14FPRoundingModeE", !7, i64 0}
!32 = !{!"_ZTSN11spirv_cross4Meta10Decoration8ExtendedE", !24, i64 0, !7, i64 64}
!33 = distinct !{!33, !34}
!34 = !{!"llvm.loop.mustprogress"}


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