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

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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.spirv_cross::TypedID.282" = type { i32 }
%"class.spirv_cross::TypedID.280" = type { i32 }
%"class.std::allocator.71" = type { i8 }
%class.anon.388 = type { ptr, ptr, ptr, ptr }
%"struct.spirv_cross::CompilerGLSL::TextureFunctionBaseArguments" = type <{ %"class.spirv_cross::TypedID.282", [4 x i8], ptr, i8, i8, i8, [5 x i8] }>
%"struct.spirv_cross::CompilerGLSL::TextureFunctionNameArguments" = type { %"struct.spirv_cross::CompilerGLSL::TextureFunctionBaseArguments", i8, i8, i8, i8, i8, i8, i32, [4 x i8] }
%"struct.spirv_cross::CompilerGLSL::TextureFunctionArguments" = type <{ %"struct.spirv_cross::CompilerGLSL::TextureFunctionBaseArguments", i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i8, [6 x i8] }>
%"struct.spirv_cross::Instruction" = type { i16, i16, i32, i32 }
%"class.spirv_cross::CompilerGLSL" = type { %"class.spirv_cross::Compiler", ptr, %"class.spirv_cross::SmallVector.159", i8, %"class.spirv_cross::StringStream", ptr, ptr, i8, i8, %"struct.spirv_cross::CompilerGLSL::Options", %"class.std::unordered_set.165", %"class.std::unordered_set.165", %"class.std::unordered_set.165", %"class.std::unordered_set.165", %"class.std::unordered_set.165", %"class.std::unordered_set.165", %"class.std::unordered_set.165", %"class.std::unordered_map.185", %"class.std::unordered_map.145", i8, [7 x i8], %"struct.spirv_cross::CompilerGLSL::BackendVariations", i32, %"class.std::unordered_set", %"class.std::unordered_set", %"class.std::unordered_set", %"class.std::unordered_map.199", %"struct.spirv_cross::CompilerGLSL::ShaderSubgroupSupportHelper", %"class.std::unordered_map.213", %"class.spirv_cross::SmallVector.27", %"class.spirv_cross::SmallVector.27", %"class.std::unordered_map.213", %"class.spirv_cross::SmallVector.227", i32, i32, i32, i8, i8, %"class.std::vector.230", %"class.std::vector.230", %"class.std::vector.235", %"class.std::vector.240", %"class.std::unordered_map.213", %"class.std::unordered_set", %"class.std::unordered_set", i8, %"class.std::unordered_set.245", %"class.std::unordered_set", ptr, %"class.std::unordered_map.263" }
%"class.spirv_cross::Compiler" = type { ptr, %"class.spirv_cross::ParsedIR", %"class.spirv_cross::SmallVector.92", %"class.spirv_cross::SmallVector.92", ptr, ptr, i32, %"class.std::unordered_set.95", i8, %"class.std::unordered_set", i8, i8, %"class.spirv_cross::SmallVector.114", %"class.spirv_cross::SmallVector.92", %"class.std::function", %"class.std::unordered_set", %"class.std::unordered_set", %"class.std::unordered_set", %"class.std::unordered_set", %"class.std::unordered_set", %"class.spirv_cross::Bitset", %"class.spirv_cross::Bitset", i32, i32, i8, %"class.std::unordered_set", i8, i8, i32, %"class.std::unordered_map.117", %"class.spirv_cross::SmallVector.92", %"class.std::unordered_map.131", %"class.std::unordered_set", i8, %"class.std::unordered_map.145" }
%"class.spirv_cross::ParsedIR" = type { %"class.std::unique_ptr", %"class.std::vector", %"class.spirv_cross::SmallVector", %"class.std::unordered_map", [14 x %"class.spirv_cross::SmallVector.7"], %"class.spirv_cross::SmallVector.7", %"class.spirv_cross::SmallVector.7", %"class.std::unordered_map.10", %"class.spirv_cross::SmallVector.24", %"class.spirv_cross::SmallVector.27", %"class.spirv_cross::SmallVector.30", %"class.std::unordered_map.33", %"class.std::unordered_map.52", %"class.spirv_cross::TypedID", %"struct.spirv_cross::ParsedIR::Source", i32, i32, i32, i32, %"class.std::__cxx11::basic_string", %"class.spirv_cross::Bitset", %"class.std::unordered_set" }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.1" }
%"struct.std::_Head_base.1" = type { ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.spirv_cross::SmallVector" = type { %"class.spirv_cross::VectorView", i64, %"class.spirv_cross::AlignedBuffer" }
%"class.spirv_cross::VectorView" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer" = type { [192 x i8] }
%"class.std::unordered_map" = type { %"class.std::_Hashtable" }
%"class.std::_Hashtable" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"class.spirv_cross::SmallVector.7" = type { %"class.spirv_cross::VectorView.8", i64, %"class.spirv_cross::AlignedBuffer.9" }
%"class.spirv_cross::VectorView.8" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.9" = type { [32 x i8] }
%"class.std::unordered_map.10" = type { %"class.std::_Hashtable.11" }
%"class.std::_Hashtable.11" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.spirv_cross::SmallVector.24" = type { %"class.spirv_cross::VectorView.25", i64, %"class.spirv_cross::AlignedBuffer.26" }
%"class.spirv_cross::VectorView.25" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.26" = type { [32 x i8] }
%"class.spirv_cross::SmallVector.30" = type { %"class.spirv_cross::VectorView.31", i64, %"class.spirv_cross::AlignedBuffer.32" }
%"class.spirv_cross::VectorView.31" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.32" = type { [8 x i8] }
%"class.std::unordered_map.33" = type { %"class.std::_Hashtable.34" }
%"class.std::_Hashtable.34" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.52" = type { %"class.std::_Hashtable.53" }
%"class.std::_Hashtable.53" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.spirv_cross::TypedID" = type { i32 }
%"struct.spirv_cross::ParsedIR::Source" = type <{ i32, i8, i8, i8, i8 }>
%"class.std::unordered_set.95" = type { %"class.std::_Hashtable.96" }
%"class.std::_Hashtable.96" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.spirv_cross::SmallVector.114" = type { %"class.spirv_cross::VectorView.115", i64, %"class.spirv_cross::AlignedBuffer.116" }
%"class.spirv_cross::VectorView.115" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.116" = type { [96 x i8] }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%"class.spirv_cross::Bitset" = type { i64, %"class.std::unordered_set" }
%"class.std::unordered_map.117" = type { %"class.std::_Hashtable.118" }
%"class.std::_Hashtable.118" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.spirv_cross::SmallVector.92" = type { %"class.spirv_cross::VectorView.93", i64, %"class.spirv_cross::AlignedBuffer.94" }
%"class.spirv_cross::VectorView.93" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.94" = type { [32 x i8] }
%"class.std::unordered_map.131" = type { %"class.std::_Hashtable.132" }
%"class.std::_Hashtable.132" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.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.27" = type { %"class.spirv_cross::VectorView.28", i64, %"class.spirv_cross::AlignedBuffer.29" }
%"class.spirv_cross::VectorView.28" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.29" = type { [256 x i8] }
%"class.spirv_cross::SmallVector.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.280", [4 x i8] }>
%"struct.spirv_cross::SPIRType" = type { %"struct.spirv_cross::IVariant.base", i32, i32, i32, i32, i32, %"class.spirv_cross::SmallVector.92", %"class.spirv_cross::SmallVector.284", i32, i8, i8, i32, %"class.spirv_cross::SmallVector.227", %"class.spirv_cross::SmallVector.92", %"struct.spirv_cross::SPIRType::ImageType", %"class.spirv_cross::TypedID.281", %"class.spirv_cross::TypedID.281", %"class.std::unordered_set.165" }
%"struct.spirv_cross::IVariant.base" = type <{ ptr, %"class.spirv_cross::TypedID.280" }>
%"class.spirv_cross::SmallVector.284" = type { %"class.spirv_cross::VectorView.285", i64, %"class.spirv_cross::AlignedBuffer.286" }
%"class.spirv_cross::VectorView.285" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.286" = type { [8 x i8] }
%"struct.spirv_cross::SPIRType::ImageType" = type { %"class.spirv_cross::TypedID.281", i32, i8, i8, i8, i32, i32, i32 }
%"class.spirv_cross::TypedID.281" = type { i32 }
%"struct.spirv_cross::SPIRCombinedImageSampler" = type { %"struct.spirv_cross::IVariant.base", %"class.spirv_cross::TypedID.281", %"class.spirv_cross::TypedID.282", %"class.spirv_cross::TypedID.282" }
%"struct.spirv_cross::SPIRVariable" = type { %"struct.spirv_cross::IVariant.base", %"class.spirv_cross::TypedID.281", i32, i32, %"class.spirv_cross::TypedID.280", %"class.spirv_cross::TypedID.282", %"class.spirv_cross::SmallVector.92", i8, i8, %"class.spirv_cross::TypedID.280", %"class.spirv_cross::SmallVector.7", i8, i8, i8, i8, i32, %"class.spirv_cross::TypedID.283", i8, i8, i8, ptr }
%"class.spirv_cross::TypedID.283" = type { i32 }

@_ZTIN11spirv_cross13CompilerErrorE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.135 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.718 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1063 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.1064 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.1065 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.1066 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.1067 = external hidden unnamed_addr constant [3 x i8], align 1

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

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

declare ptr @__cxa_allocate_exception(i64)

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

declare i32 @__gxx_personality_v0(...)

declare void @__cxa_free_exception(ptr)

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

declare void @__cxa_throw(ptr, ptr, ptr)

; 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)) #3 align 2

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK11spirv_cross12CompilerGLSL9is_legacyEv(ptr noundef nonnull align 8 dereferenceable(9848)) #4 align 2

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

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

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) #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)) #3 align 2

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

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

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

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

declare noundef nonnull align 8 dereferenceable(336) ptr @_ZNK11spirv_cross8Compiler15expression_typeEj(ptr noundef nonnull align 8 dereferenceable(3176), i32 noundef) #5

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11spirv_cross4joinIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_KcRS6_S9_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), ptr noundef nonnull align 1 dereferenceable(2)) #1

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

declare noundef ptr @_ZN11spirv_cross8Compiler26maybe_get_backing_variableEj(ptr noundef nonnull align 8 dereferenceable(3176), i32 noundef) #5

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11spirv_cross12CompilerGLSL13to_texture_opB5cxx11ERKNS_11InstructionEbPbRNS_11SmallVectorIjLm8EEE(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(9848) %1, ptr noundef nonnull align 4 dereferenceable(12) %2, i1 noundef zeroext %3, ptr noundef %4, ptr noundef nonnull align 8 dereferenceable(56) %5) unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca i8, align 1
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca %"class.spirv_cross::TypedID.282", align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i8, align 1
  %22 = alloca i8, align 1
  %23 = alloca i8, align 1
  %24 = alloca i8, align 1
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca %"class.spirv_cross::TypedID.280", align 4
  %28 = alloca ptr, align 8
  %29 = alloca i32, align 4
  %30 = alloca %"class.std::__cxx11::basic_string", align 8
  %31 = alloca %"class.std::allocator.71", align 1
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca %class.anon.388, align 8
  %46 = alloca %"struct.spirv_cross::CompilerGLSL::TextureFunctionBaseArguments", align 8
  %47 = alloca i1, align 1
  %48 = alloca %"struct.spirv_cross::CompilerGLSL::TextureFunctionNameArguments", align 8
  %49 = alloca %"class.std::__cxx11::basic_string", align 8
  %50 = alloca i32, align 4
  %51 = alloca %"struct.spirv_cross::CompilerGLSL::TextureFunctionArguments", align 8
  %52 = alloca %"class.std::__cxx11::basic_string", align 8
  %53 = alloca i8, align 1
  %54 = alloca ptr, align 8
  %55 = alloca %"class.spirv_cross::TypedID.282", align 4
  %56 = alloca ptr, align 8
  %57 = alloca %"class.std::__cxx11::basic_string", align 8
  %58 = alloca %"class.std::__cxx11::basic_string", align 8
  %59 = alloca %"class.std::__cxx11::basic_string", align 8
  %60 = alloca %"class.std::__cxx11::basic_string", align 8
  store ptr %0, ptr %7, align 8
  store ptr %1, ptr %8, align 8, !tbaa !5
  store ptr %2, ptr %9, align 8, !tbaa !5
  %61 = zext i1 %3 to i8
  store i8 %61, ptr %10, align 1, !tbaa !9
  store ptr %4, ptr %11, align 8, !tbaa !5
  store ptr %5, ptr %12, align 8, !tbaa !5
  %62 = load ptr, ptr %8, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #7
  %63 = load ptr, ptr %9, align 8, !tbaa !5
  %64 = call noundef ptr @_ZNK11spirv_cross8Compiler6streamERKNS_11InstructionE(ptr noundef nonnull align 8 dereferenceable(3176) %62, ptr noundef nonnull align 4 dereferenceable(12) %63)
  store ptr %64, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #7
  %65 = load ptr, ptr %9, align 8, !tbaa !5
  %66 = getelementptr inbounds %"struct.spirv_cross::Instruction", ptr %65, i32 0, i32 0
  %67 = load i16, ptr %66, align 4, !tbaa !11
  %68 = zext i16 %67 to i32
  store i32 %68, ptr %14, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #7
  %69 = load ptr, ptr %9, align 8, !tbaa !5
  %70 = getelementptr inbounds %"struct.spirv_cross::Instruction", ptr %69, i32 0, i32 3
  %71 = load i32, ptr %70, align 4, !tbaa !17
  store i32 %71, ptr %15, align 4, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #7
  %72 = load ptr, ptr %13, align 8, !tbaa !5
  %73 = getelementptr inbounds i32, ptr %72, i64 0
  %74 = load i32, ptr %73, align 4, !tbaa !18
  store i32 %74, ptr %16, align 4, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #7
  %75 = load ptr, ptr %13, align 8, !tbaa !5
  %76 = getelementptr inbounds i32, ptr %75, i64 2
  %77 = load i32, ptr %76, align 4, !tbaa !18
  call void @_ZN11spirv_cross7TypedIDILNS_5TypesE2EEC2Ej(ptr noundef nonnull align 4 dereferenceable(4) %17, i32 noundef %77)
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #7
  %78 = load ptr, ptr %13, align 8, !tbaa !5
  %79 = getelementptr inbounds i32, ptr %78, i64 3
  %80 = load i32, ptr %79, align 4, !tbaa !18
  store i32 %80, ptr %18, align 4, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #7
  store i32 0, ptr %19, align 4, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #7
  store i32 0, ptr %20, align 4, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #7
  store i8 0, ptr %21, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %22) #7
  store i8 0, ptr %22, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #7
  store i8 0, ptr %23, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %24) #7
  store i8 0, ptr %24, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #7
  store ptr null, ptr %25, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #7
  %81 = load i32, ptr %16, align 4, !tbaa !18
  %82 = call noundef nonnull align 8 dereferenceable(336) ptr @_ZN11spirv_cross8Compiler3getINS_8SPIRTypeEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %62, i32 noundef %81)
  store ptr %82, ptr %26, align 8, !tbaa !5
  %83 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11spirv_cross11SmallVectorIjLm8EE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(56) %83, ptr noundef nonnull align 4 dereferenceable(4) %18) #7
  call void @_ZN11spirv_cross7TypedIDILNS_5TypesE0EEC2ILS1_2EEERKNS0_IXT_EEE(ptr noundef nonnull align 4 dereferenceable(4) %27, ptr noundef nonnull align 4 dereferenceable(4) %17)
  %84 = getelementptr inbounds %"class.spirv_cross::TypedID.280", ptr %27, i32 0, i32 0
  %85 = load i32, ptr %84, align 4
  %86 = call noundef zeroext i1 @_ZNK11spirv_cross8Compiler14has_decorationENS_7TypedIDILNS_5TypesE0EEEN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %62, i32 %85, i32 noundef 5300)
  br i1 %86, label %87, label %92

87:                                               ; preds = %6
  %88 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE2EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %17)
  %89 = call noundef ptr @_ZN11spirv_cross8Compiler26maybe_get_backing_variableEj(ptr noundef nonnull align 8 dereferenceable(3176) %62, i32 noundef %88)
  %90 = icmp ne ptr %89, null
  br i1 %90, label %92, label %91

91:                                               ; preds = %87
  store i8 1, ptr %24, align 1, !tbaa !9
  br label %92

92:                                               ; preds = %91, %87, %6
  %93 = load i32, ptr %14, align 4, !tbaa !15
  switch i32 %93, label %221 [
    i32 89, label %94
    i32 90, label %94
    i32 307, label %94
    i32 308, label %94
    i32 93, label %102
    i32 94, label %102
    i32 311, label %102
    i32 312, label %102
    i32 97, label %110
    i32 315, label %110
    i32 96, label %153
    i32 314, label %153
    i32 95, label %211
    i32 313, label %211
    i32 98, label %211
    i32 91, label %216
    i32 92, label %216
    i32 309, label %216
    i32 310, label %216
  ]

94:                                               ; preds = %92, %92, %92, %92
  %95 = load ptr, ptr %13, align 8, !tbaa !5
  %96 = getelementptr inbounds i32, ptr %95, i64 4
  %97 = load i32, ptr %96, align 4, !tbaa !18
  store i32 %97, ptr %19, align 4, !tbaa !18
  %98 = load ptr, ptr %13, align 8, !tbaa !5
  %99 = getelementptr inbounds i32, ptr %98, i64 5
  store ptr %99, ptr %25, align 8, !tbaa !5
  %100 = load i32, ptr %15, align 4, !tbaa !18
  %101 = sub i32 %100, 5
  store i32 %101, ptr %15, align 4, !tbaa !18
  br label %226

102:                                              ; preds = %92, %92, %92, %92
  %103 = load ptr, ptr %13, align 8, !tbaa !5
  %104 = getelementptr inbounds i32, ptr %103, i64 4
  %105 = load i32, ptr %104, align 4, !tbaa !18
  store i32 %105, ptr %19, align 4, !tbaa !18
  %106 = load ptr, ptr %13, align 8, !tbaa !5
  %107 = getelementptr inbounds i32, ptr %106, i64 5
  store ptr %107, ptr %25, align 8, !tbaa !5
  %108 = load i32, ptr %15, align 4, !tbaa !18
  %109 = sub i32 %108, 5
  store i32 %109, ptr %15, align 4, !tbaa !18
  store i8 1, ptr %22, align 1, !tbaa !9
  br label %226

110:                                              ; preds = %92, %92
  %111 = load ptr, ptr %13, align 8, !tbaa !5
  %112 = getelementptr inbounds i32, ptr %111, i64 4
  %113 = load i32, ptr %112, align 4, !tbaa !18
  store i32 %113, ptr %19, align 4, !tbaa !18
  %114 = load ptr, ptr %13, align 8, !tbaa !5
  %115 = getelementptr inbounds i32, ptr %114, i64 5
  store ptr %115, ptr %25, align 8, !tbaa !5
  %116 = load i32, ptr %15, align 4, !tbaa !18
  %117 = sub i32 %116, 5
  store i32 %117, ptr %15, align 4, !tbaa !18
  store i8 1, ptr %21, align 1, !tbaa !9
  %118 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %62, i32 0, i32 9
  %119 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %118, i32 0, i32 1
  %120 = load i8, ptr %119, align 4, !tbaa !19, !range !127, !noundef !128
  %121 = trunc i8 %120 to i1
  br i1 %121, label %122, label %134

122:                                              ; preds = %110
  %123 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %62, i32 0, i32 9
  %124 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %123, i32 0, i32 0
  %125 = load i32, ptr %124, align 4, !tbaa !129
  %126 = icmp ult i32 %125, 310
  br i1 %126, label %127, label %134

127:                                              ; preds = %122
  %128 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %128, ptr noundef @.str.1063)
          to label %129 unwind label %130

129:                                              ; preds = %127
  call void @__cxa_throw(ptr %128, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #8
  unreachable

130:                                              ; preds = %127
  %131 = landingpad { ptr, i32 }
          cleanup
  %132 = extractvalue { ptr, i32 } %131, 0
  store ptr %132, ptr %28, align 8
  %133 = extractvalue { ptr, i32 } %131, 1
  store i32 %133, ptr %29, align 4
  call void @__cxa_free_exception(ptr %128) #7
  br label %629

134:                                              ; preds = %122, %110
  %135 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %62, i32 0, i32 9
  %136 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %135, i32 0, i32 1
  %137 = load i8, ptr %136, align 4, !tbaa !19, !range !127, !noundef !128
  %138 = trunc i8 %137 to i1
  br i1 %138, label %151, label %139

139:                                              ; preds = %134
  %140 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %62, i32 0, i32 9
  %141 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %140, i32 0, i32 0
  %142 = load i32, ptr %141, align 4, !tbaa !129
  %143 = icmp ult i32 %142, 400
  br i1 %143, label %144, label %151

144:                                              ; preds = %139
  %145 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %145, ptr noundef @.str.1064)
          to label %146 unwind label %147

146:                                              ; preds = %144
  call void @__cxa_throw(ptr %145, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #8
  unreachable

147:                                              ; preds = %144
  %148 = landingpad { ptr, i32 }
          cleanup
  %149 = extractvalue { ptr, i32 } %148, 0
  store ptr %149, ptr %28, align 8
  %150 = extractvalue { ptr, i32 } %148, 1
  store i32 %150, ptr %29, align 4
  call void @__cxa_free_exception(ptr %145) #7
  br label %629

151:                                              ; preds = %139, %134
  br label %152

152:                                              ; preds = %151
  br label %226

153:                                              ; preds = %92, %92
  %154 = load ptr, ptr %13, align 8, !tbaa !5
  %155 = getelementptr inbounds i32, ptr %154, i64 4
  %156 = load i32, ptr %155, align 4, !tbaa !18
  store i32 %156, ptr %20, align 4, !tbaa !18
  %157 = load ptr, ptr %13, align 8, !tbaa !5
  %158 = getelementptr inbounds i32, ptr %157, i64 5
  store ptr %158, ptr %25, align 8, !tbaa !5
  %159 = load i32, ptr %15, align 4, !tbaa !18
  %160 = sub i32 %159, 5
  store i32 %160, ptr %15, align 4, !tbaa !18
  store i8 1, ptr %21, align 1, !tbaa !9
  %161 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %62, i32 0, i32 9
  %162 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %161, i32 0, i32 1
  %163 = load i8, ptr %162, align 4, !tbaa !19, !range !127, !noundef !128
  %164 = trunc i8 %163 to i1
  br i1 %164, label %165, label %177

165:                                              ; preds = %153
  %166 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %62, i32 0, i32 9
  %167 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %166, i32 0, i32 0
  %168 = load i32, ptr %167, align 4, !tbaa !129
  %169 = icmp ult i32 %168, 310
  br i1 %169, label %170, label %177

170:                                              ; preds = %165
  %171 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %171, ptr noundef @.str.1063)
          to label %172 unwind label %173

172:                                              ; preds = %170
  call void @__cxa_throw(ptr %171, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #8
  unreachable

173:                                              ; preds = %170
  %174 = landingpad { ptr, i32 }
          cleanup
  %175 = extractvalue { ptr, i32 } %174, 0
  store ptr %175, ptr %28, align 8
  %176 = extractvalue { ptr, i32 } %174, 1
  store i32 %176, ptr %29, align 4
  call void @__cxa_free_exception(ptr %171) #7
  br label %629

177:                                              ; preds = %165, %153
  %178 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %62, i32 0, i32 9
  %179 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %178, i32 0, i32 1
  %180 = load i8, ptr %179, align 4, !tbaa !19, !range !127, !noundef !128
  %181 = trunc i8 %180 to i1
  br i1 %181, label %209, label %182

182:                                              ; preds = %177
  %183 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %62, i32 0, i32 9
  %184 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %183, i32 0, i32 0
  %185 = load i32, ptr %184, align 4, !tbaa !129
  %186 = icmp ult i32 %185, 400
  br i1 %186, label %187, label %209

187:                                              ; preds = %182
  %188 = load i32, ptr %20, align 4, !tbaa !18
  %189 = call noundef zeroext i1 @_ZNK11spirv_cross12CompilerGLSL27expression_is_constant_nullEj(ptr noundef nonnull align 8 dereferenceable(9848) %62, i32 noundef %188)
  br i1 %189, label %197, label %190

190:                                              ; preds = %187
  %191 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %191, ptr noundef @.str.1065)
          to label %192 unwind label %193

192:                                              ; preds = %190
  call void @__cxa_throw(ptr %191, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #8
  unreachable

193:                                              ; preds = %190
  %194 = landingpad { ptr, i32 }
          cleanup
  %195 = extractvalue { ptr, i32 } %194, 0
  store ptr %195, ptr %28, align 8
  %196 = extractvalue { ptr, i32 } %194, 1
  store i32 %196, ptr %29, align 4
  call void @__cxa_free_exception(ptr %191) #7
  br label %629

197:                                              ; preds = %187
  call void @llvm.lifetime.start.p0(i64 32, ptr %30) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %31) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef @.str.1066, ptr noundef nonnull align 1 dereferenceable(1) %31)
          to label %198 unwind label %200

198:                                              ; preds = %197
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %62, ptr noundef nonnull align 8 dereferenceable(32) %30)
          to label %199 unwind label %204

199:                                              ; preds = %198
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #7
  br label %209

200:                                              ; preds = %197
  %201 = landingpad { ptr, i32 }
          cleanup
  %202 = extractvalue { ptr, i32 } %201, 0
  store ptr %202, ptr %28, align 8
  %203 = extractvalue { ptr, i32 } %201, 1
  store i32 %203, ptr %29, align 4
  br label %208

204:                                              ; preds = %198
  %205 = landingpad { ptr, i32 }
          cleanup
  %206 = extractvalue { ptr, i32 } %205, 0
  store ptr %206, ptr %28, align 8
  %207 = extractvalue { ptr, i32 } %205, 1
  store i32 %207, ptr %29, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #7
  br label %208

208:                                              ; preds = %204, %200
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #7
  br label %629

209:                                              ; preds = %199, %182, %177
  br label %210

210:                                              ; preds = %209
  br label %226

211:                                              ; preds = %92, %92, %92
  %212 = load ptr, ptr %13, align 8, !tbaa !5
  %213 = getelementptr inbounds i32, ptr %212, i64 4
  store ptr %213, ptr %25, align 8, !tbaa !5
  %214 = load i32, ptr %15, align 4, !tbaa !18
  %215 = sub i32 %214, 4
  store i32 %215, ptr %15, align 4, !tbaa !18
  store i8 1, ptr %23, align 1, !tbaa !9
  br label %226

216:                                              ; preds = %92, %92, %92, %92
  %217 = load ptr, ptr %13, align 8, !tbaa !5
  %218 = getelementptr inbounds i32, ptr %217, i64 4
  store ptr %218, ptr %25, align 8, !tbaa !5
  %219 = load i32, ptr %15, align 4, !tbaa !18
  %220 = sub i32 %219, 4
  store i32 %220, ptr %15, align 4, !tbaa !18
  store i8 1, ptr %22, align 1, !tbaa !9
  br label %226

221:                                              ; preds = %92
  %222 = load ptr, ptr %13, align 8, !tbaa !5
  %223 = getelementptr inbounds i32, ptr %222, i64 4
  store ptr %223, ptr %25, align 8, !tbaa !5
  %224 = load i32, ptr %15, align 4, !tbaa !18
  %225 = sub i32 %224, 4
  store i32 %225, ptr %15, align 4, !tbaa !18
  br label %226

226:                                              ; preds = %221, %216, %211, %210, %152, %102, %94
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #7
  %227 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE2EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %17)
  %228 = call noundef nonnull align 8 dereferenceable(336) ptr @_ZNK11spirv_cross8Compiler15expression_typeEj(ptr noundef nonnull align 8 dereferenceable(3176) %62, i32 noundef %227)
  store ptr %228, ptr %32, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #7
  %229 = load ptr, ptr %32, align 8, !tbaa !5
  %230 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %229, i32 0, i32 1
  %231 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %230)
  %232 = call noundef nonnull align 8 dereferenceable(336) ptr @_ZN11spirv_cross8Compiler3getINS_8SPIRTypeEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %62, i32 noundef %231)
  store ptr %232, ptr %33, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #7
  store i32 0, ptr %34, align 4, !tbaa !18
  %233 = load ptr, ptr %33, align 8, !tbaa !5
  %234 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %233, i32 0, i32 14
  %235 = getelementptr inbounds %"struct.spirv_cross::SPIRType::ImageType", ptr %234, i32 0, i32 1
  %236 = load i32, ptr %235, align 4, !tbaa !130
  switch i32 %236, label %242 [
    i32 0, label %237
    i32 1, label %238
    i32 2, label %239
    i32 3, label %240
    i32 5, label %241
  ]

237:                                              ; preds = %226
  store i32 1, ptr %34, align 4, !tbaa !18
  br label %243

238:                                              ; preds = %226
  store i32 2, ptr %34, align 4, !tbaa !18
  br label %243

239:                                              ; preds = %226
  store i32 3, ptr %34, align 4, !tbaa !18
  br label %243

240:                                              ; preds = %226
  store i32 3, ptr %34, align 4, !tbaa !18
  br label %243

241:                                              ; preds = %226
  store i32 1, ptr %34, align 4, !tbaa !18
  br label %243

242:                                              ; preds = %226
  store i32 2, ptr %34, align 4, !tbaa !18
  br label %243

243:                                              ; preds = %242, %241, %240, %239, %238, %237
  %244 = load i32, ptr %19, align 4, !tbaa !18
  %245 = icmp ne i32 %244, 0
  br i1 %245, label %246, label %248

246:                                              ; preds = %243
  %247 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11spirv_cross11SmallVectorIjLm8EE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(56) %247, ptr noundef nonnull align 4 dereferenceable(4) %19) #7
  br label %248

248:                                              ; preds = %246, %243
  %249 = load i8, ptr %22, align 1, !tbaa !9, !range !127, !noundef !128
  %250 = trunc i8 %249 to i1
  br i1 %250, label %251, label %254

251:                                              ; preds = %248
  %252 = load i32, ptr %34, align 4, !tbaa !18
  %253 = add i32 %252, 1
  store i32 %253, ptr %34, align 4, !tbaa !18
  br label %254

254:                                              ; preds = %251, %248
  %255 = load ptr, ptr %33, align 8, !tbaa !5
  %256 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %255, i32 0, i32 14
  %257 = getelementptr inbounds %"struct.spirv_cross::SPIRType::ImageType", ptr %256, i32 0, i32 3
  %258 = load i8, ptr %257, align 1, !tbaa !143, !range !127, !noundef !128
  %259 = trunc i8 %258 to i1
  br i1 %259, label %260, label %263

260:                                              ; preds = %254
  %261 = load i32, ptr %34, align 4, !tbaa !18
  %262 = add i32 %261, 1
  store i32 %262, ptr %34, align 4, !tbaa !18
  br label %263

263:                                              ; preds = %260, %254
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #7
  store i32 0, ptr %35, align 4, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #7
  store i32 0, ptr %36, align 4, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #7
  store i32 0, ptr %37, align 4, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #7
  store i32 0, ptr %38, align 4, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #7
  store i32 0, ptr %39, align 4, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #7
  store i32 0, ptr %40, align 4, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #7
  store i32 0, ptr %41, align 4, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #7
  store i32 0, ptr %42, align 4, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #7
  store i32 0, ptr %43, align 4, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #7
  store i32 0, ptr %44, align 4, !tbaa !18
  %264 = load i32, ptr %15, align 4, !tbaa !18
  %265 = icmp ne i32 %264, 0
  br i1 %265, label %266, label %272

266:                                              ; preds = %263
  %267 = load ptr, ptr %25, align 8, !tbaa !5
  %268 = getelementptr inbounds i32, ptr %267, i32 1
  store ptr %268, ptr %25, align 8, !tbaa !5
  %269 = load i32, ptr %267, align 4, !tbaa !18
  store i32 %269, ptr %44, align 4, !tbaa !18
  %270 = load i32, ptr %15, align 4, !tbaa !18
  %271 = add i32 %270, -1
  store i32 %271, ptr %15, align 4, !tbaa !18
  br label %272

272:                                              ; preds = %266, %263
  call void @llvm.lifetime.start.p0(i64 32, ptr %45) #7
  %273 = getelementptr inbounds %class.anon.388, ptr %45, i32 0, i32 0
  store ptr %15, ptr %273, align 8, !tbaa !5
  %274 = getelementptr inbounds %class.anon.388, ptr %45, i32 0, i32 1
  store ptr %44, ptr %274, align 8, !tbaa !5
  %275 = getelementptr inbounds %class.anon.388, ptr %45, i32 0, i32 2
  store ptr %25, ptr %275, align 8, !tbaa !5
  %276 = getelementptr inbounds %class.anon.388, ptr %45, i32 0, i32 3
  %277 = load ptr, ptr %12, align 8, !tbaa !5
  store ptr %277, ptr %276, align 8, !tbaa !5
  call void @"_ZZN11spirv_cross12CompilerGLSL13to_texture_opB5cxx11ERKNS_11InstructionEbPbRNS_11SmallVectorIjLm8EEEENK3$_0clERjj"(ptr noundef nonnull align 8 dereferenceable(32) %45, ptr noundef nonnull align 4 dereferenceable(4) %35, i32 noundef 1)
  call void @"_ZZN11spirv_cross12CompilerGLSL13to_texture_opB5cxx11ERKNS_11InstructionEbPbRNS_11SmallVectorIjLm8EEEENK3$_0clERjj"(ptr noundef nonnull align 8 dereferenceable(32) %45, ptr noundef nonnull align 4 dereferenceable(4) %36, i32 noundef 2)
  call void @"_ZZN11spirv_cross12CompilerGLSL13to_texture_opB5cxx11ERKNS_11InstructionEbPbRNS_11SmallVectorIjLm8EEEENK3$_0clERjj"(ptr noundef nonnull align 8 dereferenceable(32) %45, ptr noundef nonnull align 4 dereferenceable(4) %37, i32 noundef 4)
  call void @"_ZZN11spirv_cross12CompilerGLSL13to_texture_opB5cxx11ERKNS_11InstructionEbPbRNS_11SmallVectorIjLm8EEEENK3$_0clERjj"(ptr noundef nonnull align 8 dereferenceable(32) %45, ptr noundef nonnull align 4 dereferenceable(4) %38, i32 noundef 4)
  call void @"_ZZN11spirv_cross12CompilerGLSL13to_texture_opB5cxx11ERKNS_11InstructionEbPbRNS_11SmallVectorIjLm8EEEENK3$_0clERjj"(ptr noundef nonnull align 8 dereferenceable(32) %45, ptr noundef nonnull align 4 dereferenceable(4) %39, i32 noundef 8)
  call void @"_ZZN11spirv_cross12CompilerGLSL13to_texture_opB5cxx11ERKNS_11InstructionEbPbRNS_11SmallVectorIjLm8EEEENK3$_0clERjj"(ptr noundef nonnull align 8 dereferenceable(32) %45, ptr noundef nonnull align 4 dereferenceable(4) %40, i32 noundef 16)
  call void @"_ZZN11spirv_cross12CompilerGLSL13to_texture_opB5cxx11ERKNS_11InstructionEbPbRNS_11SmallVectorIjLm8EEEENK3$_0clERjj"(ptr noundef nonnull align 8 dereferenceable(32) %45, ptr noundef nonnull align 4 dereferenceable(4) %41, i32 noundef 32)
  call void @"_ZZN11spirv_cross12CompilerGLSL13to_texture_opB5cxx11ERKNS_11InstructionEbPbRNS_11SmallVectorIjLm8EEEENK3$_0clERjj"(ptr noundef nonnull align 8 dereferenceable(32) %45, ptr noundef nonnull align 4 dereferenceable(4) %42, i32 noundef 64)
  call void @"_ZZN11spirv_cross12CompilerGLSL13to_texture_opB5cxx11ERKNS_11InstructionEbPbRNS_11SmallVectorIjLm8EEEENK3$_0clERjj"(ptr noundef nonnull align 8 dereferenceable(32) %45, ptr noundef nonnull align 4 dereferenceable(4) %43, i32 noundef 128)
  call void @llvm.lifetime.start.p0(i64 24, ptr %46) #7
  %278 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionBaseArguments", ptr %46, i32 0, i32 0
  call void @_ZN11spirv_cross7TypedIDILNS_5TypesE2EEC2Ej(ptr noundef nonnull align 4 dereferenceable(4) %278, i32 noundef 0)
  %279 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionBaseArguments", ptr %46, i32 0, i32 2
  store ptr null, ptr %279, align 8, !tbaa !144
  %280 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionBaseArguments", ptr %46, i32 0, i32 3
  store i8 0, ptr %280, align 8, !tbaa !147
  %281 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionBaseArguments", ptr %46, i32 0, i32 4
  store i8 0, ptr %281, align 1, !tbaa !148
  %282 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionBaseArguments", ptr %46, i32 0, i32 5
  store i8 0, ptr %282, align 2, !tbaa !149
  %283 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionBaseArguments", ptr %46, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %283, ptr align 4 %17, i64 4, i1 false), !tbaa.struct !150
  %284 = load ptr, ptr %33, align 8, !tbaa !5
  %285 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionBaseArguments", ptr %46, i32 0, i32 2
  store ptr %284, ptr %285, align 8, !tbaa !144
  %286 = load i8, ptr %23, align 1, !tbaa !9, !range !127, !noundef !128
  %287 = trunc i8 %286 to i1
  %288 = zext i1 %287 to i32
  %289 = icmp ne i32 %288, 0
  %290 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionBaseArguments", ptr %46, i32 0, i32 3
  %291 = zext i1 %289 to i8
  store i8 %291, ptr %290, align 8, !tbaa !147
  %292 = load i8, ptr %21, align 1, !tbaa !9, !range !127, !noundef !128
  %293 = trunc i8 %292 to i1
  %294 = zext i1 %293 to i32
  %295 = icmp ne i32 %294, 0
  %296 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionBaseArguments", ptr %46, i32 0, i32 4
  %297 = zext i1 %295 to i8
  store i8 %297, ptr %296, align 1, !tbaa !148
  %298 = load i8, ptr %22, align 1, !tbaa !9, !range !127, !noundef !128
  %299 = trunc i8 %298 to i1
  %300 = zext i1 %299 to i32
  %301 = icmp ne i32 %300, 0
  %302 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionBaseArguments", ptr %46, i32 0, i32 5
  %303 = zext i1 %301 to i8
  store i8 %303, ptr %302, align 2, !tbaa !149
  store i1 false, ptr %47, align 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %0) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr %48) #7
  %304 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionNameArguments", ptr %48, i32 0, i32 0
  %305 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionBaseArguments", ptr %304, i32 0, i32 0
  invoke void @_ZN11spirv_cross7TypedIDILNS_5TypesE2EEC2Ej(ptr noundef nonnull align 4 dereferenceable(4) %305, i32 noundef 0)
          to label %306 unwind label %371

306:                                              ; preds = %272
  %307 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionBaseArguments", ptr %304, i32 0, i32 2
  store ptr null, ptr %307, align 8, !tbaa !144
  %308 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionBaseArguments", ptr %304, i32 0, i32 3
  store i8 0, ptr %308, align 8, !tbaa !147
  %309 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionBaseArguments", ptr %304, i32 0, i32 4
  store i8 0, ptr %309, align 1, !tbaa !148
  %310 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionBaseArguments", ptr %304, i32 0, i32 5
  store i8 0, ptr %310, align 2, !tbaa !149
  %311 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionNameArguments", ptr %48, i32 0, i32 1
  store i8 0, ptr %311, align 8, !tbaa !151
  %312 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionNameArguments", ptr %48, i32 0, i32 2
  store i8 0, ptr %312, align 1, !tbaa !153
  %313 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionNameArguments", ptr %48, i32 0, i32 3
  store i8 0, ptr %313, align 2, !tbaa !154
  %314 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionNameArguments", ptr %48, i32 0, i32 4
  store i8 0, ptr %314, align 1, !tbaa !155
  %315 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionNameArguments", ptr %48, i32 0, i32 5
  store i8 0, ptr %315, align 4, !tbaa !156
  %316 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionNameArguments", ptr %48, i32 0, i32 6
  store i8 0, ptr %316, align 1, !tbaa !157
  %317 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionNameArguments", ptr %48, i32 0, i32 7
  store i32 0, ptr %317, align 8, !tbaa !158
  %318 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionNameArguments", ptr %48, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %318, ptr align 8 %46, i64 19, i1 false), !tbaa.struct !159
  %319 = load i32, ptr %41, align 4, !tbaa !18
  %320 = icmp ne i32 %319, 0
  %321 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionNameArguments", ptr %48, i32 0, i32 1
  %322 = zext i1 %320 to i8
  store i8 %322, ptr %321, align 8, !tbaa !151
  %323 = load i32, ptr %39, align 4, !tbaa !18
  %324 = icmp ne i32 %323, 0
  br i1 %324, label %328, label %325

325:                                              ; preds = %306
  %326 = load i32, ptr %40, align 4, !tbaa !18
  %327 = icmp ne i32 %326, 0
  br label %328

328:                                              ; preds = %325, %306
  %329 = phi i1 [ true, %306 ], [ %327, %325 ]
  %330 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionNameArguments", ptr %48, i32 0, i32 2
  %331 = zext i1 %329 to i8
  store i8 %331, ptr %330, align 1, !tbaa !153
  %332 = load i32, ptr %37, align 4, !tbaa !18
  %333 = icmp ne i32 %332, 0
  br i1 %333, label %337, label %334

334:                                              ; preds = %328
  %335 = load i32, ptr %38, align 4, !tbaa !18
  %336 = icmp ne i32 %335, 0
  br label %337

337:                                              ; preds = %334, %328
  %338 = phi i1 [ true, %328 ], [ %336, %334 ]
  %339 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionNameArguments", ptr %48, i32 0, i32 3
  %340 = zext i1 %338 to i8
  store i8 %340, ptr %339, align 2, !tbaa !154
  %341 = load i32, ptr %19, align 4, !tbaa !18
  %342 = icmp ne i32 %341, 0
  %343 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionNameArguments", ptr %48, i32 0, i32 4
  %344 = zext i1 %342 to i8
  store i8 %344, ptr %343, align 1, !tbaa !155
  %345 = load i8, ptr %10, align 1, !tbaa !9, !range !127, !noundef !128
  %346 = trunc i8 %345 to i1
  %347 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionNameArguments", ptr %48, i32 0, i32 5
  %348 = zext i1 %346 to i8
  store i8 %348, ptr %347, align 4, !tbaa !156
  %349 = load i32, ptr %43, align 4, !tbaa !18
  %350 = icmp ne i32 %349, 0
  %351 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionNameArguments", ptr %48, i32 0, i32 6
  %352 = zext i1 %350 to i8
  store i8 %352, ptr %351, align 1, !tbaa !157
  %353 = load i32, ptr %36, align 4, !tbaa !18
  %354 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionNameArguments", ptr %48, i32 0, i32 7
  store i32 %353, ptr %354, align 8, !tbaa !158
  call void @llvm.lifetime.start.p0(i64 32, ptr %49) #7
  %355 = load ptr, ptr %62, align 8, !tbaa !160
  %356 = getelementptr inbounds ptr, ptr %355, i64 30
  %357 = load ptr, ptr %356, align 8
  invoke void %357(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %49, ptr noundef nonnull align 8 dereferenceable(9848) %62, ptr noundef nonnull align 8 dereferenceable(36) %48)
          to label %358 unwind label %375

358:                                              ; preds = %337
  %359 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %49)
          to label %360 unwind label %379

360:                                              ; preds = %358
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %49) #7
  %361 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.718)
          to label %362 unwind label %371

362:                                              ; preds = %360
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #7
  store i32 0, ptr %50, align 4, !tbaa !18
  %363 = load i8, ptr %10, align 1, !tbaa !9, !range !127, !noundef !128
  %364 = trunc i8 %363 to i1
  br i1 %364, label %365, label %388

365:                                              ; preds = %362
  %366 = load ptr, ptr %13, align 8, !tbaa !5
  %367 = getelementptr inbounds i32, ptr %366, i64 1
  %368 = load i32, ptr %367, align 4, !tbaa !18
  %369 = invoke noundef i32 @_ZNK11spirv_cross12CompilerGLSL28get_sparse_feedback_texel_idEj(ptr noundef nonnull align 8 dereferenceable(9848) %62, i32 noundef %368)
          to label %370 unwind label %384

370:                                              ; preds = %365
  store i32 %369, ptr %50, align 4, !tbaa !18
  br label %388

371:                                              ; preds = %360, %272
  %372 = landingpad { ptr, i32 }
          cleanup
  %373 = extractvalue { ptr, i32 } %372, 0
  store ptr %373, ptr %28, align 8
  %374 = extractvalue { ptr, i32 } %372, 1
  store i32 %374, ptr %29, align 4
  br label %626

375:                                              ; preds = %337
  %376 = landingpad { ptr, i32 }
          cleanup
  %377 = extractvalue { ptr, i32 } %376, 0
  store ptr %377, ptr %28, align 8
  %378 = extractvalue { ptr, i32 } %376, 1
  store i32 %378, ptr %29, align 4
  br label %383

379:                                              ; preds = %358
  %380 = landingpad { ptr, i32 }
          cleanup
  %381 = extractvalue { ptr, i32 } %380, 0
  store ptr %381, ptr %28, align 8
  %382 = extractvalue { ptr, i32 } %380, 1
  store i32 %382, ptr %29, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #7
  br label %383

383:                                              ; preds = %379, %375
  call void @llvm.lifetime.end.p0(i64 32, ptr %49) #7
  br label %626

384:                                              ; preds = %365
  %385 = landingpad { ptr, i32 }
          cleanup
  %386 = extractvalue { ptr, i32 } %385, 0
  store ptr %386, ptr %28, align 8
  %387 = extractvalue { ptr, i32 } %385, 1
  store i32 %387, ptr %29, align 4
  br label %625

388:                                              ; preds = %370, %362
  call void @llvm.lifetime.start.p0(i64 80, ptr %51) #7
  %389 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionArguments", ptr %51, i32 0, i32 0
  %390 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionBaseArguments", ptr %389, i32 0, i32 0
  invoke void @_ZN11spirv_cross7TypedIDILNS_5TypesE2EEC2Ej(ptr noundef nonnull align 4 dereferenceable(4) %390, i32 noundef 0)
          to label %391 unwind label %432

391:                                              ; preds = %388
  %392 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionBaseArguments", ptr %389, i32 0, i32 2
  store ptr null, ptr %392, align 8, !tbaa !144
  %393 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionBaseArguments", ptr %389, i32 0, i32 3
  store i8 0, ptr %393, align 8, !tbaa !147
  %394 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionBaseArguments", ptr %389, i32 0, i32 4
  store i8 0, ptr %394, align 1, !tbaa !148
  %395 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionBaseArguments", ptr %389, i32 0, i32 5
  store i8 0, ptr %395, align 2, !tbaa !149
  %396 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionArguments", ptr %51, i32 0, i32 1
  store i32 0, ptr %396, align 8, !tbaa !162
  %397 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionArguments", ptr %51, i32 0, i32 2
  store i32 0, ptr %397, align 4, !tbaa !164
  %398 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionArguments", ptr %51, i32 0, i32 3
  store i32 0, ptr %398, align 8, !tbaa !165
  %399 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionArguments", ptr %51, i32 0, i32 4
  store i32 0, ptr %399, align 4, !tbaa !166
  %400 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionArguments", ptr %51, i32 0, i32 5
  store i32 0, ptr %400, align 8, !tbaa !167
  %401 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionArguments", ptr %51, i32 0, i32 6
  store i32 0, ptr %401, align 4, !tbaa !168
  %402 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionArguments", ptr %51, i32 0, i32 7
  store i32 0, ptr %402, align 8, !tbaa !169
  %403 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionArguments", ptr %51, i32 0, i32 8
  store i32 0, ptr %403, align 4, !tbaa !170
  %404 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionArguments", ptr %51, i32 0, i32 9
  store i32 0, ptr %404, align 8, !tbaa !171
  %405 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionArguments", ptr %51, i32 0, i32 10
  store i32 0, ptr %405, align 4, !tbaa !172
  %406 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionArguments", ptr %51, i32 0, i32 11
  store i32 0, ptr %406, align 8, !tbaa !173
  %407 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionArguments", ptr %51, i32 0, i32 12
  store i32 0, ptr %407, align 4, !tbaa !174
  %408 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionArguments", ptr %51, i32 0, i32 13
  store i8 0, ptr %408, align 8, !tbaa !175
  %409 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionArguments", ptr %51, i32 0, i32 14
  store i8 0, ptr %409, align 1, !tbaa !176
  %410 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionArguments", ptr %51, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %410, ptr align 8 %46, i64 19, i1 false), !tbaa.struct !159
  %411 = load i32, ptr %18, align 4, !tbaa !18
  %412 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionArguments", ptr %51, i32 0, i32 1
  store i32 %411, ptr %412, align 8, !tbaa !162
  %413 = load i32, ptr %34, align 4, !tbaa !18
  %414 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionArguments", ptr %51, i32 0, i32 2
  store i32 %413, ptr %414, align 4, !tbaa !164
  %415 = load i32, ptr %19, align 4, !tbaa !18
  %416 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionArguments", ptr %51, i32 0, i32 3
  store i32 %415, ptr %416, align 8, !tbaa !165
  %417 = load i32, ptr %37, align 4, !tbaa !18
  %418 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionArguments", ptr %51, i32 0, i32 4
  store i32 %417, ptr %418, align 4, !tbaa !166
  %419 = load i32, ptr %38, align 4, !tbaa !18
  %420 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionArguments", ptr %51, i32 0, i32 5
  store i32 %419, ptr %420, align 8, !tbaa !167
  %421 = load i32, ptr %36, align 4, !tbaa !18
  %422 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionArguments", ptr %51, i32 0, i32 6
  store i32 %421, ptr %422, align 4, !tbaa !168
  %423 = load i32, ptr %41, align 4, !tbaa !18
  %424 = icmp ne i32 %423, 0
  %425 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionArguments", ptr %51, i32 0, i32 14
  %426 = zext i1 %424 to i8
  store i8 %426, ptr %425, align 1, !tbaa !176
  %427 = load i32, ptr %41, align 4, !tbaa !18
  %428 = icmp ne i32 %427, 0
  br i1 %428, label %429, label %436

429:                                              ; preds = %391
  %430 = load i32, ptr %41, align 4, !tbaa !18
  %431 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionArguments", ptr %51, i32 0, i32 7
  store i32 %430, ptr %431, align 8, !tbaa !169
  br label %446

432:                                              ; preds = %500, %483, %480, %477, %469, %467, %388
  %433 = landingpad { ptr, i32 }
          cleanup
  %434 = extractvalue { ptr, i32 } %433, 0
  store ptr %434, ptr %28, align 8
  %435 = extractvalue { ptr, i32 } %433, 1
  store i32 %435, ptr %29, align 4
  br label %624

436:                                              ; preds = %391
  %437 = load i32, ptr %39, align 4, !tbaa !18
  %438 = icmp ne i32 %437, 0
  br i1 %438, label %439, label %442

439:                                              ; preds = %436
  %440 = load i32, ptr %39, align 4, !tbaa !18
  %441 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionArguments", ptr %51, i32 0, i32 7
  store i32 %440, ptr %441, align 8, !tbaa !169
  br label %445

442:                                              ; preds = %436
  %443 = load i32, ptr %40, align 4, !tbaa !18
  %444 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionArguments", ptr %51, i32 0, i32 7
  store i32 %443, ptr %444, align 8, !tbaa !169
  br label %445

445:                                              ; preds = %442, %439
  br label %446

446:                                              ; preds = %445, %429
  %447 = load i32, ptr %35, align 4, !tbaa !18
  %448 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionArguments", ptr %51, i32 0, i32 8
  store i32 %447, ptr %448, align 4, !tbaa !170
  %449 = load i32, ptr %20, align 4, !tbaa !18
  %450 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionArguments", ptr %51, i32 0, i32 9
  store i32 %449, ptr %450, align 8, !tbaa !171
  %451 = load i32, ptr %42, align 4, !tbaa !18
  %452 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionArguments", ptr %51, i32 0, i32 10
  store i32 %451, ptr %452, align 4, !tbaa !172
  %453 = load i32, ptr %50, align 4, !tbaa !18
  %454 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionArguments", ptr %51, i32 0, i32 11
  store i32 %453, ptr %454, align 8, !tbaa !173
  %455 = load i32, ptr %43, align 4, !tbaa !18
  %456 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionArguments", ptr %51, i32 0, i32 12
  store i32 %455, ptr %456, align 4, !tbaa !174
  %457 = load i8, ptr %24, align 1, !tbaa !9, !range !127, !noundef !128
  %458 = trunc i8 %457 to i1
  %459 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::TextureFunctionArguments", ptr %51, i32 0, i32 13
  %460 = zext i1 %458 to i8
  store i8 %460, ptr %459, align 8, !tbaa !175
  call void @llvm.lifetime.start.p0(i64 32, ptr %52) #7
  %461 = load ptr, ptr %11, align 8, !tbaa !5
  %462 = load ptr, ptr %62, align 8, !tbaa !160
  %463 = getelementptr inbounds ptr, ptr %462, i64 31
  %464 = load ptr, ptr %463, align 8
  invoke void %464(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %52, ptr noundef nonnull align 8 dereferenceable(9848) %62, ptr noundef nonnull align 8 dereferenceable(74) %51, ptr noundef %461)
          to label %465 unwind label %486

465:                                              ; preds = %446
  %466 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %52)
          to label %467 unwind label %490

467:                                              ; preds = %465
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %52) #7
  %468 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.135)
          to label %469 unwind label %432

469:                                              ; preds = %467
  %470 = invoke noundef zeroext i1 @_ZNK11spirv_cross12CompilerGLSL9is_legacyEv(ptr noundef nonnull align 8 dereferenceable(9848) %62)
          to label %471 unwind label %432

471:                                              ; preds = %469
  br i1 %470, label %472, label %495

472:                                              ; preds = %471
  %473 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %62, i32 0, i32 9
  %474 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %473, i32 0, i32 1
  %475 = load i8, ptr %474, align 4, !tbaa !19, !range !127, !noundef !128
  %476 = trunc i8 %475 to i1
  br i1 %476, label %495, label %477

477:                                              ; preds = %472
  %478 = load ptr, ptr %33, align 8, !tbaa !5
  %479 = invoke noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE2EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %17)
          to label %480 unwind label %432

480:                                              ; preds = %477
  %481 = invoke noundef zeroext i1 @_ZNK11spirv_cross8Compiler14is_depth_imageERKNS_8SPIRTypeEj(ptr noundef nonnull align 8 dereferenceable(3176) %62, ptr noundef nonnull align 8 dereferenceable(336) %478, i32 noundef %479)
          to label %482 unwind label %432

482:                                              ; preds = %480
  br i1 %481, label %483, label %495

483:                                              ; preds = %482
  %484 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1067)
          to label %485 unwind label %432

485:                                              ; preds = %483
  br label %495

486:                                              ; preds = %446
  %487 = landingpad { ptr, i32 }
          cleanup
  %488 = extractvalue { ptr, i32 } %487, 0
  store ptr %488, ptr %28, align 8
  %489 = extractvalue { ptr, i32 } %487, 1
  store i32 %489, ptr %29, align 4
  br label %494

490:                                              ; preds = %465
  %491 = landingpad { ptr, i32 }
          cleanup
  %492 = extractvalue { ptr, i32 } %491, 0
  store ptr %492, ptr %28, align 8
  %493 = extractvalue { ptr, i32 } %491, 1
  store i32 %493, ptr %29, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #7
  br label %494

494:                                              ; preds = %490, %486
  call void @llvm.lifetime.end.p0(i64 32, ptr %52) #7
  br label %624

495:                                              ; preds = %485, %482, %472, %471
  %496 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %62, i32 0, i32 21
  %497 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::BackendVariations", ptr %496, i32 0, i32 39
  %498 = load i8, ptr %497, align 8, !tbaa !177, !range !127, !noundef !128
  %499 = trunc i8 %498 to i1
  br i1 %499, label %500, label %584

500:                                              ; preds = %495
  %501 = load i32, ptr %14, align 4, !tbaa !15
  %502 = invoke noundef zeroext i1 @_ZL30image_opcode_is_sample_no_drefN3spv2OpE(i32 noundef %501)
          to label %503 unwind label %432

503:                                              ; preds = %500
  br i1 %502, label %504, label %584

504:                                              ; preds = %503
  call void @llvm.lifetime.start.p0(i64 1, ptr %53) #7
  store i8 0, ptr %53, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #7
  %505 = invoke noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE2EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %17)
          to label %506 unwind label %528

506:                                              ; preds = %504
  %507 = invoke noundef ptr @_ZN11spirv_cross8Compiler9maybe_getINS_24SPIRCombinedImageSamplerEEEPT_j(ptr noundef nonnull align 8 dereferenceable(3176) %62, i32 noundef %505)
          to label %508 unwind label %528

508:                                              ; preds = %506
  store ptr %507, ptr %54, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #7
  %509 = load ptr, ptr %54, align 8, !tbaa !5
  %510 = icmp ne ptr %509, null
  br i1 %510, label %511, label %514

511:                                              ; preds = %508
  %512 = load ptr, ptr %54, align 8, !tbaa !5
  %513 = getelementptr inbounds %"struct.spirv_cross::SPIRCombinedImageSampler", ptr %512, i32 0, i32 2
  br label %515

514:                                              ; preds = %508
  br label %515

515:                                              ; preds = %514, %511
  %516 = phi ptr [ %513, %511 ], [ %17, %514 ]
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %55, ptr align 4 %516, i64 4, i1 false), !tbaa.struct !150
  %517 = load ptr, ptr %54, align 8, !tbaa !5
  %518 = icmp ne ptr %517, null
  br i1 %518, label %519, label %536

519:                                              ; preds = %515
  %520 = load ptr, ptr %33, align 8, !tbaa !5
  %521 = load ptr, ptr %54, align 8, !tbaa !5
  %522 = getelementptr inbounds %"struct.spirv_cross::SPIRCombinedImageSampler", ptr %521, i32 0, i32 2
  %523 = invoke noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE2EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %522)
          to label %524 unwind label %532

524:                                              ; preds = %519
  %525 = invoke noundef zeroext i1 @_ZNK11spirv_cross8Compiler14is_depth_imageERKNS_8SPIRTypeEj(ptr noundef nonnull align 8 dereferenceable(3176) %62, ptr noundef nonnull align 8 dereferenceable(336) %520, i32 noundef %523)
          to label %526 unwind label %532

526:                                              ; preds = %524
  br i1 %525, label %527, label %536

527:                                              ; preds = %526
  store i8 1, ptr %53, align 1, !tbaa !9
  br label %544

528:                                              ; preds = %506, %504
  %529 = landingpad { ptr, i32 }
          cleanup
  %530 = extractvalue { ptr, i32 } %529, 0
  store ptr %530, ptr %28, align 8
  %531 = extractvalue { ptr, i32 } %529, 1
  store i32 %531, ptr %29, align 4
  br label %583

532:                                              ; preds = %539, %536, %524, %519
  %533 = landingpad { ptr, i32 }
          cleanup
  %534 = extractvalue { ptr, i32 } %533, 0
  store ptr %534, ptr %28, align 8
  %535 = extractvalue { ptr, i32 } %533, 1
  store i32 %535, ptr %29, align 4
  br label %582

536:                                              ; preds = %526, %515
  %537 = load ptr, ptr %33, align 8, !tbaa !5
  %538 = invoke noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE2EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %17)
          to label %539 unwind label %532

539:                                              ; preds = %536
  %540 = invoke noundef zeroext i1 @_ZNK11spirv_cross8Compiler14is_depth_imageERKNS_8SPIRTypeEj(ptr noundef nonnull align 8 dereferenceable(3176) %62, ptr noundef nonnull align 8 dereferenceable(336) %537, i32 noundef %538)
          to label %541 unwind label %532

541:                                              ; preds = %539
  br i1 %540, label %542, label %543

542:                                              ; preds = %541
  store i8 1, ptr %53, align 1, !tbaa !9
  br label %543

543:                                              ; preds = %542, %541
  br label %544

544:                                              ; preds = %543, %527
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #7
  %545 = invoke noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE2EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %55)
          to label %546 unwind label %565

546:                                              ; preds = %544
  %547 = invoke noundef ptr @_ZN11spirv_cross8Compiler26maybe_get_backing_variableEj(ptr noundef nonnull align 8 dereferenceable(3176) %62, i32 noundef %545)
          to label %548 unwind label %565

548:                                              ; preds = %546
  store ptr %547, ptr %56, align 8, !tbaa !5
  %549 = load ptr, ptr %56, align 8, !tbaa !5
  %550 = icmp ne ptr %549, null
  br i1 %550, label %551, label %569

551:                                              ; preds = %548
  %552 = load ptr, ptr %56, align 8, !tbaa !5
  %553 = getelementptr inbounds %"struct.spirv_cross::SPIRVariable", ptr %552, i32 0, i32 1
  %554 = invoke noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE1EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %553)
          to label %555 unwind label %565

555:                                              ; preds = %551
  %556 = invoke noundef nonnull align 8 dereferenceable(336) ptr @_ZN11spirv_cross8Compiler3getINS_8SPIRTypeEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %62, i32 noundef %554)
          to label %557 unwind label %565

557:                                              ; preds = %555
  %558 = load ptr, ptr %56, align 8, !tbaa !5
  %559 = getelementptr inbounds %"struct.spirv_cross::IVariant", ptr %558, i32 0, i32 1
  %560 = invoke noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %559)
          to label %561 unwind label %565

561:                                              ; preds = %557
  %562 = invoke noundef zeroext i1 @_ZNK11spirv_cross8Compiler14is_depth_imageERKNS_8SPIRTypeEj(ptr noundef nonnull align 8 dereferenceable(3176) %62, ptr noundef nonnull align 8 dereferenceable(336) %556, i32 noundef %560)
          to label %563 unwind label %565

563:                                              ; preds = %561
  br i1 %562, label %564, label %569

564:                                              ; preds = %563
  store i8 1, ptr %53, align 1, !tbaa !9
  br label %569

565:                                              ; preds = %561, %557, %555, %551, %546, %544
  %566 = landingpad { ptr, i32 }
          cleanup
  %567 = extractvalue { ptr, i32 } %566, 0
  store ptr %567, ptr %28, align 8
  %568 = extractvalue { ptr, i32 } %566, 1
  store i32 %568, ptr %29, align 4
  br label %581

569:                                              ; preds = %564, %563, %548
  %570 = load i8, ptr %53, align 1, !tbaa !9, !range !127, !noundef !128
  %571 = trunc i8 %570 to i1
  br i1 %571, label %572, label %580

572:                                              ; preds = %569
  call void @llvm.lifetime.start.p0(i64 32, ptr %57) #7
  %573 = load ptr, ptr %26, align 8, !tbaa !5
  invoke void @_ZN11spirv_cross12CompilerGLSL13remap_swizzleERKNS_8SPIRTypeEjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %57, ptr noundef nonnull align 8 dereferenceable(9848) %62, ptr noundef nonnull align 8 dereferenceable(336) %573, i32 noundef 1, ptr noundef nonnull align 8 dereferenceable(32) %0)
          to label %574 unwind label %576

574:                                              ; preds = %572
  %575 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %57) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %57) #7
  br label %580

576:                                              ; preds = %572
  %577 = landingpad { ptr, i32 }
          cleanup
  %578 = extractvalue { ptr, i32 } %577, 0
  store ptr %578, ptr %28, align 8
  %579 = extractvalue { ptr, i32 } %577, 1
  store i32 %579, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %57) #7
  br label %581

580:                                              ; preds = %574, %569
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #7
  br label %584

581:                                              ; preds = %576, %565
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #7
  br label %582

582:                                              ; preds = %581, %532
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #7
  br label %583

583:                                              ; preds = %582, %528
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #7
  br label %624

584:                                              ; preds = %580, %503, %495
  %585 = load i8, ptr %10, align 1, !tbaa !9, !range !127, !noundef !128
  %586 = trunc i8 %585 to i1
  br i1 %586, label %611, label %587

587:                                              ; preds = %584
  %588 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %62, i32 0, i32 21
  %589 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::BackendVariations", ptr %588, i32 0, i32 41
  %590 = load i8, ptr %589, align 2, !tbaa !178, !range !127, !noundef !128
  %591 = trunc i8 %590 to i1
  br i1 %591, label %611, label %592

592:                                              ; preds = %587
  %593 = load ptr, ptr %26, align 8, !tbaa !5
  %594 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %593, i32 0, i32 3
  %595 = load i32, ptr %594, align 4, !tbaa !179
  %596 = icmp ult i32 %595, 32
  br i1 %596, label %597, label %611

597:                                              ; preds = %592
  call void @llvm.lifetime.start.p0(i64 32, ptr %58) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %59) #7
  %598 = load ptr, ptr %26, align 8, !tbaa !5
  invoke void @_ZN11spirv_cross12CompilerGLSL24type_to_glsl_constructorB5cxx11ERKNS_8SPIRTypeE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %59, ptr noundef nonnull align 8 dereferenceable(9848) %62, ptr noundef nonnull align 8 dereferenceable(336) %598)
          to label %599 unwind label %602

599:                                              ; preds = %597
  invoke void @_ZN11spirv_cross4joinIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_KcRS6_S9_EEES6_DpOT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %58, ptr noundef nonnull align 8 dereferenceable(32) %59, ptr noundef nonnull align 1 dereferenceable(2) @.str.718, ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 1 dereferenceable(2) @.str.135)
          to label %600 unwind label %606

600:                                              ; preds = %599
  %601 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %58) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %59) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %58) #7
  br label %611

602:                                              ; preds = %597
  %603 = landingpad { ptr, i32 }
          cleanup
  %604 = extractvalue { ptr, i32 } %603, 0
  store ptr %604, ptr %28, align 8
  %605 = extractvalue { ptr, i32 } %603, 1
  store i32 %605, ptr %29, align 4
  br label %610

606:                                              ; preds = %599
  %607 = landingpad { ptr, i32 }
          cleanup
  %608 = extractvalue { ptr, i32 } %607, 0
  store ptr %608, ptr %28, align 8
  %609 = extractvalue { ptr, i32 } %607, 1
  store i32 %609, ptr %29, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #7
  br label %610

610:                                              ; preds = %606, %602
  call void @llvm.lifetime.end.p0(i64 32, ptr %59) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %58) #7
  br label %624

611:                                              ; preds = %600, %592, %587, %584
  %612 = load i32, ptr %14, align 4, !tbaa !15
  %613 = icmp eq i32 %612, 98
  br i1 %613, label %614, label %622

614:                                              ; preds = %611
  call void @llvm.lifetime.start.p0(i64 32, ptr %60) #7
  %615 = load ptr, ptr %26, align 8, !tbaa !5
  invoke void @_ZN11spirv_cross12CompilerGLSL13remap_swizzleERKNS_8SPIRTypeEjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %60, ptr noundef nonnull align 8 dereferenceable(9848) %62, ptr noundef nonnull align 8 dereferenceable(336) %615, i32 noundef 4, ptr noundef nonnull align 8 dereferenceable(32) %0)
          to label %616 unwind label %618

616:                                              ; preds = %614
  %617 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %60) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %60) #7
  br label %622

618:                                              ; preds = %614
  %619 = landingpad { ptr, i32 }
          cleanup
  %620 = extractvalue { ptr, i32 } %619, 0
  store ptr %620, ptr %28, align 8
  %621 = extractvalue { ptr, i32 } %619, 1
  store i32 %621, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %60) #7
  br label %624

622:                                              ; preds = %616, %611
  store i1 true, ptr %47, align 1
  call void @llvm.lifetime.end.p0(i64 80, ptr %51) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %48) #7
  %623 = load i1, ptr %47, align 1
  br i1 %623, label %628, label %627

624:                                              ; preds = %618, %610, %583, %494, %432
  call void @llvm.lifetime.end.p0(i64 80, ptr %51) #7
  br label %625

625:                                              ; preds = %624, %384
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #7
  br label %626

626:                                              ; preds = %625, %383, %371
  call void @llvm.lifetime.end.p0(i64 40, ptr %48) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %0) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %46) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %45) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #7
  br label %629

627:                                              ; preds = %622
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %0) #7
  br label %628

628:                                              ; preds = %627, %622
  call void @llvm.lifetime.end.p0(i64 24, ptr %46) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %45) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #7
  ret void

629:                                              ; preds = %626, %208, %193, %173, %147, %130
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #7
  br label %630

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden void @"_ZZN11spirv_cross12CompilerGLSL13to_texture_opB5cxx11ERKNS_11InstructionEbPbRNS_11SmallVectorIjLm8EEEENK3$_0clERjj"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 4 dereferenceable(4), i32 noundef) #4 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZL30image_opcode_is_sample_no_drefN3spv2OpE(i32 noundef) #4

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

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


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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.spirv_cross::TypedID.282" = type { i32 }
%"class.spirv_cross::TypedID.280" = type { i32 }
%"class.std::allocator.71" = type { i8 }
%class.anon.388 = type { ptr, ptr, ptr, ptr }
%"struct.spirv_cross::CompilerGLSL::TextureFunctionBaseArguments" = type <{ %"class.spirv_cross::TypedID.282", [4 x i8], ptr, i8, i8, i8, [5 x i8] }>
%"struct.spirv_cross::CompilerGLSL::TextureFunctionNameArguments" = type { %"struct.spirv_cross::CompilerGLSL::TextureFunctionBaseArguments", i8, i8, i8, i8, i8, i8, i32, [4 x i8] }
%"struct.spirv_cross::CompilerGLSL::TextureFunctionArguments" = type <{ %"struct.spirv_cross::CompilerGLSL::TextureFunctionBaseArguments", i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i8, [6 x i8] }>

@_ZTIN11spirv_cross13CompilerErrorE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.135 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.718 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1063 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.1064 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.1065 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.1066 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.1067 = external hidden unnamed_addr constant [3 x i8], align 1
@switch.table._ZN11spirv_cross12CompilerGLSL13to_texture_opB5cxx11ERKNS_11InstructionEbPbRNS_11SmallVectorIjLm8EEE = private unnamed_addr constant [6 x i32] [i32 1, i32 2, i32 3, i32 3, i32 2, i32 1], align 4

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

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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

declare i32 @__gxx_personality_v0(...)

declare void @__cxa_free_exception(ptr) local_unnamed_addr

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

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

; 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 #3 align 2

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK11spirv_cross12CompilerGLSL9is_legacyEv(ptr noundef nonnull align 8 dereferenceable(9848)) local_unnamed_addr #4 align 2

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

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

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) 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 #3 align 2

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

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

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

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

declare noundef nonnull align 8 dereferenceable(336) ptr @_ZNK11spirv_cross8Compiler15expression_typeEj(ptr noundef nonnull align 8 dereferenceable(3176), i32 noundef) local_unnamed_addr #5

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

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

declare noundef ptr @_ZN11spirv_cross8Compiler26maybe_get_backing_variableEj(ptr noundef nonnull align 8 dereferenceable(3176), i32 noundef) local_unnamed_addr #5

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11spirv_cross12CompilerGLSL13to_texture_opB5cxx11ERKNS_11InstructionEbPbRNS_11SmallVectorIjLm8EEE(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(9848) %1, ptr noundef nonnull align 4 dereferenceable(12) %2, i1 noundef zeroext %3, ptr noundef %4, ptr noundef nonnull align 8 dereferenceable(56) %5) unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %7 = alloca i32, align 4
  %8 = alloca %"class.spirv_cross::TypedID.282", align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca ptr, align 8
  %12 = alloca %"class.spirv_cross::TypedID.280", align 4
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca %"class.std::allocator.71", align 1
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca %class.anon.388, align 8
  %26 = alloca %"struct.spirv_cross::CompilerGLSL::TextureFunctionBaseArguments", align 8
  %27 = alloca %"struct.spirv_cross::CompilerGLSL::TextureFunctionNameArguments", align 8
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  %29 = alloca %"struct.spirv_cross::CompilerGLSL::TextureFunctionArguments", align 8
  %30 = alloca %"class.std::__cxx11::basic_string", align 8
  %31 = alloca %"class.spirv_cross::TypedID.282", align 4
  %32 = alloca %"class.std::__cxx11::basic_string", align 8
  %33 = alloca %"class.std::__cxx11::basic_string", align 8
  %34 = alloca %"class.std::__cxx11::basic_string", align 8
  %35 = alloca %"class.std::__cxx11::basic_string", align 8
  %36 = zext i1 %3 to i8
  %37 = tail call noundef ptr @_ZNK11spirv_cross8Compiler6streamERKNS_11InstructionE(ptr noundef nonnull align 8 dereferenceable(3176) %1, ptr noundef nonnull align 4 dereferenceable(12) %2)
  %38 = load i16, ptr %2, align 4, !tbaa !5
  %39 = zext i16 %38 to i32
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #7
  %40 = getelementptr inbounds i8, ptr %2, i64 8
  %41 = load i32, ptr %40, align 4, !tbaa !11
  store i32 %41, ptr %7, align 4, !tbaa !12
  %42 = load i32, ptr %37, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #7
  %43 = getelementptr inbounds i8, ptr %37, i64 8
  %44 = load i32, ptr %43, align 4, !tbaa !12
  call void @_ZN11spirv_cross7TypedIDILNS_5TypesE2EEC2Ej(ptr noundef nonnull align 4 dereferenceable(4) %8, i32 noundef %44)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #7
  %45 = getelementptr inbounds i8, ptr %37, i64 12
  %46 = load i32, ptr %45, align 4, !tbaa !12
  store i32 %46, ptr %9, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #7
  store i32 0, ptr %10, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #7
  store ptr null, ptr %11, align 8, !tbaa !13
  %47 = call noundef nonnull align 8 dereferenceable(336) ptr @_ZN11spirv_cross8Compiler3getINS_8SPIRTypeEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %1, i32 noundef %42)
  call void @_ZN11spirv_cross11SmallVectorIjLm8EE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(56) %5, ptr noundef nonnull align 4 dereferenceable(4) %9) #7
  call void @_ZN11spirv_cross7TypedIDILNS_5TypesE0EEC2ILS1_2EEERKNS0_IXT_EEE(ptr noundef nonnull align 4 dereferenceable(4) %12, ptr noundef nonnull align 4 dereferenceable(4) %8)
  %48 = load i32, ptr %12, align 4
  %49 = call noundef zeroext i1 @_ZNK11spirv_cross8Compiler14has_decorationENS_7TypedIDILNS_5TypesE0EEEN3spv10DecorationE(ptr noundef nonnull align 8 dereferenceable(3176) %1, i32 %48, i32 noundef 5300)
  br i1 %49, label %50, label %53

50:                                               ; preds = %6
  %51 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE2EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %8)
  %52 = call noundef ptr @_ZN11spirv_cross8Compiler26maybe_get_backing_variableEj(ptr noundef nonnull align 8 dereferenceable(3176) %1, i32 noundef %51)
  %.not = icmp eq ptr %52, null
  %spec.select = zext i1 %.not to i8
  br label %53

53:                                               ; preds = %50, %6
  %.083 = phi i8 [ 0, %6 ], [ %spec.select, %50 ]
  switch i16 %38, label %132 [
    i16 89, label %54
    i16 90, label %54
    i16 307, label %54
    i16 308, label %54
    i16 93, label %60
    i16 94, label %60
    i16 311, label %60
    i16 312, label %60
    i16 97, label %66
    i16 315, label %66
    i16 96, label %90
    i16 314, label %90
    i16 95, label %124
    i16 313, label %124
    i16 98, label %124
    i16 91, label %128
    i16 92, label %128
    i16 309, label %128
    i16 310, label %128
  ]

54:                                               ; preds = %53, %53, %53, %53
  %55 = getelementptr inbounds i8, ptr %37, i64 16
  %56 = load i32, ptr %55, align 4, !tbaa !12
  store i32 %56, ptr %10, align 4, !tbaa !12
  %57 = getelementptr inbounds i8, ptr %37, i64 20
  store ptr %57, ptr %11, align 8, !tbaa !13
  %58 = load i32, ptr %7, align 4, !tbaa !12
  %59 = add i32 %58, -5
  store i32 %59, ptr %7, align 4, !tbaa !12
  br label %136

60:                                               ; preds = %53, %53, %53, %53
  %61 = getelementptr inbounds i8, ptr %37, i64 16
  %62 = load i32, ptr %61, align 4, !tbaa !12
  store i32 %62, ptr %10, align 4, !tbaa !12
  %63 = getelementptr inbounds i8, ptr %37, i64 20
  store ptr %63, ptr %11, align 8, !tbaa !13
  %64 = load i32, ptr %7, align 4, !tbaa !12
  %65 = add i32 %64, -5
  store i32 %65, ptr %7, align 4, !tbaa !12
  br label %136

66:                                               ; preds = %53, %53
  %67 = getelementptr inbounds i8, ptr %37, i64 16
  %68 = load i32, ptr %67, align 4, !tbaa !12
  store i32 %68, ptr %10, align 4, !tbaa !12
  %69 = getelementptr inbounds i8, ptr %37, i64 20
  store ptr %69, ptr %11, align 8, !tbaa !13
  %70 = load i32, ptr %7, align 4, !tbaa !12
  %71 = add i32 %70, -5
  store i32 %71, ptr %7, align 4, !tbaa !12
  %72 = getelementptr inbounds i8, ptr %1, i64 7636
  %73 = getelementptr inbounds i8, ptr %1, i64 7640
  %74 = load i8, ptr %73, align 8, !tbaa !15, !range !124, !noundef !125
  %75 = trunc nuw i8 %74 to i1
  %76 = load i32, ptr %72, align 4
  %77 = icmp ult i32 %76, 310
  %or.cond = select i1 %75, i1 %77, i1 false
  br i1 %or.cond, label %78, label %83

78:                                               ; preds = %66
  %79 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %79, ptr noundef nonnull @.str.1063)
          to label %80 unwind label %81

80:                                               ; preds = %78
  call void @__cxa_throw(ptr nonnull %79, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #8
  unreachable

81:                                               ; preds = %78
  %82 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %79) #7
  br label %349

83:                                               ; preds = %66
  %84 = icmp ugt i32 %76, 399
  %or.cond112.not = select i1 %75, i1 true, i1 %84
  br i1 %or.cond112.not, label %136, label %85

85:                                               ; preds = %83
  %86 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %86, ptr noundef nonnull @.str.1064)
          to label %87 unwind label %88

87:                                               ; preds = %85
  call void @__cxa_throw(ptr nonnull %86, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #8
  unreachable

88:                                               ; preds = %85
  %89 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %86) #7
  br label %349

90:                                               ; preds = %53, %53
  %91 = getelementptr inbounds i8, ptr %37, i64 16
  %92 = load i32, ptr %91, align 4, !tbaa !12
  %93 = getelementptr inbounds i8, ptr %37, i64 20
  store ptr %93, ptr %11, align 8, !tbaa !13
  %94 = load i32, ptr %7, align 4, !tbaa !12
  %95 = add i32 %94, -5
  store i32 %95, ptr %7, align 4, !tbaa !12
  %96 = getelementptr inbounds i8, ptr %1, i64 7636
  %97 = getelementptr inbounds i8, ptr %1, i64 7640
  %98 = load i8, ptr %97, align 8, !tbaa !15, !range !124, !noundef !125
  %99 = trunc nuw i8 %98 to i1
  %100 = load i32, ptr %96, align 4
  %101 = icmp ult i32 %100, 310
  %or.cond114 = select i1 %99, i1 %101, i1 false
  br i1 %or.cond114, label %102, label %107

102:                                              ; preds = %90
  %103 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %103, ptr noundef nonnull @.str.1063)
          to label %104 unwind label %105

104:                                              ; preds = %102
  call void @__cxa_throw(ptr nonnull %103, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #8
  unreachable

105:                                              ; preds = %102
  %106 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %103) #7
  br label %349

107:                                              ; preds = %90
  %108 = icmp ugt i32 %100, 399
  %or.cond117.not = select i1 %99, i1 true, i1 %108
  br i1 %or.cond117.not, label %136, label %109

109:                                              ; preds = %107
  %110 = call noundef zeroext i1 @_ZNK11spirv_cross12CompilerGLSL27expression_is_constant_nullEj(ptr noundef nonnull align 8 dereferenceable(9848) %1, i32 noundef %92)
  br i1 %110, label %116, label %111

111:                                              ; preds = %109
  %112 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %112, ptr noundef nonnull @.str.1065)
          to label %113 unwind label %114

113:                                              ; preds = %111
  call void @__cxa_throw(ptr nonnull %112, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #8
  unreachable

114:                                              ; preds = %111
  %115 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %112) #7
  br label %349

116:                                              ; preds = %109
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %14) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull @.str.1066, ptr noundef nonnull align 1 dereferenceable(1) %14)
          to label %117 unwind label %119

117:                                              ; preds = %116
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %1, ptr noundef nonnull align 8 dereferenceable(32) %13)
          to label %118 unwind label %121

118:                                              ; preds = %117
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #7
  br label %136

119:                                              ; preds = %116
  %120 = landingpad { ptr, i32 }
          cleanup
  br label %123

121:                                              ; preds = %117
  %122 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  br label %123

123:                                              ; preds = %121, %119
  %.pn = phi { ptr, i32 } [ %122, %121 ], [ %120, %119 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #7
  br label %349

124:                                              ; preds = %53, %53, %53
  %125 = getelementptr inbounds i8, ptr %37, i64 16
  store ptr %125, ptr %11, align 8, !tbaa !13
  %126 = load i32, ptr %7, align 4, !tbaa !12
  %127 = add i32 %126, -4
  store i32 %127, ptr %7, align 4, !tbaa !12
  br label %136

128:                                              ; preds = %53, %53, %53, %53
  %129 = getelementptr inbounds i8, ptr %37, i64 16
  store ptr %129, ptr %11, align 8, !tbaa !13
  %130 = load i32, ptr %7, align 4, !tbaa !12
  %131 = add i32 %130, -4
  store i32 %131, ptr %7, align 4, !tbaa !12
  br label %136

132:                                              ; preds = %53
  %133 = getelementptr inbounds i8, ptr %37, i64 16
  store ptr %133, ptr %11, align 8, !tbaa !13
  %134 = load i32, ptr %7, align 4, !tbaa !12
  %135 = add i32 %134, -4
  store i32 %135, ptr %7, align 4, !tbaa !12
  br label %136

136:                                              ; preds = %118, %107, %83, %132, %128, %124, %60, %54
  %.068 = phi i8 [ 0, %132 ], [ 0, %128 ], [ 1, %124 ], [ 0, %107 ], [ 0, %118 ], [ 0, %83 ], [ 0, %60 ], [ 0, %54 ]
  %.067 = phi i1 [ false, %132 ], [ true, %128 ], [ false, %124 ], [ false, %107 ], [ false, %118 ], [ false, %83 ], [ true, %60 ], [ false, %54 ]
  %.062 = phi i8 [ 0, %132 ], [ 0, %128 ], [ 0, %124 ], [ 1, %107 ], [ 1, %118 ], [ 1, %83 ], [ 0, %60 ], [ 0, %54 ]
  %.0 = phi i32 [ 0, %132 ], [ 0, %128 ], [ 0, %124 ], [ %92, %107 ], [ %92, %118 ], [ 0, %83 ], [ 0, %60 ], [ 0, %54 ]
  %137 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE2EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %8)
  %138 = call noundef nonnull align 8 dereferenceable(336) ptr @_ZNK11spirv_cross8Compiler15expression_typeEj(ptr noundef nonnull align 8 dereferenceable(3176) %1, i32 noundef %137)
  %139 = getelementptr inbounds i8, ptr %138, i64 8
  %140 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %139)
  %141 = call noundef nonnull align 8 dereferenceable(336) ptr @_ZN11spirv_cross8Compiler3getINS_8SPIRTypeEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %1, i32 noundef %140)
  %142 = getelementptr inbounds i8, ptr %141, i64 252
  %143 = load i32, ptr %142, align 4, !tbaa !126
  %144 = icmp ult i32 %143, 6
  br i1 %144, label %switch.lookup, label %146

switch.lookup:                                    ; preds = %136
  %145 = zext nneg i32 %143 to i64
  %switch.gep = getelementptr inbounds [6 x i32], ptr @switch.table._ZN11spirv_cross12CompilerGLSL13to_texture_opB5cxx11ERKNS_11InstructionEbPbRNS_11SmallVectorIjLm8EEE, i64 0, i64 %145
  %switch.load = load i32, ptr %switch.gep, align 4
  br label %146

146:                                              ; preds = %136, %switch.lookup
  %.065 = phi i32 [ %switch.load, %switch.lookup ], [ 2, %136 ]
  %147 = load i32, ptr %10, align 4, !tbaa !12
  %.not88 = icmp eq i32 %147, 0
  br i1 %.not88, label %149, label %148

148:                                              ; preds = %146
  call void @_ZN11spirv_cross11SmallVectorIjLm8EE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(56) %5, ptr noundef nonnull align 4 dereferenceable(4) %10) #7
  br label %149

149:                                              ; preds = %148, %146
  %150 = zext i1 %.067 to i32
  %spec.select118 = add nuw nsw i32 %.065, %150
  %151 = getelementptr inbounds i8, ptr %141, i64 257
  %152 = load i8, ptr %151, align 1, !tbaa !140, !range !124, !noundef !125
  %153 = zext nneg i8 %152 to i32
  %.2 = add nuw nsw i32 %spec.select118, %153
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #7
  store i32 0, ptr %15, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #7
  store i32 0, ptr %16, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #7
  store i32 0, ptr %17, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #7
  store i32 0, ptr %18, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #7
  store i32 0, ptr %19, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #7
  store i32 0, ptr %20, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #7
  store i32 0, ptr %21, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #7
  store i32 0, ptr %22, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #7
  store i32 0, ptr %23, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #7
  store i32 0, ptr %24, align 4, !tbaa !12
  %154 = load i32, ptr %7, align 4, !tbaa !12
  %.not89 = icmp eq i32 %154, 0
  br i1 %.not89, label %160, label %155

155:                                              ; preds = %149
  %156 = load ptr, ptr %11, align 8, !tbaa !13
  %157 = getelementptr inbounds i8, ptr %156, i64 4
  store ptr %157, ptr %11, align 8, !tbaa !13
  %158 = load i32, ptr %156, align 4, !tbaa !12
  store i32 %158, ptr %24, align 4, !tbaa !12
  %159 = add i32 %154, -1
  store i32 %159, ptr %7, align 4, !tbaa !12
  br label %160

160:                                              ; preds = %155, %149
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %25) #7
  store ptr %7, ptr %25, align 8, !tbaa !13
  %161 = getelementptr inbounds i8, ptr %25, i64 8
  store ptr %24, ptr %161, align 8, !tbaa !13
  %162 = getelementptr inbounds i8, ptr %25, i64 16
  store ptr %11, ptr %162, align 8, !tbaa !13
  %163 = getelementptr inbounds i8, ptr %25, i64 24
  store ptr %5, ptr %163, align 8, !tbaa !13
  call void @"_ZZN11spirv_cross12CompilerGLSL13to_texture_opB5cxx11ERKNS_11InstructionEbPbRNS_11SmallVectorIjLm8EEEENK3$_0clERjj"(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull align 4 dereferenceable(4) %15, i32 noundef 1)
  call void @"_ZZN11spirv_cross12CompilerGLSL13to_texture_opB5cxx11ERKNS_11InstructionEbPbRNS_11SmallVectorIjLm8EEEENK3$_0clERjj"(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull align 4 dereferenceable(4) %16, i32 noundef 2)
  call void @"_ZZN11spirv_cross12CompilerGLSL13to_texture_opB5cxx11ERKNS_11InstructionEbPbRNS_11SmallVectorIjLm8EEEENK3$_0clERjj"(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull align 4 dereferenceable(4) %17, i32 noundef 4)
  call void @"_ZZN11spirv_cross12CompilerGLSL13to_texture_opB5cxx11ERKNS_11InstructionEbPbRNS_11SmallVectorIjLm8EEEENK3$_0clERjj"(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull align 4 dereferenceable(4) %18, i32 noundef 4)
  call void @"_ZZN11spirv_cross12CompilerGLSL13to_texture_opB5cxx11ERKNS_11InstructionEbPbRNS_11SmallVectorIjLm8EEEENK3$_0clERjj"(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull align 4 dereferenceable(4) %19, i32 noundef 8)
  call void @"_ZZN11spirv_cross12CompilerGLSL13to_texture_opB5cxx11ERKNS_11InstructionEbPbRNS_11SmallVectorIjLm8EEEENK3$_0clERjj"(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull align 4 dereferenceable(4) %20, i32 noundef 16)
  call void @"_ZZN11spirv_cross12CompilerGLSL13to_texture_opB5cxx11ERKNS_11InstructionEbPbRNS_11SmallVectorIjLm8EEEENK3$_0clERjj"(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull align 4 dereferenceable(4) %21, i32 noundef 32)
  call void @"_ZZN11spirv_cross12CompilerGLSL13to_texture_opB5cxx11ERKNS_11InstructionEbPbRNS_11SmallVectorIjLm8EEEENK3$_0clERjj"(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull align 4 dereferenceable(4) %22, i32 noundef 64)
  call void @"_ZZN11spirv_cross12CompilerGLSL13to_texture_opB5cxx11ERKNS_11InstructionEbPbRNS_11SmallVectorIjLm8EEEENK3$_0clERjj"(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull align 4 dereferenceable(4) %23, i32 noundef 128)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %26) #7
  call void @_ZN11spirv_cross7TypedIDILNS_5TypesE2EEC2Ej(ptr noundef nonnull align 4 dereferenceable(4) %26, i32 noundef 0)
  %164 = getelementptr inbounds i8, ptr %26, i64 8
  %165 = getelementptr inbounds i8, ptr %26, i64 16
  %166 = getelementptr inbounds i8, ptr %26, i64 17
  %167 = getelementptr inbounds i8, ptr %26, i64 18
  %168 = load i32, ptr %8, align 4, !tbaa !12
  store i32 %168, ptr %26, align 8, !tbaa !12
  store ptr %141, ptr %164, align 8, !tbaa !141
  store i8 %.068, ptr %165, align 8, !tbaa !144
  store i8 %.062, ptr %166, align 1, !tbaa !145
  %169 = zext i1 %.067 to i8
  store i8 %169, ptr %167, align 2, !tbaa !146
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %0) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %27) #7
  call void @_ZN11spirv_cross7TypedIDILNS_5TypesE2EEC2Ej(ptr noundef nonnull align 4 dereferenceable(4) %27, i32 noundef 0)
  %170 = getelementptr inbounds i8, ptr %27, i64 24
  %171 = getelementptr inbounds i8, ptr %27, i64 25
  %172 = getelementptr inbounds i8, ptr %27, i64 26
  %173 = getelementptr inbounds i8, ptr %27, i64 27
  %174 = getelementptr inbounds i8, ptr %27, i64 28
  %175 = getelementptr inbounds i8, ptr %27, i64 29
  %176 = getelementptr inbounds i8, ptr %27, i64 32
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(19) %27, ptr noundef nonnull align 8 dereferenceable(19) %26, i64 19, i1 false), !tbaa.struct !147
  %177 = load i32, ptr %21, align 4, !tbaa !12
  %178 = icmp ne i32 %177, 0
  %179 = zext i1 %178 to i8
  store i8 %179, ptr %170, align 8, !tbaa !149
  %180 = load i32, ptr %19, align 4, !tbaa !12
  %181 = icmp ne i32 %180, 0
  %182 = load i32, ptr %20, align 4
  %183 = icmp ne i32 %182, 0
  %184 = select i1 %181, i1 true, i1 %183
  %185 = zext i1 %184 to i8
  store i8 %185, ptr %171, align 1, !tbaa !151
  %186 = load i32, ptr %17, align 4, !tbaa !12
  %187 = icmp ne i32 %186, 0
  %188 = load i32, ptr %18, align 4
  %189 = icmp ne i32 %188, 0
  %190 = select i1 %187, i1 true, i1 %189
  %191 = zext i1 %190 to i8
  store i8 %191, ptr %172, align 2, !tbaa !152
  %192 = load i32, ptr %10, align 4, !tbaa !12
  %193 = icmp ne i32 %192, 0
  %194 = zext i1 %193 to i8
  store i8 %194, ptr %173, align 1, !tbaa !153
  store i8 %36, ptr %174, align 4, !tbaa !154
  %195 = load i32, ptr %23, align 4, !tbaa !12
  %196 = icmp ne i32 %195, 0
  %197 = zext i1 %196 to i8
  store i8 %197, ptr %175, align 1, !tbaa !155
  %198 = load i32, ptr %16, align 4, !tbaa !12
  store i32 %198, ptr %176, align 8, !tbaa !156
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %28) #7
  %199 = load ptr, ptr %1, align 8, !tbaa !157
  %200 = getelementptr inbounds i8, ptr %199, i64 240
  %201 = load ptr, ptr %200, align 8
  invoke void %201(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %28, ptr noundef nonnull align 8 dereferenceable(9848) %1, ptr noundef nonnull align 8 dereferenceable(36) %27)
          to label %202 unwind label %213

202:                                              ; preds = %160
  %203 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %28)
          to label %204 unwind label %215

204:                                              ; preds = %202
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #7
  %205 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.718)
          to label %206 unwind label %211

206:                                              ; preds = %204
  br i1 %3, label %207, label %220

207:                                              ; preds = %206
  %208 = getelementptr inbounds i8, ptr %37, i64 4
  %209 = load i32, ptr %208, align 4, !tbaa !12
  %210 = invoke noundef i32 @_ZNK11spirv_cross12CompilerGLSL28get_sparse_feedback_texel_idEj(ptr noundef nonnull align 8 dereferenceable(9848) %1, i32 noundef %209)
          to label %220 unwind label %218

211:                                              ; preds = %204
  %212 = landingpad { ptr, i32 }
          cleanup
  br label %348

213:                                              ; preds = %160
  %214 = landingpad { ptr, i32 }
          cleanup
  br label %217

215:                                              ; preds = %202
  %216 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #7
  br label %217

217:                                              ; preds = %215, %213
  %.pn90 = phi { ptr, i32 } [ %216, %215 ], [ %214, %213 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #7
  br label %348

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

220:                                              ; preds = %207, %206
  %.064 = phi i32 [ 0, %206 ], [ %210, %207 ]
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %29) #7
  call void @_ZN11spirv_cross7TypedIDILNS_5TypesE2EEC2Ej(ptr noundef nonnull align 4 dereferenceable(4) %29, i32 noundef 0)
  %221 = getelementptr inbounds i8, ptr %29, i64 24
  %222 = getelementptr inbounds i8, ptr %29, i64 28
  %223 = getelementptr inbounds i8, ptr %29, i64 32
  %224 = getelementptr inbounds i8, ptr %29, i64 36
  %225 = getelementptr inbounds i8, ptr %29, i64 40
  %226 = getelementptr inbounds i8, ptr %29, i64 44
  %227 = getelementptr inbounds i8, ptr %29, i64 48
  %228 = getelementptr inbounds i8, ptr %29, i64 52
  %229 = getelementptr inbounds i8, ptr %29, i64 56
  %230 = getelementptr inbounds i8, ptr %29, i64 60
  %231 = getelementptr inbounds i8, ptr %29, i64 64
  %232 = getelementptr inbounds i8, ptr %29, i64 68
  %233 = getelementptr inbounds i8, ptr %29, i64 72
  %234 = getelementptr inbounds i8, ptr %29, i64 73
  %235 = getelementptr inbounds i8, ptr %29, i64 48
  store i64 0, ptr %235, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(19) %29, ptr noundef nonnull align 8 dereferenceable(19) %26, i64 19, i1 false), !tbaa.struct !147
  %236 = load i32, ptr %9, align 4, !tbaa !12
  store i32 %236, ptr %221, align 8, !tbaa !159
  store i32 %.2, ptr %222, align 4, !tbaa !161
  %237 = load i32, ptr %10, align 4, !tbaa !12
  store i32 %237, ptr %223, align 8, !tbaa !162
  %238 = load i32, ptr %17, align 4, !tbaa !12
  store i32 %238, ptr %224, align 4, !tbaa !163
  %239 = load i32, ptr %18, align 4, !tbaa !12
  store i32 %239, ptr %225, align 8, !tbaa !164
  %240 = load i32, ptr %16, align 4, !tbaa !12
  store i32 %240, ptr %226, align 4, !tbaa !165
  %241 = load i32, ptr %21, align 4, !tbaa !12
  %242 = icmp ne i32 %241, 0
  %243 = zext i1 %242 to i8
  store i8 %243, ptr %234, align 1, !tbaa !166
  %.not92 = icmp eq i32 %241, 0
  %244 = load i32, ptr %19, align 4
  %.not93 = icmp eq i32 %244, 0
  %245 = load i32, ptr %20, align 4
  %spec.select128 = select i1 %.not93, i32 %245, i32 %244
  %.sink = select i1 %.not92, i32 %spec.select128, i32 %241
  store i32 %.sink, ptr %227, align 8, !tbaa !167
  %246 = load i32, ptr %15, align 4, !tbaa !12
  store i32 %246, ptr %228, align 4, !tbaa !168
  store i32 %.0, ptr %229, align 8, !tbaa !169
  %247 = load i32, ptr %22, align 4, !tbaa !12
  store i32 %247, ptr %230, align 4, !tbaa !170
  store i32 %.064, ptr %231, align 8, !tbaa !171
  %248 = load i32, ptr %23, align 4, !tbaa !12
  store i32 %248, ptr %232, align 4, !tbaa !172
  store i8 %.083, ptr %233, align 8, !tbaa !173
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %30) #7
  %249 = load ptr, ptr %1, align 8, !tbaa !157
  %250 = getelementptr inbounds i8, ptr %249, i64 248
  %251 = load ptr, ptr %250, align 8
  invoke void %251(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %30, ptr noundef nonnull align 8 dereferenceable(9848) %1, ptr noundef nonnull align 8 dereferenceable(74) %29, ptr noundef %4)
          to label %254 unwind label %270

252:                                              ; preds = %268, %264, %256
  %253 = landingpad { ptr, i32 }
          cleanup
  br label %347

254:                                              ; preds = %220
  %255 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %30)
          to label %256 unwind label %272

256:                                              ; preds = %254
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #7
  %257 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.135)
          to label %258 unwind label %252

258:                                              ; preds = %256
  %259 = call noundef zeroext i1 @_ZNK11spirv_cross12CompilerGLSL9is_legacyEv(ptr noundef nonnull align 8 dereferenceable(9848) %1)
  br i1 %259, label %260, label %275

260:                                              ; preds = %258
  %261 = getelementptr inbounds i8, ptr %1, i64 7640
  %262 = load i8, ptr %261, align 8, !tbaa !15, !range !124, !noundef !125
  %263 = trunc nuw i8 %262 to i1
  br i1 %263, label %275, label %264

264:                                              ; preds = %260
  %265 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE2EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %8)
  %266 = invoke noundef zeroext i1 @_ZNK11spirv_cross8Compiler14is_depth_imageERKNS_8SPIRTypeEj(ptr noundef nonnull align 8 dereferenceable(3176) %1, ptr noundef nonnull align 8 dereferenceable(336) %141, i32 noundef %265)
          to label %267 unwind label %252

267:                                              ; preds = %264
  br i1 %266, label %268, label %275

268:                                              ; preds = %267
  %269 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1067)
          to label %275 unwind label %252

270:                                              ; preds = %220
  %271 = landingpad { ptr, i32 }
          cleanup
  br label %274

272:                                              ; preds = %254
  %273 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #7
  br label %274

274:                                              ; preds = %272, %270
  %.pn94 = phi { ptr, i32 } [ %273, %272 ], [ %271, %270 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #7
  br label %347

275:                                              ; preds = %268, %267, %260, %258
  %276 = getelementptr inbounds i8, ptr %1, i64 8400
  %277 = load i8, ptr %276, align 8, !tbaa !174, !range !124, !noundef !125
  %278 = trunc nuw i8 %277 to i1
  br i1 %278, label %279, label %322

279:                                              ; preds = %275
  %280 = call noundef zeroext i1 @_ZL30image_opcode_is_sample_no_drefN3spv2OpE(i32 noundef %39)
  br i1 %280, label %281, label %322

281:                                              ; preds = %279
  %282 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE2EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %8)
  %283 = invoke noundef ptr @_ZN11spirv_cross8Compiler9maybe_getINS_24SPIRCombinedImageSamplerEEEPT_j(ptr noundef nonnull align 8 dereferenceable(3176) %1, i32 noundef %282)
          to label %284 unwind label %292

284:                                              ; preds = %281
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %31) #7
  %.not96 = icmp eq ptr %283, null
  %285 = getelementptr inbounds i8, ptr %283, i64 16
  %286 = select i1 %.not96, ptr %8, ptr %285
  %287 = load i32, ptr %286, align 4, !tbaa !12
  store i32 %287, ptr %31, align 4, !tbaa !12
  br i1 %.not96, label %296, label %288

288:                                              ; preds = %284
  %289 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE2EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %285)
  %290 = invoke noundef zeroext i1 @_ZNK11spirv_cross8Compiler14is_depth_imageERKNS_8SPIRTypeEj(ptr noundef nonnull align 8 dereferenceable(3176) %1, ptr noundef nonnull align 8 dereferenceable(336) %141, i32 noundef %289)
          to label %291 unwind label %294

291:                                              ; preds = %288
  br i1 %290, label %299, label %296

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

294:                                              ; preds = %296, %288
  %295 = landingpad { ptr, i32 }
          cleanup
  br label %321

296:                                              ; preds = %291, %284
  %297 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE2EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %8)
  %298 = invoke noundef zeroext i1 @_ZNK11spirv_cross8Compiler14is_depth_imageERKNS_8SPIRTypeEj(ptr noundef nonnull align 8 dereferenceable(3176) %1, ptr noundef nonnull align 8 dereferenceable(336) %141, i32 noundef %297)
          to label %299 unwind label %294

299:                                              ; preds = %296, %291
  %.063 = phi i1 [ true, %291 ], [ %298, %296 ]
  %300 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE2EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %31)
  %301 = invoke noundef ptr @_ZN11spirv_cross8Compiler26maybe_get_backing_variableEj(ptr noundef nonnull align 8 dereferenceable(3176) %1, i32 noundef %300)
          to label %302 unwind label %312

302:                                              ; preds = %299
  %.not97 = icmp eq ptr %301, null
  br i1 %.not97, label %314, label %303

303:                                              ; preds = %302
  %304 = getelementptr inbounds i8, ptr %301, i64 12
  %305 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE1EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %304)
  %306 = invoke noundef nonnull align 8 dereferenceable(336) ptr @_ZN11spirv_cross8Compiler3getINS_8SPIRTypeEEERT_j(ptr noundef nonnull align 8 dereferenceable(3176) %1, i32 noundef %305)
          to label %307 unwind label %312

307:                                              ; preds = %303
  %308 = getelementptr inbounds i8, ptr %301, i64 8
  %309 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE0EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %308)
  %310 = invoke noundef zeroext i1 @_ZNK11spirv_cross8Compiler14is_depth_imageERKNS_8SPIRTypeEj(ptr noundef nonnull align 8 dereferenceable(3176) %1, ptr noundef nonnull align 8 dereferenceable(336) %306, i32 noundef %309)
          to label %311 unwind label %312

311:                                              ; preds = %307
  %spec.select120 = or i1 %310, %.063
  br i1 %spec.select120, label %315, label %320

312:                                              ; preds = %307, %303, %299
  %313 = landingpad { ptr, i32 }
          cleanup
  br label %321

314:                                              ; preds = %302
  br i1 %.063, label %315, label %320

315:                                              ; preds = %311, %314
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %32) #7
  invoke void @_ZN11spirv_cross12CompilerGLSL13remap_swizzleERKNS_8SPIRTypeEjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %32, ptr noundef nonnull align 8 dereferenceable(9848) %1, ptr noundef nonnull align 8 dereferenceable(336) %47, i32 noundef 1, ptr noundef nonnull align 8 dereferenceable(32) %0)
          to label %316 unwind label %318

316:                                              ; preds = %315
  %317 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %32) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #7
  br label %320

318:                                              ; preds = %315
  %319 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #7
  br label %321

320:                                              ; preds = %311, %316, %314
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #7
  br label %322

321:                                              ; preds = %312, %318, %294
  %.pn98.pn = phi { ptr, i32 } [ %295, %294 ], [ %319, %318 ], [ %313, %312 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #7
  br label %347

322:                                              ; preds = %320, %279, %275
  br i1 %3, label %339, label %323

323:                                              ; preds = %322
  %324 = getelementptr inbounds i8, ptr %1, i64 8402
  %325 = load i8, ptr %324, align 2, !tbaa !175, !range !124, !noundef !125
  %326 = trunc nuw i8 %325 to i1
  %327 = getelementptr inbounds i8, ptr %47, i64 20
  %328 = load i32, ptr %327, align 4
  %329 = icmp ugt i32 %328, 31
  %or.cond124.not = select i1 %326, i1 true, i1 %329
  br i1 %or.cond124.not, label %339, label %330

330:                                              ; preds = %323
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %33) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %34) #7
  invoke void @_ZN11spirv_cross12CompilerGLSL24type_to_glsl_constructorB5cxx11ERKNS_8SPIRTypeE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %34, ptr noundef nonnull align 8 dereferenceable(9848) %1, ptr noundef nonnull align 8 dereferenceable(336) %47)
          to label %331 unwind label %334

331:                                              ; preds = %330
  invoke void @_ZN11spirv_cross4joinIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_KcRS6_S9_EEES6_DpOT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %33, ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef nonnull align 1 dereferenceable(2) @.str.718, ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 1 dereferenceable(2) @.str.135)
          to label %332 unwind label %336

332:                                              ; preds = %331
  %333 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %33) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %33) #7
  br label %339

334:                                              ; preds = %330
  %335 = landingpad { ptr, i32 }
          cleanup
  br label %338

336:                                              ; preds = %331
  %337 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #7
  br label %338

338:                                              ; preds = %336, %334
  %.pn102 = phi { ptr, i32 } [ %337, %336 ], [ %335, %334 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %33) #7
  br label %347

339:                                              ; preds = %332, %323, %322
  %340 = icmp eq i16 %38, 98
  br i1 %340, label %341, label %346

341:                                              ; preds = %339
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %35) #7
  invoke void @_ZN11spirv_cross12CompilerGLSL13remap_swizzleERKNS_8SPIRTypeEjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %35, ptr noundef nonnull align 8 dereferenceable(9848) %1, ptr noundef nonnull align 8 dereferenceable(336) %47, i32 noundef 4, ptr noundef nonnull align 8 dereferenceable(32) %0)
          to label %342 unwind label %344

342:                                              ; preds = %341
  %343 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %35) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %35) #7
  br label %346

344:                                              ; preds = %341
  %345 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %35) #7
  br label %347

346:                                              ; preds = %342, %339
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %29) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %27) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %26) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #7
  ret void

347:                                              ; preds = %292, %321, %344, %338, %274, %252
  %.pn104 = phi { ptr, i32 } [ %345, %344 ], [ %.pn102, %338 ], [ %253, %252 ], [ %.pn94, %274 ], [ %.pn98.pn, %321 ], [ %293, %292 ]
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %29) #7
  br label %348

348:                                              ; preds = %218, %347, %217, %211
  %.pn104.pn.pn = phi { ptr, i32 } [ %212, %211 ], [ %.pn90, %217 ], [ %.pn104, %347 ], [ %219, %218 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %27) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %0) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %26) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #7
  br label %349

349:                                              ; preds = %348, %123, %114, %105, %88, %81
  %.pn104.pn.pn.pn = phi { ptr, i32 } [ %.pn104.pn.pn, %348 ], [ %106, %105 ], [ %.pn, %123 ], [ %115, %114 ], [ %82, %81 ], [ %89, %88 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #7
  resume { ptr, i32 } %.pn104.pn.pn.pn
}

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden void @"_ZZN11spirv_cross12CompilerGLSL13to_texture_opB5cxx11ERKNS_11InstructionEbPbRNS_11SmallVectorIjLm8EEEENK3$_0clERjj"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 4 dereferenceable(4), i32 noundef) local_unnamed_addr #4 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZL30image_opcode_is_sample_no_drefN3spv2OpE(i32 noundef) local_unnamed_addr #4

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

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


; Effective O3 passes: AggressiveInstCombinePass,CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GlobalOptPass,IPSCCPPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,MemCpyOptPass,SROAPass,SimplifyCFGPass,TailCallElimPass