; 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.std::allocator.71" = type { 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::TypedID.280" = type { i32 }
%"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] }
%"class.spirv_cross::SmallVector.227" = type { %"class.spirv_cross::VectorView.228", i64, %"class.spirv_cross::AlignedBuffer.229" }
%"class.spirv_cross::VectorView.228" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.229" = type { [32 x i8] }
%"class.spirv_cross::SmallVector.92" = type { %"class.spirv_cross::VectorView.93", i64, %"class.spirv_cross::AlignedBuffer.94" }
%"class.spirv_cross::VectorView.93" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.94" = type { [32 x i8] }
%"struct.spirv_cross::SPIRType::ImageType" = type { %"class.spirv_cross::TypedID.281", i32, i8, i8, i8, i32, i32, i32 }
%"class.spirv_cross::TypedID.281" = type { i32 }
%"class.std::unordered_set.165" = type { %"class.std::_Hashtable.166" }
%"class.std::_Hashtable.166" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"class.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 }
%"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.std::unordered_map.131" = type { %"class.std::_Hashtable.132" }
%"class.std::_Hashtable.132" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.spirv_cross::SmallVector.159" = type { %"class.spirv_cross::VectorView.160", i64, %"class.spirv_cross::AlignedBuffer.161" }
%"class.spirv_cross::VectorView.160" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.161" = type { [64 x i8] }
%"class.spirv_cross::StringStream" = type { %"struct.spirv_cross::StringStream<>::Buffer", [4096 x i8], %"class.spirv_cross::SmallVector.162" }
%"struct.spirv_cross::StringStream<>::Buffer" = type { ptr, i64, i64 }
%"class.spirv_cross::SmallVector.162" = type { %"class.spirv_cross::VectorView.163", i64, %"class.spirv_cross::AlignedBuffer.164" }
%"class.spirv_cross::VectorView.163" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.164" = type { [192 x i8] }
%"struct.spirv_cross::CompilerGLSL::Options" = type { i32, i8, i8, i32, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i32, %"struct.spirv_cross::CompilerGLSL::Options::VertexOptions", %"struct.spirv_cross::CompilerGLSL::Options::FragmentOptions" }
%"struct.spirv_cross::CompilerGLSL::Options::VertexOptions" = type { i8, i8, i8 }
%"struct.spirv_cross::CompilerGLSL::Options::FragmentOptions" = type { i32, i32 }
%"class.std::unordered_map.185" = type { %"class.std::_Hashtable.186" }
%"class.std::_Hashtable.186" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.145" = type { %"class.std::_Hashtable.146" }
%"class.std::_Hashtable.146" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.spirv_cross::CompilerGLSL::BackendVariations" = type <{ %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", i8, i8, i8, i8, [4 x i8], ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, [4 x i8] }>
%"class.std::unordered_map.199" = type { %"class.std::_Hashtable.200" }
%"class.std::_Hashtable.200" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.spirv_cross::CompilerGLSL::ShaderSubgroupSupportHelper" = type { i32 }
%"class.spirv_cross::SmallVector.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.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 }

@.str.9 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [90 x i8], align 1
@_ZTIN11spirv_cross13CompilerErrorE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.386 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.387 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.388 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.389 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.413 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.414 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.450 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.451 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.454 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.455 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.496 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.497 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.501 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.502 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.505 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.506 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.1210 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.1211 = external hidden unnamed_addr constant [39 x i8], align 1
@__PRETTY_FUNCTION__._ZN11spirv_cross12CompilerGLSL15bitcast_glsl_opB5cxx11ERKNS_8SPIRTypeES3_ = external hidden unnamed_addr constant [94 x i8], align 1
@.str.1212 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.1213 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.1214 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.1215 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.1216 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.1217 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.1218 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.1219 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.1220 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.1221 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.1222 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1223 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.1224 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1225 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.1226 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.1227 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.1228 = external hidden unnamed_addr constant [14 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

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #1

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

declare void @__cxa_throw(ptr, ptr, ptr)

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11spirv_cross12CompilerGLSL15bitcast_glsl_opB5cxx11ERKNS_8SPIRTypeES3_(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 8 dereferenceable(336) %2, ptr noundef nonnull align 8 dereferenceable(336) %3) unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca %"class.std::allocator.71", align 1
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca %"class.std::allocator.71", align 1
  %14 = alloca i8, align 1
  %15 = alloca i8, align 1
  %16 = alloca i32, align 4
  %17 = alloca %"class.std::allocator.71", align 1
  %18 = alloca %"class.std::allocator.71", align 1
  %19 = alloca %"class.std::allocator.71", align 1
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %"class.std::allocator.71", align 1
  %22 = alloca %"class.std::allocator.71", align 1
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.std::allocator.71", align 1
  %25 = alloca %"class.std::allocator.71", align 1
  %26 = alloca %"class.std::__cxx11::basic_string", align 8
  %27 = alloca %"class.std::allocator.71", align 1
  %28 = alloca %"class.std::allocator.71", align 1
  %29 = alloca %"class.std::__cxx11::basic_string", align 8
  %30 = alloca %"class.std::allocator.71", align 1
  %31 = alloca %"class.std::allocator.71", align 1
  %32 = alloca %"class.std::allocator.71", align 1
  %33 = alloca %"class.std::allocator.71", align 1
  %34 = alloca %"class.std::allocator.71", align 1
  %35 = alloca %"class.std::allocator.71", align 1
  %36 = alloca %"class.std::allocator.71", align 1
  %37 = alloca %"class.std::allocator.71", align 1
  %38 = alloca %"class.std::allocator.71", align 1
  %39 = alloca %"class.std::allocator.71", align 1
  %40 = alloca %"class.std::allocator.71", align 1
  %41 = alloca %"class.std::allocator.71", align 1
  %42 = alloca %"class.std::allocator.71", align 1
  %43 = alloca %"class.std::allocator.71", align 1
  %44 = alloca %"class.std::allocator.71", align 1
  %45 = alloca %"class.std::allocator.71", align 1
  %46 = alloca %"class.std::allocator.71", align 1
  %47 = alloca %"class.std::allocator.71", align 1
  %48 = alloca %"class.std::allocator.71", align 1
  %49 = alloca %"class.std::allocator.71", align 1
  %50 = alloca %"class.std::allocator.71", align 1
  %51 = alloca %"class.std::allocator.71", align 1
  %52 = alloca %"class.std::allocator.71", align 1
  store ptr %0, ptr %5, align 8
  store ptr %1, ptr %6, align 8, !tbaa !5
  store ptr %2, ptr %7, align 8, !tbaa !5
  store ptr %3, ptr %8, align 8, !tbaa !5
  %53 = load ptr, ptr %6, align 8
  %54 = load ptr, ptr %7, align 8, !tbaa !5
  %55 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %54, i32 0, i32 9
  %56 = load i8, ptr %55, align 4, !tbaa !9, !range !38, !noundef !39
  %57 = trunc i8 %56 to i1
  br i1 %57, label %63, label %58

58:                                               ; preds = %4
  %59 = load ptr, ptr %8, align 8, !tbaa !5
  %60 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %59, i32 0, i32 9
  %61 = load i8, ptr %60, align 4, !tbaa !9, !range !38, !noundef !39
  %62 = trunc i8 %61 to i1
  br i1 %62, label %63, label %90

63:                                               ; preds = %58, %4
  %64 = load ptr, ptr %7, align 8, !tbaa !5
  %65 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %64, i32 0, i32 4
  %66 = load i32, ptr %65, align 8, !tbaa !40
  %67 = icmp eq i32 %66, 2
  br i1 %67, label %73, label %68

68:                                               ; preds = %63
  %69 = load ptr, ptr %8, align 8, !tbaa !5
  %70 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %69, i32 0, i32 4
  %71 = load i32, ptr %70, align 8, !tbaa !40
  %72 = icmp eq i32 %71, 2
  br i1 %72, label %73, label %85

73:                                               ; preds = %68, %63
  call void @llvm.lifetime.start.p0(i64 32, ptr %9) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %10) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef @.str.1210, ptr noundef nonnull align 1 dereferenceable(1) %10)
          to label %74 unwind label %76

74:                                               ; preds = %73
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %53, ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %75 unwind label %80

75:                                               ; preds = %74
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %9) #6
  br label %85

76:                                               ; preds = %73
  %77 = landingpad { ptr, i32 }
          cleanup
  %78 = extractvalue { ptr, i32 } %77, 0
  store ptr %78, ptr %11, align 8
  %79 = extractvalue { ptr, i32 } %77, 1
  store i32 %79, ptr %12, align 4
  br label %84

80:                                               ; preds = %74
  %81 = landingpad { ptr, i32 }
          cleanup
  %82 = extractvalue { ptr, i32 } %81, 0
  store ptr %82, ptr %11, align 8
  %83 = extractvalue { ptr, i32 } %81, 1
  store i32 %83, ptr %12, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #6
  br label %84

84:                                               ; preds = %80, %76
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %9) #6
  br label %824

85:                                               ; preds = %75, %68
  %86 = load ptr, ptr %7, align 8, !tbaa !5
  %87 = load ptr, ptr %53, align 8, !tbaa !41
  %88 = getelementptr inbounds ptr, ptr %87, i64 19
  %89 = load ptr, ptr %88, align 8
  call void %89(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(9848) %53, ptr noundef nonnull align 8 dereferenceable(336) %86, i32 noundef 0)
  br label %823

90:                                               ; preds = %58
  %91 = load ptr, ptr %7, align 8, !tbaa !5
  %92 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %91, i32 0, i32 2
  %93 = load i32, ptr %92, align 8, !tbaa !43
  %94 = load ptr, ptr %8, align 8, !tbaa !5
  %95 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %94, i32 0, i32 2
  %96 = load i32, ptr %95, align 8, !tbaa !43
  %97 = icmp eq i32 %93, %96
  br i1 %97, label %98, label %104

98:                                               ; preds = %90
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %13)
          to label %99 unwind label %100

99:                                               ; preds = %98
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #6
  br label %823

100:                                              ; preds = %98
  %101 = landingpad { ptr, i32 }
          cleanup
  %102 = extractvalue { ptr, i32 } %101, 0
  store ptr %102, ptr %11, align 8
  %103 = extractvalue { ptr, i32 } %101, 1
  store i32 %103, ptr %12, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #6
  br label %824

104:                                              ; preds = %90
  %105 = load ptr, ptr %7, align 8, !tbaa !5
  %106 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %105, i32 0, i32 2
  %107 = load i32, ptr %106, align 8, !tbaa !43
  %108 = icmp ne i32 %107, 2
  br i1 %108, label %109, label %110

109:                                              ; preds = %104
  br label %112

110:                                              ; preds = %104
  call void @__assert_fail(ptr noundef @.str.1211, ptr noundef @.str.11, i32 noundef 9614, ptr noundef @__PRETTY_FUNCTION__._ZN11spirv_cross12CompilerGLSL15bitcast_glsl_opB5cxx11ERKNS_8SPIRTypeES3_) #7
  unreachable

111:                                              ; No predecessors!
  br label %112

112:                                              ; preds = %111, %109
  %113 = load ptr, ptr %8, align 8, !tbaa !5
  %114 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %113, i32 0, i32 2
  %115 = load i32, ptr %114, align 8, !tbaa !43
  %116 = icmp ne i32 %115, 2
  br i1 %116, label %117, label %118

117:                                              ; preds = %112
  br label %120

118:                                              ; preds = %112
  call void @__assert_fail(ptr noundef @.str.1212, ptr noundef @.str.11, i32 noundef 9615, ptr noundef @__PRETTY_FUNCTION__._ZN11spirv_cross12CompilerGLSL15bitcast_glsl_opB5cxx11ERKNS_8SPIRTypeES3_) #7
  unreachable

119:                                              ; No predecessors!
  br label %120

120:                                              ; preds = %119, %117
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #6
  %121 = load ptr, ptr %7, align 8, !tbaa !5
  %122 = call noundef zeroext i1 @_ZN11spirv_crossL16type_is_integralERKNS_8SPIRTypeE(ptr noundef nonnull align 8 dereferenceable(336) %121)
  br i1 %122, label %123, label %126

123:                                              ; preds = %120
  %124 = load ptr, ptr %8, align 8, !tbaa !5
  %125 = call noundef zeroext i1 @_ZN11spirv_crossL16type_is_integralERKNS_8SPIRTypeE(ptr noundef nonnull align 8 dereferenceable(336) %124)
  br label %126

126:                                              ; preds = %123, %120
  %127 = phi i1 [ false, %120 ], [ %125, %123 ]
  %128 = zext i1 %127 to i8
  store i8 %128, ptr %14, align 1, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 1, ptr %15) #6
  %129 = load ptr, ptr %7, align 8, !tbaa !5
  %130 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %129, i32 0, i32 3
  %131 = load i32, ptr %130, align 4, !tbaa !45
  %132 = load ptr, ptr %8, align 8, !tbaa !5
  %133 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %132, i32 0, i32 3
  %134 = load i32, ptr %133, align 4, !tbaa !45
  %135 = icmp eq i32 %131, %134
  %136 = zext i1 %135 to i8
  store i8 %136, ptr %15, align 1, !tbaa !44
  %137 = load i8, ptr %14, align 1, !tbaa !44, !range !38, !noundef !39
  %138 = trunc i8 %137 to i1
  br i1 %138, label %139, label %147

139:                                              ; preds = %126
  %140 = load i8, ptr %15, align 1, !tbaa !44, !range !38, !noundef !39
  %141 = trunc i8 %140 to i1
  br i1 %141, label %142, label %147

142:                                              ; preds = %139
  %143 = load ptr, ptr %7, align 8, !tbaa !5
  %144 = load ptr, ptr %53, align 8, !tbaa !41
  %145 = getelementptr inbounds ptr, ptr %144, i64 19
  %146 = load ptr, ptr %145, align 8
  call void %146(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(9848) %53, ptr noundef nonnull align 8 dereferenceable(336) %143, i32 noundef 0)
  store i32 1, ptr %16, align 4
  br label %821

147:                                              ; preds = %139, %126
  %148 = load ptr, ptr %7, align 8, !tbaa !5
  %149 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %148, i32 0, i32 3
  %150 = load i32, ptr %149, align 4, !tbaa !45
  %151 = icmp eq i32 %150, 8
  br i1 %151, label %152, label %171

152:                                              ; preds = %147
  %153 = load ptr, ptr %8, align 8, !tbaa !5
  %154 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %153, i32 0, i32 3
  %155 = load i32, ptr %154, align 4, !tbaa !45
  %156 = icmp uge i32 %155, 16
  br i1 %156, label %157, label %171

157:                                              ; preds = %152
  %158 = load i8, ptr %14, align 1, !tbaa !44, !range !38, !noundef !39
  %159 = trunc i8 %158 to i1
  br i1 %159, label %160, label %171

160:                                              ; preds = %157
  %161 = load ptr, ptr %8, align 8, !tbaa !5
  %162 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %161, i32 0, i32 4
  %163 = load i32, ptr %162, align 8, !tbaa !40
  %164 = icmp eq i32 %163, 1
  br i1 %164, label %165, label %171

165:                                              ; preds = %160
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1213, ptr noundef nonnull align 1 dereferenceable(1) %17)
          to label %166 unwind label %167

166:                                              ; preds = %165
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #6
  store i32 1, ptr %16, align 4
  br label %821

167:                                              ; preds = %165
  %168 = landingpad { ptr, i32 }
          cleanup
  %169 = extractvalue { ptr, i32 } %168, 0
  store ptr %169, ptr %11, align 8
  %170 = extractvalue { ptr, i32 } %168, 1
  store i32 %170, ptr %12, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #6
  br label %822

171:                                              ; preds = %160, %157, %152, %147
  %172 = load ptr, ptr %8, align 8, !tbaa !5
  %173 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %172, i32 0, i32 3
  %174 = load i32, ptr %173, align 4, !tbaa !45
  %175 = icmp eq i32 %174, 8
  br i1 %175, label %176, label %195

176:                                              ; preds = %171
  %177 = load ptr, ptr %7, align 8, !tbaa !5
  %178 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %177, i32 0, i32 3
  %179 = load i32, ptr %178, align 4, !tbaa !45
  %180 = icmp eq i32 %179, 16
  br i1 %180, label %181, label %195

181:                                              ; preds = %176
  %182 = load i8, ptr %14, align 1, !tbaa !44, !range !38, !noundef !39
  %183 = trunc i8 %182 to i1
  br i1 %183, label %184, label %195

184:                                              ; preds = %181
  %185 = load ptr, ptr %7, align 8, !tbaa !5
  %186 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %185, i32 0, i32 4
  %187 = load i32, ptr %186, align 8, !tbaa !40
  %188 = icmp eq i32 %187, 1
  br i1 %188, label %189, label %195

189:                                              ; preds = %184
  call void @llvm.lifetime.start.p0(i64 1, ptr %18) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1214, ptr noundef nonnull align 1 dereferenceable(1) %18)
          to label %190 unwind label %191

190:                                              ; preds = %189
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #6
  store i32 1, ptr %16, align 4
  br label %821

191:                                              ; preds = %189
  %192 = landingpad { ptr, i32 }
          cleanup
  %193 = extractvalue { ptr, i32 } %192, 0
  store ptr %193, ptr %11, align 8
  %194 = extractvalue { ptr, i32 } %192, 1
  store i32 %194, ptr %12, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #6
  br label %822

195:                                              ; preds = %184, %181, %176, %171
  %196 = load ptr, ptr %8, align 8, !tbaa !5
  %197 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %196, i32 0, i32 3
  %198 = load i32, ptr %197, align 4, !tbaa !45
  %199 = icmp eq i32 %198, 8
  br i1 %199, label %200, label %219

200:                                              ; preds = %195
  %201 = load ptr, ptr %7, align 8, !tbaa !5
  %202 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %201, i32 0, i32 3
  %203 = load i32, ptr %202, align 4, !tbaa !45
  %204 = icmp eq i32 %203, 32
  br i1 %204, label %205, label %219

205:                                              ; preds = %200
  %206 = load i8, ptr %14, align 1, !tbaa !44, !range !38, !noundef !39
  %207 = trunc i8 %206 to i1
  br i1 %207, label %208, label %219

208:                                              ; preds = %205
  %209 = load ptr, ptr %7, align 8, !tbaa !5
  %210 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %209, i32 0, i32 4
  %211 = load i32, ptr %210, align 8, !tbaa !40
  %212 = icmp eq i32 %211, 1
  br i1 %212, label %213, label %219

213:                                              ; preds = %208
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1215, ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %214 unwind label %215

214:                                              ; preds = %213
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #6
  store i32 1, ptr %16, align 4
  br label %821

215:                                              ; preds = %213
  %216 = landingpad { ptr, i32 }
          cleanup
  %217 = extractvalue { ptr, i32 } %216, 0
  store ptr %217, ptr %11, align 8
  %218 = extractvalue { ptr, i32 } %216, 1
  store i32 %218, ptr %12, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #6
  br label %822

219:                                              ; preds = %208, %205, %200, %195
  br label %220

220:                                              ; preds = %219
  br label %221

221:                                              ; preds = %220
  %222 = load ptr, ptr %7, align 8, !tbaa !5
  %223 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %222, i32 0, i32 2
  %224 = load i32, ptr %223, align 8, !tbaa !43
  %225 = icmp eq i32 %224, 8
  br i1 %225, label %226, label %269

226:                                              ; preds = %221
  %227 = load ptr, ptr %8, align 8, !tbaa !5
  %228 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %227, i32 0, i32 2
  %229 = load i32, ptr %228, align 8, !tbaa !43
  %230 = icmp eq i32 %229, 13
  br i1 %230, label %231, label %269

231:                                              ; preds = %226
  %232 = call noundef zeroext i1 @_ZNK11spirv_cross12CompilerGLSL12is_legacy_esEv(ptr noundef nonnull align 8 dereferenceable(9848) %53)
  br i1 %232, label %233, label %240

233:                                              ; preds = %231
  %234 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %234, ptr noundef @.str.1216)
          to label %235 unwind label %236

235:                                              ; preds = %233
  call void @__cxa_throw(ptr %234, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #8
  unreachable

236:                                              ; preds = %233
  %237 = landingpad { ptr, i32 }
          cleanup
  %238 = extractvalue { ptr, i32 } %237, 0
  store ptr %238, ptr %11, align 8
  %239 = extractvalue { ptr, i32 } %237, 1
  store i32 %239, ptr %12, align 4
  call void @__cxa_free_exception(ptr %234) #6
  br label %822

240:                                              ; preds = %231
  %241 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %53, i32 0, i32 9
  %242 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %241, i32 0, i32 1
  %243 = load i8, ptr %242, align 4, !tbaa !46, !range !38, !noundef !39
  %244 = trunc i8 %243 to i1
  br i1 %244, label %262, label %245

245:                                              ; preds = %240
  %246 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %53, i32 0, i32 9
  %247 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %246, i32 0, i32 0
  %248 = load i32, ptr %247, align 4, !tbaa !141
  %249 = icmp ult i32 %248, 330
  br i1 %249, label %250, label %262

250:                                              ; preds = %245
  call void @llvm.lifetime.start.p0(i64 32, ptr %20) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef @.str.1217, ptr noundef nonnull align 1 dereferenceable(1) %21)
          to label %251 unwind label %253

251:                                              ; preds = %250
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %53, ptr noundef nonnull align 8 dereferenceable(32) %20)
          to label %252 unwind label %257

252:                                              ; preds = %251
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #6
  br label %262

253:                                              ; preds = %250
  %254 = landingpad { ptr, i32 }
          cleanup
  %255 = extractvalue { ptr, i32 } %254, 0
  store ptr %255, ptr %11, align 8
  %256 = extractvalue { ptr, i32 } %254, 1
  store i32 %256, ptr %12, align 4
  br label %261

257:                                              ; preds = %251
  %258 = landingpad { ptr, i32 }
          cleanup
  %259 = extractvalue { ptr, i32 } %258, 0
  store ptr %259, ptr %11, align 8
  %260 = extractvalue { ptr, i32 } %258, 1
  store i32 %260, ptr %12, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #6
  br label %261

261:                                              ; preds = %257, %253
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #6
  br label %822

262:                                              ; preds = %252, %245, %240
  br label %263

263:                                              ; preds = %262
  call void @llvm.lifetime.start.p0(i64 1, ptr %22) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.389, ptr noundef nonnull align 1 dereferenceable(1) %22)
          to label %264 unwind label %265

264:                                              ; preds = %263
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #6
  store i32 1, ptr %16, align 4
  br label %821

265:                                              ; preds = %263
  %266 = landingpad { ptr, i32 }
          cleanup
  %267 = extractvalue { ptr, i32 } %266, 0
  store ptr %267, ptr %11, align 8
  %268 = extractvalue { ptr, i32 } %266, 1
  store i32 %268, ptr %12, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #6
  br label %822

269:                                              ; preds = %226, %221
  %270 = load ptr, ptr %7, align 8, !tbaa !5
  %271 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %270, i32 0, i32 2
  %272 = load i32, ptr %271, align 8, !tbaa !43
  %273 = icmp eq i32 %272, 7
  br i1 %273, label %274, label %317

274:                                              ; preds = %269
  %275 = load ptr, ptr %8, align 8, !tbaa !5
  %276 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %275, i32 0, i32 2
  %277 = load i32, ptr %276, align 8, !tbaa !43
  %278 = icmp eq i32 %277, 13
  br i1 %278, label %279, label %317

279:                                              ; preds = %274
  %280 = call noundef zeroext i1 @_ZNK11spirv_cross12CompilerGLSL12is_legacy_esEv(ptr noundef nonnull align 8 dereferenceable(9848) %53)
  br i1 %280, label %281, label %288

281:                                              ; preds = %279
  %282 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %282, ptr noundef @.str.1218)
          to label %283 unwind label %284

283:                                              ; preds = %281
  call void @__cxa_throw(ptr %282, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #8
  unreachable

284:                                              ; preds = %281
  %285 = landingpad { ptr, i32 }
          cleanup
  %286 = extractvalue { ptr, i32 } %285, 0
  store ptr %286, ptr %11, align 8
  %287 = extractvalue { ptr, i32 } %285, 1
  store i32 %287, ptr %12, align 4
  call void @__cxa_free_exception(ptr %282) #6
  br label %822

288:                                              ; preds = %279
  %289 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %53, i32 0, i32 9
  %290 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %289, i32 0, i32 1
  %291 = load i8, ptr %290, align 4, !tbaa !46, !range !38, !noundef !39
  %292 = trunc i8 %291 to i1
  br i1 %292, label %310, label %293

293:                                              ; preds = %288
  %294 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %53, i32 0, i32 9
  %295 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %294, i32 0, i32 0
  %296 = load i32, ptr %295, align 4, !tbaa !141
  %297 = icmp ult i32 %296, 330
  br i1 %297, label %298, label %310

298:                                              ; preds = %293
  call void @llvm.lifetime.start.p0(i64 32, ptr %23) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %24) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef @.str.1217, ptr noundef nonnull align 1 dereferenceable(1) %24)
          to label %299 unwind label %301

299:                                              ; preds = %298
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %53, ptr noundef nonnull align 8 dereferenceable(32) %23)
          to label %300 unwind label %305

300:                                              ; preds = %299
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #6
  br label %310

301:                                              ; preds = %298
  %302 = landingpad { ptr, i32 }
          cleanup
  %303 = extractvalue { ptr, i32 } %302, 0
  store ptr %303, ptr %11, align 8
  %304 = extractvalue { ptr, i32 } %302, 1
  store i32 %304, ptr %12, align 4
  br label %309

305:                                              ; preds = %299
  %306 = landingpad { ptr, i32 }
          cleanup
  %307 = extractvalue { ptr, i32 } %306, 0
  store ptr %307, ptr %11, align 8
  %308 = extractvalue { ptr, i32 } %306, 1
  store i32 %308, ptr %12, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #6
  br label %309

309:                                              ; preds = %305, %301
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #6
  br label %822

310:                                              ; preds = %300, %293, %288
  br label %311

311:                                              ; preds = %310
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.388, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %312 unwind label %313

312:                                              ; preds = %311
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #6
  store i32 1, ptr %16, align 4
  br label %821

313:                                              ; preds = %311
  %314 = landingpad { ptr, i32 }
          cleanup
  %315 = extractvalue { ptr, i32 } %314, 0
  store ptr %315, ptr %11, align 8
  %316 = extractvalue { ptr, i32 } %314, 1
  store i32 %316, ptr %12, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #6
  br label %822

317:                                              ; preds = %274, %269
  %318 = load ptr, ptr %7, align 8, !tbaa !5
  %319 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %318, i32 0, i32 2
  %320 = load i32, ptr %319, align 8, !tbaa !43
  %321 = icmp eq i32 %320, 13
  br i1 %321, label %322, label %365

322:                                              ; preds = %317
  %323 = load ptr, ptr %8, align 8, !tbaa !5
  %324 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %323, i32 0, i32 2
  %325 = load i32, ptr %324, align 8, !tbaa !43
  %326 = icmp eq i32 %325, 8
  br i1 %326, label %327, label %365

327:                                              ; preds = %322
  %328 = call noundef zeroext i1 @_ZNK11spirv_cross12CompilerGLSL12is_legacy_esEv(ptr noundef nonnull align 8 dereferenceable(9848) %53)
  br i1 %328, label %329, label %336

329:                                              ; preds = %327
  %330 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %330, ptr noundef @.str.1219)
          to label %331 unwind label %332

331:                                              ; preds = %329
  call void @__cxa_throw(ptr %330, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #8
  unreachable

332:                                              ; preds = %329
  %333 = landingpad { ptr, i32 }
          cleanup
  %334 = extractvalue { ptr, i32 } %333, 0
  store ptr %334, ptr %11, align 8
  %335 = extractvalue { ptr, i32 } %333, 1
  store i32 %335, ptr %12, align 4
  call void @__cxa_free_exception(ptr %330) #6
  br label %822

336:                                              ; preds = %327
  %337 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %53, i32 0, i32 9
  %338 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %337, i32 0, i32 1
  %339 = load i8, ptr %338, align 4, !tbaa !46, !range !38, !noundef !39
  %340 = trunc i8 %339 to i1
  br i1 %340, label %358, label %341

341:                                              ; preds = %336
  %342 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %53, i32 0, i32 9
  %343 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %342, i32 0, i32 0
  %344 = load i32, ptr %343, align 4, !tbaa !141
  %345 = icmp ult i32 %344, 330
  br i1 %345, label %346, label %358

346:                                              ; preds = %341
  call void @llvm.lifetime.start.p0(i64 32, ptr %26) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef @.str.1217, ptr noundef nonnull align 1 dereferenceable(1) %27)
          to label %347 unwind label %349

347:                                              ; preds = %346
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %53, ptr noundef nonnull align 8 dereferenceable(32) %26)
          to label %348 unwind label %353

348:                                              ; preds = %347
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #6
  br label %358

349:                                              ; preds = %346
  %350 = landingpad { ptr, i32 }
          cleanup
  %351 = extractvalue { ptr, i32 } %350, 0
  store ptr %351, ptr %11, align 8
  %352 = extractvalue { ptr, i32 } %350, 1
  store i32 %352, ptr %12, align 4
  br label %357

353:                                              ; preds = %347
  %354 = landingpad { ptr, i32 }
          cleanup
  %355 = extractvalue { ptr, i32 } %354, 0
  store ptr %355, ptr %11, align 8
  %356 = extractvalue { ptr, i32 } %354, 1
  store i32 %356, ptr %12, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #6
  br label %357

357:                                              ; preds = %353, %349
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #6
  br label %822

358:                                              ; preds = %348, %341, %336
  br label %359

359:                                              ; preds = %358
  call void @llvm.lifetime.start.p0(i64 1, ptr %28) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.497, ptr noundef nonnull align 1 dereferenceable(1) %28)
          to label %360 unwind label %361

360:                                              ; preds = %359
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #6
  store i32 1, ptr %16, align 4
  br label %821

361:                                              ; preds = %359
  %362 = landingpad { ptr, i32 }
          cleanup
  %363 = extractvalue { ptr, i32 } %362, 0
  store ptr %363, ptr %11, align 8
  %364 = extractvalue { ptr, i32 } %362, 1
  store i32 %364, ptr %12, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #6
  br label %822

365:                                              ; preds = %322, %317
  %366 = load ptr, ptr %7, align 8, !tbaa !5
  %367 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %366, i32 0, i32 2
  %368 = load i32, ptr %367, align 8, !tbaa !43
  %369 = icmp eq i32 %368, 13
  br i1 %369, label %370, label %413

370:                                              ; preds = %365
  %371 = load ptr, ptr %8, align 8, !tbaa !5
  %372 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %371, i32 0, i32 2
  %373 = load i32, ptr %372, align 8, !tbaa !43
  %374 = icmp eq i32 %373, 7
  br i1 %374, label %375, label %413

375:                                              ; preds = %370
  %376 = call noundef zeroext i1 @_ZNK11spirv_cross12CompilerGLSL12is_legacy_esEv(ptr noundef nonnull align 8 dereferenceable(9848) %53)
  br i1 %376, label %377, label %384

377:                                              ; preds = %375
  %378 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %378, ptr noundef @.str.1220)
          to label %379 unwind label %380

379:                                              ; preds = %377
  call void @__cxa_throw(ptr %378, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #8
  unreachable

380:                                              ; preds = %377
  %381 = landingpad { ptr, i32 }
          cleanup
  %382 = extractvalue { ptr, i32 } %381, 0
  store ptr %382, ptr %11, align 8
  %383 = extractvalue { ptr, i32 } %381, 1
  store i32 %383, ptr %12, align 4
  call void @__cxa_free_exception(ptr %378) #6
  br label %822

384:                                              ; preds = %375
  %385 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %53, i32 0, i32 9
  %386 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %385, i32 0, i32 1
  %387 = load i8, ptr %386, align 4, !tbaa !46, !range !38, !noundef !39
  %388 = trunc i8 %387 to i1
  br i1 %388, label %406, label %389

389:                                              ; preds = %384
  %390 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %53, i32 0, i32 9
  %391 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %390, i32 0, i32 0
  %392 = load i32, ptr %391, align 4, !tbaa !141
  %393 = icmp ult i32 %392, 330
  br i1 %393, label %394, label %406

394:                                              ; preds = %389
  call void @llvm.lifetime.start.p0(i64 32, ptr %29) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %30) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef @.str.1217, ptr noundef nonnull align 1 dereferenceable(1) %30)
          to label %395 unwind label %397

395:                                              ; preds = %394
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %53, ptr noundef nonnull align 8 dereferenceable(32) %29)
          to label %396 unwind label %401

396:                                              ; preds = %395
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #6
  br label %406

397:                                              ; preds = %394
  %398 = landingpad { ptr, i32 }
          cleanup
  %399 = extractvalue { ptr, i32 } %398, 0
  store ptr %399, ptr %11, align 8
  %400 = extractvalue { ptr, i32 } %398, 1
  store i32 %400, ptr %12, align 4
  br label %405

401:                                              ; preds = %395
  %402 = landingpad { ptr, i32 }
          cleanup
  %403 = extractvalue { ptr, i32 } %402, 0
  store ptr %403, ptr %11, align 8
  %404 = extractvalue { ptr, i32 } %402, 1
  store i32 %404, ptr %12, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #6
  br label %405

405:                                              ; preds = %401, %397
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #6
  br label %822

406:                                              ; preds = %396, %389, %384
  br label %407

407:                                              ; preds = %406
  call void @llvm.lifetime.start.p0(i64 1, ptr %31) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.414, ptr noundef nonnull align 1 dereferenceable(1) %31)
          to label %408 unwind label %409

408:                                              ; preds = %407
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #6
  store i32 1, ptr %16, align 4
  br label %821

409:                                              ; preds = %407
  %410 = landingpad { ptr, i32 }
          cleanup
  %411 = extractvalue { ptr, i32 } %410, 0
  store ptr %411, ptr %11, align 8
  %412 = extractvalue { ptr, i32 } %410, 1
  store i32 %412, ptr %12, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #6
  br label %822

413:                                              ; preds = %370, %365
  %414 = load ptr, ptr %7, align 8, !tbaa !5
  %415 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %414, i32 0, i32 2
  %416 = load i32, ptr %415, align 8, !tbaa !43
  %417 = icmp eq i32 %416, 9
  br i1 %417, label %418, label %429

418:                                              ; preds = %413
  %419 = load ptr, ptr %8, align 8, !tbaa !5
  %420 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %419, i32 0, i32 2
  %421 = load i32, ptr %420, align 8, !tbaa !43
  %422 = icmp eq i32 %421, 14
  br i1 %422, label %423, label %429

423:                                              ; preds = %418
  call void @llvm.lifetime.start.p0(i64 1, ptr %32) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1221, ptr noundef nonnull align 1 dereferenceable(1) %32)
          to label %424 unwind label %425

424:                                              ; preds = %423
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #6
  store i32 1, ptr %16, align 4
  br label %821

425:                                              ; preds = %423
  %426 = landingpad { ptr, i32 }
          cleanup
  %427 = extractvalue { ptr, i32 } %426, 0
  store ptr %427, ptr %11, align 8
  %428 = extractvalue { ptr, i32 } %426, 1
  store i32 %428, ptr %12, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #6
  br label %822

429:                                              ; preds = %418, %413
  %430 = load ptr, ptr %7, align 8, !tbaa !5
  %431 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %430, i32 0, i32 2
  %432 = load i32, ptr %431, align 8, !tbaa !43
  %433 = icmp eq i32 %432, 10
  br i1 %433, label %434, label %445

434:                                              ; preds = %429
  %435 = load ptr, ptr %8, align 8, !tbaa !5
  %436 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %435, i32 0, i32 2
  %437 = load i32, ptr %436, align 8, !tbaa !43
  %438 = icmp eq i32 %437, 14
  br i1 %438, label %439, label %445

439:                                              ; preds = %434
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1222, ptr noundef nonnull align 1 dereferenceable(1) %33)
          to label %440 unwind label %441

440:                                              ; preds = %439
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #6
  store i32 1, ptr %16, align 4
  br label %821

441:                                              ; preds = %439
  %442 = landingpad { ptr, i32 }
          cleanup
  %443 = extractvalue { ptr, i32 } %442, 0
  store ptr %443, ptr %11, align 8
  %444 = extractvalue { ptr, i32 } %442, 1
  store i32 %444, ptr %12, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #6
  br label %822

445:                                              ; preds = %434, %429
  %446 = load ptr, ptr %7, align 8, !tbaa !5
  %447 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %446, i32 0, i32 2
  %448 = load i32, ptr %447, align 8, !tbaa !43
  %449 = icmp eq i32 %448, 14
  br i1 %449, label %450, label %461

450:                                              ; preds = %445
  %451 = load ptr, ptr %8, align 8, !tbaa !5
  %452 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %451, i32 0, i32 2
  %453 = load i32, ptr %452, align 8, !tbaa !43
  %454 = icmp eq i32 %453, 9
  br i1 %454, label %455, label %461

455:                                              ; preds = %450
  call void @llvm.lifetime.start.p0(i64 1, ptr %34) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1223, ptr noundef nonnull align 1 dereferenceable(1) %34)
          to label %456 unwind label %457

456:                                              ; preds = %455
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #6
  store i32 1, ptr %16, align 4
  br label %821

457:                                              ; preds = %455
  %458 = landingpad { ptr, i32 }
          cleanup
  %459 = extractvalue { ptr, i32 } %458, 0
  store ptr %459, ptr %11, align 8
  %460 = extractvalue { ptr, i32 } %458, 1
  store i32 %460, ptr %12, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #6
  br label %822

461:                                              ; preds = %450, %445
  %462 = load ptr, ptr %7, align 8, !tbaa !5
  %463 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %462, i32 0, i32 2
  %464 = load i32, ptr %463, align 8, !tbaa !43
  %465 = icmp eq i32 %464, 14
  br i1 %465, label %466, label %477

466:                                              ; preds = %461
  %467 = load ptr, ptr %8, align 8, !tbaa !5
  %468 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %467, i32 0, i32 2
  %469 = load i32, ptr %468, align 8, !tbaa !43
  %470 = icmp eq i32 %469, 10
  br i1 %470, label %471, label %477

471:                                              ; preds = %466
  call void @llvm.lifetime.start.p0(i64 1, ptr %35) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1224, ptr noundef nonnull align 1 dereferenceable(1) %35)
          to label %472 unwind label %473

472:                                              ; preds = %471
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #6
  store i32 1, ptr %16, align 4
  br label %821

473:                                              ; preds = %471
  %474 = landingpad { ptr, i32 }
          cleanup
  %475 = extractvalue { ptr, i32 } %474, 0
  store ptr %475, ptr %11, align 8
  %476 = extractvalue { ptr, i32 } %474, 1
  store i32 %476, ptr %12, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #6
  br label %822

477:                                              ; preds = %466, %461
  %478 = load ptr, ptr %7, align 8, !tbaa !5
  %479 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %478, i32 0, i32 2
  %480 = load i32, ptr %479, align 8, !tbaa !43
  %481 = icmp eq i32 %480, 5
  br i1 %481, label %482, label %493

482:                                              ; preds = %477
  %483 = load ptr, ptr %8, align 8, !tbaa !5
  %484 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %483, i32 0, i32 2
  %485 = load i32, ptr %484, align 8, !tbaa !43
  %486 = icmp eq i32 %485, 12
  br i1 %486, label %487, label %493

487:                                              ; preds = %482
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.386, ptr noundef nonnull align 1 dereferenceable(1) %36)
          to label %488 unwind label %489

488:                                              ; preds = %487
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #6
  store i32 1, ptr %16, align 4
  br label %821

489:                                              ; preds = %487
  %490 = landingpad { ptr, i32 }
          cleanup
  %491 = extractvalue { ptr, i32 } %490, 0
  store ptr %491, ptr %11, align 8
  %492 = extractvalue { ptr, i32 } %490, 1
  store i32 %492, ptr %12, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #6
  br label %822

493:                                              ; preds = %482, %477
  %494 = load ptr, ptr %7, align 8, !tbaa !5
  %495 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %494, i32 0, i32 2
  %496 = load i32, ptr %495, align 8, !tbaa !43
  %497 = icmp eq i32 %496, 6
  br i1 %497, label %498, label %509

498:                                              ; preds = %493
  %499 = load ptr, ptr %8, align 8, !tbaa !5
  %500 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %499, i32 0, i32 2
  %501 = load i32, ptr %500, align 8, !tbaa !43
  %502 = icmp eq i32 %501, 12
  br i1 %502, label %503, label %509

503:                                              ; preds = %498
  call void @llvm.lifetime.start.p0(i64 1, ptr %37) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.387, ptr noundef nonnull align 1 dereferenceable(1) %37)
          to label %504 unwind label %505

504:                                              ; preds = %503
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #6
  store i32 1, ptr %16, align 4
  br label %821

505:                                              ; preds = %503
  %506 = landingpad { ptr, i32 }
          cleanup
  %507 = extractvalue { ptr, i32 } %506, 0
  store ptr %507, ptr %11, align 8
  %508 = extractvalue { ptr, i32 } %506, 1
  store i32 %508, ptr %12, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #6
  br label %822

509:                                              ; preds = %498, %493
  %510 = load ptr, ptr %7, align 8, !tbaa !5
  %511 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %510, i32 0, i32 2
  %512 = load i32, ptr %511, align 8, !tbaa !43
  %513 = icmp eq i32 %512, 12
  br i1 %513, label %514, label %525

514:                                              ; preds = %509
  %515 = load ptr, ptr %8, align 8, !tbaa !5
  %516 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %515, i32 0, i32 2
  %517 = load i32, ptr %516, align 8, !tbaa !43
  %518 = icmp eq i32 %517, 5
  br i1 %518, label %519, label %525

519:                                              ; preds = %514
  call void @llvm.lifetime.start.p0(i64 1, ptr %38) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.413, ptr noundef nonnull align 1 dereferenceable(1) %38)
          to label %520 unwind label %521

520:                                              ; preds = %519
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #6
  store i32 1, ptr %16, align 4
  br label %821

521:                                              ; preds = %519
  %522 = landingpad { ptr, i32 }
          cleanup
  %523 = extractvalue { ptr, i32 } %522, 0
  store ptr %523, ptr %11, align 8
  %524 = extractvalue { ptr, i32 } %522, 1
  store i32 %524, ptr %12, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #6
  br label %822

525:                                              ; preds = %514, %509
  %526 = load ptr, ptr %7, align 8, !tbaa !5
  %527 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %526, i32 0, i32 2
  %528 = load i32, ptr %527, align 8, !tbaa !43
  %529 = icmp eq i32 %528, 12
  br i1 %529, label %530, label %541

530:                                              ; preds = %525
  %531 = load ptr, ptr %8, align 8, !tbaa !5
  %532 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %531, i32 0, i32 2
  %533 = load i32, ptr %532, align 8, !tbaa !43
  %534 = icmp eq i32 %533, 6
  br i1 %534, label %535, label %541

535:                                              ; preds = %530
  call void @llvm.lifetime.start.p0(i64 1, ptr %39) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.496, ptr noundef nonnull align 1 dereferenceable(1) %39)
          to label %536 unwind label %537

536:                                              ; preds = %535
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #6
  store i32 1, ptr %16, align 4
  br label %821

537:                                              ; preds = %535
  %538 = landingpad { ptr, i32 }
          cleanup
  %539 = extractvalue { ptr, i32 } %538, 0
  store ptr %539, ptr %11, align 8
  %540 = extractvalue { ptr, i32 } %538, 1
  store i32 %540, ptr %12, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #6
  br label %822

541:                                              ; preds = %530, %525
  br label %542

542:                                              ; preds = %541
  br label %543

543:                                              ; preds = %542
  br label %544

544:                                              ; preds = %543
  br label %545

545:                                              ; preds = %544
  br label %546

546:                                              ; preds = %545
  br label %547

547:                                              ; preds = %546
  br label %548

548:                                              ; preds = %547
  br label %549

549:                                              ; preds = %548
  br label %550

550:                                              ; preds = %549
  br label %551

551:                                              ; preds = %550
  br label %552

552:                                              ; preds = %551
  %553 = load ptr, ptr %7, align 8, !tbaa !5
  %554 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %553, i32 0, i32 2
  %555 = load i32, ptr %554, align 8, !tbaa !43
  %556 = icmp eq i32 %555, 10
  br i1 %556, label %557, label %573

557:                                              ; preds = %552
  %558 = load ptr, ptr %8, align 8, !tbaa !5
  %559 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %558, i32 0, i32 2
  %560 = load i32, ptr %559, align 8, !tbaa !43
  %561 = icmp eq i32 %560, 8
  br i1 %561, label %562, label %573

562:                                              ; preds = %557
  %563 = load ptr, ptr %8, align 8, !tbaa !5
  %564 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %563, i32 0, i32 4
  %565 = load i32, ptr %564, align 8, !tbaa !40
  %566 = icmp eq i32 %565, 2
  br i1 %566, label %567, label %573

567:                                              ; preds = %562
  call void @llvm.lifetime.start.p0(i64 1, ptr %40) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1225, ptr noundef nonnull align 1 dereferenceable(1) %40)
          to label %568 unwind label %569

568:                                              ; preds = %567
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #6
  store i32 1, ptr %16, align 4
  br label %821

569:                                              ; preds = %567
  %570 = landingpad { ptr, i32 }
          cleanup
  %571 = extractvalue { ptr, i32 } %570, 0
  store ptr %571, ptr %11, align 8
  %572 = extractvalue { ptr, i32 } %570, 1
  store i32 %572, ptr %12, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #6
  br label %822

573:                                              ; preds = %562, %557, %552
  %574 = load ptr, ptr %7, align 8, !tbaa !5
  %575 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %574, i32 0, i32 2
  %576 = load i32, ptr %575, align 8, !tbaa !43
  %577 = icmp eq i32 %576, 8
  br i1 %577, label %578, label %594

578:                                              ; preds = %573
  %579 = load ptr, ptr %8, align 8, !tbaa !5
  %580 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %579, i32 0, i32 2
  %581 = load i32, ptr %580, align 8, !tbaa !43
  %582 = icmp eq i32 %581, 10
  br i1 %582, label %583, label %594

583:                                              ; preds = %578
  %584 = load ptr, ptr %7, align 8, !tbaa !5
  %585 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %584, i32 0, i32 4
  %586 = load i32, ptr %585, align 8, !tbaa !40
  %587 = icmp eq i32 %586, 2
  br i1 %587, label %588, label %594

588:                                              ; preds = %583
  call void @llvm.lifetime.start.p0(i64 1, ptr %41) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1226, ptr noundef nonnull align 1 dereferenceable(1) %41)
          to label %589 unwind label %590

589:                                              ; preds = %588
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #6
  store i32 1, ptr %16, align 4
  br label %821

590:                                              ; preds = %588
  %591 = landingpad { ptr, i32 }
          cleanup
  %592 = extractvalue { ptr, i32 } %591, 0
  store ptr %592, ptr %11, align 8
  %593 = extractvalue { ptr, i32 } %591, 1
  store i32 %593, ptr %12, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #6
  br label %822

594:                                              ; preds = %583, %578, %573
  %595 = load ptr, ptr %7, align 8, !tbaa !5
  %596 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %595, i32 0, i32 2
  %597 = load i32, ptr %596, align 8, !tbaa !43
  %598 = icmp eq i32 %597, 12
  br i1 %598, label %599, label %615

599:                                              ; preds = %594
  %600 = load ptr, ptr %8, align 8, !tbaa !5
  %601 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %600, i32 0, i32 2
  %602 = load i32, ptr %601, align 8, !tbaa !43
  %603 = icmp eq i32 %602, 8
  br i1 %603, label %604, label %615

604:                                              ; preds = %599
  %605 = load ptr, ptr %8, align 8, !tbaa !5
  %606 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %605, i32 0, i32 4
  %607 = load i32, ptr %606, align 8, !tbaa !40
  %608 = icmp eq i32 %607, 1
  br i1 %608, label %609, label %615

609:                                              ; preds = %604
  call void @llvm.lifetime.start.p0(i64 1, ptr %42) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1227, ptr noundef nonnull align 1 dereferenceable(1) %42)
          to label %610 unwind label %611

610:                                              ; preds = %609
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #6
  store i32 1, ptr %16, align 4
  br label %821

611:                                              ; preds = %609
  %612 = landingpad { ptr, i32 }
          cleanup
  %613 = extractvalue { ptr, i32 } %612, 0
  store ptr %613, ptr %11, align 8
  %614 = extractvalue { ptr, i32 } %612, 1
  store i32 %614, ptr %12, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #6
  br label %822

615:                                              ; preds = %604, %599, %594
  %616 = load ptr, ptr %7, align 8, !tbaa !5
  %617 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %616, i32 0, i32 2
  %618 = load i32, ptr %617, align 8, !tbaa !43
  %619 = icmp eq i32 %618, 8
  br i1 %619, label %620, label %636

620:                                              ; preds = %615
  %621 = load ptr, ptr %8, align 8, !tbaa !5
  %622 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %621, i32 0, i32 2
  %623 = load i32, ptr %622, align 8, !tbaa !43
  %624 = icmp eq i32 %623, 12
  br i1 %624, label %625, label %636

625:                                              ; preds = %620
  %626 = load ptr, ptr %8, align 8, !tbaa !5
  %627 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %626, i32 0, i32 4
  %628 = load i32, ptr %627, align 8, !tbaa !40
  %629 = icmp eq i32 %628, 2
  br i1 %629, label %630, label %636

630:                                              ; preds = %625
  call void @llvm.lifetime.start.p0(i64 1, ptr %43) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1228, ptr noundef nonnull align 1 dereferenceable(1) %43)
          to label %631 unwind label %632

631:                                              ; preds = %630
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #6
  store i32 1, ptr %16, align 4
  br label %821

632:                                              ; preds = %630
  %633 = landingpad { ptr, i32 }
          cleanup
  %634 = extractvalue { ptr, i32 } %633, 0
  store ptr %634, ptr %11, align 8
  %635 = extractvalue { ptr, i32 } %633, 1
  store i32 %635, ptr %12, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #6
  br label %822

636:                                              ; preds = %625, %620, %615
  %637 = load ptr, ptr %7, align 8, !tbaa !5
  %638 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %637, i32 0, i32 2
  %639 = load i32, ptr %638, align 8, !tbaa !43
  %640 = icmp eq i32 %639, 7
  br i1 %640, label %641, label %657

641:                                              ; preds = %636
  %642 = load ptr, ptr %8, align 8, !tbaa !5
  %643 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %642, i32 0, i32 2
  %644 = load i32, ptr %643, align 8, !tbaa !43
  %645 = icmp eq i32 %644, 5
  br i1 %645, label %646, label %657

646:                                              ; preds = %641
  %647 = load ptr, ptr %8, align 8, !tbaa !5
  %648 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %647, i32 0, i32 4
  %649 = load i32, ptr %648, align 8, !tbaa !40
  %650 = icmp eq i32 %649, 2
  br i1 %650, label %651, label %657

651:                                              ; preds = %646
  call void @llvm.lifetime.start.p0(i64 1, ptr %44) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.450, ptr noundef nonnull align 1 dereferenceable(1) %44)
          to label %652 unwind label %653

652:                                              ; preds = %651
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #6
  store i32 1, ptr %16, align 4
  br label %821

653:                                              ; preds = %651
  %654 = landingpad { ptr, i32 }
          cleanup
  %655 = extractvalue { ptr, i32 } %654, 0
  store ptr %655, ptr %11, align 8
  %656 = extractvalue { ptr, i32 } %654, 1
  store i32 %656, ptr %12, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #6
  br label %822

657:                                              ; preds = %646, %641, %636
  %658 = load ptr, ptr %7, align 8, !tbaa !5
  %659 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %658, i32 0, i32 2
  %660 = load i32, ptr %659, align 8, !tbaa !43
  %661 = icmp eq i32 %660, 5
  br i1 %661, label %662, label %678

662:                                              ; preds = %657
  %663 = load ptr, ptr %8, align 8, !tbaa !5
  %664 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %663, i32 0, i32 2
  %665 = load i32, ptr %664, align 8, !tbaa !43
  %666 = icmp eq i32 %665, 7
  br i1 %666, label %667, label %678

667:                                              ; preds = %662
  %668 = load ptr, ptr %8, align 8, !tbaa !5
  %669 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %668, i32 0, i32 4
  %670 = load i32, ptr %669, align 8, !tbaa !40
  %671 = icmp eq i32 %670, 1
  br i1 %671, label %672, label %678

672:                                              ; preds = %667
  call void @llvm.lifetime.start.p0(i64 1, ptr %45) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.501, ptr noundef nonnull align 1 dereferenceable(1) %45)
          to label %673 unwind label %674

673:                                              ; preds = %672
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #6
  store i32 1, ptr %16, align 4
  br label %821

674:                                              ; preds = %672
  %675 = landingpad { ptr, i32 }
          cleanup
  %676 = extractvalue { ptr, i32 } %675, 0
  store ptr %676, ptr %11, align 8
  %677 = extractvalue { ptr, i32 } %675, 1
  store i32 %677, ptr %12, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #6
  br label %822

678:                                              ; preds = %667, %662, %657
  %679 = load ptr, ptr %7, align 8, !tbaa !5
  %680 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %679, i32 0, i32 2
  %681 = load i32, ptr %680, align 8, !tbaa !43
  %682 = icmp eq i32 %681, 8
  br i1 %682, label %683, label %699

683:                                              ; preds = %678
  %684 = load ptr, ptr %8, align 8, !tbaa !5
  %685 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %684, i32 0, i32 2
  %686 = load i32, ptr %685, align 8, !tbaa !43
  %687 = icmp eq i32 %686, 6
  br i1 %687, label %688, label %699

688:                                              ; preds = %683
  %689 = load ptr, ptr %8, align 8, !tbaa !5
  %690 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %689, i32 0, i32 4
  %691 = load i32, ptr %690, align 8, !tbaa !40
  %692 = icmp eq i32 %691, 2
  br i1 %692, label %693, label %699

693:                                              ; preds = %688
  call void @llvm.lifetime.start.p0(i64 1, ptr %46) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.454, ptr noundef nonnull align 1 dereferenceable(1) %46)
          to label %694 unwind label %695

694:                                              ; preds = %693
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #6
  store i32 1, ptr %16, align 4
  br label %821

695:                                              ; preds = %693
  %696 = landingpad { ptr, i32 }
          cleanup
  %697 = extractvalue { ptr, i32 } %696, 0
  store ptr %697, ptr %11, align 8
  %698 = extractvalue { ptr, i32 } %696, 1
  store i32 %698, ptr %12, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #6
  br label %822

699:                                              ; preds = %688, %683, %678
  %700 = load ptr, ptr %7, align 8, !tbaa !5
  %701 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %700, i32 0, i32 2
  %702 = load i32, ptr %701, align 8, !tbaa !43
  %703 = icmp eq i32 %702, 6
  br i1 %703, label %704, label %720

704:                                              ; preds = %699
  %705 = load ptr, ptr %8, align 8, !tbaa !5
  %706 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %705, i32 0, i32 2
  %707 = load i32, ptr %706, align 8, !tbaa !43
  %708 = icmp eq i32 %707, 8
  br i1 %708, label %709, label %720

709:                                              ; preds = %704
  %710 = load ptr, ptr %8, align 8, !tbaa !5
  %711 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %710, i32 0, i32 4
  %712 = load i32, ptr %711, align 8, !tbaa !40
  %713 = icmp eq i32 %712, 1
  br i1 %713, label %714, label %720

714:                                              ; preds = %709
  call void @llvm.lifetime.start.p0(i64 1, ptr %47) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.505, ptr noundef nonnull align 1 dereferenceable(1) %47)
          to label %715 unwind label %716

715:                                              ; preds = %714
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #6
  store i32 1, ptr %16, align 4
  br label %821

716:                                              ; preds = %714
  %717 = landingpad { ptr, i32 }
          cleanup
  %718 = extractvalue { ptr, i32 } %717, 0
  store ptr %718, ptr %11, align 8
  %719 = extractvalue { ptr, i32 } %717, 1
  store i32 %719, ptr %12, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #6
  br label %822

720:                                              ; preds = %709, %704, %699
  %721 = load ptr, ptr %7, align 8, !tbaa !5
  %722 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %721, i32 0, i32 2
  %723 = load i32, ptr %722, align 8, !tbaa !43
  %724 = icmp eq i32 %723, 9
  br i1 %724, label %725, label %741

725:                                              ; preds = %720
  %726 = load ptr, ptr %8, align 8, !tbaa !5
  %727 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %726, i32 0, i32 2
  %728 = load i32, ptr %727, align 8, !tbaa !43
  %729 = icmp eq i32 %728, 5
  br i1 %729, label %730, label %741

730:                                              ; preds = %725
  %731 = load ptr, ptr %8, align 8, !tbaa !5
  %732 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %731, i32 0, i32 4
  %733 = load i32, ptr %732, align 8, !tbaa !40
  %734 = icmp eq i32 %733, 4
  br i1 %734, label %735, label %741

735:                                              ; preds = %730
  call void @llvm.lifetime.start.p0(i64 1, ptr %48) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.451, ptr noundef nonnull align 1 dereferenceable(1) %48)
          to label %736 unwind label %737

736:                                              ; preds = %735
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #6
  store i32 1, ptr %16, align 4
  br label %821

737:                                              ; preds = %735
  %738 = landingpad { ptr, i32 }
          cleanup
  %739 = extractvalue { ptr, i32 } %738, 0
  store ptr %739, ptr %11, align 8
  %740 = extractvalue { ptr, i32 } %738, 1
  store i32 %740, ptr %12, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #6
  br label %822

741:                                              ; preds = %730, %725, %720
  %742 = load ptr, ptr %7, align 8, !tbaa !5
  %743 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %742, i32 0, i32 2
  %744 = load i32, ptr %743, align 8, !tbaa !43
  %745 = icmp eq i32 %744, 5
  br i1 %745, label %746, label %762

746:                                              ; preds = %741
  %747 = load ptr, ptr %8, align 8, !tbaa !5
  %748 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %747, i32 0, i32 2
  %749 = load i32, ptr %748, align 8, !tbaa !43
  %750 = icmp eq i32 %749, 9
  br i1 %750, label %751, label %762

751:                                              ; preds = %746
  %752 = load ptr, ptr %8, align 8, !tbaa !5
  %753 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %752, i32 0, i32 4
  %754 = load i32, ptr %753, align 8, !tbaa !40
  %755 = icmp eq i32 %754, 1
  br i1 %755, label %756, label %762

756:                                              ; preds = %751
  call void @llvm.lifetime.start.p0(i64 1, ptr %49) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.502, ptr noundef nonnull align 1 dereferenceable(1) %49)
          to label %757 unwind label %758

757:                                              ; preds = %756
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #6
  store i32 1, ptr %16, align 4
  br label %821

758:                                              ; preds = %756
  %759 = landingpad { ptr, i32 }
          cleanup
  %760 = extractvalue { ptr, i32 } %759, 0
  store ptr %760, ptr %11, align 8
  %761 = extractvalue { ptr, i32 } %759, 1
  store i32 %761, ptr %12, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #6
  br label %822

762:                                              ; preds = %751, %746, %741
  %763 = load ptr, ptr %7, align 8, !tbaa !5
  %764 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %763, i32 0, i32 2
  %765 = load i32, ptr %764, align 8, !tbaa !43
  %766 = icmp eq i32 %765, 10
  br i1 %766, label %767, label %783

767:                                              ; preds = %762
  %768 = load ptr, ptr %8, align 8, !tbaa !5
  %769 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %768, i32 0, i32 2
  %770 = load i32, ptr %769, align 8, !tbaa !43
  %771 = icmp eq i32 %770, 6
  br i1 %771, label %772, label %783

772:                                              ; preds = %767
  %773 = load ptr, ptr %8, align 8, !tbaa !5
  %774 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %773, i32 0, i32 4
  %775 = load i32, ptr %774, align 8, !tbaa !40
  %776 = icmp eq i32 %775, 4
  br i1 %776, label %777, label %783

777:                                              ; preds = %772
  call void @llvm.lifetime.start.p0(i64 1, ptr %50) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.455, ptr noundef nonnull align 1 dereferenceable(1) %50)
          to label %778 unwind label %779

778:                                              ; preds = %777
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %50) #6
  store i32 1, ptr %16, align 4
  br label %821

779:                                              ; preds = %777
  %780 = landingpad { ptr, i32 }
          cleanup
  %781 = extractvalue { ptr, i32 } %780, 0
  store ptr %781, ptr %11, align 8
  %782 = extractvalue { ptr, i32 } %780, 1
  store i32 %782, ptr %12, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %50) #6
  br label %822

783:                                              ; preds = %772, %767, %762
  %784 = load ptr, ptr %7, align 8, !tbaa !5
  %785 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %784, i32 0, i32 2
  %786 = load i32, ptr %785, align 8, !tbaa !43
  %787 = icmp eq i32 %786, 6
  br i1 %787, label %788, label %804

788:                                              ; preds = %783
  %789 = load ptr, ptr %8, align 8, !tbaa !5
  %790 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %789, i32 0, i32 2
  %791 = load i32, ptr %790, align 8, !tbaa !43
  %792 = icmp eq i32 %791, 10
  br i1 %792, label %793, label %804

793:                                              ; preds = %788
  %794 = load ptr, ptr %8, align 8, !tbaa !5
  %795 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %794, i32 0, i32 4
  %796 = load i32, ptr %795, align 8, !tbaa !40
  %797 = icmp eq i32 %796, 1
  br i1 %797, label %798, label %804

798:                                              ; preds = %793
  call void @llvm.lifetime.start.p0(i64 1, ptr %51) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.506, ptr noundef nonnull align 1 dereferenceable(1) %51)
          to label %799 unwind label %800

799:                                              ; preds = %798
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #6
  store i32 1, ptr %16, align 4
  br label %821

800:                                              ; preds = %798
  %801 = landingpad { ptr, i32 }
          cleanup
  %802 = extractvalue { ptr, i32 } %801, 0
  store ptr %802, ptr %11, align 8
  %803 = extractvalue { ptr, i32 } %801, 1
  store i32 %803, ptr %12, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #6
  br label %822

804:                                              ; preds = %793, %788, %783
  br label %805

805:                                              ; preds = %804
  br label %806

806:                                              ; preds = %805
  br label %807

807:                                              ; preds = %806
  br label %808

808:                                              ; preds = %807
  br label %809

809:                                              ; preds = %808
  br label %810

810:                                              ; preds = %809
  br label %811

811:                                              ; preds = %810
  br label %812

812:                                              ; preds = %811
  br label %813

813:                                              ; preds = %812
  br label %814

814:                                              ; preds = %813
  br label %815

815:                                              ; preds = %814
  call void @llvm.lifetime.start.p0(i64 1, ptr %52) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %52)
          to label %816 unwind label %817

816:                                              ; preds = %815
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #6
  store i32 1, ptr %16, align 4
  br label %821

817:                                              ; preds = %815
  %818 = landingpad { ptr, i32 }
          cleanup
  %819 = extractvalue { ptr, i32 } %818, 0
  store ptr %819, ptr %11, align 8
  %820 = extractvalue { ptr, i32 } %818, 1
  store i32 %820, ptr %12, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #6
  br label %822

821:                                              ; preds = %816, %799, %778, %757, %736, %715, %694, %673, %652, %631, %610, %589, %568, %536, %520, %504, %488, %472, %456, %440, %424, %408, %360, %312, %264, %214, %190, %166, %142
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #6
  br label %823

822:                                              ; preds = %817, %800, %779, %758, %737, %716, %695, %674, %653, %632, %611, %590, %569, %537, %521, %505, %489, %473, %457, %441, %425, %409, %405, %380, %361, %357, %332, %313, %309, %284, %265, %261, %236, %215, %191, %167
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #6
  br label %824

823:                                              ; preds = %821, %99, %85
  ret void

824:                                              ; preds = %822, %100, %84
  %825 = load ptr, ptr %11, align 8
  %826 = load i32, ptr %12, align 4
  %827 = insertvalue { ptr, i32 } poison, ptr %825, 0
  %828 = insertvalue { ptr, i32 } %827, i32 %826, 1
  resume { ptr, i32 } %828
}

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZN11spirv_crossL16type_is_integralERKNS_8SPIRTypeE(ptr noundef nonnull align 8 dereferenceable(336)) #5

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


; 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.std::allocator.71" = type { i8 }

@.str.9 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [90 x i8], align 1
@_ZTIN11spirv_cross13CompilerErrorE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.386 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.387 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.388 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.389 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.413 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.414 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.450 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.451 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.454 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.455 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.496 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.497 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.501 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.502 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.505 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.506 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.1210 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.1211 = external hidden unnamed_addr constant [39 x i8], align 1
@__PRETTY_FUNCTION__._ZN11spirv_cross12CompilerGLSL15bitcast_glsl_opB5cxx11ERKNS_8SPIRTypeES3_ = external hidden unnamed_addr constant [94 x i8], align 1
@.str.1212 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.1213 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.1214 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.1215 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.1216 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.1217 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.1218 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.1219 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.1220 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.1221 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.1222 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1223 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.1224 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1225 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.1226 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.1227 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.1228 = external hidden unnamed_addr constant [14 x i8], align 1

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

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

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #1

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11spirv_cross12CompilerGLSL15bitcast_glsl_opB5cxx11ERKNS_8SPIRTypeES3_(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 8 dereferenceable(336) %2, ptr noundef nonnull align 8 dereferenceable(336) %3) unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca %"class.std::allocator.71", align 1
  %7 = alloca %"class.std::allocator.71", align 1
  %8 = alloca %"class.std::allocator.71", align 1
  %9 = alloca %"class.std::allocator.71", align 1
  %10 = alloca %"class.std::allocator.71", align 1
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::allocator.71", align 1
  %13 = alloca %"class.std::allocator.71", align 1
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %"class.std::allocator.71", align 1
  %16 = alloca %"class.std::allocator.71", align 1
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca %"class.std::allocator.71", align 1
  %19 = alloca %"class.std::allocator.71", align 1
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %"class.std::allocator.71", align 1
  %22 = alloca %"class.std::allocator.71", align 1
  %23 = alloca %"class.std::allocator.71", align 1
  %24 = alloca %"class.std::allocator.71", align 1
  %25 = alloca %"class.std::allocator.71", align 1
  %26 = alloca %"class.std::allocator.71", align 1
  %27 = alloca %"class.std::allocator.71", align 1
  %28 = alloca %"class.std::allocator.71", align 1
  %29 = alloca %"class.std::allocator.71", align 1
  %30 = alloca %"class.std::allocator.71", align 1
  %31 = alloca %"class.std::allocator.71", align 1
  %32 = alloca %"class.std::allocator.71", align 1
  %33 = alloca %"class.std::allocator.71", align 1
  %34 = alloca %"class.std::allocator.71", align 1
  %35 = alloca %"class.std::allocator.71", align 1
  %36 = alloca %"class.std::allocator.71", align 1
  %37 = alloca %"class.std::allocator.71", align 1
  %38 = alloca %"class.std::allocator.71", align 1
  %39 = alloca %"class.std::allocator.71", align 1
  %40 = alloca %"class.std::allocator.71", align 1
  %41 = alloca %"class.std::allocator.71", align 1
  %42 = alloca %"class.std::allocator.71", align 1
  %43 = alloca %"class.std::allocator.71", align 1
  %44 = getelementptr inbounds i8, ptr %2, i64 124
  %45 = load i8, ptr %44, align 4, !tbaa !5, !range !37, !noundef !38
  %46 = trunc nuw i8 %45 to i1
  br i1 %46, label %51, label %47

47:                                               ; preds = %4
  %48 = getelementptr inbounds i8, ptr %3, i64 124
  %49 = load i8, ptr %48, align 4, !tbaa !5, !range !37, !noundef !38
  %50 = trunc nuw i8 %49 to i1
  br i1 %50, label %51, label %70

51:                                               ; preds = %47, %4
  %52 = getelementptr inbounds i8, ptr %2, i64 24
  %53 = load i32, ptr %52, align 8, !tbaa !39
  %54 = icmp eq i32 %53, 2
  %55 = getelementptr inbounds i8, ptr %3, i64 24
  %56 = load i32, ptr %55, align 8
  %57 = icmp eq i32 %56, 2
  %or.cond = select i1 %54, i1 true, i1 %57
  br i1 %or.cond, label %58, label %66

58:                                               ; preds = %51
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %6) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull @.str.1210, ptr noundef nonnull align 1 dereferenceable(1) %6)
          to label %59 unwind label %61

59:                                               ; preds = %58
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %1, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %60 unwind label %63

60:                                               ; preds = %59
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #6
  br label %66

61:                                               ; preds = %58
  %62 = landingpad { ptr, i32 }
          cleanup
  br label %65

63:                                               ; preds = %59
  %64 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #6
  br label %65

65:                                               ; preds = %63, %61
  %.pn109 = phi { ptr, i32 } [ %64, %63 ], [ %62, %61 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #6
  br label %368

66:                                               ; preds = %51, %60
  %67 = load ptr, ptr %1, align 8, !tbaa !40
  %68 = getelementptr inbounds i8, ptr %67, i64 152
  %69 = load ptr, ptr %68, align 8
  call void %69(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(9848) %1, ptr noundef nonnull align 8 dereferenceable(336) %2, i32 noundef 0)
  br label %367

70:                                               ; preds = %47
  %71 = getelementptr inbounds i8, ptr %2, i64 16
  %72 = load i32, ptr %71, align 8, !tbaa !42
  %73 = getelementptr inbounds i8, ptr %3, i64 16
  %74 = load i32, ptr %73, align 8, !tbaa !42
  %75 = icmp eq i32 %72, %74
  br i1 %75, label %76, label %80

76:                                               ; preds = %70
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %7) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %7)
          to label %77 unwind label %78

77:                                               ; preds = %76
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) #6
  br label %367

78:                                               ; preds = %76
  %79 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) #6
  br label %368

80:                                               ; preds = %70
  %.not = icmp eq i32 %72, 2
  br i1 %.not, label %81, label %82

81:                                               ; preds = %80
  tail call void @__assert_fail(ptr noundef nonnull @.str.1211, ptr noundef nonnull @.str.11, i32 noundef 9614, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN11spirv_cross12CompilerGLSL15bitcast_glsl_opB5cxx11ERKNS_8SPIRTypeES3_) #7
  unreachable

82:                                               ; preds = %80
  %.not99 = icmp eq i32 %74, 2
  br i1 %.not99, label %83, label %84

83:                                               ; preds = %82
  tail call void @__assert_fail(ptr noundef nonnull @.str.1212, ptr noundef nonnull @.str.11, i32 noundef 9615, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN11spirv_cross12CompilerGLSL15bitcast_glsl_opB5cxx11ERKNS_8SPIRTypeES3_) #7
  unreachable

84:                                               ; preds = %82
  %85 = tail call noundef zeroext i1 @_ZN11spirv_crossL16type_is_integralERKNS_8SPIRTypeE(ptr noundef nonnull align 8 dereferenceable(336) %2)
  br i1 %85, label %88, label %.thread

.thread:                                          ; preds = %84
  %86 = getelementptr inbounds i8, ptr %2, i64 20
  %87 = getelementptr inbounds i8, ptr %3, i64 20
  br label %100

88:                                               ; preds = %84
  %89 = tail call noundef zeroext i1 @_ZN11spirv_crossL16type_is_integralERKNS_8SPIRTypeE(ptr noundef nonnull align 8 dereferenceable(336) %3)
  %90 = getelementptr inbounds i8, ptr %2, i64 20
  %91 = getelementptr inbounds i8, ptr %3, i64 20
  br i1 %89, label %92, label %100

92:                                               ; preds = %88
  %93 = load i32, ptr %90, align 4, !tbaa !43
  %94 = load i32, ptr %91, align 4, !tbaa !43
  %95 = icmp eq i32 %93, %94
  br i1 %95, label %96, label %100

96:                                               ; preds = %92
  %97 = load ptr, ptr %1, align 8, !tbaa !40
  %98 = getelementptr inbounds i8, ptr %97, i64 152
  %99 = load ptr, ptr %98, align 8
  tail call void %99(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(9848) %1, ptr noundef nonnull align 8 dereferenceable(336) %2, i32 noundef 0)
  br label %367

100:                                              ; preds = %.thread, %92, %88
  %101 = phi ptr [ %87, %.thread ], [ %91, %92 ], [ %91, %88 ]
  %102 = phi ptr [ %86, %.thread ], [ %90, %92 ], [ %90, %88 ]
  %.not116.not242 = phi i1 [ false, %.thread ], [ true, %92 ], [ false, %88 ]
  %103 = load i32, ptr %102, align 4
  %104 = icmp eq i32 %103, 8
  %105 = load i32, ptr %101, align 4
  %106 = icmp ugt i32 %105, 15
  %or.cond115.not236.not246 = select i1 %104, i1 %106, i1 false
  %brmerge.not243 = and i1 %.not116.not242, %or.cond115.not236.not246
  %107 = getelementptr inbounds i8, ptr %3, i64 24
  %108 = load i32, ptr %107, align 8
  %109 = icmp eq i32 %108, 1
  %or.cond119 = select i1 %brmerge.not243, i1 %109, i1 false
  br i1 %or.cond119, label %110, label %114

110:                                              ; preds = %100
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %8) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1213, ptr noundef nonnull align 1 dereferenceable(1) %8)
          to label %111 unwind label %112

111:                                              ; preds = %110
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #6
  br label %367

112:                                              ; preds = %110
  %113 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #6
  br label %368

114:                                              ; preds = %100
  %115 = icmp eq i32 %105, 8
  %116 = icmp eq i32 %103, 16
  %117 = and i1 %.not116.not242, %116
  %brmerge123.not = and i1 %117, %115
  %118 = getelementptr inbounds i8, ptr %2, i64 24
  %119 = load i32, ptr %118, align 8
  %120 = icmp eq i32 %119, 1
  %or.cond126 = select i1 %brmerge123.not, i1 %120, i1 false
  br i1 %or.cond126, label %121, label %125

121:                                              ; preds = %114
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %9) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1214, ptr noundef nonnull align 1 dereferenceable(1) %9)
          to label %122 unwind label %123

122:                                              ; preds = %121
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #6
  br label %367

123:                                              ; preds = %121
  %124 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #6
  br label %368

125:                                              ; preds = %114
  %126 = icmp eq i32 %103, 32
  %127 = and i1 %.not116.not242, %126
  %brmerge130.not = and i1 %127, %115
  %or.cond133 = select i1 %brmerge130.not, i1 %120, i1 false
  br i1 %or.cond133, label %128, label %132

128:                                              ; preds = %125
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1215, ptr noundef nonnull align 1 dereferenceable(1) %10)
          to label %129 unwind label %130

129:                                              ; preds = %128
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #6
  br label %367

130:                                              ; preds = %128
  %131 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #6
  br label %368

132:                                              ; preds = %125
  %133 = load i32, ptr %71, align 8, !tbaa !42
  %134 = icmp eq i32 %133, 8
  %135 = load i32, ptr %73, align 8
  %136 = icmp eq i32 %135, 13
  %or.cond135 = select i1 %134, i1 %136, i1 false
  br i1 %or.cond135, label %137, label %163

137:                                              ; preds = %132
  %138 = tail call noundef zeroext i1 @_ZNK11spirv_cross12CompilerGLSL12is_legacy_esEv(ptr noundef nonnull align 8 dereferenceable(9848) %1)
  br i1 %138, label %139, label %144

139:                                              ; preds = %137
  %140 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %140, ptr noundef nonnull @.str.1216)
          to label %141 unwind label %142

141:                                              ; preds = %139
  tail call void @__cxa_throw(ptr nonnull %140, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #8
  unreachable

142:                                              ; preds = %139
  %143 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %140) #6
  br label %368

144:                                              ; preds = %137
  %145 = getelementptr inbounds i8, ptr %1, i64 7640
  %146 = load i8, ptr %145, align 8, !tbaa !44, !range !37, !noundef !38
  %147 = trunc nuw i8 %146 to i1
  %148 = getelementptr inbounds i8, ptr %1, i64 7636
  %149 = load i32, ptr %148, align 4
  %150 = icmp ugt i32 %149, 329
  %or.cond139.not = select i1 %147, i1 true, i1 %150
  br i1 %or.cond139.not, label %159, label %151

151:                                              ; preds = %144
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %12) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull @.str.1217, ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %152 unwind label %154

152:                                              ; preds = %151
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %1, ptr noundef nonnull align 8 dereferenceable(32) %11)
          to label %153 unwind label %156

153:                                              ; preds = %152
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #6
  br label %159

154:                                              ; preds = %151
  %155 = landingpad { ptr, i32 }
          cleanup
  br label %158

156:                                              ; preds = %152
  %157 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #6
  br label %158

158:                                              ; preds = %156, %154
  %.pn105 = phi { ptr, i32 } [ %157, %156 ], [ %155, %154 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #6
  br label %368

159:                                              ; preds = %144, %153
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %13) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.389, ptr noundef nonnull align 1 dereferenceable(1) %13)
          to label %160 unwind label %161

160:                                              ; preds = %159
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #6
  br label %367

161:                                              ; preds = %159
  %162 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #6
  br label %368

163:                                              ; preds = %132
  %164 = icmp eq i32 %133, 7
  %or.cond141 = select i1 %164, i1 %136, i1 false
  br i1 %or.cond141, label %165, label %191

165:                                              ; preds = %163
  %166 = tail call noundef zeroext i1 @_ZNK11spirv_cross12CompilerGLSL12is_legacy_esEv(ptr noundef nonnull align 8 dereferenceable(9848) %1)
  br i1 %166, label %167, label %172

167:                                              ; preds = %165
  %168 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %168, ptr noundef nonnull @.str.1218)
          to label %169 unwind label %170

169:                                              ; preds = %167
  tail call void @__cxa_throw(ptr nonnull %168, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #8
  unreachable

170:                                              ; preds = %167
  %171 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %168) #6
  br label %368

172:                                              ; preds = %165
  %173 = getelementptr inbounds i8, ptr %1, i64 7640
  %174 = load i8, ptr %173, align 8, !tbaa !44, !range !37, !noundef !38
  %175 = trunc nuw i8 %174 to i1
  %176 = getelementptr inbounds i8, ptr %1, i64 7636
  %177 = load i32, ptr %176, align 4
  %178 = icmp ugt i32 %177, 329
  %or.cond145.not = select i1 %175, i1 true, i1 %178
  br i1 %or.cond145.not, label %187, label %179

179:                                              ; preds = %172
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %15) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull @.str.1217, ptr noundef nonnull align 1 dereferenceable(1) %15)
          to label %180 unwind label %182

180:                                              ; preds = %179
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %1, ptr noundef nonnull align 8 dereferenceable(32) %14)
          to label %181 unwind label %184

181:                                              ; preds = %180
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #6
  br label %187

182:                                              ; preds = %179
  %183 = landingpad { ptr, i32 }
          cleanup
  br label %186

184:                                              ; preds = %180
  %185 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #6
  br label %186

186:                                              ; preds = %184, %182
  %.pn103 = phi { ptr, i32 } [ %185, %184 ], [ %183, %182 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #6
  br label %368

187:                                              ; preds = %172, %181
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %16) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.388, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %188 unwind label %189

188:                                              ; preds = %187
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #6
  br label %367

189:                                              ; preds = %187
  %190 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #6
  br label %368

191:                                              ; preds = %163
  %192 = icmp eq i32 %133, 13
  %193 = icmp eq i32 %135, 8
  %or.cond147 = select i1 %192, i1 %193, i1 false
  br i1 %or.cond147, label %194, label %220

194:                                              ; preds = %191
  %195 = tail call noundef zeroext i1 @_ZNK11spirv_cross12CompilerGLSL12is_legacy_esEv(ptr noundef nonnull align 8 dereferenceable(9848) %1)
  br i1 %195, label %196, label %201

196:                                              ; preds = %194
  %197 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %197, ptr noundef nonnull @.str.1219)
          to label %198 unwind label %199

198:                                              ; preds = %196
  tail call void @__cxa_throw(ptr nonnull %197, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #8
  unreachable

199:                                              ; preds = %196
  %200 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %197) #6
  br label %368

201:                                              ; preds = %194
  %202 = getelementptr inbounds i8, ptr %1, i64 7640
  %203 = load i8, ptr %202, align 8, !tbaa !44, !range !37, !noundef !38
  %204 = trunc nuw i8 %203 to i1
  %205 = getelementptr inbounds i8, ptr %1, i64 7636
  %206 = load i32, ptr %205, align 4
  %207 = icmp ugt i32 %206, 329
  %or.cond151.not = select i1 %204, i1 true, i1 %207
  br i1 %or.cond151.not, label %216, label %208

208:                                              ; preds = %201
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %18) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull @.str.1217, ptr noundef nonnull align 1 dereferenceable(1) %18)
          to label %209 unwind label %211

209:                                              ; preds = %208
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %1, ptr noundef nonnull align 8 dereferenceable(32) %17)
          to label %210 unwind label %213

210:                                              ; preds = %209
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #6
  br label %216

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

213:                                              ; preds = %209
  %214 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #6
  br label %215

215:                                              ; preds = %213, %211
  %.pn101 = phi { ptr, i32 } [ %214, %213 ], [ %212, %211 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #6
  br label %368

216:                                              ; preds = %201, %210
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %19) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.497, ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %217 unwind label %218

217:                                              ; preds = %216
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #6
  br label %367

218:                                              ; preds = %216
  %219 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #6
  br label %368

220:                                              ; preds = %191
  %221 = icmp eq i32 %135, 7
  %or.cond153 = select i1 %192, i1 %221, i1 false
  br i1 %or.cond153, label %222, label %248

222:                                              ; preds = %220
  %223 = tail call noundef zeroext i1 @_ZNK11spirv_cross12CompilerGLSL12is_legacy_esEv(ptr noundef nonnull align 8 dereferenceable(9848) %1)
  br i1 %223, label %224, label %229

224:                                              ; preds = %222
  %225 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %225, ptr noundef nonnull @.str.1220)
          to label %226 unwind label %227

226:                                              ; preds = %224
  tail call void @__cxa_throw(ptr nonnull %225, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #8
  unreachable

227:                                              ; preds = %224
  %228 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %225) #6
  br label %368

229:                                              ; preds = %222
  %230 = getelementptr inbounds i8, ptr %1, i64 7640
  %231 = load i8, ptr %230, align 8, !tbaa !44, !range !37, !noundef !38
  %232 = trunc nuw i8 %231 to i1
  %233 = getelementptr inbounds i8, ptr %1, i64 7636
  %234 = load i32, ptr %233, align 4
  %235 = icmp ugt i32 %234, 329
  %or.cond157.not = select i1 %232, i1 true, i1 %235
  br i1 %or.cond157.not, label %244, label %236

236:                                              ; preds = %229
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %20) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %21) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef nonnull @.str.1217, ptr noundef nonnull align 1 dereferenceable(1) %21)
          to label %237 unwind label %239

237:                                              ; preds = %236
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %1, ptr noundef nonnull align 8 dereferenceable(32) %20)
          to label %238 unwind label %241

238:                                              ; preds = %237
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %21) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #6
  br label %244

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

241:                                              ; preds = %237
  %242 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #6
  br label %243

243:                                              ; preds = %241, %239
  %.pn = phi { ptr, i32 } [ %242, %241 ], [ %240, %239 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %21) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #6
  br label %368

244:                                              ; preds = %229, %238
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %22) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.414, ptr noundef nonnull align 1 dereferenceable(1) %22)
          to label %245 unwind label %246

245:                                              ; preds = %244
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %22) #6
  br label %367

246:                                              ; preds = %244
  %247 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %22) #6
  br label %368

248:                                              ; preds = %220
  %249 = icmp eq i32 %133, 9
  %250 = icmp eq i32 %135, 14
  %or.cond159 = select i1 %249, i1 %250, i1 false
  br i1 %or.cond159, label %251, label %255

251:                                              ; preds = %248
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %23) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1221, ptr noundef nonnull align 1 dereferenceable(1) %23)
          to label %252 unwind label %253

252:                                              ; preds = %251
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %23) #6
  br label %367

253:                                              ; preds = %251
  %254 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %23) #6
  br label %368

255:                                              ; preds = %248
  %256 = icmp eq i32 %133, 10
  %or.cond161 = select i1 %256, i1 %250, i1 false
  br i1 %or.cond161, label %257, label %261

257:                                              ; preds = %255
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %24) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1222, ptr noundef nonnull align 1 dereferenceable(1) %24)
          to label %258 unwind label %259

258:                                              ; preds = %257
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %24) #6
  br label %367

259:                                              ; preds = %257
  %260 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %24) #6
  br label %368

261:                                              ; preds = %255
  %262 = icmp eq i32 %133, 14
  %263 = icmp eq i32 %135, 9
  %or.cond163 = select i1 %262, i1 %263, i1 false
  br i1 %or.cond163, label %264, label %268

264:                                              ; preds = %261
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %25) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1223, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %265 unwind label %266

265:                                              ; preds = %264
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #6
  br label %367

266:                                              ; preds = %264
  %267 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #6
  br label %368

268:                                              ; preds = %261
  %269 = icmp eq i32 %135, 10
  %or.cond165 = select i1 %262, i1 %269, i1 false
  br i1 %or.cond165, label %270, label %274

270:                                              ; preds = %268
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %26) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1224, ptr noundef nonnull align 1 dereferenceable(1) %26)
          to label %271 unwind label %272

271:                                              ; preds = %270
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %26) #6
  br label %367

272:                                              ; preds = %270
  %273 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %26) #6
  br label %368

274:                                              ; preds = %268
  %275 = icmp eq i32 %133, 5
  %276 = icmp eq i32 %135, 12
  %or.cond167 = select i1 %275, i1 %276, i1 false
  br i1 %or.cond167, label %277, label %281

277:                                              ; preds = %274
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %27) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.386, ptr noundef nonnull align 1 dereferenceable(1) %27)
          to label %278 unwind label %279

278:                                              ; preds = %277
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #6
  br label %367

279:                                              ; preds = %277
  %280 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #6
  br label %368

281:                                              ; preds = %274
  %282 = icmp eq i32 %133, 6
  %or.cond169 = select i1 %282, i1 %276, i1 false
  br i1 %or.cond169, label %283, label %287

283:                                              ; preds = %281
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %28) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.387, ptr noundef nonnull align 1 dereferenceable(1) %28)
          to label %284 unwind label %285

284:                                              ; preds = %283
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #6
  br label %367

285:                                              ; preds = %283
  %286 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #6
  br label %368

287:                                              ; preds = %281
  %288 = icmp eq i32 %133, 12
  %289 = icmp eq i32 %135, 5
  %or.cond171 = select i1 %288, i1 %289, i1 false
  br i1 %or.cond171, label %290, label %294

290:                                              ; preds = %287
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %29) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.413, ptr noundef nonnull align 1 dereferenceable(1) %29)
          to label %291 unwind label %292

291:                                              ; preds = %290
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %29) #6
  br label %367

292:                                              ; preds = %290
  %293 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %29) #6
  br label %368

294:                                              ; preds = %287
  %295 = icmp eq i32 %135, 6
  %or.cond173 = select i1 %288, i1 %295, i1 false
  br i1 %or.cond173, label %296, label %300

296:                                              ; preds = %294
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %30) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.496, ptr noundef nonnull align 1 dereferenceable(1) %30)
          to label %297 unwind label %298

297:                                              ; preds = %296
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %30) #6
  br label %367

298:                                              ; preds = %296
  %299 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %30) #6
  br label %368

300:                                              ; preds = %294
  %or.cond175 = select i1 %256, i1 %193, i1 false
  %301 = icmp eq i32 %108, 2
  %or.cond178 = select i1 %or.cond175, i1 %301, i1 false
  br i1 %or.cond178, label %302, label %306

302:                                              ; preds = %300
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %31) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1225, ptr noundef nonnull align 1 dereferenceable(1) %31)
          to label %303 unwind label %304

303:                                              ; preds = %302
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %31) #6
  br label %367

304:                                              ; preds = %302
  %305 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %31) #6
  br label %368

306:                                              ; preds = %300
  %or.cond180 = select i1 %134, i1 %269, i1 false
  %307 = icmp eq i32 %119, 2
  %or.cond183 = select i1 %or.cond180, i1 %307, i1 false
  br i1 %or.cond183, label %308, label %312

308:                                              ; preds = %306
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %32) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1226, ptr noundef nonnull align 1 dereferenceable(1) %32)
          to label %309 unwind label %310

309:                                              ; preds = %308
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %32) #6
  br label %367

310:                                              ; preds = %308
  %311 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %32) #6
  br label %368

312:                                              ; preds = %306
  %or.cond185 = select i1 %288, i1 %193, i1 false
  %or.cond188 = select i1 %or.cond185, i1 %109, i1 false
  br i1 %or.cond188, label %313, label %317

313:                                              ; preds = %312
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %33) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1227, ptr noundef nonnull align 1 dereferenceable(1) %33)
          to label %314 unwind label %315

314:                                              ; preds = %313
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %33) #6
  br label %367

315:                                              ; preds = %313
  %316 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %33) #6
  br label %368

317:                                              ; preds = %312
  %or.cond190 = select i1 %134, i1 %276, i1 false
  %or.cond193 = select i1 %or.cond190, i1 %301, i1 false
  br i1 %or.cond193, label %318, label %322

318:                                              ; preds = %317
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %34) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1228, ptr noundef nonnull align 1 dereferenceable(1) %34)
          to label %319 unwind label %320

319:                                              ; preds = %318
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %34) #6
  br label %367

320:                                              ; preds = %318
  %321 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %34) #6
  br label %368

322:                                              ; preds = %317
  %or.cond195 = select i1 %164, i1 %289, i1 false
  %or.cond198 = select i1 %or.cond195, i1 %301, i1 false
  br i1 %or.cond198, label %323, label %327

323:                                              ; preds = %322
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %35) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.450, ptr noundef nonnull align 1 dereferenceable(1) %35)
          to label %324 unwind label %325

324:                                              ; preds = %323
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %35) #6
  br label %367

325:                                              ; preds = %323
  %326 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %35) #6
  br label %368

327:                                              ; preds = %322
  %or.cond200 = select i1 %275, i1 %221, i1 false
  %or.cond203 = select i1 %or.cond200, i1 %109, i1 false
  br i1 %or.cond203, label %328, label %332

328:                                              ; preds = %327
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %36) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.501, ptr noundef nonnull align 1 dereferenceable(1) %36)
          to label %329 unwind label %330

329:                                              ; preds = %328
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %36) #6
  br label %367

330:                                              ; preds = %328
  %331 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %36) #6
  br label %368

332:                                              ; preds = %327
  %or.cond205 = select i1 %134, i1 %295, i1 false
  %or.cond208 = select i1 %or.cond205, i1 %301, i1 false
  br i1 %or.cond208, label %333, label %337

333:                                              ; preds = %332
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %37) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.454, ptr noundef nonnull align 1 dereferenceable(1) %37)
          to label %334 unwind label %335

334:                                              ; preds = %333
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %37) #6
  br label %367

335:                                              ; preds = %333
  %336 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %37) #6
  br label %368

337:                                              ; preds = %332
  %or.cond210 = select i1 %282, i1 %193, i1 false
  %or.cond213 = select i1 %or.cond210, i1 %109, i1 false
  br i1 %or.cond213, label %338, label %342

338:                                              ; preds = %337
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %38) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.505, ptr noundef nonnull align 1 dereferenceable(1) %38)
          to label %339 unwind label %340

339:                                              ; preds = %338
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %38) #6
  br label %367

340:                                              ; preds = %338
  %341 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %38) #6
  br label %368

342:                                              ; preds = %337
  %or.cond215 = select i1 %249, i1 %289, i1 false
  %343 = icmp eq i32 %108, 4
  %or.cond218 = select i1 %or.cond215, i1 %343, i1 false
  br i1 %or.cond218, label %344, label %348

344:                                              ; preds = %342
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %39) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.451, ptr noundef nonnull align 1 dereferenceable(1) %39)
          to label %345 unwind label %346

345:                                              ; preds = %344
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %39) #6
  br label %367

346:                                              ; preds = %344
  %347 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %39) #6
  br label %368

348:                                              ; preds = %342
  %or.cond220 = select i1 %275, i1 %263, i1 false
  %or.cond223 = select i1 %or.cond220, i1 %109, i1 false
  br i1 %or.cond223, label %349, label %353

349:                                              ; preds = %348
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %40) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.502, ptr noundef nonnull align 1 dereferenceable(1) %40)
          to label %350 unwind label %351

350:                                              ; preds = %349
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %40) #6
  br label %367

351:                                              ; preds = %349
  %352 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %40) #6
  br label %368

353:                                              ; preds = %348
  %or.cond225 = select i1 %256, i1 %295, i1 false
  %or.cond228 = select i1 %or.cond225, i1 %343, i1 false
  br i1 %or.cond228, label %354, label %358

354:                                              ; preds = %353
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %41) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.455, ptr noundef nonnull align 1 dereferenceable(1) %41)
          to label %355 unwind label %356

355:                                              ; preds = %354
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %41) #6
  br label %367

356:                                              ; preds = %354
  %357 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %41) #6
  br label %368

358:                                              ; preds = %353
  %or.cond230 = select i1 %282, i1 %269, i1 false
  %or.cond233 = select i1 %or.cond230, i1 %109, i1 false
  br i1 %or.cond233, label %359, label %363

359:                                              ; preds = %358
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %42) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.506, ptr noundef nonnull align 1 dereferenceable(1) %42)
          to label %360 unwind label %361

360:                                              ; preds = %359
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %42) #6
  br label %367

361:                                              ; preds = %359
  %362 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %42) #6
  br label %368

363:                                              ; preds = %358
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %43) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %43)
          to label %364 unwind label %365

364:                                              ; preds = %363
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %43) #6
  br label %367

365:                                              ; preds = %363
  %366 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %43) #6
  br label %368

367:                                              ; preds = %96, %111, %122, %129, %160, %188, %217, %245, %252, %258, %265, %271, %278, %284, %291, %297, %303, %309, %314, %319, %324, %329, %334, %339, %345, %350, %355, %360, %364, %77, %66
  ret void

368:                                              ; preds = %112, %123, %130, %142, %158, %161, %170, %186, %189, %199, %215, %218, %227, %243, %246, %253, %259, %266, %272, %279, %285, %292, %298, %304, %310, %315, %320, %325, %330, %335, %340, %346, %351, %356, %361, %365, %78, %65
  %.pn109.pn = phi { ptr, i32 } [ %.pn109, %65 ], [ %79, %78 ], [ %113, %112 ], [ %124, %123 ], [ %131, %130 ], [ %143, %142 ], [ %162, %161 ], [ %.pn105, %158 ], [ %171, %170 ], [ %190, %189 ], [ %.pn103, %186 ], [ %200, %199 ], [ %219, %218 ], [ %.pn101, %215 ], [ %228, %227 ], [ %247, %246 ], [ %.pn, %243 ], [ %254, %253 ], [ %260, %259 ], [ %267, %266 ], [ %273, %272 ], [ %280, %279 ], [ %286, %285 ], [ %293, %292 ], [ %299, %298 ], [ %305, %304 ], [ %311, %310 ], [ %316, %315 ], [ %321, %320 ], [ %326, %325 ], [ %331, %330 ], [ %336, %335 ], [ %341, %340 ], [ %347, %346 ], [ %352, %351 ], [ %357, %356 ], [ %362, %361 ], [ %366, %365 ]
  resume { ptr, i32 } %.pn109.pn
}

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZN11spirv_crossL16type_is_integralERKNS_8SPIRTypeE(ptr noundef nonnull align 8 dereferenceable(336)) local_unnamed_addr #5

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


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