; 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.anon.292 = type { ptr }
%"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 }
%"class.__gnu_cxx::__normal_iterator.296" = type { ptr }
%"class.spirv_cross::Compiler" = type { ptr, %"class.spirv_cross::ParsedIR", %"class.spirv_cross::SmallVector.92", %"class.spirv_cross::SmallVector.92", ptr, ptr, i32, %"class.std::unordered_set.95", i8, %"class.std::unordered_set", i8, i8, %"class.spirv_cross::SmallVector.114", %"class.spirv_cross::SmallVector.92", %"class.std::function", %"class.std::unordered_set", %"class.std::unordered_set", %"class.std::unordered_set", %"class.std::unordered_set", %"class.std::unordered_set", %"class.spirv_cross::Bitset", %"class.spirv_cross::Bitset", i32, i32, i8, %"class.std::unordered_set", i8, i8, i32, %"class.std::unordered_map.117", %"class.spirv_cross::SmallVector.92", %"class.std::unordered_map.131", %"class.std::unordered_set", i8, %"class.std::unordered_map.145" }
%"class.spirv_cross::ParsedIR" = type { %"class.std::unique_ptr", %"class.std::vector", %"class.spirv_cross::SmallVector", %"class.std::unordered_map", [14 x %"class.spirv_cross::SmallVector.7"], %"class.spirv_cross::SmallVector.7", %"class.spirv_cross::SmallVector.7", %"class.std::unordered_map.10", %"class.spirv_cross::SmallVector.24", %"class.spirv_cross::SmallVector.27", %"class.spirv_cross::SmallVector.30", %"class.std::unordered_map.33", %"class.std::unordered_map.52", %"class.spirv_cross::TypedID", %"struct.spirv_cross::ParsedIR::Source", i32, i32, i32, i32, %"class.std::__cxx11::basic_string", %"class.spirv_cross::Bitset", %"class.std::unordered_set" }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.1" }
%"struct.std::_Head_base.1" = type { ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.spirv_cross::SmallVector" = type { %"class.spirv_cross::VectorView", i64, %"class.spirv_cross::AlignedBuffer" }
%"class.spirv_cross::VectorView" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer" = type { [192 x i8] }
%"class.std::unordered_map" = type { %"class.std::_Hashtable" }
%"class.std::_Hashtable" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"class.spirv_cross::SmallVector.7" = type { %"class.spirv_cross::VectorView.8", i64, %"class.spirv_cross::AlignedBuffer.9" }
%"class.spirv_cross::VectorView.8" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.9" = type { [32 x i8] }
%"class.std::unordered_map.10" = type { %"class.std::_Hashtable.11" }
%"class.std::_Hashtable.11" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.spirv_cross::SmallVector.24" = type { %"class.spirv_cross::VectorView.25", i64, %"class.spirv_cross::AlignedBuffer.26" }
%"class.spirv_cross::VectorView.25" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.26" = type { [32 x i8] }
%"class.spirv_cross::SmallVector.27" = type { %"class.spirv_cross::VectorView.28", i64, %"class.spirv_cross::AlignedBuffer.29" }
%"class.spirv_cross::VectorView.28" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.29" = type { [256 x i8] }
%"class.spirv_cross::SmallVector.30" = type { %"class.spirv_cross::VectorView.31", i64, %"class.spirv_cross::AlignedBuffer.32" }
%"class.spirv_cross::VectorView.31" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.32" = type { [8 x i8] }
%"class.std::unordered_map.33" = type { %"class.std::_Hashtable.34" }
%"class.std::_Hashtable.34" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.52" = type { %"class.std::_Hashtable.53" }
%"class.std::_Hashtable.53" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.spirv_cross::TypedID" = type { i32 }
%"struct.spirv_cross::ParsedIR::Source" = type <{ i32, i8, i8, i8, i8 }>
%"class.std::unordered_set.95" = type { %"class.std::_Hashtable.96" }
%"class.std::_Hashtable.96" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.spirv_cross::SmallVector.114" = type { %"class.spirv_cross::VectorView.115", i64, %"class.spirv_cross::AlignedBuffer.116" }
%"class.spirv_cross::VectorView.115" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.116" = type { [96 x i8] }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%"class.spirv_cross::Bitset" = type { i64, %"class.std::unordered_set" }
%"class.std::unordered_map.117" = type { %"class.std::_Hashtable.118" }
%"class.std::_Hashtable.118" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.spirv_cross::SmallVector.92" = type { %"class.spirv_cross::VectorView.93", i64, %"class.spirv_cross::AlignedBuffer.94" }
%"class.spirv_cross::VectorView.93" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.94" = type { [32 x i8] }
%"class.std::unordered_map.131" = type { %"class.std::_Hashtable.132" }
%"class.std::_Hashtable.132" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.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.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::SPIREntryPoint" = type <{ %"class.spirv_cross::TypedID", [4 x i8], %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.spirv_cross::SmallVector.293", %"class.spirv_cross::Bitset", %"struct.spirv_cross::SPIREntryPoint::WorkgroupSize", i32, i32, i32, i32, i8, [3 x i8] }>
%"class.spirv_cross::SmallVector.293" = type { %"class.spirv_cross::VectorView.294", i64, %"class.spirv_cross::AlignedBuffer.295" }
%"class.spirv_cross::VectorView.294" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.295" = type { [32 x i8] }
%"struct.spirv_cross::SPIREntryPoint::WorkgroupSize" = type { i32, i32, i32, i32, i32, i32, i32 }
%"class.spirv_cross::CompilerGLSL" = type { %"class.spirv_cross::Compiler", ptr, %"class.spirv_cross::SmallVector.159", i8, %"class.spirv_cross::StringStream", ptr, ptr, i8, i8, %"struct.spirv_cross::CompilerGLSL::Options", %"class.std::unordered_set.165", %"class.std::unordered_set.165", %"class.std::unordered_set.165", %"class.std::unordered_set.165", %"class.std::unordered_set.165", %"class.std::unordered_set.165", %"class.std::unordered_set.165", %"class.std::unordered_map.185", %"class.std::unordered_map.145", i8, [7 x i8], %"struct.spirv_cross::CompilerGLSL::BackendVariations", i32, %"class.std::unordered_set", %"class.std::unordered_set", %"class.std::unordered_set", %"class.std::unordered_map.199", %"struct.spirv_cross::CompilerGLSL::ShaderSubgroupSupportHelper", %"class.std::unordered_map.213", %"class.spirv_cross::SmallVector.27", %"class.spirv_cross::SmallVector.27", %"class.std::unordered_map.213", %"class.spirv_cross::SmallVector.227", i32, i32, i32, i8, i8, %"class.std::vector.230", %"class.std::vector.230", %"class.std::vector.235", %"class.std::vector.240", %"class.std::unordered_map.213", %"class.std::unordered_set", %"class.std::unordered_set", i8, %"class.std::unordered_set.245", %"class.std::unordered_set", ptr, %"class.std::unordered_map.263" }
%"class.spirv_cross::SmallVector.159" = type { %"class.spirv_cross::VectorView.160", i64, %"class.spirv_cross::AlignedBuffer.161" }
%"class.spirv_cross::VectorView.160" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.161" = type { [64 x i8] }
%"class.spirv_cross::StringStream" = type { %"struct.spirv_cross::StringStream<>::Buffer", [4096 x i8], %"class.spirv_cross::SmallVector.162" }
%"struct.spirv_cross::StringStream<>::Buffer" = type { ptr, i64, i64 }
%"class.spirv_cross::SmallVector.162" = type { %"class.spirv_cross::VectorView.163", i64, %"class.spirv_cross::AlignedBuffer.164" }
%"class.spirv_cross::VectorView.163" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.164" = type { [192 x i8] }
%"struct.spirv_cross::CompilerGLSL::Options" = type { i32, i8, i8, i32, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i32, %"struct.spirv_cross::CompilerGLSL::Options::VertexOptions", %"struct.spirv_cross::CompilerGLSL::Options::FragmentOptions" }
%"struct.spirv_cross::CompilerGLSL::Options::VertexOptions" = type { i8, i8, i8 }
%"struct.spirv_cross::CompilerGLSL::Options::FragmentOptions" = type { i32, i32 }
%"class.std::unordered_set.165" = type { %"class.std::_Hashtable.166" }
%"class.std::_Hashtable.166" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.185" = type { %"class.std::_Hashtable.186" }
%"class.std::_Hashtable.186" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"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.227" = type { %"class.spirv_cross::VectorView.228", i64, %"class.spirv_cross::AlignedBuffer.229" }
%"class.spirv_cross::VectorView.228" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.229" = type { [32 x i8] }
%"class.std::vector.230" = type { %"struct.std::_Vector_base.231" }
%"struct.std::_Vector_base.231" = type { %"struct.std::_Vector_base<spirv_cross::PlsRemap, std::allocator<spirv_cross::PlsRemap>>::_Vector_impl" }
%"struct.std::_Vector_base<spirv_cross::PlsRemap, std::allocator<spirv_cross::PlsRemap>>::_Vector_impl" = type { %"struct.std::_Vector_base<spirv_cross::PlsRemap, std::allocator<spirv_cross::PlsRemap>>::_Vector_impl_data" }
%"struct.std::_Vector_base<spirv_cross::PlsRemap, std::allocator<spirv_cross::PlsRemap>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.235" = type { %"struct.std::_Vector_base.236" }
%"struct.std::_Vector_base.236" = type { %"struct.std::_Vector_base<std::pair<unsigned int, unsigned int>, std::allocator<std::pair<unsigned int, unsigned int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<unsigned int, unsigned int>, std::allocator<std::pair<unsigned int, unsigned int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<unsigned int, unsigned int>, std::allocator<std::pair<unsigned int, unsigned int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<unsigned int, unsigned int>, std::allocator<std::pair<unsigned int, unsigned int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.240" = type { %"struct.std::_Vector_base.241" }
%"struct.std::_Vector_base.241" = type { %"struct.std::_Vector_base<std::pair<unsigned int, bool>, std::allocator<std::pair<unsigned int, bool>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<unsigned int, bool>, std::allocator<std::pair<unsigned int, bool>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<unsigned int, bool>, std::allocator<std::pair<unsigned int, bool>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<unsigned int, bool>, std::allocator<std::pair<unsigned int, bool>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::unordered_map.213" = type { %"class.std::_Hashtable.214" }
%"class.std::_Hashtable.214" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_set.245" = type { %"class.std::_Hashtable.246" }
%"class.std::_Hashtable.246" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.263" = type { %"class.std::_Hashtable.264" }
%"class.std::_Hashtable.264" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::pair.287" = type <{ i32, i8, [3 x i8] }>

@_ZTIN11spirv_cross13CompilerErrorE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.17 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [35 x i8], align 1

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

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

declare ptr @__cxa_allocate_exception(i64)

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

declare i32 @__gxx_personality_v0(...)

declare void @__cxa_free_exception(ptr)

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

declare void @__cxa_throw(ptr, ptr, ptr)

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11spirv_cross12CompilerGLSL22find_static_extensionsEv(ptr noundef nonnull align 8 dereferenceable(9848) %0) #1 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca %class.anon.292, align 8
  %4 = alloca ptr, align 8
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca %"class.std::allocator.71", align 1
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %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::__cxx11::basic_string", align 8
  %14 = alloca %"class.std::allocator.71", align 1
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %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 ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca i32, align 4
  %23 = alloca ptr, align 8
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %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::__cxx11::basic_string", align 8
  %29 = alloca %"class.std::allocator.71", align 1
  %30 = alloca %"class.std::__cxx11::basic_string", align 8
  %31 = alloca %"class.std::allocator.71", align 1
  %32 = alloca i8, align 1
  %33 = alloca i8, align 1
  %34 = alloca ptr, align 8
  %35 = alloca %"class.__gnu_cxx::__normal_iterator.296", align 8
  %36 = alloca %"class.__gnu_cxx::__normal_iterator.296", align 8
  %37 = alloca ptr, align 8
  %38 = alloca %"class.std::__cxx11::basic_string", align 8
  %39 = alloca %"class.std::allocator.71", align 1
  %40 = alloca %"class.std::__cxx11::basic_string", align 8
  %41 = alloca %"class.std::allocator.71", align 1
  %42 = alloca %"class.std::__cxx11::basic_string", align 8
  %43 = alloca %"class.std::allocator.71", align 1
  %44 = alloca %"class.std::__cxx11::basic_string", align 8
  %45 = alloca %"class.std::allocator.71", align 1
  %46 = alloca ptr, align 8
  %47 = alloca ptr, align 8
  %48 = alloca ptr, align 8
  %49 = alloca ptr, align 8
  %50 = alloca %"class.std::__cxx11::basic_string", align 8
  %51 = alloca %"class.std::allocator.71", align 1
  %52 = alloca %"class.std::__cxx11::basic_string", align 8
  %53 = alloca %"class.std::allocator.71", align 1
  %54 = alloca %"class.std::__cxx11::basic_string", align 8
  %55 = alloca %"class.std::allocator.71", align 1
  %56 = alloca %"class.std::__cxx11::basic_string", align 8
  %57 = alloca %"class.std::allocator.71", align 1
  %58 = alloca %"class.std::__cxx11::basic_string", align 8
  %59 = alloca %"class.std::allocator.71", align 1
  %60 = alloca %"class.std::__cxx11::basic_string", align 8
  %61 = alloca %"class.std::allocator.71", align 1
  %62 = alloca %"class.std::__cxx11::basic_string", align 8
  %63 = alloca %"class.std::allocator.71", align 1
  %64 = alloca %"class.std::__cxx11::basic_string", align 8
  %65 = alloca %"class.std::allocator.71", align 1
  %66 = alloca %"class.std::__cxx11::basic_string", align 8
  %67 = alloca %"class.std::allocator.71", align 1
  %68 = alloca ptr, align 8
  %69 = alloca ptr, align 8
  %70 = alloca ptr, align 8
  %71 = alloca ptr, align 8
  store ptr %0, ptr %2, align 8, !tbaa !5
  %72 = load ptr, ptr %2, align 8
  %73 = getelementptr inbounds %"class.spirv_cross::Compiler", ptr %72, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 8, ptr %3) #7
  %74 = getelementptr inbounds %class.anon.292, ptr %3, i32 0, i32 0
  store ptr %72, ptr %74, align 8, !tbaa !9
  call void @"_ZN11spirv_cross8ParsedIR17for_each_typed_idINS_8SPIRTypeEZNS_12CompilerGLSL22find_static_extensionsEvE3$_0EEvRKT0_"(ptr noundef nonnull align 8 dereferenceable(1920) %73, ptr noundef nonnull align 8 dereferenceable(8) %3)
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #7
  %75 = call noundef nonnull align 8 dereferenceable(237) ptr @_ZN11spirv_cross8Compiler15get_entry_pointEv(ptr noundef nonnull align 8 dereferenceable(3176) %72)
  store ptr %75, ptr %4, align 8, !tbaa !5
  %76 = load ptr, ptr %4, align 8, !tbaa !5
  %77 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %76, i32 0, i32 10
  %78 = load i32, ptr %77, align 8, !tbaa !11
  switch i32 %78, label %375 [
    i32 5, label %79
    i32 3, label %119
    i32 2, label %196
    i32 1, label %196
    i32 5313, label %241
    i32 5314, label %241
    i32 5315, label %241
    i32 5316, label %241
    i32 5317, label %241
    i32 5318, label %241
    i32 5365, label %334
    i32 5364, label %334
  ]

79:                                               ; preds = %1
  %80 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %72, i32 0, i32 9
  %81 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %80, i32 0, i32 1
  %82 = load i8, ptr %81, align 4, !tbaa !30, !range !128, !noundef !129
  %83 = trunc i8 %82 to i1
  br i1 %83, label %101, label %84

84:                                               ; preds = %79
  %85 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %72, i32 0, i32 9
  %86 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %85, i32 0, i32 0
  %87 = load i32, ptr %86, align 4, !tbaa !130
  %88 = icmp ult i32 %87, 430
  br i1 %88, label %89, label %101

89:                                               ; preds = %84
  call void @llvm.lifetime.start.p0(i64 32, ptr %5) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %6) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef @.str.17, ptr noundef nonnull align 1 dereferenceable(1) %6)
          to label %90 unwind label %92

90:                                               ; preds = %89
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %72, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %91 unwind label %96

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

92:                                               ; preds = %89
  %93 = landingpad { ptr, i32 }
          cleanup
  %94 = extractvalue { ptr, i32 } %93, 0
  store ptr %94, ptr %7, align 8
  %95 = extractvalue { ptr, i32 } %93, 1
  store i32 %95, ptr %8, align 4
  br label %100

96:                                               ; preds = %90
  %97 = landingpad { ptr, i32 }
          cleanup
  %98 = extractvalue { ptr, i32 } %97, 0
  store ptr %98, ptr %7, align 8
  %99 = extractvalue { ptr, i32 } %97, 1
  store i32 %99, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #7
  br label %100

100:                                              ; preds = %96, %92
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %6) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %5) #7
  br label %878

101:                                              ; preds = %91, %84, %79
  %102 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %72, i32 0, i32 9
  %103 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %102, i32 0, i32 1
  %104 = load i8, ptr %103, align 4, !tbaa !30, !range !128, !noundef !129
  %105 = trunc i8 %104 to i1
  br i1 %105, label %106, label %118

106:                                              ; preds = %101
  %107 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %72, i32 0, i32 9
  %108 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %107, i32 0, i32 0
  %109 = load i32, ptr %108, align 4, !tbaa !130
  %110 = icmp ult i32 %109, 310
  br i1 %110, label %111, label %118

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

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

114:                                              ; preds = %111
  %115 = landingpad { ptr, i32 }
          cleanup
  %116 = extractvalue { ptr, i32 } %115, 0
  store ptr %116, ptr %7, align 8
  %117 = extractvalue { ptr, i32 } %115, 1
  store i32 %117, ptr %8, align 4
  call void @__cxa_free_exception(ptr %112) #7
  br label %878

118:                                              ; preds = %106, %101
  br label %376

119:                                              ; preds = %1
  %120 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %72, i32 0, i32 9
  %121 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %120, i32 0, i32 1
  %122 = load i8, ptr %121, align 4, !tbaa !30, !range !128, !noundef !129
  %123 = trunc i8 %122 to i1
  br i1 %123, label %124, label %141

124:                                              ; preds = %119
  %125 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %72, i32 0, i32 9
  %126 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %125, i32 0, i32 0
  %127 = load i32, ptr %126, align 4, !tbaa !130
  %128 = icmp ult i32 %127, 320
  br i1 %128, label %129, label %141

129:                                              ; preds = %124
  call void @llvm.lifetime.start.p0(i64 32, ptr %9) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %10) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef @.str.19, ptr noundef nonnull align 1 dereferenceable(1) %10)
          to label %130 unwind label %132

130:                                              ; preds = %129
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %72, ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %131 unwind label %136

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

132:                                              ; preds = %129
  %133 = landingpad { ptr, i32 }
          cleanup
  %134 = extractvalue { ptr, i32 } %133, 0
  store ptr %134, ptr %7, align 8
  %135 = extractvalue { ptr, i32 } %133, 1
  store i32 %135, ptr %8, align 4
  br label %140

136:                                              ; preds = %130
  %137 = landingpad { ptr, i32 }
          cleanup
  %138 = extractvalue { ptr, i32 } %137, 0
  store ptr %138, ptr %7, align 8
  %139 = extractvalue { ptr, i32 } %137, 1
  store i32 %139, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #7
  br label %140

140:                                              ; preds = %136, %132
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %9) #7
  br label %878

141:                                              ; preds = %131, %124, %119
  %142 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %72, i32 0, i32 9
  %143 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %142, i32 0, i32 1
  %144 = load i8, ptr %143, align 4, !tbaa !30, !range !128, !noundef !129
  %145 = trunc i8 %144 to i1
  br i1 %145, label %163, label %146

146:                                              ; preds = %141
  %147 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %72, i32 0, i32 9
  %148 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %147, i32 0, i32 0
  %149 = load i32, ptr %148, align 4, !tbaa !130
  %150 = icmp ult i32 %149, 150
  br i1 %150, label %151, label %163

151:                                              ; preds = %146
  call void @llvm.lifetime.start.p0(i64 32, ptr %11) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %12) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef @.str.20, 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) %72, ptr noundef nonnull align 8 dereferenceable(32) %11)
          to label %153 unwind label %158

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

154:                                              ; preds = %151
  %155 = landingpad { ptr, i32 }
          cleanup
  %156 = extractvalue { ptr, i32 } %155, 0
  store ptr %156, ptr %7, align 8
  %157 = extractvalue { ptr, i32 } %155, 1
  store i32 %157, ptr %8, align 4
  br label %162

158:                                              ; preds = %152
  %159 = landingpad { ptr, i32 }
          cleanup
  %160 = extractvalue { ptr, i32 } %159, 0
  store ptr %160, ptr %7, align 8
  %161 = extractvalue { ptr, i32 } %159, 1
  store i32 %161, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #7
  br label %162

162:                                              ; preds = %158, %154
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %11) #7
  br label %878

163:                                              ; preds = %153, %146, %141
  %164 = load ptr, ptr %4, align 8, !tbaa !5
  %165 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %164, i32 0, i32 5
  %166 = call noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %165, i32 noundef 0)
  br i1 %166, label %167, label %195

167:                                              ; preds = %163
  %168 = load ptr, ptr %4, align 8, !tbaa !5
  %169 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %168, i32 0, i32 7
  %170 = load i32, ptr %169, align 4, !tbaa !131
  %171 = icmp ne i32 %170, 1
  br i1 %171, label %172, label %195

172:                                              ; preds = %167
  %173 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %72, i32 0, i32 9
  %174 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %173, i32 0, i32 1
  %175 = load i8, ptr %174, align 4, !tbaa !30, !range !128, !noundef !129
  %176 = trunc i8 %175 to i1
  br i1 %176, label %194, label %177

177:                                              ; preds = %172
  %178 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %72, i32 0, i32 9
  %179 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %178, i32 0, i32 0
  %180 = load i32, ptr %179, align 4, !tbaa !130
  %181 = icmp ult i32 %180, 400
  br i1 %181, label %182, label %194

182:                                              ; preds = %177
  call void @llvm.lifetime.start.p0(i64 32, ptr %13) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef @.str.21, ptr noundef nonnull align 1 dereferenceable(1) %14)
          to label %183 unwind label %185

183:                                              ; preds = %182
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %72, ptr noundef nonnull align 8 dereferenceable(32) %13)
          to label %184 unwind label %189

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

185:                                              ; preds = %182
  %186 = landingpad { ptr, i32 }
          cleanup
  %187 = extractvalue { ptr, i32 } %186, 0
  store ptr %187, ptr %7, align 8
  %188 = extractvalue { ptr, i32 } %186, 1
  store i32 %188, ptr %8, align 4
  br label %193

189:                                              ; preds = %183
  %190 = landingpad { ptr, i32 }
          cleanup
  %191 = extractvalue { ptr, i32 } %190, 0
  store ptr %191, ptr %7, align 8
  %192 = extractvalue { ptr, i32 } %190, 1
  store i32 %192, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  br label %193

193:                                              ; preds = %189, %185
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %13) #7
  br label %878

194:                                              ; preds = %184, %177, %172
  br label %195

195:                                              ; preds = %194, %167, %163
  br label %376

196:                                              ; preds = %1, %1
  %197 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %72, i32 0, i32 9
  %198 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %197, i32 0, i32 1
  %199 = load i8, ptr %198, align 4, !tbaa !30, !range !128, !noundef !129
  %200 = trunc i8 %199 to i1
  br i1 %200, label %201, label %218

201:                                              ; preds = %196
  %202 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %72, i32 0, i32 9
  %203 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %202, i32 0, i32 0
  %204 = load i32, ptr %203, align 4, !tbaa !130
  %205 = icmp ult i32 %204, 320
  br i1 %205, label %206, label %218

206:                                              ; preds = %201
  call void @llvm.lifetime.start.p0(i64 32, ptr %15) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef @.str.22, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %207 unwind label %209

207:                                              ; preds = %206
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %72, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %208 unwind label %213

208:                                              ; preds = %207
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %15) #7
  br label %218

209:                                              ; preds = %206
  %210 = landingpad { ptr, i32 }
          cleanup
  %211 = extractvalue { ptr, i32 } %210, 0
  store ptr %211, ptr %7, align 8
  %212 = extractvalue { ptr, i32 } %210, 1
  store i32 %212, ptr %8, align 4
  br label %217

213:                                              ; preds = %207
  %214 = landingpad { ptr, i32 }
          cleanup
  %215 = extractvalue { ptr, i32 } %214, 0
  store ptr %215, ptr %7, align 8
  %216 = extractvalue { ptr, i32 } %214, 1
  store i32 %216, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  br label %217

217:                                              ; preds = %213, %209
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %15) #7
  br label %878

218:                                              ; preds = %208, %201, %196
  %219 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %72, i32 0, i32 9
  %220 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %219, i32 0, i32 1
  %221 = load i8, ptr %220, align 4, !tbaa !30, !range !128, !noundef !129
  %222 = trunc i8 %221 to i1
  br i1 %222, label %240, label %223

223:                                              ; preds = %218
  %224 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %72, i32 0, i32 9
  %225 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %224, i32 0, i32 0
  %226 = load i32, ptr %225, align 4, !tbaa !130
  %227 = icmp ult i32 %226, 400
  br i1 %227, label %228, label %240

228:                                              ; preds = %223
  call void @llvm.lifetime.start.p0(i64 32, ptr %17) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %18) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef @.str.23, ptr noundef nonnull align 1 dereferenceable(1) %18)
          to label %229 unwind label %231

229:                                              ; preds = %228
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %72, ptr noundef nonnull align 8 dereferenceable(32) %17)
          to label %230 unwind label %235

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

231:                                              ; preds = %228
  %232 = landingpad { ptr, i32 }
          cleanup
  %233 = extractvalue { ptr, i32 } %232, 0
  store ptr %233, ptr %7, align 8
  %234 = extractvalue { ptr, i32 } %232, 1
  store i32 %234, ptr %8, align 4
  br label %239

235:                                              ; preds = %229
  %236 = landingpad { ptr, i32 }
          cleanup
  %237 = extractvalue { ptr, i32 } %236, 0
  store ptr %237, ptr %7, align 8
  %238 = extractvalue { ptr, i32 } %236, 1
  store i32 %238, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #7
  br label %239

239:                                              ; preds = %235, %231
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #7
  br label %878

240:                                              ; preds = %230, %223, %218
  br label %376

241:                                              ; preds = %1, %1, %1, %1, %1, %1
  %242 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %72, i32 0, i32 9
  %243 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %242, i32 0, i32 1
  %244 = load i8, ptr %243, align 4, !tbaa !30, !range !128, !noundef !129
  %245 = trunc i8 %244 to i1
  br i1 %245, label %251, label %246

246:                                              ; preds = %241
  %247 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %72, i32 0, i32 9
  %248 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %247, i32 0, i32 0
  %249 = load i32, ptr %248, align 4, !tbaa !130
  %250 = icmp ult i32 %249, 460
  br i1 %250, label %251, label %258

251:                                              ; preds = %246, %241
  %252 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %252, ptr noundef @.str.24)
          to label %253 unwind label %254

253:                                              ; preds = %251
  call void @__cxa_throw(ptr %252, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #8
  unreachable

254:                                              ; preds = %251
  %255 = landingpad { ptr, i32 }
          cleanup
  %256 = extractvalue { ptr, i32 } %255, 0
  store ptr %256, ptr %7, align 8
  %257 = extractvalue { ptr, i32 } %255, 1
  store i32 %257, ptr %8, align 4
  call void @__cxa_free_exception(ptr %252) #7
  br label %878

258:                                              ; preds = %246
  %259 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %72, i32 0, i32 9
  %260 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %259, i32 0, i32 4
  %261 = load i8, ptr %260, align 4, !tbaa !132, !range !128, !noundef !129
  %262 = trunc i8 %261 to i1
  br i1 %262, label %270, label %263

263:                                              ; preds = %258
  %264 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %264, ptr noundef @.str.25)
          to label %265 unwind label %266

265:                                              ; preds = %263
  call void @__cxa_throw(ptr %264, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #8
  unreachable

266:                                              ; preds = %263
  %267 = landingpad { ptr, i32 }
          cleanup
  %268 = extractvalue { ptr, i32 } %267, 0
  store ptr %268, ptr %7, align 8
  %269 = extractvalue { ptr, i32 } %267, 1
  store i32 %269, ptr %8, align 4
  call void @__cxa_free_exception(ptr %264) #7
  br label %878

270:                                              ; preds = %258
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #7
  %271 = getelementptr inbounds %"class.spirv_cross::Compiler", ptr %72, i32 0, i32 1
  %272 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %271, i32 0, i32 8
  store ptr %272, ptr %19, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #7
  %273 = load ptr, ptr %19, align 8, !tbaa !5
  %274 = call noundef ptr @_ZN11spirv_cross10VectorViewIN3spv10CapabilityEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %273) #7
  store ptr %274, ptr %20, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #7
  %275 = load ptr, ptr %19, align 8, !tbaa !5
  %276 = call noundef ptr @_ZN11spirv_cross10VectorViewIN3spv10CapabilityEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %275) #7
  store ptr %276, ptr %21, align 8, !tbaa !5
  br label %277

277:                                              ; preds = %301, %270
  %278 = load ptr, ptr %20, align 8, !tbaa !5
  %279 = load ptr, ptr %21, align 8, !tbaa !5
  %280 = icmp ne ptr %278, %279
  br i1 %280, label %282, label %281

281:                                              ; preds = %277
  store i32 3, ptr %22, align 4
  br label %304

282:                                              ; preds = %277
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #7
  %283 = load ptr, ptr %20, align 8, !tbaa !5
  store ptr %283, ptr %23, align 8, !tbaa !5
  %284 = load ptr, ptr %23, align 8, !tbaa !5
  %285 = load i32, ptr %284, align 4, !tbaa !133
  %286 = icmp eq i32 %285, 4479
  br i1 %286, label %295, label %287

287:                                              ; preds = %282
  %288 = load ptr, ptr %23, align 8, !tbaa !5
  %289 = load i32, ptr %288, align 4, !tbaa !133
  %290 = icmp eq i32 %289, 4472
  br i1 %290, label %295, label %291

291:                                              ; preds = %287
  %292 = load ptr, ptr %23, align 8, !tbaa !5
  %293 = load i32, ptr %292, align 4, !tbaa !133
  %294 = icmp eq i32 %293, 4478
  br i1 %294, label %295, label %297

295:                                              ; preds = %291, %287, %282
  %296 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %72, i32 0, i32 36
  store i8 1, ptr %296, align 4, !tbaa !135
  store i32 3, ptr %22, align 4
  br label %298

297:                                              ; preds = %291
  store i32 0, ptr %22, align 4
  br label %298

298:                                              ; preds = %297, %295
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  %299 = load i32, ptr %22, align 4
  switch i32 %299, label %304 [
    i32 0, label %300
  ]

300:                                              ; preds = %298
  br label %301

301:                                              ; preds = %300
  %302 = load ptr, ptr %20, align 8, !tbaa !5
  %303 = getelementptr inbounds i32, ptr %302, i32 1
  store ptr %303, ptr %20, align 8, !tbaa !5
  br label %277

304:                                              ; preds = %298, %281
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #7
  br label %305

305:                                              ; preds = %304
  %306 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %72, i32 0, i32 36
  %307 = load i8, ptr %306, align 4, !tbaa !135, !range !128, !noundef !129
  %308 = trunc i8 %307 to i1
  br i1 %308, label %309, label %321

309:                                              ; preds = %305
  call void @_ZN11spirv_cross12CompilerGLSL31ray_tracing_khr_fixup_locationsEv(ptr noundef nonnull align 8 dereferenceable(9848) %72)
  call void @llvm.lifetime.start.p0(i64 32, ptr %24) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef @.str.26, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %310 unwind label %312

310:                                              ; preds = %309
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %72, ptr noundef nonnull align 8 dereferenceable(32) %24)
          to label %311 unwind label %316

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

312:                                              ; preds = %309
  %313 = landingpad { ptr, i32 }
          cleanup
  %314 = extractvalue { ptr, i32 } %313, 0
  store ptr %314, ptr %7, align 8
  %315 = extractvalue { ptr, i32 } %313, 1
  store i32 %315, ptr %8, align 4
  br label %320

316:                                              ; preds = %310
  %317 = landingpad { ptr, i32 }
          cleanup
  %318 = extractvalue { ptr, i32 } %317, 0
  store ptr %318, ptr %7, align 8
  %319 = extractvalue { ptr, i32 } %317, 1
  store i32 %319, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #7
  br label %320

320:                                              ; preds = %316, %312
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #7
  br label %878

321:                                              ; preds = %305
  call void @llvm.lifetime.start.p0(i64 32, ptr %26) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef @.str.27, ptr noundef nonnull align 1 dereferenceable(1) %27)
          to label %322 unwind label %324

322:                                              ; preds = %321
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %72, ptr noundef nonnull align 8 dereferenceable(32) %26)
          to label %323 unwind label %328

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

324:                                              ; preds = %321
  %325 = landingpad { ptr, i32 }
          cleanup
  %326 = extractvalue { ptr, i32 } %325, 0
  store ptr %326, ptr %7, align 8
  %327 = extractvalue { ptr, i32 } %325, 1
  store i32 %327, ptr %8, align 4
  br label %332

328:                                              ; preds = %322
  %329 = landingpad { ptr, i32 }
          cleanup
  %330 = extractvalue { ptr, i32 } %329, 0
  store ptr %330, ptr %7, align 8
  %331 = extractvalue { ptr, i32 } %329, 1
  store i32 %331, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #7
  br label %332

332:                                              ; preds = %328, %324
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #7
  br label %878

333:                                              ; preds = %323, %311
  br label %376

334:                                              ; preds = %1, %1
  %335 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %72, i32 0, i32 9
  %336 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %335, i32 0, i32 1
  %337 = load i8, ptr %336, align 4, !tbaa !30, !range !128, !noundef !129
  %338 = trunc i8 %337 to i1
  br i1 %338, label %344, label %339

339:                                              ; preds = %334
  %340 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %72, i32 0, i32 9
  %341 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %340, i32 0, i32 0
  %342 = load i32, ptr %341, align 4, !tbaa !130
  %343 = icmp ult i32 %342, 450
  br i1 %343, label %344, label %351

344:                                              ; preds = %339, %334
  %345 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %345, ptr noundef @.str.28)
          to label %346 unwind label %347

346:                                              ; preds = %344
  call void @__cxa_throw(ptr %345, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #8
  unreachable

347:                                              ; preds = %344
  %348 = landingpad { ptr, i32 }
          cleanup
  %349 = extractvalue { ptr, i32 } %348, 0
  store ptr %349, ptr %7, align 8
  %350 = extractvalue { ptr, i32 } %348, 1
  store i32 %350, ptr %8, align 4
  call void @__cxa_free_exception(ptr %345) #7
  br label %878

351:                                              ; preds = %339
  %352 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %72, i32 0, i32 9
  %353 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %352, i32 0, i32 4
  %354 = load i8, ptr %353, align 4, !tbaa !132, !range !128, !noundef !129
  %355 = trunc i8 %354 to i1
  br i1 %355, label %363, label %356

356:                                              ; preds = %351
  %357 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %357, ptr noundef @.str.29)
          to label %358 unwind label %359

358:                                              ; preds = %356
  call void @__cxa_throw(ptr %357, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #8
  unreachable

359:                                              ; preds = %356
  %360 = landingpad { ptr, i32 }
          cleanup
  %361 = extractvalue { ptr, i32 } %360, 0
  store ptr %361, ptr %7, align 8
  %362 = extractvalue { ptr, i32 } %360, 1
  store i32 %362, ptr %8, align 4
  call void @__cxa_free_exception(ptr %357) #7
  br label %878

363:                                              ; preds = %351
  call void @llvm.lifetime.start.p0(i64 32, ptr %28) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %29) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef @.str.30, ptr noundef nonnull align 1 dereferenceable(1) %29)
          to label %364 unwind label %366

364:                                              ; preds = %363
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %72, ptr noundef nonnull align 8 dereferenceable(32) %28)
          to label %365 unwind label %370

365:                                              ; preds = %364
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #7
  br label %376

366:                                              ; preds = %363
  %367 = landingpad { ptr, i32 }
          cleanup
  %368 = extractvalue { ptr, i32 } %367, 0
  store ptr %368, ptr %7, align 8
  %369 = extractvalue { ptr, i32 } %367, 1
  store i32 %369, ptr %8, align 4
  br label %374

370:                                              ; preds = %364
  %371 = landingpad { ptr, i32 }
          cleanup
  %372 = extractvalue { ptr, i32 } %371, 0
  store ptr %372, ptr %7, align 8
  %373 = extractvalue { ptr, i32 } %371, 1
  store i32 %373, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #7
  br label %374

374:                                              ; preds = %370, %366
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #7
  br label %878

375:                                              ; preds = %1
  br label %376

376:                                              ; preds = %375, %365, %333, %240, %195, %118
  %377 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %72, i32 0, i32 38
  %378 = call noundef zeroext i1 @_ZNKSt6vectorIN11spirv_cross8PlsRemapESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %377) #7
  br i1 %378, label %379, label %382

379:                                              ; preds = %376
  %380 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %72, i32 0, i32 39
  %381 = call noundef zeroext i1 @_ZNKSt6vectorIN11spirv_cross8PlsRemapESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %380) #7
  br i1 %381, label %406, label %382

382:                                              ; preds = %379, %376
  %383 = load ptr, ptr %4, align 8, !tbaa !5
  %384 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %383, i32 0, i32 10
  %385 = load i32, ptr %384, align 8, !tbaa !11
  %386 = icmp ne i32 %385, 4
  br i1 %386, label %387, label %394

387:                                              ; preds = %382
  %388 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %388, ptr noundef @.str.31)
          to label %389 unwind label %390

389:                                              ; preds = %387
  call void @__cxa_throw(ptr %388, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #8
  unreachable

390:                                              ; preds = %387
  %391 = landingpad { ptr, i32 }
          cleanup
  %392 = extractvalue { ptr, i32 } %391, 0
  store ptr %392, ptr %7, align 8
  %393 = extractvalue { ptr, i32 } %391, 1
  store i32 %393, ptr %8, align 4
  call void @__cxa_free_exception(ptr %388) #7
  br label %878

394:                                              ; preds = %382
  call void @llvm.lifetime.start.p0(i64 32, ptr %30) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %31) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef @.str.32, ptr noundef nonnull align 1 dereferenceable(1) %31)
          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) %72, ptr noundef nonnull align 8 dereferenceable(32) %30)
          to label %396 unwind label %401

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

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

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

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

406:                                              ; preds = %396, %379
  %407 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %72, i32 0, i32 41
  %408 = call noundef zeroext i1 @_ZNKSt6vectorISt4pairIjbESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %407) #7
  br i1 %408, label %487, label %409

409:                                              ; preds = %406
  %410 = load ptr, ptr %4, align 8, !tbaa !5
  %411 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %410, i32 0, i32 10
  %412 = load i32, ptr %411, align 8, !tbaa !11
  %413 = icmp ne i32 %412, 4
  br i1 %413, label %414, label %421

414:                                              ; preds = %409
  %415 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %415, ptr noundef @.str.33)
          to label %416 unwind label %417

416:                                              ; preds = %414
  call void @__cxa_throw(ptr %415, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #8
  unreachable

417:                                              ; preds = %414
  %418 = landingpad { ptr, i32 }
          cleanup
  %419 = extractvalue { ptr, i32 } %418, 0
  store ptr %419, ptr %7, align 8
  %420 = extractvalue { ptr, i32 } %418, 1
  store i32 %420, ptr %8, align 4
  call void @__cxa_free_exception(ptr %415) #7
  br label %878

421:                                              ; preds = %409
  %422 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %72, i32 0, i32 9
  %423 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %422, i32 0, i32 4
  %424 = load i8, ptr %423, align 4, !tbaa !132, !range !128, !noundef !129
  %425 = trunc i8 %424 to i1
  br i1 %425, label %426, label %433

426:                                              ; preds = %421
  %427 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %427, ptr noundef @.str.34)
          to label %428 unwind label %429

428:                                              ; preds = %426
  call void @__cxa_throw(ptr %427, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #8
  unreachable

429:                                              ; preds = %426
  %430 = landingpad { ptr, i32 }
          cleanup
  %431 = extractvalue { ptr, i32 } %430, 0
  store ptr %431, ptr %7, align 8
  %432 = extractvalue { ptr, i32 } %430, 1
  store i32 %432, ptr %8, align 4
  call void @__cxa_free_exception(ptr %427) #7
  br label %878

433:                                              ; preds = %421
  call void @llvm.lifetime.start.p0(i64 1, ptr %32) #7
  store i8 0, ptr %32, align 1, !tbaa !136
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #7
  store i8 0, ptr %33, align 1, !tbaa !136
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #7
  %434 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %72, i32 0, i32 41
  store ptr %434, ptr %34, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #7
  %435 = load ptr, ptr %34, align 8, !tbaa !5
  %436 = call ptr @_ZNSt6vectorISt4pairIjbESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %435) #7
  %437 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.296", ptr %35, i32 0, i32 0
  store ptr %436, ptr %437, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #7
  %438 = load ptr, ptr %34, align 8, !tbaa !5
  %439 = call ptr @_ZNSt6vectorISt4pairIjbESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %438) #7
  %440 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.296", ptr %36, i32 0, i32 0
  store ptr %439, ptr %440, align 8
  br label %441

441:                                              ; preds = %453, %433
  %442 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt4pairIjbESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull align 8 dereferenceable(8) %36) #7
  br i1 %442, label %444, label %443

443:                                              ; preds = %441
  store i32 5, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #7
  br label %455

444:                                              ; preds = %441
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #7
  %445 = call noundef nonnull align 4 dereferenceable(5) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt4pairIjbESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %35) #7
  store ptr %445, ptr %37, align 8, !tbaa !5
  %446 = load ptr, ptr %37, align 8, !tbaa !5
  %447 = getelementptr inbounds %"struct.std::pair.287", ptr %446, i32 0, i32 1
  %448 = load i8, ptr %447, align 4, !tbaa !137, !range !128, !noundef !129
  %449 = trunc i8 %448 to i1
  br i1 %449, label %450, label %451

450:                                              ; preds = %444
  store i8 1, ptr %32, align 1, !tbaa !136
  br label %452

451:                                              ; preds = %444
  store i8 1, ptr %33, align 1, !tbaa !136
  br label %452

452:                                              ; preds = %451, %450
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #7
  br label %453

453:                                              ; preds = %452
  %454 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt4pairIjbESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %35) #7
  br label %441

455:                                              ; preds = %443
  %456 = load i8, ptr %32, align 1, !tbaa !136, !range !128, !noundef !129
  %457 = trunc i8 %456 to i1
  br i1 %457, label %458, label %470

458:                                              ; preds = %455
  call void @llvm.lifetime.start.p0(i64 32, ptr %38) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %39) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef @.str.35, ptr noundef nonnull align 1 dereferenceable(1) %39)
          to label %459 unwind label %461

459:                                              ; preds = %458
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %72, ptr noundef nonnull align 8 dereferenceable(32) %38)
          to label %460 unwind label %465

460:                                              ; preds = %459
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #7
  br label %470

461:                                              ; preds = %458
  %462 = landingpad { ptr, i32 }
          cleanup
  %463 = extractvalue { ptr, i32 } %462, 0
  store ptr %463, ptr %7, align 8
  %464 = extractvalue { ptr, i32 } %462, 1
  store i32 %464, ptr %8, align 4
  br label %469

465:                                              ; preds = %459
  %466 = landingpad { ptr, i32 }
          cleanup
  %467 = extractvalue { ptr, i32 } %466, 0
  store ptr %467, ptr %7, align 8
  %468 = extractvalue { ptr, i32 } %466, 1
  store i32 %468, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #7
  br label %469

469:                                              ; preds = %465, %461
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #7
  br label %486

470:                                              ; preds = %460, %455
  %471 = load i8, ptr %33, align 1, !tbaa !136, !range !128, !noundef !129
  %472 = trunc i8 %471 to i1
  br i1 %472, label %473, label %485

473:                                              ; preds = %470
  call void @llvm.lifetime.start.p0(i64 32, ptr %40) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %41) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef @.str.36, ptr noundef nonnull align 1 dereferenceable(1) %41)
          to label %474 unwind label %476

474:                                              ; preds = %473
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %72, ptr noundef nonnull align 8 dereferenceable(32) %40)
          to label %475 unwind label %480

475:                                              ; preds = %474
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #7
  br label %485

476:                                              ; preds = %473
  %477 = landingpad { ptr, i32 }
          cleanup
  %478 = extractvalue { ptr, i32 } %477, 0
  store ptr %478, ptr %7, align 8
  %479 = extractvalue { ptr, i32 } %477, 1
  store i32 %479, ptr %8, align 4
  br label %484

480:                                              ; preds = %474
  %481 = landingpad { ptr, i32 }
          cleanup
  %482 = extractvalue { ptr, i32 } %481, 0
  store ptr %482, ptr %7, align 8
  %483 = extractvalue { ptr, i32 } %481, 1
  store i32 %483, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #7
  br label %484

484:                                              ; preds = %480, %476
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #7
  br label %486

485:                                              ; preds = %475, %470
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #7
  br label %487

486:                                              ; preds = %484, %469
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #7
  br label %878

487:                                              ; preds = %485, %406
  %488 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %72, i32 0, i32 9
  %489 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %488, i32 0, i32 5
  %490 = load i8, ptr %489, align 1, !tbaa !139, !range !128, !noundef !129
  %491 = trunc i8 %490 to i1
  br i1 %491, label %492, label %514

492:                                              ; preds = %487
  %493 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %72, i32 0, i32 9
  %494 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %493, i32 0, i32 1
  %495 = load i8, ptr %494, align 4, !tbaa !30, !range !128, !noundef !129
  %496 = trunc i8 %495 to i1
  br i1 %496, label %514, label %497

497:                                              ; preds = %492
  %498 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %72, i32 0, i32 9
  %499 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %498, i32 0, i32 0
  %500 = load i32, ptr %499, align 4, !tbaa !130
  %501 = icmp ult i32 %500, 410
  br i1 %501, label %502, label %514

502:                                              ; preds = %497
  call void @llvm.lifetime.start.p0(i64 32, ptr %42) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %43) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %42, ptr noundef @.str.37, ptr noundef nonnull align 1 dereferenceable(1) %43)
          to label %503 unwind label %505

503:                                              ; preds = %502
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %72, ptr noundef nonnull align 8 dereferenceable(32) %42)
          to label %504 unwind label %509

504:                                              ; preds = %503
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %42) #7
  br label %514

505:                                              ; preds = %502
  %506 = landingpad { ptr, i32 }
          cleanup
  %507 = extractvalue { ptr, i32 } %506, 0
  store ptr %507, ptr %7, align 8
  %508 = extractvalue { ptr, i32 } %506, 1
  store i32 %508, ptr %8, align 4
  br label %513

509:                                              ; preds = %503
  %510 = landingpad { ptr, i32 }
          cleanup
  %511 = extractvalue { ptr, i32 } %510, 0
  store ptr %511, ptr %7, align 8
  %512 = extractvalue { ptr, i32 } %510, 1
  store i32 %512, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #7
  br label %513

513:                                              ; preds = %509, %505
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %42) #7
  br label %878

514:                                              ; preds = %504, %497, %492, %487
  %515 = getelementptr inbounds %"class.spirv_cross::Compiler", ptr %72, i32 0, i32 1
  %516 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %515, i32 0, i32 15
  %517 = load i32, ptr %516, align 4, !tbaa !140
  %518 = icmp eq i32 %517, 5348
  br i1 %518, label %519, label %578

519:                                              ; preds = %514
  %520 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %72, i32 0, i32 9
  %521 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %520, i32 0, i32 4
  %522 = load i8, ptr %521, align 4, !tbaa !132, !range !128, !noundef !129
  %523 = trunc i8 %522 to i1
  br i1 %523, label %531, label %524

524:                                              ; preds = %519
  %525 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %525, ptr noundef @.str.38)
          to label %526 unwind label %527

526:                                              ; preds = %524
  call void @__cxa_throw(ptr %525, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #8
  unreachable

527:                                              ; preds = %524
  %528 = landingpad { ptr, i32 }
          cleanup
  %529 = extractvalue { ptr, i32 } %528, 0
  store ptr %529, ptr %7, align 8
  %530 = extractvalue { ptr, i32 } %528, 1
  store i32 %530, ptr %8, align 4
  call void @__cxa_free_exception(ptr %525) #7
  br label %878

531:                                              ; preds = %519
  %532 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %72, i32 0, i32 9
  %533 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %532, i32 0, i32 1
  %534 = load i8, ptr %533, align 4, !tbaa !30, !range !128, !noundef !129
  %535 = trunc i8 %534 to i1
  br i1 %535, label %536, label %548

536:                                              ; preds = %531
  %537 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %72, i32 0, i32 9
  %538 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %537, i32 0, i32 0
  %539 = load i32, ptr %538, align 4, !tbaa !130
  %540 = icmp ult i32 %539, 320
  br i1 %540, label %541, label %548

541:                                              ; preds = %536
  %542 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %542, ptr noundef @.str.39)
          to label %543 unwind label %544

543:                                              ; preds = %541
  call void @__cxa_throw(ptr %542, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #8
  unreachable

544:                                              ; preds = %541
  %545 = landingpad { ptr, i32 }
          cleanup
  %546 = extractvalue { ptr, i32 } %545, 0
  store ptr %546, ptr %7, align 8
  %547 = extractvalue { ptr, i32 } %545, 1
  store i32 %547, ptr %8, align 4
  call void @__cxa_free_exception(ptr %542) #7
  br label %878

548:                                              ; preds = %536, %531
  %549 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %72, i32 0, i32 9
  %550 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %549, i32 0, i32 1
  %551 = load i8, ptr %550, align 4, !tbaa !30, !range !128, !noundef !129
  %552 = trunc i8 %551 to i1
  br i1 %552, label %565, label %553

553:                                              ; preds = %548
  %554 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %72, i32 0, i32 9
  %555 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %554, i32 0, i32 0
  %556 = load i32, ptr %555, align 4, !tbaa !130
  %557 = icmp ult i32 %556, 450
  br i1 %557, label %558, label %565

558:                                              ; preds = %553
  %559 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %559, ptr noundef @.str.40)
          to label %560 unwind label %561

560:                                              ; preds = %558
  call void @__cxa_throw(ptr %559, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #8
  unreachable

561:                                              ; preds = %558
  %562 = landingpad { ptr, i32 }
          cleanup
  %563 = extractvalue { ptr, i32 } %562, 0
  store ptr %563, ptr %7, align 8
  %564 = extractvalue { ptr, i32 } %562, 1
  store i32 %564, ptr %8, align 4
  call void @__cxa_free_exception(ptr %559) #7
  br label %878

565:                                              ; preds = %553, %548
  br label %566

566:                                              ; preds = %565
  call void @llvm.lifetime.start.p0(i64 32, ptr %44) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %45) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %44, ptr noundef @.str.41, ptr noundef nonnull align 1 dereferenceable(1) %45)
          to label %567 unwind label %569

567:                                              ; preds = %566
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %72, ptr noundef nonnull align 8 dereferenceable(32) %44)
          to label %568 unwind label %573

568:                                              ; preds = %567
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %44) #7
  br label %591

569:                                              ; preds = %566
  %570 = landingpad { ptr, i32 }
          cleanup
  %571 = extractvalue { ptr, i32 } %570, 0
  store ptr %571, ptr %7, align 8
  %572 = extractvalue { ptr, i32 } %570, 1
  store i32 %572, ptr %8, align 4
  br label %577

573:                                              ; preds = %567
  %574 = landingpad { ptr, i32 }
          cleanup
  %575 = extractvalue { ptr, i32 } %574, 0
  store ptr %575, ptr %7, align 8
  %576 = extractvalue { ptr, i32 } %574, 1
  store i32 %576, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #7
  br label %577

577:                                              ; preds = %573, %569
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %44) #7
  br label %878

578:                                              ; preds = %514
  %579 = getelementptr inbounds %"class.spirv_cross::Compiler", ptr %72, i32 0, i32 1
  %580 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %579, i32 0, i32 15
  %581 = load i32, ptr %580, align 4, !tbaa !140
  %582 = icmp ne i32 %581, 0
  br i1 %582, label %583, label %590

583:                                              ; preds = %578
  %584 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %584, ptr noundef @.str.42)
          to label %585 unwind label %586

585:                                              ; preds = %583
  call void @__cxa_throw(ptr %584, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #8
  unreachable

586:                                              ; preds = %583
  %587 = landingpad { ptr, i32 }
          cleanup
  %588 = extractvalue { ptr, i32 } %587, 0
  store ptr %588, ptr %7, align 8
  %589 = extractvalue { ptr, i32 } %587, 1
  store i32 %589, ptr %8, align 4
  call void @__cxa_free_exception(ptr %584) #7
  br label %878

590:                                              ; preds = %578
  br label %591

591:                                              ; preds = %590, %568
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #7
  %592 = getelementptr inbounds %"class.spirv_cross::Compiler", ptr %72, i32 0, i32 1
  %593 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %592, i32 0, i32 8
  store ptr %593, ptr %46, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #7
  %594 = load ptr, ptr %46, align 8, !tbaa !5
  %595 = call noundef ptr @_ZN11spirv_cross10VectorViewIN3spv10CapabilityEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %594) #7
  store ptr %595, ptr %47, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #7
  %596 = load ptr, ptr %46, align 8, !tbaa !5
  %597 = call noundef ptr @_ZN11spirv_cross10VectorViewIN3spv10CapabilityEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %596) #7
  store ptr %597, ptr %48, align 8, !tbaa !5
  br label %598

598:                                              ; preds = %812, %591
  %599 = load ptr, ptr %47, align 8, !tbaa !5
  %600 = load ptr, ptr %48, align 8, !tbaa !5
  %601 = icmp ne ptr %599, %600
  br i1 %601, label %603, label %602

602:                                              ; preds = %598
  store i32 7, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #7
  br label %816

603:                                              ; preds = %598
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #7
  %604 = load ptr, ptr %47, align 8, !tbaa !5
  store ptr %604, ptr %49, align 8, !tbaa !5
  %605 = load ptr, ptr %49, align 8, !tbaa !5
  %606 = load i32, ptr %605, align 4, !tbaa !133
  switch i32 %606, label %810 [
    i32 5301, label %607
    i32 5302, label %637
    i32 5251, label %661
    i32 4442, label %681
    i32 4441, label %681
    i32 4439, label %688
    i32 4472, label %740
    i32 4478, label %775
  ]

607:                                              ; preds = %603
  %608 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %72, i32 0, i32 9
  %609 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %608, i32 0, i32 4
  %610 = load i8, ptr %609, align 4, !tbaa !132, !range !128, !noundef !129
  %611 = trunc i8 %610 to i1
  br i1 %611, label %624, label %612

612:                                              ; preds = %607
  call void @llvm.lifetime.start.p0(i64 32, ptr %50) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %51) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %50, ptr noundef @.str.43, ptr noundef nonnull align 1 dereferenceable(1) %51)
          to label %613 unwind label %615

613:                                              ; preds = %612
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %72, ptr noundef nonnull align 8 dereferenceable(32) %50)
          to label %614 unwind label %619

614:                                              ; preds = %613
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %50) #7
  br label %636

615:                                              ; preds = %612
  %616 = landingpad { ptr, i32 }
          cleanup
  %617 = extractvalue { ptr, i32 } %616, 0
  store ptr %617, ptr %7, align 8
  %618 = extractvalue { ptr, i32 } %616, 1
  store i32 %618, ptr %8, align 4
  br label %623

619:                                              ; preds = %613
  %620 = landingpad { ptr, i32 }
          cleanup
  %621 = extractvalue { ptr, i32 } %620, 0
  store ptr %621, ptr %7, align 8
  %622 = extractvalue { ptr, i32 } %620, 1
  store i32 %622, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #7
  br label %623

623:                                              ; preds = %619, %615
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %50) #7
  br label %815

624:                                              ; preds = %607
  call void @llvm.lifetime.start.p0(i64 32, ptr %52) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %53) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %52, ptr noundef @.str.44, ptr noundef nonnull align 1 dereferenceable(1) %53)
          to label %625 unwind label %627

625:                                              ; preds = %624
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %72, ptr noundef nonnull align 8 dereferenceable(32) %52)
          to label %626 unwind label %631

626:                                              ; preds = %625
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %52) #7
  br label %636

627:                                              ; preds = %624
  %628 = landingpad { ptr, i32 }
          cleanup
  %629 = extractvalue { ptr, i32 } %628, 0
  store ptr %629, ptr %7, align 8
  %630 = extractvalue { ptr, i32 } %628, 1
  store i32 %630, ptr %8, align 4
  br label %635

631:                                              ; preds = %625
  %632 = landingpad { ptr, i32 }
          cleanup
  %633 = extractvalue { ptr, i32 } %632, 0
  store ptr %633, ptr %7, align 8
  %634 = extractvalue { ptr, i32 } %632, 1
  store i32 %634, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #7
  br label %635

635:                                              ; preds = %631, %627
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %52) #7
  br label %815

636:                                              ; preds = %626, %614
  br label %811

637:                                              ; preds = %603
  %638 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %72, i32 0, i32 9
  %639 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %638, i32 0, i32 4
  %640 = load i8, ptr %639, align 4, !tbaa !132, !range !128, !noundef !129
  %641 = trunc i8 %640 to i1
  br i1 %641, label %649, label %642

642:                                              ; preds = %637
  %643 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %643, ptr noundef @.str.45)
          to label %644 unwind label %645

644:                                              ; preds = %642
  call void @__cxa_throw(ptr %643, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #8
  unreachable

645:                                              ; preds = %642
  %646 = landingpad { ptr, i32 }
          cleanup
  %647 = extractvalue { ptr, i32 } %646, 0
  store ptr %647, ptr %7, align 8
  %648 = extractvalue { ptr, i32 } %646, 1
  store i32 %648, ptr %8, align 4
  call void @__cxa_free_exception(ptr %643) #7
  br label %815

649:                                              ; preds = %637
  call void @llvm.lifetime.start.p0(i64 32, ptr %54) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %55) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %54, ptr noundef @.str.44, ptr noundef nonnull align 1 dereferenceable(1) %55)
          to label %650 unwind label %652

650:                                              ; preds = %649
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %72, ptr noundef nonnull align 8 dereferenceable(32) %54)
          to label %651 unwind label %656

651:                                              ; preds = %650
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %54) #7
  br label %811

652:                                              ; preds = %649
  %653 = landingpad { ptr, i32 }
          cleanup
  %654 = extractvalue { ptr, i32 } %653, 0
  store ptr %654, ptr %7, align 8
  %655 = extractvalue { ptr, i32 } %653, 1
  store i32 %655, ptr %8, align 4
  br label %660

656:                                              ; preds = %650
  %657 = landingpad { ptr, i32 }
          cleanup
  %658 = extractvalue { ptr, i32 } %657, 0
  store ptr %658, ptr %7, align 8
  %659 = extractvalue { ptr, i32 } %657, 1
  store i32 %659, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #7
  br label %660

660:                                              ; preds = %656, %652
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %54) #7
  br label %815

661:                                              ; preds = %603
  %662 = load ptr, ptr %4, align 8, !tbaa !5
  %663 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %662, i32 0, i32 10
  %664 = load i32, ptr %663, align 8, !tbaa !11
  %665 = icmp eq i32 %664, 3
  br i1 %665, label %666, label %680

666:                                              ; preds = %661
  call void @llvm.lifetime.start.p0(i64 32, ptr %56) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %57) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %56, ptr noundef @.str.46, ptr noundef nonnull align 1 dereferenceable(1) %57)
          to label %667 unwind label %671

667:                                              ; preds = %666
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %72, ptr noundef nonnull align 8 dereferenceable(32) %56)
          to label %668 unwind label %675

668:                                              ; preds = %667
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %57) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %56) #7
  %669 = load ptr, ptr %4, align 8, !tbaa !5
  %670 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %669, i32 0, i32 11
  store i8 1, ptr %670, align 4, !tbaa !141
  br label %680

671:                                              ; preds = %666
  %672 = landingpad { ptr, i32 }
          cleanup
  %673 = extractvalue { ptr, i32 } %672, 0
  store ptr %673, ptr %7, align 8
  %674 = extractvalue { ptr, i32 } %672, 1
  store i32 %674, ptr %8, align 4
  br label %679

675:                                              ; preds = %667
  %676 = landingpad { ptr, i32 }
          cleanup
  %677 = extractvalue { ptr, i32 } %676, 0
  store ptr %677, ptr %7, align 8
  %678 = extractvalue { ptr, i32 } %676, 1
  store i32 %678, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #7
  br label %679

679:                                              ; preds = %675, %671
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %57) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %56) #7
  br label %815

680:                                              ; preds = %668, %661
  br label %811

681:                                              ; preds = %603, %603
  %682 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %682, ptr noundef @.str.47)
          to label %683 unwind label %684

683:                                              ; preds = %681
  call void @__cxa_throw(ptr %682, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #8
  unreachable

684:                                              ; preds = %681
  %685 = landingpad { ptr, i32 }
          cleanup
  %686 = extractvalue { ptr, i32 } %685, 0
  store ptr %686, ptr %7, align 8
  %687 = extractvalue { ptr, i32 } %685, 1
  store i32 %687, ptr %8, align 4
  call void @__cxa_free_exception(ptr %682) #7
  br label %815

688:                                              ; preds = %603
  %689 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %72, i32 0, i32 9
  %690 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %689, i32 0, i32 4
  %691 = load i8, ptr %690, align 4, !tbaa !132, !range !128, !noundef !129
  %692 = trunc i8 %691 to i1
  br i1 %692, label %693, label %705

693:                                              ; preds = %688
  call void @llvm.lifetime.start.p0(i64 32, ptr %58) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %59) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %58, ptr noundef @.str.48, ptr noundef nonnull align 1 dereferenceable(1) %59)
          to label %694 unwind label %696

694:                                              ; preds = %693
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %72, ptr noundef nonnull align 8 dereferenceable(32) %58)
          to label %695 unwind label %700

695:                                              ; preds = %694
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %59) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %58) #7
  br label %739

696:                                              ; preds = %693
  %697 = landingpad { ptr, i32 }
          cleanup
  %698 = extractvalue { ptr, i32 } %697, 0
  store ptr %698, ptr %7, align 8
  %699 = extractvalue { ptr, i32 } %697, 1
  store i32 %699, ptr %8, align 4
  br label %704

700:                                              ; preds = %694
  %701 = landingpad { ptr, i32 }
          cleanup
  %702 = extractvalue { ptr, i32 } %701, 0
  store ptr %702, ptr %7, align 8
  %703 = extractvalue { ptr, i32 } %701, 1
  store i32 %703, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #7
  br label %704

704:                                              ; preds = %700, %696
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %59) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %58) #7
  br label %815

705:                                              ; preds = %688
  call void @llvm.lifetime.start.p0(i64 32, ptr %60) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %61) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %61) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %60, ptr noundef @.str.49, ptr noundef nonnull align 1 dereferenceable(1) %61)
          to label %706 unwind label %715

706:                                              ; preds = %705
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %72, ptr noundef nonnull align 8 dereferenceable(32) %60)
          to label %707 unwind label %719

707:                                              ; preds = %706
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %61) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %61) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %60) #7
  %708 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %72, i32 0, i32 9
  %709 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %708, i32 0, i32 16
  %710 = load i32, ptr %709, align 4, !tbaa !142
  %711 = icmp eq i32 %710, 0
  br i1 %711, label %712, label %728

712:                                              ; preds = %707
  %713 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %713, ptr noundef @.str.50)
          to label %714 unwind label %724

714:                                              ; preds = %712
  call void @__cxa_throw(ptr %713, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #8
  unreachable

715:                                              ; preds = %705
  %716 = landingpad { ptr, i32 }
          cleanup
  %717 = extractvalue { ptr, i32 } %716, 0
  store ptr %717, ptr %7, align 8
  %718 = extractvalue { ptr, i32 } %716, 1
  store i32 %718, ptr %8, align 4
  br label %723

719:                                              ; preds = %706
  %720 = landingpad { ptr, i32 }
          cleanup
  %721 = extractvalue { ptr, i32 } %720, 0
  store ptr %721, ptr %7, align 8
  %722 = extractvalue { ptr, i32 } %720, 1
  store i32 %722, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #7
  br label %723

723:                                              ; preds = %719, %715
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %61) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %61) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %60) #7
  br label %815

724:                                              ; preds = %712
  %725 = landingpad { ptr, i32 }
          cleanup
  %726 = extractvalue { ptr, i32 } %725, 0
  store ptr %726, ptr %7, align 8
  %727 = extractvalue { ptr, i32 } %725, 1
  store i32 %727, ptr %8, align 4
  call void @__cxa_free_exception(ptr %713) #7
  br label %815

728:                                              ; preds = %707
  %729 = call noundef i32 @_ZNK11spirv_cross8Compiler19get_execution_modelEv(ptr noundef nonnull align 8 dereferenceable(3176) %72)
  %730 = icmp ne i32 %729, 0
  br i1 %730, label %731, label %738

731:                                              ; preds = %728
  %732 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %732, ptr noundef @.str.51)
          to label %733 unwind label %734

733:                                              ; preds = %731
  call void @__cxa_throw(ptr %732, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #8
  unreachable

734:                                              ; preds = %731
  %735 = landingpad { ptr, i32 }
          cleanup
  %736 = extractvalue { ptr, i32 } %735, 0
  store ptr %736, ptr %7, align 8
  %737 = extractvalue { ptr, i32 } %735, 1
  store i32 %737, ptr %8, align 4
  call void @__cxa_free_exception(ptr %732) #7
  br label %815

738:                                              ; preds = %728
  br label %739

739:                                              ; preds = %738, %695
  br label %811

740:                                              ; preds = %603
  %741 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %72, i32 0, i32 9
  %742 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %741, i32 0, i32 1
  %743 = load i8, ptr %742, align 4, !tbaa !30, !range !128, !noundef !129
  %744 = trunc i8 %743 to i1
  br i1 %744, label %755, label %745

745:                                              ; preds = %740
  %746 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %72, i32 0, i32 9
  %747 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %746, i32 0, i32 0
  %748 = load i32, ptr %747, align 4, !tbaa !130
  %749 = icmp ult i32 %748, 460
  br i1 %749, label %755, label %750

750:                                              ; preds = %745
  %751 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %72, i32 0, i32 9
  %752 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %751, i32 0, i32 4
  %753 = load i8, ptr %752, align 4, !tbaa !132, !range !128, !noundef !129
  %754 = trunc i8 %753 to i1
  br i1 %754, label %762, label %755

755:                                              ; preds = %750, %745, %740
  %756 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %756, ptr noundef @.str.52)
          to label %757 unwind label %758

757:                                              ; preds = %755
  call void @__cxa_throw(ptr %756, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #8
  unreachable

758:                                              ; preds = %755
  %759 = landingpad { ptr, i32 }
          cleanup
  %760 = extractvalue { ptr, i32 } %759, 0
  store ptr %760, ptr %7, align 8
  %761 = extractvalue { ptr, i32 } %759, 1
  store i32 %761, ptr %8, align 4
  call void @__cxa_free_exception(ptr %756) #7
  br label %815

762:                                              ; preds = %750
  call void @llvm.lifetime.start.p0(i64 32, ptr %62) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %63) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %63) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %62, ptr noundef @.str.53, ptr noundef nonnull align 1 dereferenceable(1) %63)
          to label %763 unwind label %766

763:                                              ; preds = %762
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %72, ptr noundef nonnull align 8 dereferenceable(32) %62)
          to label %764 unwind label %770

764:                                              ; preds = %763
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %63) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %63) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %62) #7
  %765 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %72, i32 0, i32 36
  store i8 1, ptr %765, align 4, !tbaa !135
  br label %811

766:                                              ; preds = %762
  %767 = landingpad { ptr, i32 }
          cleanup
  %768 = extractvalue { ptr, i32 } %767, 0
  store ptr %768, ptr %7, align 8
  %769 = extractvalue { ptr, i32 } %767, 1
  store i32 %769, ptr %8, align 4
  br label %774

770:                                              ; preds = %763
  %771 = landingpad { ptr, i32 }
          cleanup
  %772 = extractvalue { ptr, i32 } %771, 0
  store ptr %772, ptr %7, align 8
  %773 = extractvalue { ptr, i32 } %771, 1
  store i32 %773, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #7
  br label %774

774:                                              ; preds = %770, %766
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %63) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %63) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %62) #7
  br label %815

775:                                              ; preds = %603
  %776 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %72, i32 0, i32 9
  %777 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %776, i32 0, i32 1
  %778 = load i8, ptr %777, align 4, !tbaa !30, !range !128, !noundef !129
  %779 = trunc i8 %778 to i1
  br i1 %779, label %790, label %780

780:                                              ; preds = %775
  %781 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %72, i32 0, i32 9
  %782 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %781, i32 0, i32 0
  %783 = load i32, ptr %782, align 4, !tbaa !130
  %784 = icmp ult i32 %783, 460
  br i1 %784, label %790, label %785

785:                                              ; preds = %780
  %786 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %72, i32 0, i32 9
  %787 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %786, i32 0, i32 4
  %788 = load i8, ptr %787, align 4, !tbaa !132, !range !128, !noundef !129
  %789 = trunc i8 %788 to i1
  br i1 %789, label %797, label %790

790:                                              ; preds = %785, %780, %775
  %791 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %791, ptr noundef @.str.52)
          to label %792 unwind label %793

792:                                              ; preds = %790
  call void @__cxa_throw(ptr %791, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #8
  unreachable

793:                                              ; preds = %790
  %794 = landingpad { ptr, i32 }
          cleanup
  %795 = extractvalue { ptr, i32 } %794, 0
  store ptr %795, ptr %7, align 8
  %796 = extractvalue { ptr, i32 } %794, 1
  store i32 %796, ptr %8, align 4
  call void @__cxa_free_exception(ptr %791) #7
  br label %815

797:                                              ; preds = %785
  call void @llvm.lifetime.start.p0(i64 32, ptr %64) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %65) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %65) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %64, ptr noundef @.str.54, ptr noundef nonnull align 1 dereferenceable(1) %65)
          to label %798 unwind label %801

798:                                              ; preds = %797
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %72, ptr noundef nonnull align 8 dereferenceable(32) %64)
          to label %799 unwind label %805

799:                                              ; preds = %798
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %65) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %65) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %64) #7
  %800 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %72, i32 0, i32 36
  store i8 1, ptr %800, align 4, !tbaa !135
  br label %811

801:                                              ; preds = %797
  %802 = landingpad { ptr, i32 }
          cleanup
  %803 = extractvalue { ptr, i32 } %802, 0
  store ptr %803, ptr %7, align 8
  %804 = extractvalue { ptr, i32 } %802, 1
  store i32 %804, ptr %8, align 4
  br label %809

805:                                              ; preds = %798
  %806 = landingpad { ptr, i32 }
          cleanup
  %807 = extractvalue { ptr, i32 } %806, 0
  store ptr %807, ptr %7, align 8
  %808 = extractvalue { ptr, i32 } %806, 1
  store i32 %808, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #7
  br label %809

809:                                              ; preds = %805, %801
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %65) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %65) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %64) #7
  br label %815

810:                                              ; preds = %603
  br label %811

811:                                              ; preds = %810, %799, %764, %739, %680, %651, %636
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #7
  br label %812

812:                                              ; preds = %811
  %813 = load ptr, ptr %47, align 8, !tbaa !5
  %814 = getelementptr inbounds i32, ptr %813, i32 1
  store ptr %814, ptr %47, align 8, !tbaa !5
  br label %598

815:                                              ; preds = %809, %793, %774, %758, %734, %724, %723, %704, %684, %679, %660, %645, %635, %623
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #7
  br label %878

816:                                              ; preds = %602
  %817 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %72, i32 0, i32 9
  %818 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %817, i32 0, i32 16
  %819 = load i32, ptr %818, align 4, !tbaa !142
  %820 = icmp ne i32 %819, 0
  br i1 %820, label %821, label %855

821:                                              ; preds = %816
  %822 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %72, i32 0, i32 9
  %823 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %822, i32 0, i32 4
  %824 = load i8, ptr %823, align 4, !tbaa !132, !range !128, !noundef !129
  %825 = trunc i8 %824 to i1
  br i1 %825, label %826, label %833

826:                                              ; preds = %821
  %827 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %827, ptr noundef @.str.55)
          to label %828 unwind label %829

828:                                              ; preds = %826
  call void @__cxa_throw(ptr %827, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #8
  unreachable

829:                                              ; preds = %826
  %830 = landingpad { ptr, i32 }
          cleanup
  %831 = extractvalue { ptr, i32 } %830, 0
  store ptr %831, ptr %7, align 8
  %832 = extractvalue { ptr, i32 } %830, 1
  store i32 %832, ptr %8, align 4
  call void @__cxa_free_exception(ptr %827) #7
  br label %878

833:                                              ; preds = %821
  %834 = call noundef i32 @_ZNK11spirv_cross8Compiler19get_execution_modelEv(ptr noundef nonnull align 8 dereferenceable(3176) %72)
  %835 = icmp ne i32 %834, 0
  br i1 %835, label %836, label %843

836:                                              ; preds = %833
  %837 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %837, ptr noundef @.str.51)
          to label %838 unwind label %839

838:                                              ; preds = %836
  call void @__cxa_throw(ptr %837, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #8
  unreachable

839:                                              ; preds = %836
  %840 = landingpad { ptr, i32 }
          cleanup
  %841 = extractvalue { ptr, i32 } %840, 0
  store ptr %841, ptr %7, align 8
  %842 = extractvalue { ptr, i32 } %840, 1
  store i32 %842, ptr %8, align 4
  call void @__cxa_free_exception(ptr %837) #7
  br label %878

843:                                              ; preds = %833
  call void @llvm.lifetime.start.p0(i64 32, ptr %66) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %67) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %67) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %66, ptr noundef @.str.49, ptr noundef nonnull align 1 dereferenceable(1) %67)
          to label %844 unwind label %846

844:                                              ; preds = %843
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %72, ptr noundef nonnull align 8 dereferenceable(32) %66)
          to label %845 unwind label %850

845:                                              ; preds = %844
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %67) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %67) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %66) #7
  br label %855

846:                                              ; preds = %843
  %847 = landingpad { ptr, i32 }
          cleanup
  %848 = extractvalue { ptr, i32 } %847, 0
  store ptr %848, ptr %7, align 8
  %849 = extractvalue { ptr, i32 } %847, 1
  store i32 %849, ptr %8, align 4
  br label %854

850:                                              ; preds = %844
  %851 = landingpad { ptr, i32 }
          cleanup
  %852 = extractvalue { ptr, i32 } %851, 0
  store ptr %852, ptr %7, align 8
  %853 = extractvalue { ptr, i32 } %851, 1
  store i32 %853, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #7
  br label %854

854:                                              ; preds = %850, %846
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %67) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %67) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %66) #7
  br label %878

855:                                              ; preds = %845, %816
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #7
  %856 = getelementptr inbounds %"class.spirv_cross::Compiler", ptr %72, i32 0, i32 1
  %857 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %856, i32 0, i32 9
  store ptr %857, ptr %68, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #7
  %858 = load ptr, ptr %68, align 8, !tbaa !5
  %859 = call noundef ptr @_ZN11spirv_cross10VectorViewINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %858) #7
  store ptr %859, ptr %69, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #7
  %860 = load ptr, ptr %68, align 8, !tbaa !5
  %861 = call noundef ptr @_ZN11spirv_cross10VectorViewINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %860) #7
  store ptr %861, ptr %70, align 8, !tbaa !5
  br label %862

862:                                              ; preds = %874, %855
  %863 = load ptr, ptr %69, align 8, !tbaa !5
  %864 = load ptr, ptr %70, align 8, !tbaa !5
  %865 = icmp ne ptr %863, %864
  br i1 %865, label %867, label %866

866:                                              ; preds = %862
  store i32 10, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #7
  br label %877

867:                                              ; preds = %862
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #7
  %868 = load ptr, ptr %69, align 8, !tbaa !5
  store ptr %868, ptr %71, align 8, !tbaa !5
  %869 = load ptr, ptr %71, align 8, !tbaa !5
  %870 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %869, ptr noundef @.str.56)
  br i1 %870, label %871, label %873

871:                                              ; preds = %867
  %872 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %72, i32 0, i32 37
  store i8 1, ptr %872, align 1, !tbaa !143
  br label %873

873:                                              ; preds = %871, %867
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #7
  br label %874

874:                                              ; preds = %873
  %875 = load ptr, ptr %69, align 8, !tbaa !5
  %876 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %875, i32 1
  store ptr %876, ptr %69, align 8, !tbaa !5
  br label %862

877:                                              ; preds = %866
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #7
  ret void

878:                                              ; preds = %854, %839, %829, %815, %586, %577, %561, %544, %527, %513, %486, %429, %417, %405, %390, %374, %359, %347, %332, %320, %266, %254, %239, %217, %193, %162, %140, %114, %100
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #7
  br label %879

879:                                              ; preds = %878
  %880 = load ptr, ptr %7, align 8
  %881 = load i32, ptr %8, align 4
  %882 = insertvalue { ptr, i32 } poison, ptr %880, 0
  %883 = insertvalue { ptr, i32 } %882, i32 %881, 1
  resume { ptr, i32 } %883
}

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZN11spirv_cross8ParsedIR17for_each_typed_idINS_8SPIRTypeEZNS_12CompilerGLSL22find_static_extensionsEvE3$_0EEvRKT0_"(ptr noundef nonnull align 8 dereferenceable(1920), ptr noundef nonnull align 8 dereferenceable(8)) #1 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #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 #1 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 uwtable
declare dso_local noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64), i32 noundef) #5 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


; 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.anon.292 = type { ptr }
%"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 }
%"class.__gnu_cxx::__normal_iterator.296" = type { ptr }

@_ZTIN11spirv_cross13CompilerErrorE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.17 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [35 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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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

declare i32 @__gxx_personality_v0(...)

declare void @__cxa_free_exception(ptr) local_unnamed_addr

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11spirv_cross12CompilerGLSL22find_static_extensionsEv(ptr noundef nonnull align 8 dereferenceable(9848) %0) local_unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %class.anon.292, align 8
  %3 = alloca %"class.std::__cxx11::basic_string", align 8
  %4 = alloca %"class.std::allocator.71", align 1
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca %"class.std::allocator.71", align 1
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.std::allocator.71", align 1
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %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::__cxx11::basic_string", align 8
  %14 = alloca %"class.std::allocator.71", align 1
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %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::__cxx11::basic_string", align 8
  %20 = alloca %"class.std::allocator.71", align 1
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca %"class.std::allocator.71", align 1
  %23 = alloca %"class.__gnu_cxx::__normal_iterator.296", align 8
  %24 = alloca %"class.__gnu_cxx::__normal_iterator.296", align 8
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca %"class.std::allocator.71", align 1
  %27 = alloca %"class.std::__cxx11::basic_string", align 8
  %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::__cxx11::basic_string", align 8
  %32 = alloca %"class.std::allocator.71", align 1
  %33 = alloca %"class.std::__cxx11::basic_string", align 8
  %34 = alloca %"class.std::allocator.71", align 1
  %35 = alloca %"class.std::__cxx11::basic_string", align 8
  %36 = alloca %"class.std::allocator.71", align 1
  %37 = alloca %"class.std::__cxx11::basic_string", align 8
  %38 = alloca %"class.std::allocator.71", align 1
  %39 = alloca %"class.std::__cxx11::basic_string", align 8
  %40 = alloca %"class.std::allocator.71", align 1
  %41 = alloca %"class.std::__cxx11::basic_string", align 8
  %42 = alloca %"class.std::allocator.71", align 1
  %43 = alloca %"class.std::__cxx11::basic_string", align 8
  %44 = alloca %"class.std::allocator.71", align 1
  %45 = alloca %"class.std::__cxx11::basic_string", align 8
  %46 = alloca %"class.std::allocator.71", align 1
  %47 = alloca %"class.std::__cxx11::basic_string", align 8
  %48 = alloca %"class.std::allocator.71", align 1
  %49 = alloca %"class.std::__cxx11::basic_string", align 8
  %50 = alloca %"class.std::allocator.71", align 1
  %51 = getelementptr inbounds i8, ptr %0, i64 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) #7
  store ptr %0, ptr %2, align 8, !tbaa !5
  call void @"_ZN11spirv_cross8ParsedIR17for_each_typed_idINS_8SPIRTypeEZNS_12CompilerGLSL22find_static_extensionsEvE3$_0EEvRKT0_"(ptr noundef nonnull align 8 dereferenceable(1920) %51, ptr noundef nonnull align 8 dereferenceable(8) %2)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #7
  %52 = call noundef nonnull align 8 dereferenceable(237) ptr @_ZN11spirv_cross8Compiler15get_entry_pointEv(ptr noundef nonnull align 8 dereferenceable(3176) %0)
  %53 = getelementptr inbounds i8, ptr %52, i64 232
  %54 = load i32, ptr %53, align 8, !tbaa !10
  switch i32 %54, label %231 [
    i32 5, label %55
    i32 3, label %80
    i32 2, label %126
    i32 1, label %126
    i32 5313, label %154
    i32 5314, label %154
    i32 5315, label %154
    i32 5316, label %154
    i32 5317, label %154
    i32 5318, label %154
    i32 5365, label %202
    i32 5364, label %202
  ]

55:                                               ; preds = %1
  %56 = getelementptr inbounds i8, ptr %0, i64 7636
  %57 = getelementptr inbounds i8, ptr %0, i64 7640
  %58 = load i8, ptr %57, align 8, !tbaa !29, !range !127, !noundef !128
  %59 = trunc nuw i8 %58 to i1
  %60 = load i32, ptr %56, align 4
  %61 = icmp ugt i32 %60, 429
  %or.cond.not = select i1 %59, i1 true, i1 %61
  br i1 %or.cond.not, label %70, label %62

62:                                               ; preds = %55
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %4) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull @.str.17, ptr noundef nonnull align 1 dereferenceable(1) %4)
          to label %63 unwind label %65

63:                                               ; preds = %62
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %64 unwind label %67

64:                                               ; preds = %63
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #7
  %.pre196 = load i8, ptr %57, align 8, !tbaa !29, !range !127
  %.pre197 = load i32, ptr %56, align 4
  br label %70

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

67:                                               ; preds = %63
  %68 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #7
  br label %69

69:                                               ; preds = %67, %65
  %.pn90 = phi { ptr, i32 } [ %68, %67 ], [ %66, %65 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #7
  br label %535

70:                                               ; preds = %64, %55
  %71 = phi i32 [ %.pre197, %64 ], [ %60, %55 ]
  %72 = phi i8 [ %.pre196, %64 ], [ %58, %55 ]
  %73 = trunc nuw i8 %72 to i1
  %74 = icmp ult i32 %71, 310
  %or.cond136 = select i1 %73, i1 %74, i1 false
  br i1 %or.cond136, label %75, label %231

75:                                               ; preds = %70
  %76 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %76, ptr noundef nonnull @.str.18)
          to label %77 unwind label %78

77:                                               ; preds = %75
  call void @__cxa_throw(ptr nonnull %76, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #8
  unreachable

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

80:                                               ; preds = %1
  %81 = getelementptr inbounds i8, ptr %0, i64 7636
  %82 = getelementptr inbounds i8, ptr %0, i64 7640
  %83 = load i8, ptr %82, align 8, !tbaa !29, !range !127, !noundef !128
  %84 = trunc nuw i8 %83 to i1
  %85 = load i32, ptr %81, align 4
  %86 = icmp ult i32 %85, 320
  %or.cond138 = select i1 %84, i1 %86, i1 false
  br i1 %or.cond138, label %87, label %95

87:                                               ; preds = %80
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %6) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull @.str.19, ptr noundef nonnull align 1 dereferenceable(1) %6)
          to label %88 unwind label %90

88:                                               ; preds = %87
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %89 unwind label %92

89:                                               ; preds = %88
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #7
  %.pre194 = load i8, ptr %82, align 8, !tbaa !29, !range !127
  %.pre195 = load i32, ptr %81, align 4
  br label %95

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

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

94:                                               ; preds = %92, %90
  %.pn83 = phi { ptr, i32 } [ %93, %92 ], [ %91, %90 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #7
  br label %535

95:                                               ; preds = %89, %80
  %96 = phi i32 [ %.pre195, %89 ], [ %85, %80 ]
  %97 = phi i8 [ %.pre194, %89 ], [ %83, %80 ]
  %98 = trunc nuw i8 %97 to i1
  %99 = icmp ugt i32 %96, 149
  %or.cond141.not = select i1 %98, i1 true, i1 %99
  br i1 %or.cond141.not, label %108, label %100

100:                                              ; preds = %95
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %8) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull @.str.20, ptr noundef nonnull align 1 dereferenceable(1) %8)
          to label %101 unwind label %103

101:                                              ; preds = %100
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(32) %7)
          to label %102 unwind label %105

102:                                              ; preds = %101
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #7
  br label %108

103:                                              ; preds = %100
  %104 = landingpad { ptr, i32 }
          cleanup
  br label %107

105:                                              ; preds = %101
  %106 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #7
  br label %107

107:                                              ; preds = %105, %103
  %.pn85 = phi { ptr, i32 } [ %106, %105 ], [ %104, %103 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #7
  br label %535

108:                                              ; preds = %102, %95
  %109 = getelementptr inbounds i8, ptr %52, i64 128
  %110 = call noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64) %109, i32 noundef 0)
  %111 = getelementptr inbounds i8, ptr %52, i64 220
  %112 = load i32, ptr %111, align 4
  %.not87 = icmp ne i32 %112, 1
  %or.cond144.not = select i1 %110, i1 %.not87, i1 false
  br i1 %or.cond144.not, label %113, label %231

113:                                              ; preds = %108
  %114 = load i8, ptr %82, align 8, !tbaa !29, !range !127, !noundef !128
  %115 = trunc nuw i8 %114 to i1
  %116 = load i32, ptr %81, align 4
  %117 = icmp ugt i32 %116, 399
  %or.cond147.not = select i1 %115, i1 true, i1 %117
  br i1 %or.cond147.not, label %231, label %118

118:                                              ; preds = %113
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull @.str.21, ptr noundef nonnull align 1 dereferenceable(1) %10)
          to label %119 unwind label %121

119:                                              ; preds = %118
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %120 unwind label %123

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

121:                                              ; preds = %118
  %122 = landingpad { ptr, i32 }
          cleanup
  br label %125

123:                                              ; preds = %119
  %124 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #7
  br label %125

125:                                              ; preds = %123, %121
  %.pn88 = phi { ptr, i32 } [ %124, %123 ], [ %122, %121 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #7
  br label %535

126:                                              ; preds = %1, %1
  %127 = getelementptr inbounds i8, ptr %0, i64 7636
  %128 = getelementptr inbounds i8, ptr %0, i64 7640
  %129 = load i8, ptr %128, align 8, !tbaa !29, !range !127, !noundef !128
  %130 = trunc nuw i8 %129 to i1
  %131 = load i32, ptr %127, align 4
  %132 = icmp ult i32 %131, 320
  %or.cond149 = select i1 %130, i1 %132, i1 false
  br i1 %or.cond149, label %133, label %141

133:                                              ; preds = %126
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %12) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull @.str.22, ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %134 unwind label %136

134:                                              ; preds = %133
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(32) %11)
          to label %135 unwind label %138

135:                                              ; preds = %134
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #7
  %.pre = load i8, ptr %128, align 8, !tbaa !29, !range !127
  %.pre193 = load i32, ptr %127, align 4
  br label %141

136:                                              ; preds = %133
  %137 = landingpad { ptr, i32 }
          cleanup
  br label %140

138:                                              ; preds = %134
  %139 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #7
  br label %140

140:                                              ; preds = %138, %136
  %.pn79 = phi { ptr, i32 } [ %139, %138 ], [ %137, %136 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #7
  br label %535

141:                                              ; preds = %135, %126
  %142 = phi i32 [ %.pre193, %135 ], [ %131, %126 ]
  %143 = phi i8 [ %.pre, %135 ], [ %129, %126 ]
  %144 = trunc nuw i8 %143 to i1
  %145 = icmp ugt i32 %142, 399
  %or.cond152.not = select i1 %144, i1 true, i1 %145
  br i1 %or.cond152.not, label %231, label %146

146:                                              ; preds = %141
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %14) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull @.str.23, ptr noundef nonnull align 1 dereferenceable(1) %14)
          to label %147 unwind label %149

147:                                              ; preds = %146
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(32) %13)
          to label %148 unwind label %151

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

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

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

153:                                              ; preds = %151, %149
  %.pn81 = phi { ptr, i32 } [ %152, %151 ], [ %150, %149 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #7
  br label %535

154:                                              ; preds = %1, %1, %1, %1, %1, %1
  %155 = getelementptr inbounds i8, ptr %0, i64 7640
  %156 = load i8, ptr %155, align 8, !tbaa !29, !range !127, !noundef !128
  %157 = trunc nuw i8 %156 to i1
  %158 = getelementptr inbounds i8, ptr %0, i64 7636
  %159 = load i32, ptr %158, align 4
  %160 = icmp ult i32 %159, 460
  %or.cond155 = select i1 %157, i1 true, i1 %160
  br i1 %or.cond155, label %161, label %166

161:                                              ; preds = %154
  %162 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %162, ptr noundef nonnull @.str.24)
          to label %163 unwind label %164

163:                                              ; preds = %161
  call void @__cxa_throw(ptr nonnull %162, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #8
  unreachable

164:                                              ; preds = %161
  %165 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %162) #7
  br label %535

166:                                              ; preds = %154
  %167 = getelementptr inbounds i8, ptr %0, i64 7648
  %168 = load i8, ptr %167, align 8, !tbaa !129, !range !127, !noundef !128
  %169 = trunc nuw i8 %168 to i1
  br i1 %169, label %175, label %170

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

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

173:                                              ; preds = %170
  %174 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %171) #7
  br label %535

175:                                              ; preds = %166
  %176 = getelementptr inbounds i8, ptr %0, i64 1264
  %177 = call noundef ptr @_ZN11spirv_cross10VectorViewIN3spv10CapabilityEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %176) #7
  %178 = call noundef ptr @_ZN11spirv_cross10VectorViewIN3spv10CapabilityEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %176) #7
  %.not177 = icmp eq ptr %177, %178
  br i1 %.not177, label %.loopexit, label %.lr.ph

.lr.ph:                                           ; preds = %175, %181
  %.065178 = phi ptr [ %182, %181 ], [ %177, %175 ]
  %179 = load i32, ptr %.065178, align 4, !tbaa !130
  switch i32 %179, label %181 [
    i32 4479, label %.critedge
    i32 4472, label %.critedge
    i32 4478, label %.critedge
  ]

.critedge:                                        ; preds = %.lr.ph, %.lr.ph, %.lr.ph
  %180 = getelementptr inbounds i8, ptr %0, i64 9396
  store i8 1, ptr %180, align 4, !tbaa !132
  br label %.loopexit

181:                                              ; preds = %.lr.ph
  %182 = getelementptr inbounds i8, ptr %.065178, i64 4
  %.not = icmp eq ptr %182, %178
  br i1 %.not, label %.loopexit, label %.lr.ph

.loopexit:                                        ; preds = %181, %175, %.critedge
  %183 = getelementptr inbounds i8, ptr %0, i64 9396
  %184 = load i8, ptr %183, align 4, !tbaa !132, !range !127, !noundef !128
  %185 = trunc nuw i8 %184 to i1
  br i1 %185, label %186, label %194

186:                                              ; preds = %.loopexit
  call void @_ZN11spirv_cross12CompilerGLSL31ray_tracing_khr_fixup_locationsEv(ptr noundef nonnull align 8 dereferenceable(9848) %0)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %16) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull @.str.26, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %187 unwind label %189

187:                                              ; preds = %186
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %188 unwind label %191

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

189:                                              ; preds = %186
  %190 = landingpad { ptr, i32 }
          cleanup
  br label %193

191:                                              ; preds = %187
  %192 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  br label %193

193:                                              ; preds = %191, %189
  %.pn77 = phi { ptr, i32 } [ %192, %191 ], [ %190, %189 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #7
  br label %535

194:                                              ; preds = %.loopexit
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %18) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull @.str.27, ptr noundef nonnull align 1 dereferenceable(1) %18)
          to label %195 unwind label %197

195:                                              ; preds = %194
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(32) %17)
          to label %196 unwind label %199

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

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

199:                                              ; preds = %195
  %200 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #7
  br label %201

201:                                              ; preds = %199, %197
  %.pn75 = phi { ptr, i32 } [ %200, %199 ], [ %198, %197 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #7
  br label %535

202:                                              ; preds = %1, %1
  %203 = getelementptr inbounds i8, ptr %0, i64 7640
  %204 = load i8, ptr %203, align 8, !tbaa !29, !range !127, !noundef !128
  %205 = trunc nuw i8 %204 to i1
  %206 = getelementptr inbounds i8, ptr %0, i64 7636
  %207 = load i32, ptr %206, align 4
  %208 = icmp ult i32 %207, 450
  %or.cond158 = select i1 %205, i1 true, i1 %208
  br i1 %or.cond158, label %209, label %214

209:                                              ; preds = %202
  %210 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %210, ptr noundef nonnull @.str.28)
          to label %211 unwind label %212

211:                                              ; preds = %209
  call void @__cxa_throw(ptr nonnull %210, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #8
  unreachable

212:                                              ; preds = %209
  %213 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %210) #7
  br label %535

214:                                              ; preds = %202
  %215 = getelementptr inbounds i8, ptr %0, i64 7648
  %216 = load i8, ptr %215, align 8, !tbaa !129, !range !127, !noundef !128
  %217 = trunc nuw i8 %216 to i1
  br i1 %217, label %223, label %218

218:                                              ; preds = %214
  %219 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %219, ptr noundef nonnull @.str.29)
          to label %220 unwind label %221

220:                                              ; preds = %218
  call void @__cxa_throw(ptr nonnull %219, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #8
  unreachable

221:                                              ; preds = %218
  %222 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %219) #7
  br label %535

223:                                              ; preds = %214
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %20) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull @.str.30, ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %224 unwind label %226

224:                                              ; preds = %223
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(32) %19)
          to label %225 unwind label %228

225:                                              ; preds = %224
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #7
  br label %231

226:                                              ; preds = %223
  %227 = landingpad { ptr, i32 }
          cleanup
  br label %230

228:                                              ; preds = %224
  %229 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #7
  br label %230

230:                                              ; preds = %228, %226
  %.pn = phi { ptr, i32 } [ %229, %228 ], [ %227, %226 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #7
  br label %535

231:                                              ; preds = %1, %188, %196, %141, %148, %108, %120, %113, %70, %225
  %232 = getelementptr inbounds i8, ptr %0, i64 9400
  %233 = call noundef zeroext i1 @_ZNKSt6vectorIN11spirv_cross8PlsRemapESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %232) #7
  br i1 %233, label %234, label %237

234:                                              ; preds = %231
  %235 = getelementptr inbounds i8, ptr %0, i64 9424
  %236 = call noundef zeroext i1 @_ZNKSt6vectorIN11spirv_cross8PlsRemapESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %235) #7
  br i1 %236, label %252, label %237

237:                                              ; preds = %234, %231
  %238 = load i32, ptr %53, align 8, !tbaa !10
  %.not92 = icmp eq i32 %238, 4
  br i1 %.not92, label %244, label %239

239:                                              ; preds = %237
  %240 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %240, ptr noundef nonnull @.str.31)
          to label %241 unwind label %242

241:                                              ; preds = %239
  call void @__cxa_throw(ptr nonnull %240, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #8
  unreachable

242:                                              ; preds = %239
  %243 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %240) #7
  br label %535

244:                                              ; preds = %237
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %21) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %22) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull @.str.32, ptr noundef nonnull align 1 dereferenceable(1) %22)
          to label %245 unwind label %247

245:                                              ; preds = %244
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(32) %21)
          to label %246 unwind label %249

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

247:                                              ; preds = %244
  %248 = landingpad { ptr, i32 }
          cleanup
  br label %251

249:                                              ; preds = %245
  %250 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #7
  br label %251

251:                                              ; preds = %249, %247
  %.pn93 = phi { ptr, i32 } [ %250, %249 ], [ %248, %247 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %22) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #7
  br label %535

252:                                              ; preds = %246, %234
  %253 = getelementptr inbounds i8, ptr %0, i64 9472
  %254 = call noundef zeroext i1 @_ZNKSt6vectorISt4pairIjbESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %253) #7
  br i1 %254, label %298, label %255

255:                                              ; preds = %252
  %256 = load i32, ptr %53, align 8, !tbaa !10
  %.not95 = icmp eq i32 %256, 4
  br i1 %.not95, label %262, label %257

257:                                              ; preds = %255
  %258 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %258, ptr noundef nonnull @.str.33)
          to label %259 unwind label %260

259:                                              ; preds = %257
  call void @__cxa_throw(ptr nonnull %258, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #8
  unreachable

260:                                              ; preds = %257
  %261 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %258) #7
  br label %535

262:                                              ; preds = %255
  %263 = getelementptr inbounds i8, ptr %0, i64 7648
  %264 = load i8, ptr %263, align 8, !tbaa !129, !range !127, !noundef !128
  %265 = trunc nuw i8 %264 to i1
  br i1 %265, label %266, label %271

266:                                              ; preds = %262
  %267 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %267, ptr noundef nonnull @.str.34)
          to label %268 unwind label %269

268:                                              ; preds = %266
  call void @__cxa_throw(ptr nonnull %267, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #8
  unreachable

269:                                              ; preds = %266
  %270 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %267) #7
  br label %535

271:                                              ; preds = %262
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #7
  %272 = call ptr @_ZNSt6vectorISt4pairIjbESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %253) #7
  store ptr %272, ptr %23, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #7
  %273 = call ptr @_ZNSt6vectorISt4pairIjbESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %253) #7
  store ptr %273, ptr %24, align 8
  %274 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt4pairIjbESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %24) #7
  br i1 %274, label %.lr.ph181, label %.thread

.thread:                                          ; preds = %271
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #7
  br label %298

._crit_edge:                                      ; preds = %.lr.ph181
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #7
  br i1 %..067, label %281, label %289

.lr.ph181:                                        ; preds = %271, %.lr.ph181
  %.067180 = phi i1 [ %..067, %.lr.ph181 ], [ false, %271 ]
  %.070179 = phi i1 [ %.070., %.lr.ph181 ], [ false, %271 ]
  %275 = call noundef nonnull align 4 dereferenceable(5) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt4pairIjbESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %23) #7
  %276 = getelementptr inbounds i8, ptr %275, i64 4
  %277 = load i8, ptr %276, align 4, !tbaa !133, !range !127, !noundef !128
  %278 = trunc nuw i8 %277 to i1
  %not. = xor i1 %278, true
  %.070. = select i1 %not., i1 true, i1 %.070179
  %..067 = select i1 %278, i1 true, i1 %.067180
  %279 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt4pairIjbESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %23) #7
  %280 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt4pairIjbESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %24) #7
  br i1 %280, label %.lr.ph181, label %._crit_edge

281:                                              ; preds = %._crit_edge
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %25) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %26) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull @.str.35, ptr noundef nonnull align 1 dereferenceable(1) %26)
          to label %282 unwind label %284

282:                                              ; preds = %281
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(32) %25)
          to label %283 unwind label %286

283:                                              ; preds = %282
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %26) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #7
  br i1 %.070., label %290, label %298

284:                                              ; preds = %281
  %285 = landingpad { ptr, i32 }
          cleanup
  br label %288

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

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

289:                                              ; preds = %._crit_edge
  br i1 %.070., label %290, label %298

290:                                              ; preds = %283, %289
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %27) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %28) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull @.str.36, ptr noundef nonnull align 1 dereferenceable(1) %28)
          to label %291 unwind label %293

291:                                              ; preds = %290
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(32) %27)
          to label %292 unwind label %295

292:                                              ; preds = %291
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #7
  br label %298

293:                                              ; preds = %290
  %294 = landingpad { ptr, i32 }
          cleanup
  br label %297

295:                                              ; preds = %291
  %296 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #7
  br label %297

297:                                              ; preds = %295, %293
  %.pn98 = phi { ptr, i32 } [ %296, %295 ], [ %294, %293 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #7
  br label %535

298:                                              ; preds = %283, %.thread, %289, %292, %252
  %299 = getelementptr inbounds i8, ptr %0, i64 7636
  %300 = getelementptr inbounds i8, ptr %0, i64 7649
  %301 = load i8, ptr %300, align 1, !tbaa !135, !range !127, !noundef !128
  %302 = trunc nuw i8 %301 to i1
  br i1 %302, label %303, label %317

303:                                              ; preds = %298
  %304 = getelementptr inbounds i8, ptr %0, i64 7640
  %305 = load i8, ptr %304, align 8, !tbaa !29, !range !127, !noundef !128
  %306 = trunc nuw i8 %305 to i1
  %307 = load i32, ptr %299, align 4
  %308 = icmp ugt i32 %307, 409
  %or.cond161.not = select i1 %306, i1 true, i1 %308
  br i1 %or.cond161.not, label %317, label %309

309:                                              ; preds = %303
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %29) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %30) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef nonnull @.str.37, ptr noundef nonnull align 1 dereferenceable(1) %30)
          to label %310 unwind label %312

310:                                              ; preds = %309
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(32) %29)
          to label %311 unwind label %314

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

312:                                              ; preds = %309
  %313 = landingpad { ptr, i32 }
          cleanup
  br label %316

314:                                              ; preds = %310
  %315 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #7
  br label %316

316:                                              ; preds = %314, %312
  %.pn101 = phi { ptr, i32 } [ %315, %314 ], [ %313, %312 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %30) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %29) #7
  br label %535

317:                                              ; preds = %311, %303, %298
  %318 = getelementptr inbounds i8, ptr %0, i64 1756
  %319 = load i32, ptr %318, align 4, !tbaa !136
  switch i32 %319, label %355 [
    i32 5348, label %320
    i32 0, label %360
  ]

320:                                              ; preds = %317
  %321 = getelementptr inbounds i8, ptr %0, i64 7648
  %322 = load i8, ptr %321, align 8, !tbaa !129, !range !127, !noundef !128
  %323 = trunc nuw i8 %322 to i1
  br i1 %323, label %329, label %324

324:                                              ; preds = %320
  %325 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %325, ptr noundef nonnull @.str.38)
          to label %326 unwind label %327

326:                                              ; preds = %324
  call void @__cxa_throw(ptr nonnull %325, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #8
  unreachable

327:                                              ; preds = %324
  %328 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %325) #7
  br label %535

329:                                              ; preds = %320
  %330 = getelementptr inbounds i8, ptr %0, i64 7640
  %331 = load i8, ptr %330, align 8, !tbaa !29, !range !127, !noundef !128
  %332 = trunc nuw i8 %331 to i1
  %333 = load i32, ptr %299, align 4
  %334 = icmp ult i32 %333, 320
  %or.cond163 = select i1 %332, i1 %334, i1 false
  br i1 %or.cond163, label %335, label %340

335:                                              ; preds = %329
  %336 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %336, ptr noundef nonnull @.str.39)
          to label %337 unwind label %338

337:                                              ; preds = %335
  call void @__cxa_throw(ptr nonnull %336, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #8
  unreachable

338:                                              ; preds = %335
  %339 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %336) #7
  br label %535

340:                                              ; preds = %329
  %341 = icmp ugt i32 %333, 449
  %or.cond166.not = select i1 %332, i1 true, i1 %341
  br i1 %or.cond166.not, label %347, label %342

342:                                              ; preds = %340
  %343 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %343, ptr noundef nonnull @.str.40)
          to label %344 unwind label %345

344:                                              ; preds = %342
  call void @__cxa_throw(ptr nonnull %343, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #8
  unreachable

345:                                              ; preds = %342
  %346 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %343) #7
  br label %535

347:                                              ; preds = %340
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %31) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %32) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef nonnull @.str.41, ptr noundef nonnull align 1 dereferenceable(1) %32)
          to label %348 unwind label %350

348:                                              ; preds = %347
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(32) %31)
          to label %349 unwind label %352

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

350:                                              ; preds = %347
  %351 = landingpad { ptr, i32 }
          cleanup
  br label %354

352:                                              ; preds = %348
  %353 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #7
  br label %354

354:                                              ; preds = %352, %350
  %.pn104 = phi { ptr, i32 } [ %353, %352 ], [ %351, %350 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %32) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #7
  br label %535

355:                                              ; preds = %317
  %356 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %356, ptr noundef nonnull @.str.42)
          to label %357 unwind label %358

357:                                              ; preds = %355
  call void @__cxa_throw(ptr nonnull %356, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #8
  unreachable

358:                                              ; preds = %355
  %359 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %356) #7
  br label %535

360:                                              ; preds = %317, %349
  %361 = getelementptr inbounds i8, ptr %0, i64 1264
  %362 = call noundef ptr @_ZN11spirv_cross10VectorViewIN3spv10CapabilityEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %361) #7
  %363 = call noundef ptr @_ZN11spirv_cross10VectorViewIN3spv10CapabilityEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %361) #7
  %.not106183 = icmp eq ptr %362, %363
  br i1 %.not106183, label %._crit_edge187, label %.lr.ph186

.lr.ph186:                                        ; preds = %360
  %364 = getelementptr inbounds i8, ptr %0, i64 7640
  %365 = getelementptr inbounds i8, ptr %0, i64 7648
  %366 = getelementptr inbounds i8, ptr %0, i64 9396
  %367 = getelementptr inbounds i8, ptr %0, i64 7660
  %368 = getelementptr inbounds i8, ptr %52, i64 236
  br label %371

._crit_edge187:                                   ; preds = %499, %360
  %369 = getelementptr inbounds i8, ptr %0, i64 7660
  %370 = load i32, ptr %369, align 4, !tbaa !137
  %.not107 = icmp eq i32 %370, 0
  br i1 %.not107, label %525, label %501

371:                                              ; preds = %.lr.ph186, %499
  %.069184 = phi ptr [ %362, %.lr.ph186 ], [ %500, %499 ]
  %372 = load i32, ptr %.069184, align 4, !tbaa !130
  switch i32 %372, label %499 [
    i32 5301, label %373
    i32 5302, label %392
    i32 5251, label %408
    i32 4442, label %419
    i32 4441, label %419
    i32 4439, label %424
    i32 4472, label %457
    i32 4478, label %478
  ]

373:                                              ; preds = %371
  %374 = load i8, ptr %365, align 8, !tbaa !129, !range !127, !noundef !128
  %375 = trunc nuw i8 %374 to i1
  br i1 %375, label %384, label %376

376:                                              ; preds = %373
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %33) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %34) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef nonnull @.str.43, ptr noundef nonnull align 1 dereferenceable(1) %34)
          to label %377 unwind label %379

377:                                              ; preds = %376
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(32) %33)
          to label %378 unwind label %381

378:                                              ; preds = %377
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %34) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %33) #7
  br label %499

379:                                              ; preds = %376
  %380 = landingpad { ptr, i32 }
          cleanup
  br label %383

381:                                              ; preds = %377
  %382 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #7
  br label %383

383:                                              ; preds = %381, %379
  %.pn125 = phi { ptr, i32 } [ %382, %381 ], [ %380, %379 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %34) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %33) #7
  br label %535

384:                                              ; preds = %373
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %35) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %36) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef nonnull @.str.44, ptr noundef nonnull align 1 dereferenceable(1) %36)
          to label %385 unwind label %387

385:                                              ; preds = %384
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(32) %35)
          to label %386 unwind label %389

386:                                              ; preds = %385
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %36) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %35) #7
  br label %499

387:                                              ; preds = %384
  %388 = landingpad { ptr, i32 }
          cleanup
  br label %391

389:                                              ; preds = %385
  %390 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #7
  br label %391

391:                                              ; preds = %389, %387
  %.pn127 = phi { ptr, i32 } [ %390, %389 ], [ %388, %387 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %36) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %35) #7
  br label %535

392:                                              ; preds = %371
  %393 = load i8, ptr %365, align 8, !tbaa !129, !range !127, !noundef !128
  %394 = trunc nuw i8 %393 to i1
  br i1 %394, label %400, label %395

395:                                              ; preds = %392
  %396 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %396, ptr noundef nonnull @.str.45)
          to label %397 unwind label %398

397:                                              ; preds = %395
  call void @__cxa_throw(ptr nonnull %396, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #8
  unreachable

398:                                              ; preds = %395
  %399 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %396) #7
  br label %535

400:                                              ; preds = %392
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %37) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %38) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %37, ptr noundef nonnull @.str.44, ptr noundef nonnull align 1 dereferenceable(1) %38)
          to label %401 unwind label %403

401:                                              ; preds = %400
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(32) %37)
          to label %402 unwind label %405

402:                                              ; preds = %401
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %38) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %37) #7
  br label %499

403:                                              ; preds = %400
  %404 = landingpad { ptr, i32 }
          cleanup
  br label %407

405:                                              ; preds = %401
  %406 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #7
  br label %407

407:                                              ; preds = %405, %403
  %.pn123 = phi { ptr, i32 } [ %406, %405 ], [ %404, %403 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %38) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %37) #7
  br label %535

408:                                              ; preds = %371
  %409 = load i32, ptr %53, align 8, !tbaa !10
  %410 = icmp eq i32 %409, 3
  br i1 %410, label %411, label %499

411:                                              ; preds = %408
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %39) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %40) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %39, ptr noundef nonnull @.str.46, ptr noundef nonnull align 1 dereferenceable(1) %40)
          to label %412 unwind label %414

412:                                              ; preds = %411
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(32) %39)
          to label %413 unwind label %416

413:                                              ; preds = %412
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %40) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %39) #7
  store i8 1, ptr %368, align 4, !tbaa !138
  br label %499

414:                                              ; preds = %411
  %415 = landingpad { ptr, i32 }
          cleanup
  br label %418

416:                                              ; preds = %412
  %417 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #7
  br label %418

418:                                              ; preds = %416, %414
  %.pn121 = phi { ptr, i32 } [ %417, %416 ], [ %415, %414 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %40) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %39) #7
  br label %535

419:                                              ; preds = %371, %371
  %420 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %420, ptr noundef nonnull @.str.47)
          to label %421 unwind label %422

421:                                              ; preds = %419
  call void @__cxa_throw(ptr nonnull %420, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #8
  unreachable

422:                                              ; preds = %419
  %423 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %420) #7
  br label %535

424:                                              ; preds = %371
  %425 = load i8, ptr %365, align 8, !tbaa !129, !range !127, !noundef !128
  %426 = trunc nuw i8 %425 to i1
  br i1 %426, label %427, label %435

427:                                              ; preds = %424
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %41) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %42) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %41, ptr noundef nonnull @.str.48, ptr noundef nonnull align 1 dereferenceable(1) %42)
          to label %428 unwind label %430

428:                                              ; preds = %427
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(32) %41)
          to label %429 unwind label %432

429:                                              ; preds = %428
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %42) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %41) #7
  br label %499

430:                                              ; preds = %427
  %431 = landingpad { ptr, i32 }
          cleanup
  br label %434

432:                                              ; preds = %428
  %433 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #7
  br label %434

434:                                              ; preds = %432, %430
  %.pn119 = phi { ptr, i32 } [ %433, %432 ], [ %431, %430 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %42) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %41) #7
  br label %535

435:                                              ; preds = %424
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %43) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %44) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %43, ptr noundef nonnull @.str.49, ptr noundef nonnull align 1 dereferenceable(1) %44)
          to label %436 unwind label %443

436:                                              ; preds = %435
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(32) %43)
          to label %437 unwind label %445

437:                                              ; preds = %436
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %44) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %43) #7
  %438 = load i32, ptr %367, align 4, !tbaa !137
  %439 = icmp eq i32 %438, 0
  br i1 %439, label %440, label %450

440:                                              ; preds = %437
  %441 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %441, ptr noundef nonnull @.str.50)
          to label %442 unwind label %448

442:                                              ; preds = %440
  call void @__cxa_throw(ptr nonnull %441, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #8
  unreachable

443:                                              ; preds = %435
  %444 = landingpad { ptr, i32 }
          cleanup
  br label %447

445:                                              ; preds = %436
  %446 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #7
  br label %447

447:                                              ; preds = %445, %443
  %.pn116 = phi { ptr, i32 } [ %446, %445 ], [ %444, %443 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %44) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %43) #7
  br label %535

448:                                              ; preds = %440
  %449 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %441) #7
  br label %535

450:                                              ; preds = %437
  %451 = call noundef i32 @_ZNK11spirv_cross8Compiler19get_execution_modelEv(ptr noundef nonnull align 8 dereferenceable(3176) %0)
  %.not118 = icmp eq i32 %451, 0
  br i1 %.not118, label %499, label %452

452:                                              ; preds = %450
  %453 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %453, ptr noundef nonnull @.str.51)
          to label %454 unwind label %455

454:                                              ; preds = %452
  call void @__cxa_throw(ptr nonnull %453, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #8
  unreachable

455:                                              ; preds = %452
  %456 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %453) #7
  br label %535

457:                                              ; preds = %371
  %458 = load i8, ptr %364, align 8, !tbaa !29, !range !127, !noundef !128
  %459 = trunc nuw i8 %458 to i1
  %460 = load i32, ptr %299, align 4
  %461 = icmp ult i32 %460, 460
  %or.cond168 = select i1 %459, i1 true, i1 %461
  br i1 %or.cond168, label %465, label %462

462:                                              ; preds = %457
  %463 = load i8, ptr %365, align 8, !tbaa !129, !range !127, !noundef !128
  %464 = trunc nuw i8 %463 to i1
  br i1 %464, label %470, label %465

465:                                              ; preds = %462, %457
  %466 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %466, ptr noundef nonnull @.str.52)
          to label %467 unwind label %468

467:                                              ; preds = %465
  call void @__cxa_throw(ptr nonnull %466, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #8
  unreachable

468:                                              ; preds = %465
  %469 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %466) #7
  br label %535

470:                                              ; preds = %462
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %45) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %46) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %45, ptr noundef nonnull @.str.53, ptr noundef nonnull align 1 dereferenceable(1) %46)
          to label %471 unwind label %473

471:                                              ; preds = %470
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(32) %45)
          to label %472 unwind label %475

472:                                              ; preds = %471
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %46) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %45) #7
  store i8 1, ptr %366, align 4, !tbaa !132
  br label %499

473:                                              ; preds = %470
  %474 = landingpad { ptr, i32 }
          cleanup
  br label %477

475:                                              ; preds = %471
  %476 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #7
  br label %477

477:                                              ; preds = %475, %473
  %.pn114 = phi { ptr, i32 } [ %476, %475 ], [ %474, %473 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %46) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %45) #7
  br label %535

478:                                              ; preds = %371
  %479 = load i8, ptr %364, align 8, !tbaa !29, !range !127, !noundef !128
  %480 = trunc nuw i8 %479 to i1
  %481 = load i32, ptr %299, align 4
  %482 = icmp ult i32 %481, 460
  %or.cond170 = select i1 %480, i1 true, i1 %482
  br i1 %or.cond170, label %486, label %483

483:                                              ; preds = %478
  %484 = load i8, ptr %365, align 8, !tbaa !129, !range !127, !noundef !128
  %485 = trunc nuw i8 %484 to i1
  br i1 %485, label %491, label %486

486:                                              ; preds = %483, %478
  %487 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %487, ptr noundef nonnull @.str.52)
          to label %488 unwind label %489

488:                                              ; preds = %486
  call void @__cxa_throw(ptr nonnull %487, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #8
  unreachable

489:                                              ; preds = %486
  %490 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %487) #7
  br label %535

491:                                              ; preds = %483
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %47) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %48) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef nonnull @.str.54, ptr noundef nonnull align 1 dereferenceable(1) %48)
          to label %492 unwind label %494

492:                                              ; preds = %491
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(32) %47)
          to label %493 unwind label %496

493:                                              ; preds = %492
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %48) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %47) #7
  store i8 1, ptr %366, align 4, !tbaa !132
  br label %499

494:                                              ; preds = %491
  %495 = landingpad { ptr, i32 }
          cleanup
  br label %498

496:                                              ; preds = %492
  %497 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #7
  br label %498

498:                                              ; preds = %496, %494
  %.pn112 = phi { ptr, i32 } [ %497, %496 ], [ %495, %494 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %48) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %47) #7
  br label %535

499:                                              ; preds = %371, %429, %450, %408, %413, %378, %386, %493, %472, %402
  %500 = getelementptr inbounds i8, ptr %.069184, i64 4
  %.not106 = icmp eq ptr %500, %363
  br i1 %.not106, label %._crit_edge187, label %371

501:                                              ; preds = %._crit_edge187
  %502 = getelementptr inbounds i8, ptr %0, i64 7648
  %503 = load i8, ptr %502, align 8, !tbaa !129, !range !127, !noundef !128
  %504 = trunc nuw i8 %503 to i1
  br i1 %504, label %505, label %510

505:                                              ; preds = %501
  %506 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %506, ptr noundef nonnull @.str.55)
          to label %507 unwind label %508

507:                                              ; preds = %505
  call void @__cxa_throw(ptr nonnull %506, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #8
  unreachable

508:                                              ; preds = %505
  %509 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %506) #7
  br label %535

510:                                              ; preds = %501
  %511 = call noundef i32 @_ZNK11spirv_cross8Compiler19get_execution_modelEv(ptr noundef nonnull align 8 dereferenceable(3176) %0)
  %.not108 = icmp eq i32 %511, 0
  br i1 %.not108, label %517, label %512

512:                                              ; preds = %510
  %513 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %513, ptr noundef nonnull @.str.51)
          to label %514 unwind label %515

514:                                              ; preds = %512
  call void @__cxa_throw(ptr nonnull %513, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #8
  unreachable

515:                                              ; preds = %512
  %516 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %513) #7
  br label %535

517:                                              ; preds = %510
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %49) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %50) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %49, ptr noundef nonnull @.str.49, ptr noundef nonnull align 1 dereferenceable(1) %50)
          to label %518 unwind label %520

518:                                              ; preds = %517
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 8 dereferenceable(32) %49)
          to label %519 unwind label %522

519:                                              ; preds = %518
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %50) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %49) #7
  br label %525

520:                                              ; preds = %517
  %521 = landingpad { ptr, i32 }
          cleanup
  br label %524

522:                                              ; preds = %518
  %523 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #7
  br label %524

524:                                              ; preds = %522, %520
  %.pn109 = phi { ptr, i32 } [ %523, %522 ], [ %521, %520 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %50) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %49) #7
  br label %535

525:                                              ; preds = %519, %._crit_edge187
  %526 = getelementptr inbounds i8, ptr %0, i64 1320
  %527 = call noundef ptr @_ZN11spirv_cross10VectorViewINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %526) #7
  %528 = call noundef ptr @_ZN11spirv_cross10VectorViewINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %526) #7
  %.not111188 = icmp eq ptr %527, %528
  br i1 %.not111188, label %._crit_edge192, label %.lr.ph191

.lr.ph191:                                        ; preds = %525
  %529 = getelementptr inbounds i8, ptr %0, i64 9397
  br label %530

._crit_edge192:                                   ; preds = %533, %525
  ret void

530:                                              ; preds = %.lr.ph191, %533
  %.064189 = phi ptr [ %527, %.lr.ph191 ], [ %534, %533 ]
  %531 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %.064189, ptr noundef nonnull @.str.56)
  br i1 %531, label %532, label %533

532:                                              ; preds = %530
  store i8 1, ptr %529, align 1, !tbaa !139
  br label %533

533:                                              ; preds = %532, %530
  %534 = getelementptr inbounds i8, ptr %.064189, i64 32
  %.not111 = icmp eq ptr %534, %528
  br i1 %.not111, label %._crit_edge192, label %530

535:                                              ; preds = %383, %391, %398, %407, %418, %422, %434, %447, %448, %455, %468, %477, %489, %498, %288, %297, %524, %515, %508, %358, %354, %345, %338, %327, %316, %269, %260, %251, %242, %230, %221, %212, %201, %193, %173, %164, %153, %140, %125, %107, %94, %78, %69
  %.pn131 = phi { ptr, i32 } [ %339, %338 ], [ %509, %508 ], [ %516, %515 ], [ %.pn109, %524 ], [ %.pn104, %354 ], [ %346, %345 ], [ %328, %327 ], [ %359, %358 ], [ %.pn101, %316 ], [ %261, %260 ], [ %270, %269 ], [ %243, %242 ], [ %.pn93, %251 ], [ %213, %212 ], [ %.pn, %230 ], [ %222, %221 ], [ %165, %164 ], [ %.pn77, %193 ], [ %.pn75, %201 ], [ %174, %173 ], [ %.pn81, %153 ], [ %.pn79, %140 ], [ %.pn88, %125 ], [ %.pn85, %107 ], [ %.pn83, %94 ], [ %79, %78 ], [ %.pn90, %69 ], [ %.pn98, %297 ], [ %.pn96, %288 ], [ %490, %489 ], [ %.pn112, %498 ], [ %469, %468 ], [ %.pn114, %477 ], [ %.pn119, %434 ], [ %449, %448 ], [ %456, %455 ], [ %.pn116, %447 ], [ %423, %422 ], [ %.pn121, %418 ], [ %.pn123, %407 ], [ %399, %398 ], [ %.pn127, %391 ], [ %.pn125, %383 ]
  resume { ptr, i32 } %.pn131
}

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZN11spirv_cross8ParsedIR17for_each_typed_idINS_8SPIRTypeEZNS_12CompilerGLSL22find_static_extensionsEvE3$_0EEvRKT0_"(ptr noundef nonnull align 8 dereferenceable(1920), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #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 #1 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 uwtable
declare dso_local noundef zeroext i1 @_ZNK11spirv_cross6Bitset3getEj(ptr noundef nonnull align 8 dereferenceable(64), i32 noundef) local_unnamed_addr #5 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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