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

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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator.71" = type { i8 }
%"struct.spirv_cross::Instruction" = type { i16, i16, i32, i32 }
%"class.spirv_cross::CompilerGLSL" = type { %"class.spirv_cross::Compiler", ptr, %"class.spirv_cross::SmallVector.159", i8, %"class.spirv_cross::StringStream", ptr, ptr, i8, i8, %"struct.spirv_cross::CompilerGLSL::Options", %"class.std::unordered_set.165", %"class.std::unordered_set.165", %"class.std::unordered_set.165", %"class.std::unordered_set.165", %"class.std::unordered_set.165", %"class.std::unordered_set.165", %"class.std::unordered_set.165", %"class.std::unordered_map.185", %"class.std::unordered_map.145", i8, [7 x i8], %"struct.spirv_cross::CompilerGLSL::BackendVariations", i32, %"class.std::unordered_set", %"class.std::unordered_set", %"class.std::unordered_set", %"class.std::unordered_map.199", %"struct.spirv_cross::CompilerGLSL::ShaderSubgroupSupportHelper", %"class.std::unordered_map.213", %"class.spirv_cross::SmallVector.27", %"class.spirv_cross::SmallVector.27", %"class.std::unordered_map.213", %"class.spirv_cross::SmallVector.227", i32, i32, i32, i8, i8, %"class.std::vector.230", %"class.std::vector.230", %"class.std::vector.235", %"class.std::vector.240", %"class.std::unordered_map.213", %"class.std::unordered_set", %"class.std::unordered_set", i8, %"class.std::unordered_set.245", %"class.std::unordered_set", ptr, %"class.std::unordered_map.263" }
%"class.spirv_cross::Compiler" = type { ptr, %"class.spirv_cross::ParsedIR", %"class.spirv_cross::SmallVector.92", %"class.spirv_cross::SmallVector.92", ptr, ptr, i32, %"class.std::unordered_set.95", i8, %"class.std::unordered_set", i8, i8, %"class.spirv_cross::SmallVector.114", %"class.spirv_cross::SmallVector.92", %"class.std::function", %"class.std::unordered_set", %"class.std::unordered_set", %"class.std::unordered_set", %"class.std::unordered_set", %"class.std::unordered_set", %"class.spirv_cross::Bitset", %"class.spirv_cross::Bitset", i32, i32, i8, %"class.std::unordered_set", i8, i8, i32, %"class.std::unordered_map.117", %"class.spirv_cross::SmallVector.92", %"class.std::unordered_map.131", %"class.std::unordered_set", i8, %"class.std::unordered_map.145" }
%"class.spirv_cross::ParsedIR" = type { %"class.std::unique_ptr", %"class.std::vector", %"class.spirv_cross::SmallVector", %"class.std::unordered_map", [14 x %"class.spirv_cross::SmallVector.7"], %"class.spirv_cross::SmallVector.7", %"class.spirv_cross::SmallVector.7", %"class.std::unordered_map.10", %"class.spirv_cross::SmallVector.24", %"class.spirv_cross::SmallVector.27", %"class.spirv_cross::SmallVector.30", %"class.std::unordered_map.33", %"class.std::unordered_map.52", %"class.spirv_cross::TypedID", %"struct.spirv_cross::ParsedIR::Source", i32, i32, i32, i32, %"class.std::__cxx11::basic_string", %"class.spirv_cross::Bitset", %"class.std::unordered_set" }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.1" }
%"struct.std::_Head_base.1" = type { ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.spirv_cross::SmallVector" = type { %"class.spirv_cross::VectorView", i64, %"class.spirv_cross::AlignedBuffer" }
%"class.spirv_cross::VectorView" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer" = type { [192 x i8] }
%"class.std::unordered_map" = type { %"class.std::_Hashtable" }
%"class.std::_Hashtable" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"class.spirv_cross::SmallVector.7" = type { %"class.spirv_cross::VectorView.8", i64, %"class.spirv_cross::AlignedBuffer.9" }
%"class.spirv_cross::VectorView.8" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.9" = type { [32 x i8] }
%"class.std::unordered_map.10" = type { %"class.std::_Hashtable.11" }
%"class.std::_Hashtable.11" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.spirv_cross::SmallVector.24" = type { %"class.spirv_cross::VectorView.25", i64, %"class.spirv_cross::AlignedBuffer.26" }
%"class.spirv_cross::VectorView.25" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.26" = type { [32 x i8] }
%"class.spirv_cross::SmallVector.30" = type { %"class.spirv_cross::VectorView.31", i64, %"class.spirv_cross::AlignedBuffer.32" }
%"class.spirv_cross::VectorView.31" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.32" = type { [8 x i8] }
%"class.std::unordered_map.33" = type { %"class.std::_Hashtable.34" }
%"class.std::_Hashtable.34" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.52" = type { %"class.std::_Hashtable.53" }
%"class.std::_Hashtable.53" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.spirv_cross::TypedID" = type { i32 }
%"struct.spirv_cross::ParsedIR::Source" = type <{ i32, i8, i8, i8, i8 }>
%"class.std::unordered_set.95" = type { %"class.std::_Hashtable.96" }
%"class.std::_Hashtable.96" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.spirv_cross::SmallVector.114" = type { %"class.spirv_cross::VectorView.115", i64, %"class.spirv_cross::AlignedBuffer.116" }
%"class.spirv_cross::VectorView.115" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.116" = type { [96 x i8] }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%"class.spirv_cross::Bitset" = type { i64, %"class.std::unordered_set" }
%"class.std::unordered_map.117" = type { %"class.std::_Hashtable.118" }
%"class.std::_Hashtable.118" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.spirv_cross::SmallVector.92" = type { %"class.spirv_cross::VectorView.93", i64, %"class.spirv_cross::AlignedBuffer.94" }
%"class.spirv_cross::VectorView.93" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.94" = type { [32 x i8] }
%"class.std::unordered_map.131" = type { %"class.std::_Hashtable.132" }
%"class.std::_Hashtable.132" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.spirv_cross::SmallVector.159" = type { %"class.spirv_cross::VectorView.160", i64, %"class.spirv_cross::AlignedBuffer.161" }
%"class.spirv_cross::VectorView.160" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.161" = type { [64 x i8] }
%"class.spirv_cross::StringStream" = type { %"struct.spirv_cross::StringStream<>::Buffer", [4096 x i8], %"class.spirv_cross::SmallVector.162" }
%"struct.spirv_cross::StringStream<>::Buffer" = type { ptr, i64, i64 }
%"class.spirv_cross::SmallVector.162" = type { %"class.spirv_cross::VectorView.163", i64, %"class.spirv_cross::AlignedBuffer.164" }
%"class.spirv_cross::VectorView.163" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.164" = type { [192 x i8] }
%"struct.spirv_cross::CompilerGLSL::Options" = type { i32, i8, i8, i32, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i32, %"struct.spirv_cross::CompilerGLSL::Options::VertexOptions", %"struct.spirv_cross::CompilerGLSL::Options::FragmentOptions" }
%"struct.spirv_cross::CompilerGLSL::Options::VertexOptions" = type { i8, i8, i8 }
%"struct.spirv_cross::CompilerGLSL::Options::FragmentOptions" = type { i32, i32 }
%"class.std::unordered_set.165" = type { %"class.std::_Hashtable.166" }
%"class.std::_Hashtable.166" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.185" = type { %"class.std::_Hashtable.186" }
%"class.std::_Hashtable.186" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.145" = type { %"class.std::_Hashtable.146" }
%"class.std::_Hashtable.146" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.spirv_cross::CompilerGLSL::BackendVariations" = type <{ %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", i8, i8, i8, i8, [4 x i8], ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, [4 x i8] }>
%"class.std::unordered_map.199" = type { %"class.std::_Hashtable.200" }
%"class.std::_Hashtable.200" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.spirv_cross::CompilerGLSL::ShaderSubgroupSupportHelper" = type { i32 }
%"class.spirv_cross::SmallVector.27" = type { %"class.spirv_cross::VectorView.28", i64, %"class.spirv_cross::AlignedBuffer.29" }
%"class.spirv_cross::VectorView.28" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.29" = type { [256 x i8] }
%"class.spirv_cross::SmallVector.227" = type { %"class.spirv_cross::VectorView.228", i64, %"class.spirv_cross::AlignedBuffer.229" }
%"class.spirv_cross::VectorView.228" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.229" = type { [32 x i8] }
%"class.std::vector.230" = type { %"struct.std::_Vector_base.231" }
%"struct.std::_Vector_base.231" = type { %"struct.std::_Vector_base<spirv_cross::PlsRemap, std::allocator<spirv_cross::PlsRemap>>::_Vector_impl" }
%"struct.std::_Vector_base<spirv_cross::PlsRemap, std::allocator<spirv_cross::PlsRemap>>::_Vector_impl" = type { %"struct.std::_Vector_base<spirv_cross::PlsRemap, std::allocator<spirv_cross::PlsRemap>>::_Vector_impl_data" }
%"struct.std::_Vector_base<spirv_cross::PlsRemap, std::allocator<spirv_cross::PlsRemap>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.235" = type { %"struct.std::_Vector_base.236" }
%"struct.std::_Vector_base.236" = type { %"struct.std::_Vector_base<std::pair<unsigned int, unsigned int>, std::allocator<std::pair<unsigned int, unsigned int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<unsigned int, unsigned int>, std::allocator<std::pair<unsigned int, unsigned int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<unsigned int, unsigned int>, std::allocator<std::pair<unsigned int, unsigned int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<unsigned int, unsigned int>, std::allocator<std::pair<unsigned int, unsigned int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.240" = type { %"struct.std::_Vector_base.241" }
%"struct.std::_Vector_base.241" = type { %"struct.std::_Vector_base<std::pair<unsigned int, bool>, std::allocator<std::pair<unsigned int, bool>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<unsigned int, bool>, std::allocator<std::pair<unsigned int, bool>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<unsigned int, bool>, std::allocator<std::pair<unsigned int, bool>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<unsigned int, bool>, std::allocator<std::pair<unsigned int, bool>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::unordered_map.213" = type { %"class.std::_Hashtable.214" }
%"class.std::_Hashtable.214" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_set.245" = type { %"class.std::_Hashtable.246" }
%"class.std::_Hashtable.246" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_set" = type { %"class.std::_Hashtable.74" }
%"class.std::_Hashtable.74" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.263" = type { %"class.std::_Hashtable.264" }
%"class.std::_Hashtable.264" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.spirv_cross::SPIRType" = type { %"struct.spirv_cross::IVariant.base", i32, i32, i32, i32, i32, %"class.spirv_cross::SmallVector.92", %"class.spirv_cross::SmallVector.284", i32, i8, i8, i32, %"class.spirv_cross::SmallVector.227", %"class.spirv_cross::SmallVector.92", %"struct.spirv_cross::SPIRType::ImageType", %"class.spirv_cross::TypedID.281", %"class.spirv_cross::TypedID.281", %"class.std::unordered_set.165" }
%"struct.spirv_cross::IVariant.base" = type <{ ptr, %"class.spirv_cross::TypedID.280" }>
%"class.spirv_cross::TypedID.280" = type { i32 }
%"class.spirv_cross::SmallVector.284" = type { %"class.spirv_cross::VectorView.285", i64, %"class.spirv_cross::AlignedBuffer.286" }
%"class.spirv_cross::VectorView.285" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.286" = type { [8 x i8] }
%"struct.spirv_cross::SPIRType::ImageType" = type { %"class.spirv_cross::TypedID.281", i32, i8, i8, i8, i32, i32, i32 }
%"class.spirv_cross::TypedID.281" = type { i32 }

@_ZTIN11spirv_cross13CompilerErrorE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.886 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.887 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.888 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.889 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.890 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.891 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.1155 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.1156 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.1157 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.1158 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.1159 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.1160 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.1161 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.1162 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.1163 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.1164 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.1165 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.1166 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.1167 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.1168 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.1169 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.1170 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.1171 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.1172 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.1173 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.1174 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.1175 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.1176 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.1177 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1178 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.1179 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.1180 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.1181 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.1182 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.1183 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.1184 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.1185 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.1186 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.1187 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.1188 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.1189 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.1190 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.1191 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.1192 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.1193 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.1194 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.1195 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.1196 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.1197 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.1198 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.1199 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.1200 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.1201 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.1202 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.1203 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.1204 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.1205 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.1206 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.1207 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.1208 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.1209 = external hidden unnamed_addr constant [22 x i8], align 1

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

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

declare ptr @__cxa_allocate_exception(i64)

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

declare i32 @__gxx_personality_v0(...)

declare void @__cxa_free_exception(ptr)

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

declare void @__cxa_throw(ptr, ptr, ptr)

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef i32 @_ZN11spirv_crossL18to_signed_basetypeEj(i32 noundef) #5

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef i32 @_ZN11spirv_crossL20to_unsigned_basetypeEj(i32 noundef) #5

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN11spirv_cross12CompilerGLSL34is_supported_subgroup_op_in_openglEN3spv2OpEPKj(i32 noundef, ptr noundef) #3 align 2

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11spirv_cross12CompilerGLSL16emit_subgroup_opERKNS_11InstructionE(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 4 dereferenceable(12) %1) unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %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 ptr, align 8
  %18 = alloca i32, align 4
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"class.std::allocator.71", align 1
  %21 = alloca i32, align 4
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  %23 = alloca %"class.std::allocator.71", align 1
  %24 = alloca i32, align 4
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca %"class.std::allocator.71", align 1
  %27 = alloca i32, align 4
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  %29 = alloca %"class.std::allocator.71", align 1
  %30 = alloca i32, align 4
  %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 i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca %"class.std::__cxx11::basic_string", align 8
  %41 = alloca %"class.std::allocator.71", align 1
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca i32, align 4
  %54 = alloca i32, align 4
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca i32, align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  %60 = load ptr, ptr %3, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #6
  %61 = load ptr, ptr %4, align 8, !tbaa !5
  %62 = call noundef ptr @_ZNK11spirv_cross8Compiler6streamERKNS_11InstructionE(ptr noundef nonnull align 8 dereferenceable(3176) %60, ptr noundef nonnull align 4 dereferenceable(12) %61)
  store ptr %62, ptr %5, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #6
  %63 = load ptr, ptr %4, align 8, !tbaa !5
  %64 = getelementptr inbounds %"struct.spirv_cross::Instruction", ptr %63, i32 0, i32 0
  %65 = load i16, ptr %64, align 4, !tbaa !9
  %66 = zext i16 %65 to i32
  store i32 %66, ptr %6, align 4, !tbaa !13
  %67 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %60, i32 0, i32 9
  %68 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %67, i32 0, i32 4
  %69 = load i8, ptr %68, align 4, !tbaa !15, !range !124, !noundef !125
  %70 = trunc i8 %69 to i1
  br i1 %70, label %82, label %71

71:                                               ; preds = %2
  %72 = load i32, ptr %6, align 4, !tbaa !13
  %73 = load ptr, ptr %5, align 8, !tbaa !5
  %74 = call noundef zeroext i1 @_ZN11spirv_cross12CompilerGLSL34is_supported_subgroup_op_in_openglEN3spv2OpEPKj(i32 noundef %72, ptr noundef %73)
  br i1 %74, label %82, label %75

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

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

78:                                               ; preds = %75
  %79 = landingpad { ptr, i32 }
          cleanup
  %80 = extractvalue { ptr, i32 } %79, 0
  store ptr %80, ptr %7, align 8
  %81 = extractvalue { ptr, i32 } %79, 1
  store i32 %81, ptr %8, align 4
  call void @__cxa_free_exception(ptr %76) #6
  br label %1505

82:                                               ; preds = %71, %2
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #6
  %83 = load ptr, ptr %4, align 8, !tbaa !5
  %84 = call noundef i32 @_ZNK11spirv_cross12CompilerGLSL33get_integer_width_for_instructionERKNS_11InstructionE(ptr noundef nonnull align 8 dereferenceable(9848) %60, ptr noundef nonnull align 4 dereferenceable(12) %83)
  store i32 %84, ptr %9, align 4, !tbaa !126
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #6
  %85 = load i32, ptr %9, align 4, !tbaa !126
  %86 = call noundef i32 @_ZN11spirv_crossL18to_signed_basetypeEj(i32 noundef %85)
  store i32 %86, ptr %10, align 4, !tbaa !127
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #6
  %87 = load i32, ptr %9, align 4, !tbaa !126
  %88 = call noundef i32 @_ZN11spirv_crossL20to_unsigned_basetypeEj(i32 noundef %87)
  store i32 %88, ptr %11, align 4, !tbaa !127
  %89 = load i32, ptr %6, align 4, !tbaa !13
  switch i32 %89, label %382 [
    i32 333, label %90
    i32 342, label %91
    i32 341, label %107
    i32 340, label %108
    i32 339, label %109
    i32 343, label %110
    i32 344, label %110
    i32 337, label %111
    i32 338, label %111
    i32 345, label %112
    i32 346, label %112
    i32 347, label %124
    i32 348, label %124
    i32 334, label %136
    i32 335, label %136
    i32 336, label %136
    i32 349, label %153
    i32 350, label %195
    i32 351, label %237
    i32 352, label %279
    i32 355, label %321
    i32 358, label %321
    i32 353, label %321
    i32 356, label %321
    i32 354, label %321
    i32 357, label %321
    i32 359, label %321
    i32 360, label %321
    i32 361, label %321
    i32 362, label %321
    i32 363, label %321
    i32 364, label %321
    i32 366, label %370
    i32 365, label %370
  ]

90:                                               ; preds = %82
  call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef 9)
  br label %389

91:                                               ; preds = %82
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #6
  %92 = load ptr, ptr %5, align 8, !tbaa !5
  %93 = getelementptr inbounds i32, ptr %92, i64 3
  %94 = load i32, ptr %93, align 4, !tbaa !126
  store i32 %94, ptr %12, align 4, !tbaa !128
  %95 = load i32, ptr %12, align 4, !tbaa !128
  %96 = icmp eq i32 %95, 0
  br i1 %96, label %97, label %98

97:                                               ; preds = %91
  call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef 15)
  br label %106

98:                                               ; preds = %91
  %99 = load i32, ptr %12, align 4, !tbaa !128
  %100 = icmp eq i32 %99, 1
  br i1 %100, label %104, label %101

101:                                              ; preds = %98
  %102 = load i32, ptr %12, align 4, !tbaa !128
  %103 = icmp eq i32 %102, 2
  br i1 %103, label %104, label %105

104:                                              ; preds = %101, %98
  call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef 13)
  br label %105

105:                                              ; preds = %104, %101
  br label %106

106:                                              ; preds = %105, %97
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #6
  br label %389

107:                                              ; preds = %82
  call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef 14)
  br label %389

108:                                              ; preds = %82
  call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef 13)
  br label %389

109:                                              ; preds = %82
  call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef 12)
  br label %389

110:                                              ; preds = %82, %82
  call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef 6)
  br label %389

111:                                              ; preds = %82, %82
  call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef 5)
  br label %389

112:                                              ; preds = %82, %82
  call void @llvm.lifetime.start.p0(i64 32, ptr %13) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef @.str.1156, ptr noundef nonnull align 1 dereferenceable(1) %14)
          to label %113 unwind label %115

113:                                              ; preds = %112
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %60, ptr noundef nonnull align 8 dereferenceable(32) %13)
          to label %114 unwind label %119

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

115:                                              ; preds = %112
  %116 = landingpad { ptr, i32 }
          cleanup
  %117 = extractvalue { ptr, i32 } %116, 0
  store ptr %117, ptr %7, align 8
  %118 = extractvalue { ptr, i32 } %116, 1
  store i32 %118, ptr %8, align 4
  br label %123

119:                                              ; preds = %113
  %120 = landingpad { ptr, i32 }
          cleanup
  %121 = extractvalue { ptr, i32 } %120, 0
  store ptr %121, ptr %7, align 8
  %122 = extractvalue { ptr, i32 } %120, 1
  store i32 %122, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #6
  br label %123

123:                                              ; preds = %119, %115
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %13) #6
  br label %1504

124:                                              ; preds = %82, %82
  call void @llvm.lifetime.start.p0(i64 32, ptr %15) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef @.str.1157, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %125 unwind label %127

125:                                              ; preds = %124
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %60, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %126 unwind label %131

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

127:                                              ; preds = %124
  %128 = landingpad { ptr, i32 }
          cleanup
  %129 = extractvalue { ptr, i32 } %128, 0
  store ptr %129, ptr %7, align 8
  %130 = extractvalue { ptr, i32 } %128, 1
  store i32 %130, ptr %8, align 4
  br label %135

131:                                              ; preds = %125
  %132 = landingpad { ptr, i32 }
          cleanup
  %133 = extractvalue { ptr, i32 } %132, 0
  store ptr %133, ptr %7, align 8
  %134 = extractvalue { ptr, i32 } %132, 1
  store i32 %134, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #6
  br label %135

135:                                              ; preds = %131, %127
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %15) #6
  br label %1504

136:                                              ; preds = %82, %82, %82
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #6
  %137 = load ptr, ptr %5, align 8, !tbaa !5
  %138 = getelementptr inbounds i32, ptr %137, i64 3
  %139 = load i32, ptr %138, align 4, !tbaa !126
  %140 = call noundef nonnull align 8 dereferenceable(336) ptr @_ZNK11spirv_cross8Compiler15expression_typeEj(ptr noundef nonnull align 8 dereferenceable(3176) %60, i32 noundef %139)
  store ptr %140, ptr %17, align 8, !tbaa !5
  %141 = load ptr, ptr %17, align 8, !tbaa !5
  %142 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %141, i32 0, i32 2
  %143 = load i32, ptr %142, align 8, !tbaa !130
  %144 = icmp eq i32 %143, 2
  br i1 %144, label %145, label %151

145:                                              ; preds = %136
  %146 = load ptr, ptr %17, align 8, !tbaa !5
  %147 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %146, i32 0, i32 4
  %148 = load i32, ptr %147, align 8, !tbaa !143
  %149 = icmp eq i32 %148, 1
  br i1 %149, label %150, label %151

150:                                              ; preds = %145
  call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef 7)
  br label %152

151:                                              ; preds = %145, %136
  call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef 8)
  br label %152

152:                                              ; preds = %151, %150
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #6
  br label %389

153:                                              ; preds = %82
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #6
  %154 = load ptr, ptr %5, align 8, !tbaa !5
  %155 = getelementptr inbounds i32, ptr %154, i64 3
  %156 = load i32, ptr %155, align 4, !tbaa !126
  store i32 %156, ptr %18, align 4, !tbaa !128
  %157 = load i32, ptr %18, align 4, !tbaa !128
  %158 = icmp eq i32 %157, 3
  br i1 %158, label %159, label %171

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

160:                                              ; preds = %159
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %60, ptr noundef nonnull align 8 dereferenceable(32) %19)
          to label %161 unwind label %166

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

162:                                              ; preds = %159
  %163 = landingpad { ptr, i32 }
          cleanup
  %164 = extractvalue { ptr, i32 } %163, 0
  store ptr %164, ptr %7, align 8
  %165 = extractvalue { ptr, i32 } %163, 1
  store i32 %165, ptr %8, align 4
  br label %170

166:                                              ; preds = %160
  %167 = landingpad { ptr, i32 }
          cleanup
  %168 = extractvalue { ptr, i32 } %167, 0
  store ptr %168, ptr %7, align 8
  %169 = extractvalue { ptr, i32 } %167, 1
  store i32 %169, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #6
  br label %170

170:                                              ; preds = %166, %162
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #6
  br label %194

171:                                              ; preds = %153
  %172 = load i32, ptr %18, align 4, !tbaa !128
  %173 = icmp eq i32 %172, 0
  br i1 %173, label %174, label %175

174:                                              ; preds = %171
  call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef 16)
  br label %192

175:                                              ; preds = %171
  %176 = load i32, ptr %18, align 4, !tbaa !128
  %177 = icmp eq i32 %176, 2
  br i1 %177, label %178, label %179

178:                                              ; preds = %175
  call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef 17)
  br label %191

179:                                              ; preds = %175
  %180 = load i32, ptr %18, align 4, !tbaa !128
  %181 = icmp eq i32 %180, 1
  br i1 %181, label %182, label %183

182:                                              ; preds = %179
  call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef 18)
  br label %190

183:                                              ; preds = %179
  %184 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %184, ptr noundef @.str.1159)
          to label %185 unwind label %186

185:                                              ; preds = %183
  call void @__cxa_throw(ptr %184, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

186:                                              ; preds = %183
  %187 = landingpad { ptr, i32 }
          cleanup
  %188 = extractvalue { ptr, i32 } %187, 0
  store ptr %188, ptr %7, align 8
  %189 = extractvalue { ptr, i32 } %187, 1
  store i32 %189, ptr %8, align 4
  call void @__cxa_free_exception(ptr %184) #6
  br label %194

190:                                              ; preds = %182
  br label %191

191:                                              ; preds = %190, %178
  br label %192

192:                                              ; preds = %191, %174
  br label %193

193:                                              ; preds = %192, %161
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #6
  br label %389

194:                                              ; preds = %186, %170
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #6
  br label %1504

195:                                              ; preds = %82
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #6
  %196 = load ptr, ptr %5, align 8, !tbaa !5
  %197 = getelementptr inbounds i32, ptr %196, i64 3
  %198 = load i32, ptr %197, align 4, !tbaa !126
  store i32 %198, ptr %21, align 4, !tbaa !128
  %199 = load i32, ptr %21, align 4, !tbaa !128
  %200 = icmp eq i32 %199, 3
  br i1 %200, label %201, label %213

201:                                              ; preds = %195
  call void @llvm.lifetime.start.p0(i64 32, ptr %22) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef @.str.1158, ptr noundef nonnull align 1 dereferenceable(1) %23)
          to label %202 unwind label %204

202:                                              ; preds = %201
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %60, ptr noundef nonnull align 8 dereferenceable(32) %22)
          to label %203 unwind label %208

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

204:                                              ; preds = %201
  %205 = landingpad { ptr, i32 }
          cleanup
  %206 = extractvalue { ptr, i32 } %205, 0
  store ptr %206, ptr %7, align 8
  %207 = extractvalue { ptr, i32 } %205, 1
  store i32 %207, ptr %8, align 4
  br label %212

208:                                              ; preds = %202
  %209 = landingpad { ptr, i32 }
          cleanup
  %210 = extractvalue { ptr, i32 } %209, 0
  store ptr %210, ptr %7, align 8
  %211 = extractvalue { ptr, i32 } %209, 1
  store i32 %211, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #6
  br label %212

212:                                              ; preds = %208, %204
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #6
  br label %236

213:                                              ; preds = %195
  %214 = load i32, ptr %21, align 4, !tbaa !128
  %215 = icmp eq i32 %214, 0
  br i1 %215, label %216, label %217

216:                                              ; preds = %213
  call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef 19)
  br label %234

217:                                              ; preds = %213
  %218 = load i32, ptr %21, align 4, !tbaa !128
  %219 = icmp eq i32 %218, 2
  br i1 %219, label %220, label %221

220:                                              ; preds = %217
  call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef 20)
  br label %233

221:                                              ; preds = %217
  %222 = load i32, ptr %21, align 4, !tbaa !128
  %223 = icmp eq i32 %222, 1
  br i1 %223, label %224, label %225

224:                                              ; preds = %221
  call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef 21)
  br label %232

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

227:                                              ; preds = %225
  call void @__cxa_throw(ptr %226, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

228:                                              ; preds = %225
  %229 = landingpad { ptr, i32 }
          cleanup
  %230 = extractvalue { ptr, i32 } %229, 0
  store ptr %230, ptr %7, align 8
  %231 = extractvalue { ptr, i32 } %229, 1
  store i32 %231, ptr %8, align 4
  call void @__cxa_free_exception(ptr %226) #6
  br label %236

232:                                              ; preds = %224
  br label %233

233:                                              ; preds = %232, %220
  br label %234

234:                                              ; preds = %233, %216
  br label %235

235:                                              ; preds = %234, %203
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #6
  br label %389

236:                                              ; preds = %228, %212
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #6
  br label %1504

237:                                              ; preds = %82
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #6
  %238 = load ptr, ptr %5, align 8, !tbaa !5
  %239 = getelementptr inbounds i32, ptr %238, i64 3
  %240 = load i32, ptr %239, align 4, !tbaa !126
  store i32 %240, ptr %24, align 4, !tbaa !128
  %241 = load i32, ptr %24, align 4, !tbaa !128
  %242 = icmp eq i32 %241, 3
  br i1 %242, label %243, label %255

243:                                              ; preds = %237
  call void @llvm.lifetime.start.p0(i64 32, ptr %25) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef @.str.1158, ptr noundef nonnull align 1 dereferenceable(1) %26)
          to label %244 unwind label %246

244:                                              ; preds = %243
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %60, ptr noundef nonnull align 8 dereferenceable(32) %25)
          to label %245 unwind label %250

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

246:                                              ; preds = %243
  %247 = landingpad { ptr, i32 }
          cleanup
  %248 = extractvalue { ptr, i32 } %247, 0
  store ptr %248, ptr %7, align 8
  %249 = extractvalue { ptr, i32 } %247, 1
  store i32 %249, ptr %8, align 4
  br label %254

250:                                              ; preds = %244
  %251 = landingpad { ptr, i32 }
          cleanup
  %252 = extractvalue { ptr, i32 } %251, 0
  store ptr %252, ptr %7, align 8
  %253 = extractvalue { ptr, i32 } %251, 1
  store i32 %253, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #6
  br label %254

254:                                              ; preds = %250, %246
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #6
  br label %278

255:                                              ; preds = %237
  %256 = load i32, ptr %24, align 4, !tbaa !128
  %257 = icmp eq i32 %256, 0
  br i1 %257, label %258, label %259

258:                                              ; preds = %255
  call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef 22)
  br label %276

259:                                              ; preds = %255
  %260 = load i32, ptr %24, align 4, !tbaa !128
  %261 = icmp eq i32 %260, 2
  br i1 %261, label %262, label %263

262:                                              ; preds = %259
  call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef 23)
  br label %275

263:                                              ; preds = %259
  %264 = load i32, ptr %24, align 4, !tbaa !128
  %265 = icmp eq i32 %264, 1
  br i1 %265, label %266, label %267

266:                                              ; preds = %263
  call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef 24)
  br label %274

267:                                              ; preds = %263
  %268 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %268, ptr noundef @.str.1159)
          to label %269 unwind label %270

269:                                              ; preds = %267
  call void @__cxa_throw(ptr %268, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

270:                                              ; preds = %267
  %271 = landingpad { ptr, i32 }
          cleanup
  %272 = extractvalue { ptr, i32 } %271, 0
  store ptr %272, ptr %7, align 8
  %273 = extractvalue { ptr, i32 } %271, 1
  store i32 %273, ptr %8, align 4
  call void @__cxa_free_exception(ptr %268) #6
  br label %278

274:                                              ; preds = %266
  br label %275

275:                                              ; preds = %274, %262
  br label %276

276:                                              ; preds = %275, %258
  br label %277

277:                                              ; preds = %276, %245
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #6
  br label %389

278:                                              ; preds = %270, %254
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #6
  br label %1504

279:                                              ; preds = %82
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #6
  %280 = load ptr, ptr %5, align 8, !tbaa !5
  %281 = getelementptr inbounds i32, ptr %280, i64 3
  %282 = load i32, ptr %281, align 4, !tbaa !126
  store i32 %282, ptr %27, align 4, !tbaa !128
  %283 = load i32, ptr %27, align 4, !tbaa !128
  %284 = icmp eq i32 %283, 3
  br i1 %284, label %285, label %297

285:                                              ; preds = %279
  call void @llvm.lifetime.start.p0(i64 32, ptr %28) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %29) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef @.str.1158, ptr noundef nonnull align 1 dereferenceable(1) %29)
          to label %286 unwind label %288

286:                                              ; preds = %285
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %60, ptr noundef nonnull align 8 dereferenceable(32) %28)
          to label %287 unwind label %292

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

288:                                              ; preds = %285
  %289 = landingpad { ptr, i32 }
          cleanup
  %290 = extractvalue { ptr, i32 } %289, 0
  store ptr %290, ptr %7, align 8
  %291 = extractvalue { ptr, i32 } %289, 1
  store i32 %291, ptr %8, align 4
  br label %296

292:                                              ; preds = %286
  %293 = landingpad { ptr, i32 }
          cleanup
  %294 = extractvalue { ptr, i32 } %293, 0
  store ptr %294, ptr %7, align 8
  %295 = extractvalue { ptr, i32 } %293, 1
  store i32 %295, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #6
  br label %296

296:                                              ; preds = %292, %288
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #6
  br label %320

297:                                              ; preds = %279
  %298 = load i32, ptr %27, align 4, !tbaa !128
  %299 = icmp eq i32 %298, 0
  br i1 %299, label %300, label %301

300:                                              ; preds = %297
  call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef 25)
  br label %318

301:                                              ; preds = %297
  %302 = load i32, ptr %27, align 4, !tbaa !128
  %303 = icmp eq i32 %302, 2
  br i1 %303, label %304, label %305

304:                                              ; preds = %301
  call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef 26)
  br label %317

305:                                              ; preds = %301
  %306 = load i32, ptr %27, align 4, !tbaa !128
  %307 = icmp eq i32 %306, 1
  br i1 %307, label %308, label %309

308:                                              ; preds = %305
  call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef 27)
  br label %316

309:                                              ; preds = %305
  %310 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %310, ptr noundef @.str.1159)
          to label %311 unwind label %312

311:                                              ; preds = %309
  call void @__cxa_throw(ptr %310, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

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
  call void @__cxa_free_exception(ptr %310) #6
  br label %320

316:                                              ; preds = %308
  br label %317

317:                                              ; preds = %316, %304
  br label %318

318:                                              ; preds = %317, %300
  br label %319

319:                                              ; preds = %318, %287
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #6
  br label %389

320:                                              ; preds = %312, %296
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #6
  br label %1504

321:                                              ; preds = %82, %82, %82, %82, %82, %82, %82, %82, %82, %82, %82, %82
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #6
  %322 = load ptr, ptr %5, align 8, !tbaa !5
  %323 = getelementptr inbounds i32, ptr %322, i64 3
  %324 = load i32, ptr %323, align 4, !tbaa !126
  store i32 %324, ptr %30, align 4, !tbaa !128
  %325 = load i32, ptr %30, align 4, !tbaa !128
  %326 = icmp eq i32 %325, 3
  br i1 %326, label %327, label %339

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

328:                                              ; preds = %327
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %60, ptr noundef nonnull align 8 dereferenceable(32) %31)
          to label %329 unwind label %334

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

330:                                              ; preds = %327
  %331 = landingpad { ptr, i32 }
          cleanup
  %332 = extractvalue { ptr, i32 } %331, 0
  store ptr %332, ptr %7, align 8
  %333 = extractvalue { ptr, i32 } %331, 1
  store i32 %333, ptr %8, align 4
  br label %338

334:                                              ; preds = %328
  %335 = landingpad { ptr, i32 }
          cleanup
  %336 = extractvalue { ptr, i32 } %335, 0
  store ptr %336, ptr %7, align 8
  %337 = extractvalue { ptr, i32 } %335, 1
  store i32 %337, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #6
  br label %338

338:                                              ; preds = %334, %330
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #6
  br label %369

339:                                              ; preds = %321
  %340 = load i32, ptr %30, align 4, !tbaa !128
  %341 = icmp eq i32 %340, 2
  br i1 %341, label %348, label %342

342:                                              ; preds = %339
  %343 = load i32, ptr %30, align 4, !tbaa !128
  %344 = icmp eq i32 %343, 1
  br i1 %344, label %348, label %345

345:                                              ; preds = %342
  %346 = load i32, ptr %30, align 4, !tbaa !128
  %347 = icmp eq i32 %346, 0
  br i1 %347, label %348, label %360

348:                                              ; preds = %345, %342, %339
  call void @llvm.lifetime.start.p0(i64 32, ptr %33) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %34) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef @.str.1160, ptr noundef nonnull align 1 dereferenceable(1) %34)
          to label %349 unwind label %351

349:                                              ; preds = %348
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %60, ptr noundef nonnull align 8 dereferenceable(32) %33)
          to label %350 unwind label %355

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

351:                                              ; preds = %348
  %352 = landingpad { ptr, i32 }
          cleanup
  %353 = extractvalue { ptr, i32 } %352, 0
  store ptr %353, ptr %7, align 8
  %354 = extractvalue { ptr, i32 } %352, 1
  store i32 %354, ptr %8, align 4
  br label %359

355:                                              ; preds = %349
  %356 = landingpad { ptr, i32 }
          cleanup
  %357 = extractvalue { ptr, i32 } %356, 0
  store ptr %357, ptr %7, align 8
  %358 = extractvalue { ptr, i32 } %356, 1
  store i32 %358, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #6
  br label %359

359:                                              ; preds = %355, %351
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %33) #6
  br label %369

360:                                              ; preds = %345
  %361 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %361, ptr noundef @.str.1159)
          to label %362 unwind label %363

362:                                              ; preds = %360
  call void @__cxa_throw(ptr %361, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

363:                                              ; preds = %360
  %364 = landingpad { ptr, i32 }
          cleanup
  %365 = extractvalue { ptr, i32 } %364, 0
  store ptr %365, ptr %7, align 8
  %366 = extractvalue { ptr, i32 } %364, 1
  store i32 %366, ptr %8, align 4
  call void @__cxa_free_exception(ptr %361) #6
  br label %369

367:                                              ; preds = %350
  br label %368

368:                                              ; preds = %367, %329
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #6
  br label %389

369:                                              ; preds = %363, %359, %338
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #6
  br label %1504

370:                                              ; preds = %82, %82
  call void @llvm.lifetime.start.p0(i64 32, ptr %35) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef @.str.1161, ptr noundef nonnull align 1 dereferenceable(1) %36)
          to label %371 unwind label %373

371:                                              ; preds = %370
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %60, ptr noundef nonnull align 8 dereferenceable(32) %35)
          to label %372 unwind label %377

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

373:                                              ; preds = %370
  %374 = landingpad { ptr, i32 }
          cleanup
  %375 = extractvalue { ptr, i32 } %374, 0
  store ptr %375, ptr %7, align 8
  %376 = extractvalue { ptr, i32 } %374, 1
  store i32 %376, ptr %8, align 4
  br label %381

377:                                              ; preds = %371
  %378 = landingpad { ptr, i32 }
          cleanup
  %379 = extractvalue { ptr, i32 } %378, 0
  store ptr %379, ptr %7, align 8
  %380 = extractvalue { ptr, i32 } %378, 1
  store i32 %380, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #6
  br label %381

381:                                              ; preds = %377, %373
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #6
  br label %1504

382:                                              ; preds = %82
  %383 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %383, ptr noundef @.str.1162)
          to label %384 unwind label %385

384:                                              ; preds = %382
  call void @__cxa_throw(ptr %383, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

385:                                              ; preds = %382
  %386 = landingpad { ptr, i32 }
          cleanup
  %387 = extractvalue { ptr, i32 } %386, 0
  store ptr %387, ptr %7, align 8
  %388 = extractvalue { ptr, i32 } %386, 1
  store i32 %388, ptr %8, align 4
  call void @__cxa_free_exception(ptr %383) #6
  br label %1504

389:                                              ; preds = %372, %368, %319, %277, %235, %193, %152, %126, %114, %111, %110, %109, %108, %107, %106, %90
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #6
  %390 = load ptr, ptr %5, align 8, !tbaa !5
  %391 = getelementptr inbounds i32, ptr %390, i64 0
  %392 = load i32, ptr %391, align 4, !tbaa !126
  store i32 %392, ptr %37, align 4, !tbaa !126
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #6
  %393 = load ptr, ptr %5, align 8, !tbaa !5
  %394 = getelementptr inbounds i32, ptr %393, i64 1
  %395 = load i32, ptr %394, align 4, !tbaa !126
  store i32 %395, ptr %38, align 4, !tbaa !126
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #6
  %396 = load ptr, ptr %5, align 8, !tbaa !5
  %397 = getelementptr inbounds i32, ptr %396, i64 2
  %398 = load i32, ptr %397, align 4, !tbaa !126
  %399 = call noundef i32 @_ZNK11spirv_cross8Compiler21evaluate_constant_u32Ej(ptr noundef nonnull align 8 dereferenceable(3176) %60, i32 noundef %398)
  store i32 %399, ptr %39, align 4, !tbaa !144
  %400 = load i32, ptr %39, align 4, !tbaa !144
  %401 = icmp ne i32 %400, 3
  br i1 %401, label %402, label %409

402:                                              ; preds = %389
  %403 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %403, ptr noundef @.str.1163)
          to label %404 unwind label %405

404:                                              ; preds = %402
  call void @__cxa_throw(ptr %403, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

405:                                              ; preds = %402
  %406 = landingpad { ptr, i32 }
          cleanup
  %407 = extractvalue { ptr, i32 } %406, 0
  store ptr %407, ptr %7, align 8
  %408 = extractvalue { ptr, i32 } %406, 1
  store i32 %408, ptr %8, align 4
  call void @__cxa_free_exception(ptr %403) #6
  br label %1503

409:                                              ; preds = %389
  %410 = load i32, ptr %6, align 4, !tbaa !13
  switch i32 %410, label %1494 [
    i32 333, label %411
    i32 337, label %426
    i32 338, label %435
    i32 339, label %441
    i32 340, label %447
    i32 341, label %453
    i32 343, label %462
    i32 344, label %468
    i32 342, label %474
    i32 345, label %514
    i32 346, label %523
    i32 347, label %532
    i32 348, label %541
    i32 334, label %550
    i32 335, label %556
    i32 336, label %562
    i32 350, label %568
    i32 352, label %621
    i32 355, label %674
    i32 358, label %727
    i32 349, label %780
    i32 351, label %833
    i32 353, label %886
    i32 356, label %946
    i32 354, label %1006
    i32 357, label %1066
    i32 359, label %1126
    i32 360, label %1179
    i32 361, label %1232
    i32 362, label %1285
    i32 363, label %1338
    i32 364, label %1391
    i32 366, label %1444
    i32 365, label %1485
  ]

411:                                              ; preds = %409
  %412 = load i32, ptr %37, align 4, !tbaa !126
  %413 = load i32, ptr %38, align 4, !tbaa !126
  call void @llvm.lifetime.start.p0(i64 32, ptr %40) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %41) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef @.str.1164, ptr noundef nonnull align 1 dereferenceable(1) %41)
          to label %414 unwind label %417

414:                                              ; preds = %411
  %415 = invoke noundef nonnull align 8 dereferenceable(236) ptr @_ZN11spirv_cross12CompilerGLSL7emit_opEjjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbb(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %412, i32 noundef %413, ptr noundef nonnull align 8 dereferenceable(32) %40, i1 noundef zeroext true, i1 noundef zeroext false)
          to label %416 unwind label %421

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

417:                                              ; preds = %411
  %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
  br label %425

421:                                              ; preds = %414
  %422 = landingpad { ptr, i32 }
          cleanup
  %423 = extractvalue { ptr, i32 } %422, 0
  store ptr %423, ptr %7, align 8
  %424 = extractvalue { ptr, i32 } %422, 1
  store i32 %424, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #6
  br label %425

425:                                              ; preds = %421, %417
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #6
  br label %1503

426:                                              ; preds = %409
  %427 = load i32, ptr %37, align 4, !tbaa !126
  %428 = load i32, ptr %38, align 4, !tbaa !126
  %429 = load ptr, ptr %5, align 8, !tbaa !5
  %430 = getelementptr inbounds i32, ptr %429, i64 3
  %431 = load i32, ptr %430, align 4, !tbaa !126
  %432 = load ptr, ptr %5, align 8, !tbaa !5
  %433 = getelementptr inbounds i32, ptr %432, i64 4
  %434 = load i32, ptr %433, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %427, i32 noundef %428, i32 noundef %431, i32 noundef %434, ptr noundef @.str.1165)
  br label %1501

435:                                              ; preds = %409
  %436 = load i32, ptr %37, align 4, !tbaa !126
  %437 = load i32, ptr %38, align 4, !tbaa !126
  %438 = load ptr, ptr %5, align 8, !tbaa !5
  %439 = getelementptr inbounds i32, ptr %438, i64 3
  %440 = load i32, ptr %439, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %436, i32 noundef %437, i32 noundef %440, ptr noundef @.str.1166)
  br label %1501

441:                                              ; preds = %409
  %442 = load i32, ptr %37, align 4, !tbaa !126
  %443 = load i32, ptr %38, align 4, !tbaa !126
  %444 = load ptr, ptr %5, align 8, !tbaa !5
  %445 = getelementptr inbounds i32, ptr %444, i64 3
  %446 = load i32, ptr %445, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %442, i32 noundef %443, i32 noundef %446, ptr noundef @.str.1167)
  br label %1501

447:                                              ; preds = %409
  %448 = load i32, ptr %37, align 4, !tbaa !126
  %449 = load i32, ptr %38, align 4, !tbaa !126
  %450 = load ptr, ptr %5, align 8, !tbaa !5
  %451 = getelementptr inbounds i32, ptr %450, i64 3
  %452 = load i32, ptr %451, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %448, i32 noundef %449, i32 noundef %452, ptr noundef @.str.1168)
  br label %1501

453:                                              ; preds = %409
  %454 = load i32, ptr %37, align 4, !tbaa !126
  %455 = load i32, ptr %38, align 4, !tbaa !126
  %456 = load ptr, ptr %5, align 8, !tbaa !5
  %457 = getelementptr inbounds i32, ptr %456, i64 3
  %458 = load i32, ptr %457, align 4, !tbaa !126
  %459 = load ptr, ptr %5, align 8, !tbaa !5
  %460 = getelementptr inbounds i32, ptr %459, i64 4
  %461 = load i32, ptr %460, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %454, i32 noundef %455, i32 noundef %458, i32 noundef %461, ptr noundef @.str.1169)
  br label %1501

462:                                              ; preds = %409
  %463 = load i32, ptr %37, align 4, !tbaa !126
  %464 = load i32, ptr %38, align 4, !tbaa !126
  %465 = load ptr, ptr %5, align 8, !tbaa !5
  %466 = getelementptr inbounds i32, ptr %465, i64 3
  %467 = load i32, ptr %466, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %463, i32 noundef %464, i32 noundef %467, ptr noundef @.str.1170)
  br label %1501

468:                                              ; preds = %409
  %469 = load i32, ptr %37, align 4, !tbaa !126
  %470 = load i32, ptr %38, align 4, !tbaa !126
  %471 = load ptr, ptr %5, align 8, !tbaa !5
  %472 = getelementptr inbounds i32, ptr %471, i64 3
  %473 = load i32, ptr %472, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %469, i32 noundef %470, i32 noundef %473, ptr noundef @.str.1171)
  br label %1501

474:                                              ; preds = %409
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #6
  %475 = load ptr, ptr %5, align 8, !tbaa !5
  %476 = getelementptr inbounds i32, ptr %475, i64 3
  %477 = load i32, ptr %476, align 4, !tbaa !126
  store i32 %477, ptr %42, align 4, !tbaa !128
  %478 = load i32, ptr %42, align 4, !tbaa !128
  %479 = icmp eq i32 %478, 0
  br i1 %479, label %480, label %486

480:                                              ; preds = %474
  %481 = load i32, ptr %37, align 4, !tbaa !126
  %482 = load i32, ptr %38, align 4, !tbaa !126
  %483 = load ptr, ptr %5, align 8, !tbaa !5
  %484 = getelementptr inbounds i32, ptr %483, i64 4
  %485 = load i32, ptr %484, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %481, i32 noundef %482, i32 noundef %485, ptr noundef @.str.1172)
  br label %513

486:                                              ; preds = %474
  %487 = load i32, ptr %42, align 4, !tbaa !128
  %488 = icmp eq i32 %487, 1
  br i1 %488, label %489, label %495

489:                                              ; preds = %486
  %490 = load i32, ptr %37, align 4, !tbaa !126
  %491 = load i32, ptr %38, align 4, !tbaa !126
  %492 = load ptr, ptr %5, align 8, !tbaa !5
  %493 = getelementptr inbounds i32, ptr %492, i64 4
  %494 = load i32, ptr %493, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %490, i32 noundef %491, i32 noundef %494, ptr noundef @.str.1173)
  br label %512

495:                                              ; preds = %486
  %496 = load i32, ptr %42, align 4, !tbaa !128
  %497 = icmp eq i32 %496, 2
  br i1 %497, label %498, label %504

498:                                              ; preds = %495
  %499 = load i32, ptr %37, align 4, !tbaa !126
  %500 = load i32, ptr %38, align 4, !tbaa !126
  %501 = load ptr, ptr %5, align 8, !tbaa !5
  %502 = getelementptr inbounds i32, ptr %501, i64 4
  %503 = load i32, ptr %502, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %499, i32 noundef %500, i32 noundef %503, ptr noundef @.str.1174)
  br label %511

504:                                              ; preds = %495
  %505 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %505, ptr noundef @.str.1175)
          to label %506 unwind label %507

506:                                              ; preds = %504
  call void @__cxa_throw(ptr %505, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

507:                                              ; preds = %504
  %508 = landingpad { ptr, i32 }
          cleanup
  %509 = extractvalue { ptr, i32 } %508, 0
  store ptr %509, ptr %7, align 8
  %510 = extractvalue { ptr, i32 } %508, 1
  store i32 %510, ptr %8, align 4
  call void @__cxa_free_exception(ptr %505) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #6
  br label %1503

511:                                              ; preds = %498
  br label %512

512:                                              ; preds = %511, %489
  br label %513

513:                                              ; preds = %512, %480
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #6
  br label %1501

514:                                              ; preds = %409
  %515 = load i32, ptr %37, align 4, !tbaa !126
  %516 = load i32, ptr %38, align 4, !tbaa !126
  %517 = load ptr, ptr %5, align 8, !tbaa !5
  %518 = getelementptr inbounds i32, ptr %517, i64 3
  %519 = load i32, ptr %518, align 4, !tbaa !126
  %520 = load ptr, ptr %5, align 8, !tbaa !5
  %521 = getelementptr inbounds i32, ptr %520, i64 4
  %522 = load i32, ptr %521, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %515, i32 noundef %516, i32 noundef %519, i32 noundef %522, ptr noundef @.str.1176)
  br label %1501

523:                                              ; preds = %409
  %524 = load i32, ptr %37, align 4, !tbaa !126
  %525 = load i32, ptr %38, align 4, !tbaa !126
  %526 = load ptr, ptr %5, align 8, !tbaa !5
  %527 = getelementptr inbounds i32, ptr %526, i64 3
  %528 = load i32, ptr %527, align 4, !tbaa !126
  %529 = load ptr, ptr %5, align 8, !tbaa !5
  %530 = getelementptr inbounds i32, ptr %529, i64 4
  %531 = load i32, ptr %530, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %524, i32 noundef %525, i32 noundef %528, i32 noundef %531, ptr noundef @.str.1177)
  br label %1501

532:                                              ; preds = %409
  %533 = load i32, ptr %37, align 4, !tbaa !126
  %534 = load i32, ptr %38, align 4, !tbaa !126
  %535 = load ptr, ptr %5, align 8, !tbaa !5
  %536 = getelementptr inbounds i32, ptr %535, i64 3
  %537 = load i32, ptr %536, align 4, !tbaa !126
  %538 = load ptr, ptr %5, align 8, !tbaa !5
  %539 = getelementptr inbounds i32, ptr %538, i64 4
  %540 = load i32, ptr %539, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %533, i32 noundef %534, i32 noundef %537, i32 noundef %540, ptr noundef @.str.1178)
  br label %1501

541:                                              ; preds = %409
  %542 = load i32, ptr %37, align 4, !tbaa !126
  %543 = load i32, ptr %38, align 4, !tbaa !126
  %544 = load ptr, ptr %5, align 8, !tbaa !5
  %545 = getelementptr inbounds i32, ptr %544, i64 3
  %546 = load i32, ptr %545, align 4, !tbaa !126
  %547 = load ptr, ptr %5, align 8, !tbaa !5
  %548 = getelementptr inbounds i32, ptr %547, i64 4
  %549 = load i32, ptr %548, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %542, i32 noundef %543, i32 noundef %546, i32 noundef %549, ptr noundef @.str.1179)
  br label %1501

550:                                              ; preds = %409
  %551 = load i32, ptr %37, align 4, !tbaa !126
  %552 = load i32, ptr %38, align 4, !tbaa !126
  %553 = load ptr, ptr %5, align 8, !tbaa !5
  %554 = getelementptr inbounds i32, ptr %553, i64 3
  %555 = load i32, ptr %554, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %551, i32 noundef %552, i32 noundef %555, ptr noundef @.str.1180)
  br label %1501

556:                                              ; preds = %409
  %557 = load i32, ptr %37, align 4, !tbaa !126
  %558 = load i32, ptr %38, align 4, !tbaa !126
  %559 = load ptr, ptr %5, align 8, !tbaa !5
  %560 = getelementptr inbounds i32, ptr %559, i64 3
  %561 = load i32, ptr %560, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %557, i32 noundef %558, i32 noundef %561, ptr noundef @.str.1181)
  br label %1501

562:                                              ; preds = %409
  %563 = load i32, ptr %37, align 4, !tbaa !126
  %564 = load i32, ptr %38, align 4, !tbaa !126
  %565 = load ptr, ptr %5, align 8, !tbaa !5
  %566 = getelementptr inbounds i32, ptr %565, i64 3
  %567 = load i32, ptr %566, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %563, i32 noundef %564, i32 noundef %567, ptr noundef @.str.1182)
  br label %1501

568:                                              ; preds = %409
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #6
  %569 = load ptr, ptr %5, align 8, !tbaa !5
  %570 = getelementptr inbounds i32, ptr %569, i64 3
  %571 = load i32, ptr %570, align 4, !tbaa !126
  store i32 %571, ptr %43, align 4, !tbaa !128
  %572 = load i32, ptr %43, align 4, !tbaa !128
  %573 = icmp eq i32 %572, 0
  br i1 %573, label %574, label %580

574:                                              ; preds = %568
  %575 = load i32, ptr %37, align 4, !tbaa !126
  %576 = load i32, ptr %38, align 4, !tbaa !126
  %577 = load ptr, ptr %5, align 8, !tbaa !5
  %578 = getelementptr inbounds i32, ptr %577, i64 4
  %579 = load i32, ptr %578, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %575, i32 noundef %576, i32 noundef %579, ptr noundef @.str.886)
  br label %620

580:                                              ; preds = %568
  %581 = load i32, ptr %43, align 4, !tbaa !128
  %582 = icmp eq i32 %581, 1
  br i1 %582, label %583, label %589

583:                                              ; preds = %580
  %584 = load i32, ptr %37, align 4, !tbaa !126
  %585 = load i32, ptr %38, align 4, !tbaa !126
  %586 = load ptr, ptr %5, align 8, !tbaa !5
  %587 = getelementptr inbounds i32, ptr %586, i64 4
  %588 = load i32, ptr %587, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %584, i32 noundef %585, i32 noundef %588, ptr noundef @.str.888)
  br label %619

589:                                              ; preds = %580
  %590 = load i32, ptr %43, align 4, !tbaa !128
  %591 = icmp eq i32 %590, 2
  br i1 %591, label %592, label %598

592:                                              ; preds = %589
  %593 = load i32, ptr %37, align 4, !tbaa !126
  %594 = load i32, ptr %38, align 4, !tbaa !126
  %595 = load ptr, ptr %5, align 8, !tbaa !5
  %596 = getelementptr inbounds i32, ptr %595, i64 4
  %597 = load i32, ptr %596, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %593, i32 noundef %594, i32 noundef %597, ptr noundef @.str.887)
  br label %618

598:                                              ; preds = %589
  %599 = load i32, ptr %43, align 4, !tbaa !128
  %600 = icmp eq i32 %599, 3
  br i1 %600, label %601, label %610

601:                                              ; preds = %598
  %602 = load i32, ptr %37, align 4, !tbaa !126
  %603 = load i32, ptr %38, align 4, !tbaa !126
  %604 = load ptr, ptr %5, align 8, !tbaa !5
  %605 = getelementptr inbounds i32, ptr %604, i64 4
  %606 = load i32, ptr %605, align 4, !tbaa !126
  %607 = load ptr, ptr %5, align 8, !tbaa !5
  %608 = getelementptr inbounds i32, ptr %607, i64 5
  %609 = load i32, ptr %608, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %602, i32 noundef %603, i32 noundef %606, i32 noundef %609, ptr noundef @.str.1183)
  br label %617

610:                                              ; preds = %598
  %611 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %611, ptr noundef @.str.1159)
          to label %612 unwind label %613

612:                                              ; preds = %610
  call void @__cxa_throw(ptr %611, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

613:                                              ; preds = %610
  %614 = landingpad { ptr, i32 }
          cleanup
  %615 = extractvalue { ptr, i32 } %614, 0
  store ptr %615, ptr %7, align 8
  %616 = extractvalue { ptr, i32 } %614, 1
  store i32 %616, ptr %8, align 4
  call void @__cxa_free_exception(ptr %611) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #6
  br label %1503

617:                                              ; preds = %601
  br label %618

618:                                              ; preds = %617, %592
  br label %619

619:                                              ; preds = %618, %583
  br label %620

620:                                              ; preds = %619, %574
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #6
  br label %1501

621:                                              ; preds = %409
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #6
  %622 = load ptr, ptr %5, align 8, !tbaa !5
  %623 = getelementptr inbounds i32, ptr %622, i64 3
  %624 = load i32, ptr %623, align 4, !tbaa !126
  store i32 %624, ptr %44, align 4, !tbaa !128
  %625 = load i32, ptr %44, align 4, !tbaa !128
  %626 = icmp eq i32 %625, 0
  br i1 %626, label %627, label %633

627:                                              ; preds = %621
  %628 = load i32, ptr %37, align 4, !tbaa !126
  %629 = load i32, ptr %38, align 4, !tbaa !126
  %630 = load ptr, ptr %5, align 8, !tbaa !5
  %631 = getelementptr inbounds i32, ptr %630, i64 4
  %632 = load i32, ptr %631, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %628, i32 noundef %629, i32 noundef %632, ptr noundef @.str.889)
  br label %673

633:                                              ; preds = %621
  %634 = load i32, ptr %44, align 4, !tbaa !128
  %635 = icmp eq i32 %634, 1
  br i1 %635, label %636, label %642

636:                                              ; preds = %633
  %637 = load i32, ptr %37, align 4, !tbaa !126
  %638 = load i32, ptr %38, align 4, !tbaa !126
  %639 = load ptr, ptr %5, align 8, !tbaa !5
  %640 = getelementptr inbounds i32, ptr %639, i64 4
  %641 = load i32, ptr %640, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %637, i32 noundef %638, i32 noundef %641, ptr noundef @.str.891)
  br label %672

642:                                              ; preds = %633
  %643 = load i32, ptr %44, align 4, !tbaa !128
  %644 = icmp eq i32 %643, 2
  br i1 %644, label %645, label %651

645:                                              ; preds = %642
  %646 = load i32, ptr %37, align 4, !tbaa !126
  %647 = load i32, ptr %38, align 4, !tbaa !126
  %648 = load ptr, ptr %5, align 8, !tbaa !5
  %649 = getelementptr inbounds i32, ptr %648, i64 4
  %650 = load i32, ptr %649, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %646, i32 noundef %647, i32 noundef %650, ptr noundef @.str.890)
  br label %671

651:                                              ; preds = %642
  %652 = load i32, ptr %44, align 4, !tbaa !128
  %653 = icmp eq i32 %652, 3
  br i1 %653, label %654, label %663

654:                                              ; preds = %651
  %655 = load i32, ptr %37, align 4, !tbaa !126
  %656 = load i32, ptr %38, align 4, !tbaa !126
  %657 = load ptr, ptr %5, align 8, !tbaa !5
  %658 = getelementptr inbounds i32, ptr %657, i64 4
  %659 = load i32, ptr %658, align 4, !tbaa !126
  %660 = load ptr, ptr %5, align 8, !tbaa !5
  %661 = getelementptr inbounds i32, ptr %660, i64 5
  %662 = load i32, ptr %661, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %655, i32 noundef %656, i32 noundef %659, i32 noundef %662, ptr noundef @.str.1184)
  br label %670

663:                                              ; preds = %651
  %664 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %664, ptr noundef @.str.1159)
          to label %665 unwind label %666

665:                                              ; preds = %663
  call void @__cxa_throw(ptr %664, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

666:                                              ; preds = %663
  %667 = landingpad { ptr, i32 }
          cleanup
  %668 = extractvalue { ptr, i32 } %667, 0
  store ptr %668, ptr %7, align 8
  %669 = extractvalue { ptr, i32 } %667, 1
  store i32 %669, ptr %8, align 4
  call void @__cxa_free_exception(ptr %664) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #6
  br label %1503

670:                                              ; preds = %654
  br label %671

671:                                              ; preds = %670, %645
  br label %672

672:                                              ; preds = %671, %636
  br label %673

673:                                              ; preds = %672, %627
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #6
  br label %1501

674:                                              ; preds = %409
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #6
  %675 = load ptr, ptr %5, align 8, !tbaa !5
  %676 = getelementptr inbounds i32, ptr %675, i64 3
  %677 = load i32, ptr %676, align 4, !tbaa !126
  store i32 %677, ptr %45, align 4, !tbaa !128
  %678 = load i32, ptr %45, align 4, !tbaa !128
  %679 = icmp eq i32 %678, 0
  br i1 %679, label %680, label %686

680:                                              ; preds = %674
  %681 = load i32, ptr %37, align 4, !tbaa !126
  %682 = load i32, ptr %38, align 4, !tbaa !126
  %683 = load ptr, ptr %5, align 8, !tbaa !5
  %684 = getelementptr inbounds i32, ptr %683, i64 4
  %685 = load i32, ptr %684, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %681, i32 noundef %682, i32 noundef %685, ptr noundef @.str.1185)
  br label %726

686:                                              ; preds = %674
  %687 = load i32, ptr %45, align 4, !tbaa !128
  %688 = icmp eq i32 %687, 1
  br i1 %688, label %689, label %695

689:                                              ; preds = %686
  %690 = load i32, ptr %37, align 4, !tbaa !126
  %691 = load i32, ptr %38, align 4, !tbaa !126
  %692 = load ptr, ptr %5, align 8, !tbaa !5
  %693 = getelementptr inbounds i32, ptr %692, i64 4
  %694 = load i32, ptr %693, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %690, i32 noundef %691, i32 noundef %694, ptr noundef @.str.1186)
  br label %725

695:                                              ; preds = %686
  %696 = load i32, ptr %45, align 4, !tbaa !128
  %697 = icmp eq i32 %696, 2
  br i1 %697, label %698, label %704

698:                                              ; preds = %695
  %699 = load i32, ptr %37, align 4, !tbaa !126
  %700 = load i32, ptr %38, align 4, !tbaa !126
  %701 = load ptr, ptr %5, align 8, !tbaa !5
  %702 = getelementptr inbounds i32, ptr %701, i64 4
  %703 = load i32, ptr %702, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %699, i32 noundef %700, i32 noundef %703, ptr noundef @.str.1187)
  br label %724

704:                                              ; preds = %695
  %705 = load i32, ptr %45, align 4, !tbaa !128
  %706 = icmp eq i32 %705, 3
  br i1 %706, label %707, label %716

707:                                              ; preds = %704
  %708 = load i32, ptr %37, align 4, !tbaa !126
  %709 = load i32, ptr %38, align 4, !tbaa !126
  %710 = load ptr, ptr %5, align 8, !tbaa !5
  %711 = getelementptr inbounds i32, ptr %710, i64 4
  %712 = load i32, ptr %711, align 4, !tbaa !126
  %713 = load ptr, ptr %5, align 8, !tbaa !5
  %714 = getelementptr inbounds i32, ptr %713, i64 5
  %715 = load i32, ptr %714, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %708, i32 noundef %709, i32 noundef %712, i32 noundef %715, ptr noundef @.str.1188)
  br label %723

716:                                              ; preds = %704
  %717 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %717, ptr noundef @.str.1159)
          to label %718 unwind label %719

718:                                              ; preds = %716
  call void @__cxa_throw(ptr %717, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

719:                                              ; preds = %716
  %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 @__cxa_free_exception(ptr %717) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #6
  br label %1503

723:                                              ; preds = %707
  br label %724

724:                                              ; preds = %723, %698
  br label %725

725:                                              ; preds = %724, %689
  br label %726

726:                                              ; preds = %725, %680
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #6
  br label %1501

727:                                              ; preds = %409
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #6
  %728 = load ptr, ptr %5, align 8, !tbaa !5
  %729 = getelementptr inbounds i32, ptr %728, i64 3
  %730 = load i32, ptr %729, align 4, !tbaa !126
  store i32 %730, ptr %46, align 4, !tbaa !128
  %731 = load i32, ptr %46, align 4, !tbaa !128
  %732 = icmp eq i32 %731, 0
  br i1 %732, label %733, label %739

733:                                              ; preds = %727
  %734 = load i32, ptr %37, align 4, !tbaa !126
  %735 = load i32, ptr %38, align 4, !tbaa !126
  %736 = load ptr, ptr %5, align 8, !tbaa !5
  %737 = getelementptr inbounds i32, ptr %736, i64 4
  %738 = load i32, ptr %737, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %734, i32 noundef %735, i32 noundef %738, ptr noundef @.str.1189)
  br label %779

739:                                              ; preds = %727
  %740 = load i32, ptr %46, align 4, !tbaa !128
  %741 = icmp eq i32 %740, 1
  br i1 %741, label %742, label %748

742:                                              ; preds = %739
  %743 = load i32, ptr %37, align 4, !tbaa !126
  %744 = load i32, ptr %38, align 4, !tbaa !126
  %745 = load ptr, ptr %5, align 8, !tbaa !5
  %746 = getelementptr inbounds i32, ptr %745, i64 4
  %747 = load i32, ptr %746, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %743, i32 noundef %744, i32 noundef %747, ptr noundef @.str.1190)
  br label %778

748:                                              ; preds = %739
  %749 = load i32, ptr %46, align 4, !tbaa !128
  %750 = icmp eq i32 %749, 2
  br i1 %750, label %751, label %757

751:                                              ; preds = %748
  %752 = load i32, ptr %37, align 4, !tbaa !126
  %753 = load i32, ptr %38, align 4, !tbaa !126
  %754 = load ptr, ptr %5, align 8, !tbaa !5
  %755 = getelementptr inbounds i32, ptr %754, i64 4
  %756 = load i32, ptr %755, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %752, i32 noundef %753, i32 noundef %756, ptr noundef @.str.1191)
  br label %777

757:                                              ; preds = %748
  %758 = load i32, ptr %46, align 4, !tbaa !128
  %759 = icmp eq i32 %758, 3
  br i1 %759, label %760, label %769

760:                                              ; preds = %757
  %761 = load i32, ptr %37, align 4, !tbaa !126
  %762 = load i32, ptr %38, align 4, !tbaa !126
  %763 = load ptr, ptr %5, align 8, !tbaa !5
  %764 = getelementptr inbounds i32, ptr %763, i64 4
  %765 = load i32, ptr %764, align 4, !tbaa !126
  %766 = load ptr, ptr %5, align 8, !tbaa !5
  %767 = getelementptr inbounds i32, ptr %766, i64 5
  %768 = load i32, ptr %767, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %761, i32 noundef %762, i32 noundef %765, i32 noundef %768, ptr noundef @.str.1192)
  br label %776

769:                                              ; preds = %757
  %770 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %770, ptr noundef @.str.1159)
          to label %771 unwind label %772

771:                                              ; preds = %769
  call void @__cxa_throw(ptr %770, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

772:                                              ; preds = %769
  %773 = landingpad { ptr, i32 }
          cleanup
  %774 = extractvalue { ptr, i32 } %773, 0
  store ptr %774, ptr %7, align 8
  %775 = extractvalue { ptr, i32 } %773, 1
  store i32 %775, ptr %8, align 4
  call void @__cxa_free_exception(ptr %770) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #6
  br label %1503

776:                                              ; preds = %760
  br label %777

777:                                              ; preds = %776, %751
  br label %778

778:                                              ; preds = %777, %742
  br label %779

779:                                              ; preds = %778, %733
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #6
  br label %1501

780:                                              ; preds = %409
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #6
  %781 = load ptr, ptr %5, align 8, !tbaa !5
  %782 = getelementptr inbounds i32, ptr %781, i64 3
  %783 = load i32, ptr %782, align 4, !tbaa !126
  store i32 %783, ptr %47, align 4, !tbaa !128
  %784 = load i32, ptr %47, align 4, !tbaa !128
  %785 = icmp eq i32 %784, 0
  br i1 %785, label %786, label %792

786:                                              ; preds = %780
  %787 = load i32, ptr %37, align 4, !tbaa !126
  %788 = load i32, ptr %38, align 4, !tbaa !126
  %789 = load ptr, ptr %5, align 8, !tbaa !5
  %790 = getelementptr inbounds i32, ptr %789, i64 4
  %791 = load i32, ptr %790, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %787, i32 noundef %788, i32 noundef %791, ptr noundef @.str.886)
  br label %832

792:                                              ; preds = %780
  %793 = load i32, ptr %47, align 4, !tbaa !128
  %794 = icmp eq i32 %793, 1
  br i1 %794, label %795, label %801

795:                                              ; preds = %792
  %796 = load i32, ptr %37, align 4, !tbaa !126
  %797 = load i32, ptr %38, align 4, !tbaa !126
  %798 = load ptr, ptr %5, align 8, !tbaa !5
  %799 = getelementptr inbounds i32, ptr %798, i64 4
  %800 = load i32, ptr %799, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %796, i32 noundef %797, i32 noundef %800, ptr noundef @.str.888)
  br label %831

801:                                              ; preds = %792
  %802 = load i32, ptr %47, align 4, !tbaa !128
  %803 = icmp eq i32 %802, 2
  br i1 %803, label %804, label %810

804:                                              ; preds = %801
  %805 = load i32, ptr %37, align 4, !tbaa !126
  %806 = load i32, ptr %38, align 4, !tbaa !126
  %807 = load ptr, ptr %5, align 8, !tbaa !5
  %808 = getelementptr inbounds i32, ptr %807, i64 4
  %809 = load i32, ptr %808, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %805, i32 noundef %806, i32 noundef %809, ptr noundef @.str.887)
  br label %830

810:                                              ; preds = %801
  %811 = load i32, ptr %47, align 4, !tbaa !128
  %812 = icmp eq i32 %811, 3
  br i1 %812, label %813, label %822

813:                                              ; preds = %810
  %814 = load i32, ptr %37, align 4, !tbaa !126
  %815 = load i32, ptr %38, align 4, !tbaa !126
  %816 = load ptr, ptr %5, align 8, !tbaa !5
  %817 = getelementptr inbounds i32, ptr %816, i64 4
  %818 = load i32, ptr %817, align 4, !tbaa !126
  %819 = load ptr, ptr %5, align 8, !tbaa !5
  %820 = getelementptr inbounds i32, ptr %819, i64 5
  %821 = load i32, ptr %820, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %814, i32 noundef %815, i32 noundef %818, i32 noundef %821, ptr noundef @.str.1183)
  br label %829

822:                                              ; preds = %810
  %823 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %823, ptr noundef @.str.1159)
          to label %824 unwind label %825

824:                                              ; preds = %822
  call void @__cxa_throw(ptr %823, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

825:                                              ; preds = %822
  %826 = landingpad { ptr, i32 }
          cleanup
  %827 = extractvalue { ptr, i32 } %826, 0
  store ptr %827, ptr %7, align 8
  %828 = extractvalue { ptr, i32 } %826, 1
  store i32 %828, ptr %8, align 4
  call void @__cxa_free_exception(ptr %823) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #6
  br label %1503

829:                                              ; preds = %813
  br label %830

830:                                              ; preds = %829, %804
  br label %831

831:                                              ; preds = %830, %795
  br label %832

832:                                              ; preds = %831, %786
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #6
  br label %1501

833:                                              ; preds = %409
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #6
  %834 = load ptr, ptr %5, align 8, !tbaa !5
  %835 = getelementptr inbounds i32, ptr %834, i64 3
  %836 = load i32, ptr %835, align 4, !tbaa !126
  store i32 %836, ptr %48, align 4, !tbaa !128
  %837 = load i32, ptr %48, align 4, !tbaa !128
  %838 = icmp eq i32 %837, 0
  br i1 %838, label %839, label %845

839:                                              ; preds = %833
  %840 = load i32, ptr %37, align 4, !tbaa !126
  %841 = load i32, ptr %38, align 4, !tbaa !126
  %842 = load ptr, ptr %5, align 8, !tbaa !5
  %843 = getelementptr inbounds i32, ptr %842, i64 4
  %844 = load i32, ptr %843, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %840, i32 noundef %841, i32 noundef %844, ptr noundef @.str.889)
  br label %885

845:                                              ; preds = %833
  %846 = load i32, ptr %48, align 4, !tbaa !128
  %847 = icmp eq i32 %846, 1
  br i1 %847, label %848, label %854

848:                                              ; preds = %845
  %849 = load i32, ptr %37, align 4, !tbaa !126
  %850 = load i32, ptr %38, align 4, !tbaa !126
  %851 = load ptr, ptr %5, align 8, !tbaa !5
  %852 = getelementptr inbounds i32, ptr %851, i64 4
  %853 = load i32, ptr %852, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %849, i32 noundef %850, i32 noundef %853, ptr noundef @.str.891)
  br label %884

854:                                              ; preds = %845
  %855 = load i32, ptr %48, align 4, !tbaa !128
  %856 = icmp eq i32 %855, 2
  br i1 %856, label %857, label %863

857:                                              ; preds = %854
  %858 = load i32, ptr %37, align 4, !tbaa !126
  %859 = load i32, ptr %38, align 4, !tbaa !126
  %860 = load ptr, ptr %5, align 8, !tbaa !5
  %861 = getelementptr inbounds i32, ptr %860, i64 4
  %862 = load i32, ptr %861, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %858, i32 noundef %859, i32 noundef %862, ptr noundef @.str.890)
  br label %883

863:                                              ; preds = %854
  %864 = load i32, ptr %48, align 4, !tbaa !128
  %865 = icmp eq i32 %864, 3
  br i1 %865, label %866, label %875

866:                                              ; preds = %863
  %867 = load i32, ptr %37, align 4, !tbaa !126
  %868 = load i32, ptr %38, align 4, !tbaa !126
  %869 = load ptr, ptr %5, align 8, !tbaa !5
  %870 = getelementptr inbounds i32, ptr %869, i64 4
  %871 = load i32, ptr %870, align 4, !tbaa !126
  %872 = load ptr, ptr %5, align 8, !tbaa !5
  %873 = getelementptr inbounds i32, ptr %872, i64 5
  %874 = load i32, ptr %873, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %867, i32 noundef %868, i32 noundef %871, i32 noundef %874, ptr noundef @.str.1184)
  br label %882

875:                                              ; preds = %863
  %876 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %876, ptr noundef @.str.1159)
          to label %877 unwind label %878

877:                                              ; preds = %875
  call void @__cxa_throw(ptr %876, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

878:                                              ; preds = %875
  %879 = landingpad { ptr, i32 }
          cleanup
  %880 = extractvalue { ptr, i32 } %879, 0
  store ptr %880, ptr %7, align 8
  %881 = extractvalue { ptr, i32 } %879, 1
  store i32 %881, ptr %8, align 4
  call void @__cxa_free_exception(ptr %876) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #6
  br label %1503

882:                                              ; preds = %866
  br label %883

883:                                              ; preds = %882, %857
  br label %884

884:                                              ; preds = %883, %848
  br label %885

885:                                              ; preds = %884, %839
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #6
  br label %1501

886:                                              ; preds = %409
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #6
  %887 = load ptr, ptr %5, align 8, !tbaa !5
  %888 = getelementptr inbounds i32, ptr %887, i64 3
  %889 = load i32, ptr %888, align 4, !tbaa !126
  store i32 %889, ptr %49, align 4, !tbaa !128
  %890 = load i32, ptr %49, align 4, !tbaa !128
  %891 = icmp eq i32 %890, 0
  br i1 %891, label %892, label %900

892:                                              ; preds = %886
  %893 = load i32, ptr %37, align 4, !tbaa !126
  %894 = load i32, ptr %38, align 4, !tbaa !126
  %895 = load ptr, ptr %5, align 8, !tbaa !5
  %896 = getelementptr inbounds i32, ptr %895, i64 4
  %897 = load i32, ptr %896, align 4, !tbaa !126
  %898 = load i32, ptr %10, align 4, !tbaa !127
  %899 = load i32, ptr %10, align 4, !tbaa !127
  call void @_ZN11spirv_cross12CompilerGLSL23emit_unary_func_op_castEjjjPKcNS_8SPIRType8BaseTypeES4_(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %893, i32 noundef %894, i32 noundef %897, ptr noundef @.str.1185, i32 noundef %898, i32 noundef %899)
  br label %945

900:                                              ; preds = %886
  %901 = load i32, ptr %49, align 4, !tbaa !128
  %902 = icmp eq i32 %901, 1
  br i1 %902, label %903, label %911

903:                                              ; preds = %900
  %904 = load i32, ptr %37, align 4, !tbaa !126
  %905 = load i32, ptr %38, align 4, !tbaa !126
  %906 = load ptr, ptr %5, align 8, !tbaa !5
  %907 = getelementptr inbounds i32, ptr %906, i64 4
  %908 = load i32, ptr %907, align 4, !tbaa !126
  %909 = load i32, ptr %10, align 4, !tbaa !127
  %910 = load i32, ptr %10, align 4, !tbaa !127
  call void @_ZN11spirv_cross12CompilerGLSL23emit_unary_func_op_castEjjjPKcNS_8SPIRType8BaseTypeES4_(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %904, i32 noundef %905, i32 noundef %908, ptr noundef @.str.1186, i32 noundef %909, i32 noundef %910)
  br label %944

911:                                              ; preds = %900
  %912 = load i32, ptr %49, align 4, !tbaa !128
  %913 = icmp eq i32 %912, 2
  br i1 %913, label %914, label %922

914:                                              ; preds = %911
  %915 = load i32, ptr %37, align 4, !tbaa !126
  %916 = load i32, ptr %38, align 4, !tbaa !126
  %917 = load ptr, ptr %5, align 8, !tbaa !5
  %918 = getelementptr inbounds i32, ptr %917, i64 4
  %919 = load i32, ptr %918, align 4, !tbaa !126
  %920 = load i32, ptr %10, align 4, !tbaa !127
  %921 = load i32, ptr %10, align 4, !tbaa !127
  call void @_ZN11spirv_cross12CompilerGLSL23emit_unary_func_op_castEjjjPKcNS_8SPIRType8BaseTypeES4_(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %915, i32 noundef %916, i32 noundef %919, ptr noundef @.str.1187, i32 noundef %920, i32 noundef %921)
  br label %943

922:                                              ; preds = %911
  %923 = load i32, ptr %49, align 4, !tbaa !128
  %924 = icmp eq i32 %923, 3
  br i1 %924, label %925, label %935

925:                                              ; preds = %922
  %926 = load i32, ptr %37, align 4, !tbaa !126
  %927 = load i32, ptr %38, align 4, !tbaa !126
  %928 = load ptr, ptr %5, align 8, !tbaa !5
  %929 = getelementptr inbounds i32, ptr %928, i64 4
  %930 = load i32, ptr %929, align 4, !tbaa !126
  %931 = load ptr, ptr %5, align 8, !tbaa !5
  %932 = getelementptr inbounds i32, ptr %931, i64 5
  %933 = load i32, ptr %932, align 4, !tbaa !126
  %934 = load i32, ptr %10, align 4, !tbaa !127
  call void @_ZN11spirv_cross12CompilerGLSL34emit_binary_func_op_cast_clusteredEjjjjPKcNS_8SPIRType8BaseTypeE(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %926, i32 noundef %927, i32 noundef %930, i32 noundef %933, ptr noundef @.str.1188, i32 noundef %934)
  br label %942

935:                                              ; preds = %922
  %936 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %936, ptr noundef @.str.1159)
          to label %937 unwind label %938

937:                                              ; preds = %935
  call void @__cxa_throw(ptr %936, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

938:                                              ; preds = %935
  %939 = landingpad { ptr, i32 }
          cleanup
  %940 = extractvalue { ptr, i32 } %939, 0
  store ptr %940, ptr %7, align 8
  %941 = extractvalue { ptr, i32 } %939, 1
  store i32 %941, ptr %8, align 4
  call void @__cxa_free_exception(ptr %936) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #6
  br label %1503

942:                                              ; preds = %925
  br label %943

943:                                              ; preds = %942, %914
  br label %944

944:                                              ; preds = %943, %903
  br label %945

945:                                              ; preds = %944, %892
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #6
  br label %1501

946:                                              ; preds = %409
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #6
  %947 = load ptr, ptr %5, align 8, !tbaa !5
  %948 = getelementptr inbounds i32, ptr %947, i64 3
  %949 = load i32, ptr %948, align 4, !tbaa !126
  store i32 %949, ptr %50, align 4, !tbaa !128
  %950 = load i32, ptr %50, align 4, !tbaa !128
  %951 = icmp eq i32 %950, 0
  br i1 %951, label %952, label %960

952:                                              ; preds = %946
  %953 = load i32, ptr %37, align 4, !tbaa !126
  %954 = load i32, ptr %38, align 4, !tbaa !126
  %955 = load ptr, ptr %5, align 8, !tbaa !5
  %956 = getelementptr inbounds i32, ptr %955, i64 4
  %957 = load i32, ptr %956, align 4, !tbaa !126
  %958 = load i32, ptr %10, align 4, !tbaa !127
  %959 = load i32, ptr %10, align 4, !tbaa !127
  call void @_ZN11spirv_cross12CompilerGLSL23emit_unary_func_op_castEjjjPKcNS_8SPIRType8BaseTypeES4_(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %953, i32 noundef %954, i32 noundef %957, ptr noundef @.str.1189, i32 noundef %958, i32 noundef %959)
  br label %1005

960:                                              ; preds = %946
  %961 = load i32, ptr %50, align 4, !tbaa !128
  %962 = icmp eq i32 %961, 1
  br i1 %962, label %963, label %971

963:                                              ; preds = %960
  %964 = load i32, ptr %37, align 4, !tbaa !126
  %965 = load i32, ptr %38, align 4, !tbaa !126
  %966 = load ptr, ptr %5, align 8, !tbaa !5
  %967 = getelementptr inbounds i32, ptr %966, i64 4
  %968 = load i32, ptr %967, align 4, !tbaa !126
  %969 = load i32, ptr %10, align 4, !tbaa !127
  %970 = load i32, ptr %10, align 4, !tbaa !127
  call void @_ZN11spirv_cross12CompilerGLSL23emit_unary_func_op_castEjjjPKcNS_8SPIRType8BaseTypeES4_(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %964, i32 noundef %965, i32 noundef %968, ptr noundef @.str.1190, i32 noundef %969, i32 noundef %970)
  br label %1004

971:                                              ; preds = %960
  %972 = load i32, ptr %50, align 4, !tbaa !128
  %973 = icmp eq i32 %972, 2
  br i1 %973, label %974, label %982

974:                                              ; preds = %971
  %975 = load i32, ptr %37, align 4, !tbaa !126
  %976 = load i32, ptr %38, align 4, !tbaa !126
  %977 = load ptr, ptr %5, align 8, !tbaa !5
  %978 = getelementptr inbounds i32, ptr %977, i64 4
  %979 = load i32, ptr %978, align 4, !tbaa !126
  %980 = load i32, ptr %10, align 4, !tbaa !127
  %981 = load i32, ptr %10, align 4, !tbaa !127
  call void @_ZN11spirv_cross12CompilerGLSL23emit_unary_func_op_castEjjjPKcNS_8SPIRType8BaseTypeES4_(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %975, i32 noundef %976, i32 noundef %979, ptr noundef @.str.1191, i32 noundef %980, i32 noundef %981)
  br label %1003

982:                                              ; preds = %971
  %983 = load i32, ptr %50, align 4, !tbaa !128
  %984 = icmp eq i32 %983, 3
  br i1 %984, label %985, label %995

985:                                              ; preds = %982
  %986 = load i32, ptr %37, align 4, !tbaa !126
  %987 = load i32, ptr %38, align 4, !tbaa !126
  %988 = load ptr, ptr %5, align 8, !tbaa !5
  %989 = getelementptr inbounds i32, ptr %988, i64 4
  %990 = load i32, ptr %989, align 4, !tbaa !126
  %991 = load ptr, ptr %5, align 8, !tbaa !5
  %992 = getelementptr inbounds i32, ptr %991, i64 5
  %993 = load i32, ptr %992, align 4, !tbaa !126
  %994 = load i32, ptr %10, align 4, !tbaa !127
  call void @_ZN11spirv_cross12CompilerGLSL34emit_binary_func_op_cast_clusteredEjjjjPKcNS_8SPIRType8BaseTypeE(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %986, i32 noundef %987, i32 noundef %990, i32 noundef %993, ptr noundef @.str.1192, i32 noundef %994)
  br label %1002

995:                                              ; preds = %982
  %996 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %996, ptr noundef @.str.1159)
          to label %997 unwind label %998

997:                                              ; preds = %995
  call void @__cxa_throw(ptr %996, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

998:                                              ; preds = %995
  %999 = landingpad { ptr, i32 }
          cleanup
  %1000 = extractvalue { ptr, i32 } %999, 0
  store ptr %1000, ptr %7, align 8
  %1001 = extractvalue { ptr, i32 } %999, 1
  store i32 %1001, ptr %8, align 4
  call void @__cxa_free_exception(ptr %996) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #6
  br label %1503

1002:                                             ; preds = %985
  br label %1003

1003:                                             ; preds = %1002, %974
  br label %1004

1004:                                             ; preds = %1003, %963
  br label %1005

1005:                                             ; preds = %1004, %952
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #6
  br label %1501

1006:                                             ; preds = %409
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #6
  %1007 = load ptr, ptr %5, align 8, !tbaa !5
  %1008 = getelementptr inbounds i32, ptr %1007, i64 3
  %1009 = load i32, ptr %1008, align 4, !tbaa !126
  store i32 %1009, ptr %51, align 4, !tbaa !128
  %1010 = load i32, ptr %51, align 4, !tbaa !128
  %1011 = icmp eq i32 %1010, 0
  br i1 %1011, label %1012, label %1020

1012:                                             ; preds = %1006
  %1013 = load i32, ptr %37, align 4, !tbaa !126
  %1014 = load i32, ptr %38, align 4, !tbaa !126
  %1015 = load ptr, ptr %5, align 8, !tbaa !5
  %1016 = getelementptr inbounds i32, ptr %1015, i64 4
  %1017 = load i32, ptr %1016, align 4, !tbaa !126
  %1018 = load i32, ptr %11, align 4, !tbaa !127
  %1019 = load i32, ptr %11, align 4, !tbaa !127
  call void @_ZN11spirv_cross12CompilerGLSL23emit_unary_func_op_castEjjjPKcNS_8SPIRType8BaseTypeES4_(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %1013, i32 noundef %1014, i32 noundef %1017, ptr noundef @.str.1185, i32 noundef %1018, i32 noundef %1019)
  br label %1065

1020:                                             ; preds = %1006
  %1021 = load i32, ptr %51, align 4, !tbaa !128
  %1022 = icmp eq i32 %1021, 1
  br i1 %1022, label %1023, label %1031

1023:                                             ; preds = %1020
  %1024 = load i32, ptr %37, align 4, !tbaa !126
  %1025 = load i32, ptr %38, align 4, !tbaa !126
  %1026 = load ptr, ptr %5, align 8, !tbaa !5
  %1027 = getelementptr inbounds i32, ptr %1026, i64 4
  %1028 = load i32, ptr %1027, align 4, !tbaa !126
  %1029 = load i32, ptr %11, align 4, !tbaa !127
  %1030 = load i32, ptr %11, align 4, !tbaa !127
  call void @_ZN11spirv_cross12CompilerGLSL23emit_unary_func_op_castEjjjPKcNS_8SPIRType8BaseTypeES4_(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %1024, i32 noundef %1025, i32 noundef %1028, ptr noundef @.str.1186, i32 noundef %1029, i32 noundef %1030)
  br label %1064

1031:                                             ; preds = %1020
  %1032 = load i32, ptr %51, align 4, !tbaa !128
  %1033 = icmp eq i32 %1032, 2
  br i1 %1033, label %1034, label %1042

1034:                                             ; preds = %1031
  %1035 = load i32, ptr %37, align 4, !tbaa !126
  %1036 = load i32, ptr %38, align 4, !tbaa !126
  %1037 = load ptr, ptr %5, align 8, !tbaa !5
  %1038 = getelementptr inbounds i32, ptr %1037, i64 4
  %1039 = load i32, ptr %1038, align 4, !tbaa !126
  %1040 = load i32, ptr %11, align 4, !tbaa !127
  %1041 = load i32, ptr %11, align 4, !tbaa !127
  call void @_ZN11spirv_cross12CompilerGLSL23emit_unary_func_op_castEjjjPKcNS_8SPIRType8BaseTypeES4_(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %1035, i32 noundef %1036, i32 noundef %1039, ptr noundef @.str.1187, i32 noundef %1040, i32 noundef %1041)
  br label %1063

1042:                                             ; preds = %1031
  %1043 = load i32, ptr %51, align 4, !tbaa !128
  %1044 = icmp eq i32 %1043, 3
  br i1 %1044, label %1045, label %1055

1045:                                             ; preds = %1042
  %1046 = load i32, ptr %37, align 4, !tbaa !126
  %1047 = load i32, ptr %38, align 4, !tbaa !126
  %1048 = load ptr, ptr %5, align 8, !tbaa !5
  %1049 = getelementptr inbounds i32, ptr %1048, i64 4
  %1050 = load i32, ptr %1049, align 4, !tbaa !126
  %1051 = load ptr, ptr %5, align 8, !tbaa !5
  %1052 = getelementptr inbounds i32, ptr %1051, i64 5
  %1053 = load i32, ptr %1052, align 4, !tbaa !126
  %1054 = load i32, ptr %11, align 4, !tbaa !127
  call void @_ZN11spirv_cross12CompilerGLSL34emit_binary_func_op_cast_clusteredEjjjjPKcNS_8SPIRType8BaseTypeE(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %1046, i32 noundef %1047, i32 noundef %1050, i32 noundef %1053, ptr noundef @.str.1188, i32 noundef %1054)
  br label %1062

1055:                                             ; preds = %1042
  %1056 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1056, ptr noundef @.str.1159)
          to label %1057 unwind label %1058

1057:                                             ; preds = %1055
  call void @__cxa_throw(ptr %1056, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1058:                                             ; preds = %1055
  %1059 = landingpad { ptr, i32 }
          cleanup
  %1060 = extractvalue { ptr, i32 } %1059, 0
  store ptr %1060, ptr %7, align 8
  %1061 = extractvalue { ptr, i32 } %1059, 1
  store i32 %1061, ptr %8, align 4
  call void @__cxa_free_exception(ptr %1056) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #6
  br label %1503

1062:                                             ; preds = %1045
  br label %1063

1063:                                             ; preds = %1062, %1034
  br label %1064

1064:                                             ; preds = %1063, %1023
  br label %1065

1065:                                             ; preds = %1064, %1012
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #6
  br label %1501

1066:                                             ; preds = %409
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #6
  %1067 = load ptr, ptr %5, align 8, !tbaa !5
  %1068 = getelementptr inbounds i32, ptr %1067, i64 3
  %1069 = load i32, ptr %1068, align 4, !tbaa !126
  store i32 %1069, ptr %52, align 4, !tbaa !128
  %1070 = load i32, ptr %52, align 4, !tbaa !128
  %1071 = icmp eq i32 %1070, 0
  br i1 %1071, label %1072, label %1080

1072:                                             ; preds = %1066
  %1073 = load i32, ptr %37, align 4, !tbaa !126
  %1074 = load i32, ptr %38, align 4, !tbaa !126
  %1075 = load ptr, ptr %5, align 8, !tbaa !5
  %1076 = getelementptr inbounds i32, ptr %1075, i64 4
  %1077 = load i32, ptr %1076, align 4, !tbaa !126
  %1078 = load i32, ptr %11, align 4, !tbaa !127
  %1079 = load i32, ptr %11, align 4, !tbaa !127
  call void @_ZN11spirv_cross12CompilerGLSL23emit_unary_func_op_castEjjjPKcNS_8SPIRType8BaseTypeES4_(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %1073, i32 noundef %1074, i32 noundef %1077, ptr noundef @.str.1189, i32 noundef %1078, i32 noundef %1079)
  br label %1125

1080:                                             ; preds = %1066
  %1081 = load i32, ptr %52, align 4, !tbaa !128
  %1082 = icmp eq i32 %1081, 1
  br i1 %1082, label %1083, label %1091

1083:                                             ; preds = %1080
  %1084 = load i32, ptr %37, align 4, !tbaa !126
  %1085 = load i32, ptr %38, align 4, !tbaa !126
  %1086 = load ptr, ptr %5, align 8, !tbaa !5
  %1087 = getelementptr inbounds i32, ptr %1086, i64 4
  %1088 = load i32, ptr %1087, align 4, !tbaa !126
  %1089 = load i32, ptr %11, align 4, !tbaa !127
  %1090 = load i32, ptr %11, align 4, !tbaa !127
  call void @_ZN11spirv_cross12CompilerGLSL23emit_unary_func_op_castEjjjPKcNS_8SPIRType8BaseTypeES4_(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %1084, i32 noundef %1085, i32 noundef %1088, ptr noundef @.str.1190, i32 noundef %1089, i32 noundef %1090)
  br label %1124

1091:                                             ; preds = %1080
  %1092 = load i32, ptr %52, align 4, !tbaa !128
  %1093 = icmp eq i32 %1092, 2
  br i1 %1093, label %1094, label %1102

1094:                                             ; preds = %1091
  %1095 = load i32, ptr %37, align 4, !tbaa !126
  %1096 = load i32, ptr %38, align 4, !tbaa !126
  %1097 = load ptr, ptr %5, align 8, !tbaa !5
  %1098 = getelementptr inbounds i32, ptr %1097, i64 4
  %1099 = load i32, ptr %1098, align 4, !tbaa !126
  %1100 = load i32, ptr %11, align 4, !tbaa !127
  %1101 = load i32, ptr %11, align 4, !tbaa !127
  call void @_ZN11spirv_cross12CompilerGLSL23emit_unary_func_op_castEjjjPKcNS_8SPIRType8BaseTypeES4_(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %1095, i32 noundef %1096, i32 noundef %1099, ptr noundef @.str.1191, i32 noundef %1100, i32 noundef %1101)
  br label %1123

1102:                                             ; preds = %1091
  %1103 = load i32, ptr %52, align 4, !tbaa !128
  %1104 = icmp eq i32 %1103, 3
  br i1 %1104, label %1105, label %1115

1105:                                             ; preds = %1102
  %1106 = load i32, ptr %37, align 4, !tbaa !126
  %1107 = load i32, ptr %38, align 4, !tbaa !126
  %1108 = load ptr, ptr %5, align 8, !tbaa !5
  %1109 = getelementptr inbounds i32, ptr %1108, i64 4
  %1110 = load i32, ptr %1109, align 4, !tbaa !126
  %1111 = load ptr, ptr %5, align 8, !tbaa !5
  %1112 = getelementptr inbounds i32, ptr %1111, i64 5
  %1113 = load i32, ptr %1112, align 4, !tbaa !126
  %1114 = load i32, ptr %11, align 4, !tbaa !127
  call void @_ZN11spirv_cross12CompilerGLSL34emit_binary_func_op_cast_clusteredEjjjjPKcNS_8SPIRType8BaseTypeE(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %1106, i32 noundef %1107, i32 noundef %1110, i32 noundef %1113, ptr noundef @.str.1192, i32 noundef %1114)
  br label %1122

1115:                                             ; preds = %1102
  %1116 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1116, ptr noundef @.str.1159)
          to label %1117 unwind label %1118

1117:                                             ; preds = %1115
  call void @__cxa_throw(ptr %1116, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1118:                                             ; preds = %1115
  %1119 = landingpad { ptr, i32 }
          cleanup
  %1120 = extractvalue { ptr, i32 } %1119, 0
  store ptr %1120, ptr %7, align 8
  %1121 = extractvalue { ptr, i32 } %1119, 1
  store i32 %1121, ptr %8, align 4
  call void @__cxa_free_exception(ptr %1116) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #6
  br label %1503

1122:                                             ; preds = %1105
  br label %1123

1123:                                             ; preds = %1122, %1094
  br label %1124

1124:                                             ; preds = %1123, %1083
  br label %1125

1125:                                             ; preds = %1124, %1072
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #6
  br label %1501

1126:                                             ; preds = %409
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #6
  %1127 = load ptr, ptr %5, align 8, !tbaa !5
  %1128 = getelementptr inbounds i32, ptr %1127, i64 3
  %1129 = load i32, ptr %1128, align 4, !tbaa !126
  store i32 %1129, ptr %53, align 4, !tbaa !128
  %1130 = load i32, ptr %53, align 4, !tbaa !128
  %1131 = icmp eq i32 %1130, 0
  br i1 %1131, label %1132, label %1138

1132:                                             ; preds = %1126
  %1133 = load i32, ptr %37, align 4, !tbaa !126
  %1134 = load i32, ptr %38, align 4, !tbaa !126
  %1135 = load ptr, ptr %5, align 8, !tbaa !5
  %1136 = getelementptr inbounds i32, ptr %1135, i64 4
  %1137 = load i32, ptr %1136, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %1133, i32 noundef %1134, i32 noundef %1137, ptr noundef @.str.1193)
  br label %1178

1138:                                             ; preds = %1126
  %1139 = load i32, ptr %53, align 4, !tbaa !128
  %1140 = icmp eq i32 %1139, 1
  br i1 %1140, label %1141, label %1147

1141:                                             ; preds = %1138
  %1142 = load i32, ptr %37, align 4, !tbaa !126
  %1143 = load i32, ptr %38, align 4, !tbaa !126
  %1144 = load ptr, ptr %5, align 8, !tbaa !5
  %1145 = getelementptr inbounds i32, ptr %1144, i64 4
  %1146 = load i32, ptr %1145, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %1142, i32 noundef %1143, i32 noundef %1146, ptr noundef @.str.1194)
  br label %1177

1147:                                             ; preds = %1138
  %1148 = load i32, ptr %53, align 4, !tbaa !128
  %1149 = icmp eq i32 %1148, 2
  br i1 %1149, label %1150, label %1156

1150:                                             ; preds = %1147
  %1151 = load i32, ptr %37, align 4, !tbaa !126
  %1152 = load i32, ptr %38, align 4, !tbaa !126
  %1153 = load ptr, ptr %5, align 8, !tbaa !5
  %1154 = getelementptr inbounds i32, ptr %1153, i64 4
  %1155 = load i32, ptr %1154, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %1151, i32 noundef %1152, i32 noundef %1155, ptr noundef @.str.1195)
  br label %1176

1156:                                             ; preds = %1147
  %1157 = load i32, ptr %53, align 4, !tbaa !128
  %1158 = icmp eq i32 %1157, 3
  br i1 %1158, label %1159, label %1168

1159:                                             ; preds = %1156
  %1160 = load i32, ptr %37, align 4, !tbaa !126
  %1161 = load i32, ptr %38, align 4, !tbaa !126
  %1162 = load ptr, ptr %5, align 8, !tbaa !5
  %1163 = getelementptr inbounds i32, ptr %1162, i64 4
  %1164 = load i32, ptr %1163, align 4, !tbaa !126
  %1165 = load ptr, ptr %5, align 8, !tbaa !5
  %1166 = getelementptr inbounds i32, ptr %1165, i64 5
  %1167 = load i32, ptr %1166, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %1160, i32 noundef %1161, i32 noundef %1164, i32 noundef %1167, ptr noundef @.str.1196)
  br label %1175

1168:                                             ; preds = %1156
  %1169 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1169, ptr noundef @.str.1159)
          to label %1170 unwind label %1171

1170:                                             ; preds = %1168
  call void @__cxa_throw(ptr %1169, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1171:                                             ; preds = %1168
  %1172 = landingpad { ptr, i32 }
          cleanup
  %1173 = extractvalue { ptr, i32 } %1172, 0
  store ptr %1173, ptr %7, align 8
  %1174 = extractvalue { ptr, i32 } %1172, 1
  store i32 %1174, ptr %8, align 4
  call void @__cxa_free_exception(ptr %1169) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #6
  br label %1503

1175:                                             ; preds = %1159
  br label %1176

1176:                                             ; preds = %1175, %1150
  br label %1177

1177:                                             ; preds = %1176, %1141
  br label %1178

1178:                                             ; preds = %1177, %1132
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #6
  br label %1501

1179:                                             ; preds = %409
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #6
  %1180 = load ptr, ptr %5, align 8, !tbaa !5
  %1181 = getelementptr inbounds i32, ptr %1180, i64 3
  %1182 = load i32, ptr %1181, align 4, !tbaa !126
  store i32 %1182, ptr %54, align 4, !tbaa !128
  %1183 = load i32, ptr %54, align 4, !tbaa !128
  %1184 = icmp eq i32 %1183, 0
  br i1 %1184, label %1185, label %1191

1185:                                             ; preds = %1179
  %1186 = load i32, ptr %37, align 4, !tbaa !126
  %1187 = load i32, ptr %38, align 4, !tbaa !126
  %1188 = load ptr, ptr %5, align 8, !tbaa !5
  %1189 = getelementptr inbounds i32, ptr %1188, i64 4
  %1190 = load i32, ptr %1189, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %1186, i32 noundef %1187, i32 noundef %1190, ptr noundef @.str.1197)
  br label %1231

1191:                                             ; preds = %1179
  %1192 = load i32, ptr %54, align 4, !tbaa !128
  %1193 = icmp eq i32 %1192, 1
  br i1 %1193, label %1194, label %1200

1194:                                             ; preds = %1191
  %1195 = load i32, ptr %37, align 4, !tbaa !126
  %1196 = load i32, ptr %38, align 4, !tbaa !126
  %1197 = load ptr, ptr %5, align 8, !tbaa !5
  %1198 = getelementptr inbounds i32, ptr %1197, i64 4
  %1199 = load i32, ptr %1198, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %1195, i32 noundef %1196, i32 noundef %1199, ptr noundef @.str.1198)
  br label %1230

1200:                                             ; preds = %1191
  %1201 = load i32, ptr %54, align 4, !tbaa !128
  %1202 = icmp eq i32 %1201, 2
  br i1 %1202, label %1203, label %1209

1203:                                             ; preds = %1200
  %1204 = load i32, ptr %37, align 4, !tbaa !126
  %1205 = load i32, ptr %38, align 4, !tbaa !126
  %1206 = load ptr, ptr %5, align 8, !tbaa !5
  %1207 = getelementptr inbounds i32, ptr %1206, i64 4
  %1208 = load i32, ptr %1207, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %1204, i32 noundef %1205, i32 noundef %1208, ptr noundef @.str.1199)
  br label %1229

1209:                                             ; preds = %1200
  %1210 = load i32, ptr %54, align 4, !tbaa !128
  %1211 = icmp eq i32 %1210, 3
  br i1 %1211, label %1212, label %1221

1212:                                             ; preds = %1209
  %1213 = load i32, ptr %37, align 4, !tbaa !126
  %1214 = load i32, ptr %38, align 4, !tbaa !126
  %1215 = load ptr, ptr %5, align 8, !tbaa !5
  %1216 = getelementptr inbounds i32, ptr %1215, i64 4
  %1217 = load i32, ptr %1216, align 4, !tbaa !126
  %1218 = load ptr, ptr %5, align 8, !tbaa !5
  %1219 = getelementptr inbounds i32, ptr %1218, i64 5
  %1220 = load i32, ptr %1219, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %1213, i32 noundef %1214, i32 noundef %1217, i32 noundef %1220, ptr noundef @.str.1200)
  br label %1228

1221:                                             ; preds = %1209
  %1222 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1222, ptr noundef @.str.1159)
          to label %1223 unwind label %1224

1223:                                             ; preds = %1221
  call void @__cxa_throw(ptr %1222, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1224:                                             ; preds = %1221
  %1225 = landingpad { ptr, i32 }
          cleanup
  %1226 = extractvalue { ptr, i32 } %1225, 0
  store ptr %1226, ptr %7, align 8
  %1227 = extractvalue { ptr, i32 } %1225, 1
  store i32 %1227, ptr %8, align 4
  call void @__cxa_free_exception(ptr %1222) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #6
  br label %1503

1228:                                             ; preds = %1212
  br label %1229

1229:                                             ; preds = %1228, %1203
  br label %1230

1230:                                             ; preds = %1229, %1194
  br label %1231

1231:                                             ; preds = %1230, %1185
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #6
  br label %1501

1232:                                             ; preds = %409
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #6
  %1233 = load ptr, ptr %5, align 8, !tbaa !5
  %1234 = getelementptr inbounds i32, ptr %1233, i64 3
  %1235 = load i32, ptr %1234, align 4, !tbaa !126
  store i32 %1235, ptr %55, align 4, !tbaa !128
  %1236 = load i32, ptr %55, align 4, !tbaa !128
  %1237 = icmp eq i32 %1236, 0
  br i1 %1237, label %1238, label %1244

1238:                                             ; preds = %1232
  %1239 = load i32, ptr %37, align 4, !tbaa !126
  %1240 = load i32, ptr %38, align 4, !tbaa !126
  %1241 = load ptr, ptr %5, align 8, !tbaa !5
  %1242 = getelementptr inbounds i32, ptr %1241, i64 4
  %1243 = load i32, ptr %1242, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %1239, i32 noundef %1240, i32 noundef %1243, ptr noundef @.str.1201)
  br label %1284

1244:                                             ; preds = %1232
  %1245 = load i32, ptr %55, align 4, !tbaa !128
  %1246 = icmp eq i32 %1245, 1
  br i1 %1246, label %1247, label %1253

1247:                                             ; preds = %1244
  %1248 = load i32, ptr %37, align 4, !tbaa !126
  %1249 = load i32, ptr %38, align 4, !tbaa !126
  %1250 = load ptr, ptr %5, align 8, !tbaa !5
  %1251 = getelementptr inbounds i32, ptr %1250, i64 4
  %1252 = load i32, ptr %1251, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %1248, i32 noundef %1249, i32 noundef %1252, ptr noundef @.str.1202)
  br label %1283

1253:                                             ; preds = %1244
  %1254 = load i32, ptr %55, align 4, !tbaa !128
  %1255 = icmp eq i32 %1254, 2
  br i1 %1255, label %1256, label %1262

1256:                                             ; preds = %1253
  %1257 = load i32, ptr %37, align 4, !tbaa !126
  %1258 = load i32, ptr %38, align 4, !tbaa !126
  %1259 = load ptr, ptr %5, align 8, !tbaa !5
  %1260 = getelementptr inbounds i32, ptr %1259, i64 4
  %1261 = load i32, ptr %1260, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %1257, i32 noundef %1258, i32 noundef %1261, ptr noundef @.str.1203)
  br label %1282

1262:                                             ; preds = %1253
  %1263 = load i32, ptr %55, align 4, !tbaa !128
  %1264 = icmp eq i32 %1263, 3
  br i1 %1264, label %1265, label %1274

1265:                                             ; preds = %1262
  %1266 = load i32, ptr %37, align 4, !tbaa !126
  %1267 = load i32, ptr %38, align 4, !tbaa !126
  %1268 = load ptr, ptr %5, align 8, !tbaa !5
  %1269 = getelementptr inbounds i32, ptr %1268, i64 4
  %1270 = load i32, ptr %1269, align 4, !tbaa !126
  %1271 = load ptr, ptr %5, align 8, !tbaa !5
  %1272 = getelementptr inbounds i32, ptr %1271, i64 5
  %1273 = load i32, ptr %1272, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %1266, i32 noundef %1267, i32 noundef %1270, i32 noundef %1273, ptr noundef @.str.1204)
  br label %1281

1274:                                             ; preds = %1262
  %1275 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1275, ptr noundef @.str.1159)
          to label %1276 unwind label %1277

1276:                                             ; preds = %1274
  call void @__cxa_throw(ptr %1275, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1277:                                             ; preds = %1274
  %1278 = landingpad { ptr, i32 }
          cleanup
  %1279 = extractvalue { ptr, i32 } %1278, 0
  store ptr %1279, ptr %7, align 8
  %1280 = extractvalue { ptr, i32 } %1278, 1
  store i32 %1280, ptr %8, align 4
  call void @__cxa_free_exception(ptr %1275) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #6
  br label %1503

1281:                                             ; preds = %1265
  br label %1282

1282:                                             ; preds = %1281, %1256
  br label %1283

1283:                                             ; preds = %1282, %1247
  br label %1284

1284:                                             ; preds = %1283, %1238
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #6
  br label %1501

1285:                                             ; preds = %409
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #6
  %1286 = load ptr, ptr %5, align 8, !tbaa !5
  %1287 = getelementptr inbounds i32, ptr %1286, i64 3
  %1288 = load i32, ptr %1287, align 4, !tbaa !126
  store i32 %1288, ptr %56, align 4, !tbaa !128
  %1289 = load i32, ptr %56, align 4, !tbaa !128
  %1290 = icmp eq i32 %1289, 0
  br i1 %1290, label %1291, label %1297

1291:                                             ; preds = %1285
  %1292 = load i32, ptr %37, align 4, !tbaa !126
  %1293 = load i32, ptr %38, align 4, !tbaa !126
  %1294 = load ptr, ptr %5, align 8, !tbaa !5
  %1295 = getelementptr inbounds i32, ptr %1294, i64 4
  %1296 = load i32, ptr %1295, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %1292, i32 noundef %1293, i32 noundef %1296, ptr noundef @.str.1193)
  br label %1337

1297:                                             ; preds = %1285
  %1298 = load i32, ptr %56, align 4, !tbaa !128
  %1299 = icmp eq i32 %1298, 1
  br i1 %1299, label %1300, label %1306

1300:                                             ; preds = %1297
  %1301 = load i32, ptr %37, align 4, !tbaa !126
  %1302 = load i32, ptr %38, align 4, !tbaa !126
  %1303 = load ptr, ptr %5, align 8, !tbaa !5
  %1304 = getelementptr inbounds i32, ptr %1303, i64 4
  %1305 = load i32, ptr %1304, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %1301, i32 noundef %1302, i32 noundef %1305, ptr noundef @.str.1194)
  br label %1336

1306:                                             ; preds = %1297
  %1307 = load i32, ptr %56, align 4, !tbaa !128
  %1308 = icmp eq i32 %1307, 2
  br i1 %1308, label %1309, label %1315

1309:                                             ; preds = %1306
  %1310 = load i32, ptr %37, align 4, !tbaa !126
  %1311 = load i32, ptr %38, align 4, !tbaa !126
  %1312 = load ptr, ptr %5, align 8, !tbaa !5
  %1313 = getelementptr inbounds i32, ptr %1312, i64 4
  %1314 = load i32, ptr %1313, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %1310, i32 noundef %1311, i32 noundef %1314, ptr noundef @.str.1195)
  br label %1335

1315:                                             ; preds = %1306
  %1316 = load i32, ptr %56, align 4, !tbaa !128
  %1317 = icmp eq i32 %1316, 3
  br i1 %1317, label %1318, label %1327

1318:                                             ; preds = %1315
  %1319 = load i32, ptr %37, align 4, !tbaa !126
  %1320 = load i32, ptr %38, align 4, !tbaa !126
  %1321 = load ptr, ptr %5, align 8, !tbaa !5
  %1322 = getelementptr inbounds i32, ptr %1321, i64 4
  %1323 = load i32, ptr %1322, align 4, !tbaa !126
  %1324 = load ptr, ptr %5, align 8, !tbaa !5
  %1325 = getelementptr inbounds i32, ptr %1324, i64 5
  %1326 = load i32, ptr %1325, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %1319, i32 noundef %1320, i32 noundef %1323, i32 noundef %1326, ptr noundef @.str.1196)
  br label %1334

1327:                                             ; preds = %1315
  %1328 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1328, ptr noundef @.str.1159)
          to label %1329 unwind label %1330

1329:                                             ; preds = %1327
  call void @__cxa_throw(ptr %1328, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1330:                                             ; preds = %1327
  %1331 = landingpad { ptr, i32 }
          cleanup
  %1332 = extractvalue { ptr, i32 } %1331, 0
  store ptr %1332, ptr %7, align 8
  %1333 = extractvalue { ptr, i32 } %1331, 1
  store i32 %1333, ptr %8, align 4
  call void @__cxa_free_exception(ptr %1328) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #6
  br label %1503

1334:                                             ; preds = %1318
  br label %1335

1335:                                             ; preds = %1334, %1309
  br label %1336

1336:                                             ; preds = %1335, %1300
  br label %1337

1337:                                             ; preds = %1336, %1291
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #6
  br label %1501

1338:                                             ; preds = %409
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #6
  %1339 = load ptr, ptr %5, align 8, !tbaa !5
  %1340 = getelementptr inbounds i32, ptr %1339, i64 3
  %1341 = load i32, ptr %1340, align 4, !tbaa !126
  store i32 %1341, ptr %57, align 4, !tbaa !128
  %1342 = load i32, ptr %57, align 4, !tbaa !128
  %1343 = icmp eq i32 %1342, 0
  br i1 %1343, label %1344, label %1350

1344:                                             ; preds = %1338
  %1345 = load i32, ptr %37, align 4, !tbaa !126
  %1346 = load i32, ptr %38, align 4, !tbaa !126
  %1347 = load ptr, ptr %5, align 8, !tbaa !5
  %1348 = getelementptr inbounds i32, ptr %1347, i64 4
  %1349 = load i32, ptr %1348, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %1345, i32 noundef %1346, i32 noundef %1349, ptr noundef @.str.1197)
  br label %1390

1350:                                             ; preds = %1338
  %1351 = load i32, ptr %57, align 4, !tbaa !128
  %1352 = icmp eq i32 %1351, 1
  br i1 %1352, label %1353, label %1359

1353:                                             ; preds = %1350
  %1354 = load i32, ptr %37, align 4, !tbaa !126
  %1355 = load i32, ptr %38, align 4, !tbaa !126
  %1356 = load ptr, ptr %5, align 8, !tbaa !5
  %1357 = getelementptr inbounds i32, ptr %1356, i64 4
  %1358 = load i32, ptr %1357, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %1354, i32 noundef %1355, i32 noundef %1358, ptr noundef @.str.1198)
  br label %1389

1359:                                             ; preds = %1350
  %1360 = load i32, ptr %57, align 4, !tbaa !128
  %1361 = icmp eq i32 %1360, 2
  br i1 %1361, label %1362, label %1368

1362:                                             ; preds = %1359
  %1363 = load i32, ptr %37, align 4, !tbaa !126
  %1364 = load i32, ptr %38, align 4, !tbaa !126
  %1365 = load ptr, ptr %5, align 8, !tbaa !5
  %1366 = getelementptr inbounds i32, ptr %1365, i64 4
  %1367 = load i32, ptr %1366, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %1363, i32 noundef %1364, i32 noundef %1367, ptr noundef @.str.1199)
  br label %1388

1368:                                             ; preds = %1359
  %1369 = load i32, ptr %57, align 4, !tbaa !128
  %1370 = icmp eq i32 %1369, 3
  br i1 %1370, label %1371, label %1380

1371:                                             ; preds = %1368
  %1372 = load i32, ptr %37, align 4, !tbaa !126
  %1373 = load i32, ptr %38, align 4, !tbaa !126
  %1374 = load ptr, ptr %5, align 8, !tbaa !5
  %1375 = getelementptr inbounds i32, ptr %1374, i64 4
  %1376 = load i32, ptr %1375, align 4, !tbaa !126
  %1377 = load ptr, ptr %5, align 8, !tbaa !5
  %1378 = getelementptr inbounds i32, ptr %1377, i64 5
  %1379 = load i32, ptr %1378, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %1372, i32 noundef %1373, i32 noundef %1376, i32 noundef %1379, ptr noundef @.str.1200)
  br label %1387

1380:                                             ; preds = %1368
  %1381 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1381, ptr noundef @.str.1159)
          to label %1382 unwind label %1383

1382:                                             ; preds = %1380
  call void @__cxa_throw(ptr %1381, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1383:                                             ; preds = %1380
  %1384 = landingpad { ptr, i32 }
          cleanup
  %1385 = extractvalue { ptr, i32 } %1384, 0
  store ptr %1385, ptr %7, align 8
  %1386 = extractvalue { ptr, i32 } %1384, 1
  store i32 %1386, ptr %8, align 4
  call void @__cxa_free_exception(ptr %1381) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #6
  br label %1503

1387:                                             ; preds = %1371
  br label %1388

1388:                                             ; preds = %1387, %1362
  br label %1389

1389:                                             ; preds = %1388, %1353
  br label %1390

1390:                                             ; preds = %1389, %1344
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #6
  br label %1501

1391:                                             ; preds = %409
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #6
  %1392 = load ptr, ptr %5, align 8, !tbaa !5
  %1393 = getelementptr inbounds i32, ptr %1392, i64 3
  %1394 = load i32, ptr %1393, align 4, !tbaa !126
  store i32 %1394, ptr %58, align 4, !tbaa !128
  %1395 = load i32, ptr %58, align 4, !tbaa !128
  %1396 = icmp eq i32 %1395, 0
  br i1 %1396, label %1397, label %1403

1397:                                             ; preds = %1391
  %1398 = load i32, ptr %37, align 4, !tbaa !126
  %1399 = load i32, ptr %38, align 4, !tbaa !126
  %1400 = load ptr, ptr %5, align 8, !tbaa !5
  %1401 = getelementptr inbounds i32, ptr %1400, i64 4
  %1402 = load i32, ptr %1401, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %1398, i32 noundef %1399, i32 noundef %1402, ptr noundef @.str.1201)
  br label %1443

1403:                                             ; preds = %1391
  %1404 = load i32, ptr %58, align 4, !tbaa !128
  %1405 = icmp eq i32 %1404, 1
  br i1 %1405, label %1406, label %1412

1406:                                             ; preds = %1403
  %1407 = load i32, ptr %37, align 4, !tbaa !126
  %1408 = load i32, ptr %38, align 4, !tbaa !126
  %1409 = load ptr, ptr %5, align 8, !tbaa !5
  %1410 = getelementptr inbounds i32, ptr %1409, i64 4
  %1411 = load i32, ptr %1410, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %1407, i32 noundef %1408, i32 noundef %1411, ptr noundef @.str.1202)
  br label %1442

1412:                                             ; preds = %1403
  %1413 = load i32, ptr %58, align 4, !tbaa !128
  %1414 = icmp eq i32 %1413, 2
  br i1 %1414, label %1415, label %1421

1415:                                             ; preds = %1412
  %1416 = load i32, ptr %37, align 4, !tbaa !126
  %1417 = load i32, ptr %38, align 4, !tbaa !126
  %1418 = load ptr, ptr %5, align 8, !tbaa !5
  %1419 = getelementptr inbounds i32, ptr %1418, i64 4
  %1420 = load i32, ptr %1419, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %1416, i32 noundef %1417, i32 noundef %1420, ptr noundef @.str.1203)
  br label %1441

1421:                                             ; preds = %1412
  %1422 = load i32, ptr %58, align 4, !tbaa !128
  %1423 = icmp eq i32 %1422, 3
  br i1 %1423, label %1424, label %1433

1424:                                             ; preds = %1421
  %1425 = load i32, ptr %37, align 4, !tbaa !126
  %1426 = load i32, ptr %38, align 4, !tbaa !126
  %1427 = load ptr, ptr %5, align 8, !tbaa !5
  %1428 = getelementptr inbounds i32, ptr %1427, i64 4
  %1429 = load i32, ptr %1428, align 4, !tbaa !126
  %1430 = load ptr, ptr %5, align 8, !tbaa !5
  %1431 = getelementptr inbounds i32, ptr %1430, i64 5
  %1432 = load i32, ptr %1431, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %1425, i32 noundef %1426, i32 noundef %1429, i32 noundef %1432, ptr noundef @.str.1204)
  br label %1440

1433:                                             ; preds = %1421
  %1434 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1434, ptr noundef @.str.1159)
          to label %1435 unwind label %1436

1435:                                             ; preds = %1433
  call void @__cxa_throw(ptr %1434, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1436:                                             ; preds = %1433
  %1437 = landingpad { ptr, i32 }
          cleanup
  %1438 = extractvalue { ptr, i32 } %1437, 0
  store ptr %1438, ptr %7, align 8
  %1439 = extractvalue { ptr, i32 } %1437, 1
  store i32 %1439, ptr %8, align 4
  call void @__cxa_free_exception(ptr %1434) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #6
  br label %1503

1440:                                             ; preds = %1424
  br label %1441

1441:                                             ; preds = %1440, %1415
  br label %1442

1442:                                             ; preds = %1441, %1406
  br label %1443

1443:                                             ; preds = %1442, %1397
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #6
  br label %1501

1444:                                             ; preds = %409
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #6
  %1445 = load ptr, ptr %5, align 8, !tbaa !5
  %1446 = getelementptr inbounds i32, ptr %1445, i64 4
  %1447 = load i32, ptr %1446, align 4, !tbaa !126
  %1448 = call noundef i32 @_ZNK11spirv_cross8Compiler21evaluate_constant_u32Ej(ptr noundef nonnull align 8 dereferenceable(3176) %60, i32 noundef %1447)
  store i32 %1448, ptr %59, align 4, !tbaa !126
  %1449 = load i32, ptr %59, align 4, !tbaa !126
  %1450 = icmp eq i32 %1449, 0
  br i1 %1450, label %1451, label %1457

1451:                                             ; preds = %1444
  %1452 = load i32, ptr %37, align 4, !tbaa !126
  %1453 = load i32, ptr %38, align 4, !tbaa !126
  %1454 = load ptr, ptr %5, align 8, !tbaa !5
  %1455 = getelementptr inbounds i32, ptr %1454, i64 3
  %1456 = load i32, ptr %1455, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %1452, i32 noundef %1453, i32 noundef %1456, ptr noundef @.str.1205)
  br label %1484

1457:                                             ; preds = %1444
  %1458 = load i32, ptr %59, align 4, !tbaa !126
  %1459 = icmp eq i32 %1458, 1
  br i1 %1459, label %1460, label %1466

1460:                                             ; preds = %1457
  %1461 = load i32, ptr %37, align 4, !tbaa !126
  %1462 = load i32, ptr %38, align 4, !tbaa !126
  %1463 = load ptr, ptr %5, align 8, !tbaa !5
  %1464 = getelementptr inbounds i32, ptr %1463, i64 3
  %1465 = load i32, ptr %1464, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %1461, i32 noundef %1462, i32 noundef %1465, ptr noundef @.str.1206)
  br label %1483

1466:                                             ; preds = %1457
  %1467 = load i32, ptr %59, align 4, !tbaa !126
  %1468 = icmp eq i32 %1467, 2
  br i1 %1468, label %1469, label %1475

1469:                                             ; preds = %1466
  %1470 = load i32, ptr %37, align 4, !tbaa !126
  %1471 = load i32, ptr %38, align 4, !tbaa !126
  %1472 = load ptr, ptr %5, align 8, !tbaa !5
  %1473 = getelementptr inbounds i32, ptr %1472, i64 3
  %1474 = load i32, ptr %1473, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %1470, i32 noundef %1471, i32 noundef %1474, ptr noundef @.str.1207)
  br label %1482

1475:                                             ; preds = %1466
  %1476 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1476, ptr noundef @.str.1208)
          to label %1477 unwind label %1478

1477:                                             ; preds = %1475
  call void @__cxa_throw(ptr %1476, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1478:                                             ; preds = %1475
  %1479 = landingpad { ptr, i32 }
          cleanup
  %1480 = extractvalue { ptr, i32 } %1479, 0
  store ptr %1480, ptr %7, align 8
  %1481 = extractvalue { ptr, i32 } %1479, 1
  store i32 %1481, ptr %8, align 4
  call void @__cxa_free_exception(ptr %1476) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #6
  br label %1503

1482:                                             ; preds = %1469
  br label %1483

1483:                                             ; preds = %1482, %1460
  br label %1484

1484:                                             ; preds = %1483, %1451
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #6
  br label %1501

1485:                                             ; preds = %409
  %1486 = load i32, ptr %37, align 4, !tbaa !126
  %1487 = load i32, ptr %38, align 4, !tbaa !126
  %1488 = load ptr, ptr %5, align 8, !tbaa !5
  %1489 = getelementptr inbounds i32, ptr %1488, i64 3
  %1490 = load i32, ptr %1489, align 4, !tbaa !126
  %1491 = load ptr, ptr %5, align 8, !tbaa !5
  %1492 = getelementptr inbounds i32, ptr %1491, i64 4
  %1493 = load i32, ptr %1492, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %1486, i32 noundef %1487, i32 noundef %1490, i32 noundef %1493, ptr noundef @.str.1209)
  br label %1501

1494:                                             ; preds = %409
  %1495 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1495, ptr noundef @.str.1162)
          to label %1496 unwind label %1497

1496:                                             ; preds = %1494
  call void @__cxa_throw(ptr %1495, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1497:                                             ; preds = %1494
  %1498 = landingpad { ptr, i32 }
          cleanup
  %1499 = extractvalue { ptr, i32 } %1498, 0
  store ptr %1499, ptr %7, align 8
  %1500 = extractvalue { ptr, i32 } %1498, 1
  store i32 %1500, ptr %8, align 4
  call void @__cxa_free_exception(ptr %1495) #6
  br label %1503

1501:                                             ; preds = %1485, %1484, %1443, %1390, %1337, %1284, %1231, %1178, %1125, %1065, %1005, %945, %885, %832, %779, %726, %673, %620, %562, %556, %550, %541, %532, %523, %514, %513, %468, %462, %453, %447, %441, %435, %426, %416
  %1502 = load i32, ptr %38, align 4, !tbaa !126
  call void @_ZN11spirv_cross12CompilerGLSL37register_control_dependent_expressionEj(ptr noundef nonnull align 8 dereferenceable(9848) %60, i32 noundef %1502)
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #6
  ret void

1503:                                             ; preds = %1497, %1478, %1436, %1383, %1330, %1277, %1224, %1171, %1118, %1058, %998, %938, %878, %825, %772, %719, %666, %613, %507, %425, %405
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #6
  br label %1504

1504:                                             ; preds = %1503, %385, %381, %369, %320, %278, %236, %194, %135, %123
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #6
  br label %1505

1505:                                             ; preds = %1504, %78
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #6
  br label %1506

1506:                                             ; preds = %1505
  %1507 = load ptr, ptr %7, align 8
  %1508 = load i32, ptr %8, align 4
  %1509 = insertvalue { ptr, i32 } poison, ptr %1507, 0
  %1510 = insertvalue { ptr, i32 } %1509, i32 %1508, 1
  resume { ptr, i32 } %1510
}

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

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

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


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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator.71" = type { i8 }

@_ZTIN11spirv_cross13CompilerErrorE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.886 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.887 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.888 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.889 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.890 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.891 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.1155 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.1156 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.1157 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.1158 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.1159 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.1160 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.1161 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.1162 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.1163 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.1164 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.1165 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.1166 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.1167 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.1168 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.1169 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.1170 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.1171 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.1172 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.1173 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.1174 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.1175 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.1176 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.1177 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1178 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.1179 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.1180 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.1181 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.1182 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.1183 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.1184 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.1185 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.1186 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.1187 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.1188 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.1189 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.1190 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.1191 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.1192 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.1193 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.1194 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.1195 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.1196 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.1197 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.1198 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.1199 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.1200 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.1201 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.1202 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.1203 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.1204 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.1205 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.1206 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.1207 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.1208 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.1209 = external hidden unnamed_addr constant [22 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
declare dso_local void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1 align 2

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef i32 @_ZN11spirv_crossL18to_signed_basetypeEj(i32 noundef) local_unnamed_addr #5

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef i32 @_ZN11spirv_crossL20to_unsigned_basetypeEj(i32 noundef) local_unnamed_addr #5

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN11spirv_cross12CompilerGLSL34is_supported_subgroup_op_in_openglEN3spv2OpEPKj(i32 noundef, ptr noundef) local_unnamed_addr #3 align 2

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11spirv_cross12CompilerGLSL16emit_subgroup_opERKNS_11InstructionE(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 4 dereferenceable(12) %1) unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %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 = tail call noundef ptr @_ZNK11spirv_cross8Compiler6streamERKNS_11InstructionE(ptr noundef nonnull align 8 dereferenceable(3176) %0, ptr noundef nonnull align 4 dereferenceable(12) %1)
  %24 = load i16, ptr %1, align 4, !tbaa !5
  %25 = getelementptr inbounds i8, ptr %0, i64 7648
  %26 = load i8, ptr %25, align 8, !tbaa !11, !range !121, !noundef !122
  %27 = trunc nuw i8 %26 to i1
  br i1 %27, label %36, label %28

28:                                               ; preds = %2
  %29 = zext i16 %24 to i32
  %30 = tail call noundef zeroext i1 @_ZN11spirv_cross12CompilerGLSL34is_supported_subgroup_op_in_openglEN3spv2OpEPKj(i32 noundef %29, ptr noundef %23)
  br i1 %30, label %36, label %31

31:                                               ; preds = %28
  %32 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %32, ptr noundef nonnull @.str.1155)
          to label %33 unwind label %34

33:                                               ; preds = %31
  tail call void @__cxa_throw(ptr nonnull %32, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

34:                                               ; preds = %31
  %35 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %32) #6
  br label %665

36:                                               ; preds = %28, %2
  %37 = tail call noundef i32 @_ZNK11spirv_cross12CompilerGLSL33get_integer_width_for_instructionERKNS_11InstructionE(ptr noundef nonnull align 8 dereferenceable(9848) %0, ptr noundef nonnull align 4 dereferenceable(12) %1)
  %38 = tail call noundef i32 @_ZN11spirv_crossL18to_signed_basetypeEj(i32 noundef %37)
  %39 = tail call noundef i32 @_ZN11spirv_crossL20to_unsigned_basetypeEj(i32 noundef %37)
  switch i16 %24, label %191 [
    i16 333, label %40
    i16 342, label %41
    i16 341, label %48
    i16 340, label %49
    i16 339, label %50
    i16 343, label %51
    i16 344, label %51
    i16 337, label %52
    i16 338, label %52
    i16 345, label %53
    i16 346, label %53
    i16 347, label %61
    i16 348, label %61
    i16 334, label %69
    i16 335, label %69
    i16 336, label %69
    i16 349, label %81
    i16 350, label %100
    i16 351, label %119
    i16 352, label %138
    i16 355, label %157
    i16 358, label %157
    i16 353, label %157
    i16 356, label %157
    i16 354, label %157
    i16 357, label %157
    i16 359, label %157
    i16 360, label %157
    i16 361, label %157
    i16 362, label %157
    i16 363, label %157
    i16 364, label %157
    i16 366, label %183
    i16 365, label %183
  ]

40:                                               ; preds = %36
  tail call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef 9)
  br label %196

41:                                               ; preds = %36
  %42 = getelementptr inbounds i8, ptr %23, i64 12
  %43 = load i32, ptr %42, align 4, !tbaa !123
  %44 = icmp eq i32 %43, 0
  br i1 %44, label %45, label %46

45:                                               ; preds = %41
  tail call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef 15)
  br label %196

46:                                               ; preds = %41
  %or.cond = icmp ult i32 %43, 3
  br i1 %or.cond, label %47, label %196

47:                                               ; preds = %46
  tail call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef 13)
  br label %196

48:                                               ; preds = %36
  tail call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef 14)
  br label %196

49:                                               ; preds = %36
  tail call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef 13)
  br label %196

50:                                               ; preds = %36
  tail call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef 12)
  br label %196

51:                                               ; preds = %36, %36
  tail call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef 6)
  br label %196

52:                                               ; preds = %36, %36
  tail call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef 5)
  br label %196

53:                                               ; preds = %36, %36
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %4) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull @.str.1156, ptr noundef nonnull align 1 dereferenceable(1) %4)
          to label %54 unwind label %56

54:                                               ; preds = %53
  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 %55 unwind label %58

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

56:                                               ; preds = %53
  %57 = landingpad { ptr, i32 }
          cleanup
  br label %60

58:                                               ; preds = %54
  %59 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #6
  br label %60

60:                                               ; preds = %58, %56
  %.pn511 = phi { ptr, i32 } [ %59, %58 ], [ %57, %56 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #6
  br label %665

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

62:                                               ; preds = %61
  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 %63 unwind label %66

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

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

66:                                               ; preds = %62
  %67 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #6
  br label %68

68:                                               ; preds = %66, %64
  %.pn509 = phi { ptr, i32 } [ %67, %66 ], [ %65, %64 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #6
  br label %665

69:                                               ; preds = %36, %36, %36
  %70 = getelementptr inbounds i8, ptr %23, i64 12
  %71 = load i32, ptr %70, align 4, !tbaa !123
  %72 = tail call noundef nonnull align 8 dereferenceable(336) ptr @_ZNK11spirv_cross8Compiler15expression_typeEj(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %71)
  %73 = getelementptr inbounds i8, ptr %72, i64 16
  %74 = load i32, ptr %73, align 8, !tbaa !124
  %75 = icmp eq i32 %74, 2
  %76 = getelementptr inbounds i8, ptr %72, i64 24
  %77 = load i32, ptr %76, align 8
  %78 = icmp eq i32 %77, 1
  %or.cond522 = select i1 %75, i1 %78, i1 false
  br i1 %or.cond522, label %79, label %80

79:                                               ; preds = %69
  tail call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef 7)
  br label %196

80:                                               ; preds = %69
  tail call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef 8)
  br label %196

81:                                               ; preds = %36
  %82 = getelementptr inbounds i8, ptr %23, i64 12
  %83 = load i32, ptr %82, align 4, !tbaa !123
  switch i32 %83, label %95 [
    i32 3, label %84
    i32 0, label %92
    i32 2, label %93
    i32 1, label %94
  ]

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

85:                                               ; preds = %84
  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 %86 unwind label %89

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

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

89:                                               ; preds = %85
  %90 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #6
  br label %91

91:                                               ; preds = %89, %87
  %.pn506 = phi { ptr, i32 } [ %90, %89 ], [ %88, %87 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #6
  br label %665

92:                                               ; preds = %81
  tail call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef 16)
  br label %196

93:                                               ; preds = %81
  tail call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef 17)
  br label %196

94:                                               ; preds = %81
  tail call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef 18)
  br label %196

95:                                               ; preds = %81
  %96 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %96, ptr noundef nonnull @.str.1159)
          to label %97 unwind label %98

97:                                               ; preds = %95
  tail call void @__cxa_throw(ptr nonnull %96, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

98:                                               ; preds = %95
  %99 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %96) #6
  br label %665

100:                                              ; preds = %36
  %101 = getelementptr inbounds i8, ptr %23, i64 12
  %102 = load i32, ptr %101, align 4, !tbaa !123
  switch i32 %102, label %114 [
    i32 3, label %103
    i32 0, label %111
    i32 2, label %112
    i32 1, label %113
  ]

103:                                              ; preds = %100
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull @.str.1158, ptr noundef nonnull align 1 dereferenceable(1) %10)
          to label %104 unwind label %106

104:                                              ; preds = %103
  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 %105 unwind label %108

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

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

108:                                              ; preds = %104
  %109 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #6
  br label %110

110:                                              ; preds = %108, %106
  %.pn503 = phi { ptr, i32 } [ %109, %108 ], [ %107, %106 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #6
  br label %665

111:                                              ; preds = %100
  tail call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef 19)
  br label %196

112:                                              ; preds = %100
  tail call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef 20)
  br label %196

113:                                              ; preds = %100
  tail call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef 21)
  br label %196

114:                                              ; preds = %100
  %115 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %115, ptr noundef nonnull @.str.1159)
          to label %116 unwind label %117

116:                                              ; preds = %114
  tail call void @__cxa_throw(ptr nonnull %115, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

117:                                              ; preds = %114
  %118 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %115) #6
  br label %665

119:                                              ; preds = %36
  %120 = getelementptr inbounds i8, ptr %23, i64 12
  %121 = load i32, ptr %120, align 4, !tbaa !123
  switch i32 %121, label %133 [
    i32 3, label %122
    i32 0, label %130
    i32 2, label %131
    i32 1, label %132
  ]

122:                                              ; preds = %119
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %12) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull @.str.1158, ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %123 unwind label %125

123:                                              ; preds = %122
  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 %124 unwind label %127

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

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

127:                                              ; preds = %123
  %128 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #6
  br label %129

129:                                              ; preds = %127, %125
  %.pn500 = phi { ptr, i32 } [ %128, %127 ], [ %126, %125 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #6
  br label %665

130:                                              ; preds = %119
  tail call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef 22)
  br label %196

131:                                              ; preds = %119
  tail call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef 23)
  br label %196

132:                                              ; preds = %119
  tail call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef 24)
  br label %196

133:                                              ; preds = %119
  %134 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %134, ptr noundef nonnull @.str.1159)
          to label %135 unwind label %136

135:                                              ; preds = %133
  tail call void @__cxa_throw(ptr nonnull %134, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

136:                                              ; preds = %133
  %137 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %134) #6
  br label %665

138:                                              ; preds = %36
  %139 = getelementptr inbounds i8, ptr %23, i64 12
  %140 = load i32, ptr %139, align 4, !tbaa !123
  switch i32 %140, label %152 [
    i32 3, label %141
    i32 0, label %149
    i32 2, label %150
    i32 1, label %151
  ]

141:                                              ; preds = %138
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %14) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull @.str.1158, ptr noundef nonnull align 1 dereferenceable(1) %14)
          to label %142 unwind label %144

142:                                              ; preds = %141
  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 %143 unwind label %146

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

144:                                              ; preds = %141
  %145 = landingpad { ptr, i32 }
          cleanup
  br label %148

146:                                              ; preds = %142
  %147 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #6
  br label %148

148:                                              ; preds = %146, %144
  %.pn497 = phi { ptr, i32 } [ %147, %146 ], [ %145, %144 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #6
  br label %665

149:                                              ; preds = %138
  tail call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef 25)
  br label %196

150:                                              ; preds = %138
  tail call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef 26)
  br label %196

151:                                              ; preds = %138
  tail call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef 27)
  br label %196

152:                                              ; preds = %138
  %153 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %153, ptr noundef nonnull @.str.1159)
          to label %154 unwind label %155

154:                                              ; preds = %152
  tail call void @__cxa_throw(ptr nonnull %153, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

155:                                              ; preds = %152
  %156 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %153) #6
  br label %665

157:                                              ; preds = %36, %36, %36, %36, %36, %36, %36, %36, %36, %36, %36, %36
  %158 = getelementptr inbounds i8, ptr %23, i64 12
  %159 = load i32, ptr %158, align 4, !tbaa !123
  %160 = icmp eq i32 %159, 3
  br i1 %160, label %161, label %169

161:                                              ; preds = %157
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %16) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull @.str.1158, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %162 unwind label %164

162:                                              ; preds = %161
  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 %163 unwind label %166

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

164:                                              ; preds = %161
  %165 = landingpad { ptr, i32 }
          cleanup
  br label %168

166:                                              ; preds = %162
  %167 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #6
  br label %168

168:                                              ; preds = %166, %164
  %.pn494 = phi { ptr, i32 } [ %167, %166 ], [ %165, %164 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #6
  br label %665

169:                                              ; preds = %157
  %or.cond5 = icmp ult i32 %159, 3
  br i1 %or.cond5, label %170, label %178

170:                                              ; preds = %169
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %18) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull @.str.1160, ptr noundef nonnull align 1 dereferenceable(1) %18)
          to label %171 unwind label %173

171:                                              ; preds = %170
  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 %172 unwind label %175

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

173:                                              ; preds = %170
  %174 = landingpad { ptr, i32 }
          cleanup
  br label %177

175:                                              ; preds = %171
  %176 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #6
  br label %177

177:                                              ; preds = %175, %173
  %.pn492 = phi { ptr, i32 } [ %176, %175 ], [ %174, %173 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #6
  br label %665

178:                                              ; preds = %169
  %179 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %179, ptr noundef nonnull @.str.1159)
          to label %180 unwind label %181

180:                                              ; preds = %178
  tail call void @__cxa_throw(ptr nonnull %179, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

181:                                              ; preds = %178
  %182 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %179) #6
  br label %665

183:                                              ; preds = %36, %36
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %20) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull @.str.1161, ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %184 unwind label %186

184:                                              ; preds = %183
  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 %185 unwind label %188

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

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

188:                                              ; preds = %184
  %189 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #6
  br label %190

190:                                              ; preds = %188, %186
  %.pn = phi { ptr, i32 } [ %189, %188 ], [ %187, %186 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #6
  br label %665

191:                                              ; preds = %36
  %192 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %192, ptr noundef nonnull @.str.1162)
          to label %193 unwind label %194

193:                                              ; preds = %191
  tail call void @__cxa_throw(ptr nonnull %192, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

194:                                              ; preds = %191
  %195 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %192) #6
  br label %665

196:                                              ; preds = %163, %172, %143, %150, %151, %149, %124, %131, %132, %130, %105, %112, %113, %111, %86, %93, %94, %92, %79, %80, %45, %46, %47, %185, %63, %55, %52, %51, %50, %49, %48, %40
  %197 = load i32, ptr %23, align 4, !tbaa !123
  %198 = getelementptr inbounds i8, ptr %23, i64 4
  %199 = load i32, ptr %198, align 4, !tbaa !123
  %200 = getelementptr inbounds i8, ptr %23, i64 8
  %201 = load i32, ptr %200, align 4, !tbaa !123
  %202 = call noundef i32 @_ZNK11spirv_cross8Compiler21evaluate_constant_u32Ej(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %201)
  %.not = icmp eq i32 %202, 3
  br i1 %.not, label %208, label %203

203:                                              ; preds = %196
  %204 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %204, ptr noundef nonnull @.str.1163)
          to label %205 unwind label %206

205:                                              ; preds = %203
  call void @__cxa_throw(ptr nonnull %204, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

206:                                              ; preds = %203
  %207 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %204) #6
  br label %665

208:                                              ; preds = %196
  switch i16 %24, label %default.unreachable [
    i16 333, label %209
    i16 337, label %218
    i16 338, label %223
    i16 339, label %226
    i16 340, label %229
    i16 341, label %232
    i16 343, label %237
    i16 344, label %240
    i16 342, label %243
    i16 345, label %260
    i16 346, label %265
    i16 347, label %270
    i16 348, label %275
    i16 334, label %280
    i16 335, label %283
    i16 336, label %286
    i16 350, label %289
    i16 352, label %311
    i16 355, label %333
    i16 358, label %355
    i16 349, label %377
    i16 351, label %399
    i16 353, label %421
    i16 356, label %443
    i16 354, label %465
    i16 357, label %487
    i16 359, label %509
    i16 360, label %531
    i16 361, label %553
    i16 362, label %575
    i16 363, label %597
    i16 364, label %619
    i16 366, label %641
    i16 365, label %659
  ]

209:                                              ; preds = %208
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %21) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %22) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull @.str.1164, ptr noundef nonnull align 1 dereferenceable(1) %22)
          to label %210 unwind label %213

210:                                              ; preds = %209
  %211 = invoke noundef nonnull align 8 dereferenceable(236) ptr @_ZN11spirv_cross12CompilerGLSL7emit_opEjjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbb(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, ptr noundef nonnull align 8 dereferenceable(32) %21, i1 noundef zeroext true, i1 noundef zeroext false)
          to label %212 unwind label %215

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

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

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

217:                                              ; preds = %215, %213
  %.pn513 = phi { ptr, i32 } [ %216, %215 ], [ %214, %213 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %22) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #6
  br label %665

218:                                              ; preds = %208
  %219 = getelementptr inbounds i8, ptr %23, i64 12
  %220 = load i32, ptr %219, align 4, !tbaa !123
  %221 = getelementptr inbounds i8, ptr %23, i64 16
  %222 = load i32, ptr %221, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %220, i32 noundef %222, ptr noundef nonnull @.str.1165)
  br label %664

223:                                              ; preds = %208
  %224 = getelementptr inbounds i8, ptr %23, i64 12
  %225 = load i32, ptr %224, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %225, ptr noundef nonnull @.str.1166)
  br label %664

226:                                              ; preds = %208
  %227 = getelementptr inbounds i8, ptr %23, i64 12
  %228 = load i32, ptr %227, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %228, ptr noundef nonnull @.str.1167)
  br label %664

229:                                              ; preds = %208
  %230 = getelementptr inbounds i8, ptr %23, i64 12
  %231 = load i32, ptr %230, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %231, ptr noundef nonnull @.str.1168)
  br label %664

232:                                              ; preds = %208
  %233 = getelementptr inbounds i8, ptr %23, i64 12
  %234 = load i32, ptr %233, align 4, !tbaa !123
  %235 = getelementptr inbounds i8, ptr %23, i64 16
  %236 = load i32, ptr %235, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %234, i32 noundef %236, ptr noundef nonnull @.str.1169)
  br label %664

237:                                              ; preds = %208
  %238 = getelementptr inbounds i8, ptr %23, i64 12
  %239 = load i32, ptr %238, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %239, ptr noundef nonnull @.str.1170)
  br label %664

240:                                              ; preds = %208
  %241 = getelementptr inbounds i8, ptr %23, i64 12
  %242 = load i32, ptr %241, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %242, ptr noundef nonnull @.str.1171)
  br label %664

243:                                              ; preds = %208
  %244 = getelementptr inbounds i8, ptr %23, i64 12
  %245 = load i32, ptr %244, align 4, !tbaa !123
  switch i32 %245, label %255 [
    i32 0, label %246
    i32 1, label %249
    i32 2, label %252
  ]

246:                                              ; preds = %243
  %247 = getelementptr inbounds i8, ptr %23, i64 16
  %248 = load i32, ptr %247, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %248, ptr noundef nonnull @.str.1172)
  br label %664

249:                                              ; preds = %243
  %250 = getelementptr inbounds i8, ptr %23, i64 16
  %251 = load i32, ptr %250, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %251, ptr noundef nonnull @.str.1173)
  br label %664

252:                                              ; preds = %243
  %253 = getelementptr inbounds i8, ptr %23, i64 16
  %254 = load i32, ptr %253, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %254, ptr noundef nonnull @.str.1174)
  br label %664

255:                                              ; preds = %243
  %256 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %256, ptr noundef nonnull @.str.1175)
          to label %257 unwind label %258

257:                                              ; preds = %255
  call void @__cxa_throw(ptr nonnull %256, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

258:                                              ; preds = %255
  %259 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %256) #6
  br label %665

260:                                              ; preds = %208
  %261 = getelementptr inbounds i8, ptr %23, i64 12
  %262 = load i32, ptr %261, align 4, !tbaa !123
  %263 = getelementptr inbounds i8, ptr %23, i64 16
  %264 = load i32, ptr %263, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %262, i32 noundef %264, ptr noundef nonnull @.str.1176)
  br label %664

265:                                              ; preds = %208
  %266 = getelementptr inbounds i8, ptr %23, i64 12
  %267 = load i32, ptr %266, align 4, !tbaa !123
  %268 = getelementptr inbounds i8, ptr %23, i64 16
  %269 = load i32, ptr %268, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %267, i32 noundef %269, ptr noundef nonnull @.str.1177)
  br label %664

270:                                              ; preds = %208
  %271 = getelementptr inbounds i8, ptr %23, i64 12
  %272 = load i32, ptr %271, align 4, !tbaa !123
  %273 = getelementptr inbounds i8, ptr %23, i64 16
  %274 = load i32, ptr %273, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %272, i32 noundef %274, ptr noundef nonnull @.str.1178)
  br label %664

275:                                              ; preds = %208
  %276 = getelementptr inbounds i8, ptr %23, i64 12
  %277 = load i32, ptr %276, align 4, !tbaa !123
  %278 = getelementptr inbounds i8, ptr %23, i64 16
  %279 = load i32, ptr %278, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %277, i32 noundef %279, ptr noundef nonnull @.str.1179)
  br label %664

280:                                              ; preds = %208
  %281 = getelementptr inbounds i8, ptr %23, i64 12
  %282 = load i32, ptr %281, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %282, ptr noundef nonnull @.str.1180)
  br label %664

283:                                              ; preds = %208
  %284 = getelementptr inbounds i8, ptr %23, i64 12
  %285 = load i32, ptr %284, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %285, ptr noundef nonnull @.str.1181)
  br label %664

286:                                              ; preds = %208
  %287 = getelementptr inbounds i8, ptr %23, i64 12
  %288 = load i32, ptr %287, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %288, ptr noundef nonnull @.str.1182)
  br label %664

289:                                              ; preds = %208
  %290 = getelementptr inbounds i8, ptr %23, i64 12
  %291 = load i32, ptr %290, align 4, !tbaa !123
  switch i32 %291, label %306 [
    i32 0, label %292
    i32 1, label %295
    i32 2, label %298
    i32 3, label %301
  ]

292:                                              ; preds = %289
  %293 = getelementptr inbounds i8, ptr %23, i64 16
  %294 = load i32, ptr %293, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %294, ptr noundef nonnull @.str.886)
  br label %664

295:                                              ; preds = %289
  %296 = getelementptr inbounds i8, ptr %23, i64 16
  %297 = load i32, ptr %296, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %297, ptr noundef nonnull @.str.888)
  br label %664

298:                                              ; preds = %289
  %299 = getelementptr inbounds i8, ptr %23, i64 16
  %300 = load i32, ptr %299, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %300, ptr noundef nonnull @.str.887)
  br label %664

301:                                              ; preds = %289
  %302 = getelementptr inbounds i8, ptr %23, i64 16
  %303 = load i32, ptr %302, align 4, !tbaa !123
  %304 = getelementptr inbounds i8, ptr %23, i64 20
  %305 = load i32, ptr %304, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %303, i32 noundef %305, ptr noundef nonnull @.str.1183)
  br label %664

306:                                              ; preds = %289
  %307 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %307, ptr noundef nonnull @.str.1159)
          to label %308 unwind label %309

308:                                              ; preds = %306
  call void @__cxa_throw(ptr nonnull %307, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

309:                                              ; preds = %306
  %310 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %307) #6
  br label %665

311:                                              ; preds = %208
  %312 = getelementptr inbounds i8, ptr %23, i64 12
  %313 = load i32, ptr %312, align 4, !tbaa !123
  switch i32 %313, label %328 [
    i32 0, label %314
    i32 1, label %317
    i32 2, label %320
    i32 3, label %323
  ]

314:                                              ; preds = %311
  %315 = getelementptr inbounds i8, ptr %23, i64 16
  %316 = load i32, ptr %315, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %316, ptr noundef nonnull @.str.889)
  br label %664

317:                                              ; preds = %311
  %318 = getelementptr inbounds i8, ptr %23, i64 16
  %319 = load i32, ptr %318, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %319, ptr noundef nonnull @.str.891)
  br label %664

320:                                              ; preds = %311
  %321 = getelementptr inbounds i8, ptr %23, i64 16
  %322 = load i32, ptr %321, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %322, ptr noundef nonnull @.str.890)
  br label %664

323:                                              ; preds = %311
  %324 = getelementptr inbounds i8, ptr %23, i64 16
  %325 = load i32, ptr %324, align 4, !tbaa !123
  %326 = getelementptr inbounds i8, ptr %23, i64 20
  %327 = load i32, ptr %326, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %325, i32 noundef %327, ptr noundef nonnull @.str.1184)
  br label %664

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

330:                                              ; preds = %328
  call void @__cxa_throw(ptr nonnull %329, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

331:                                              ; preds = %328
  %332 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %329) #6
  br label %665

333:                                              ; preds = %208
  %334 = getelementptr inbounds i8, ptr %23, i64 12
  %335 = load i32, ptr %334, align 4, !tbaa !123
  switch i32 %335, label %350 [
    i32 0, label %336
    i32 1, label %339
    i32 2, label %342
    i32 3, label %345
  ]

336:                                              ; preds = %333
  %337 = getelementptr inbounds i8, ptr %23, i64 16
  %338 = load i32, ptr %337, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %338, ptr noundef nonnull @.str.1185)
  br label %664

339:                                              ; preds = %333
  %340 = getelementptr inbounds i8, ptr %23, i64 16
  %341 = load i32, ptr %340, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %341, ptr noundef nonnull @.str.1186)
  br label %664

342:                                              ; preds = %333
  %343 = getelementptr inbounds i8, ptr %23, i64 16
  %344 = load i32, ptr %343, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %344, ptr noundef nonnull @.str.1187)
  br label %664

345:                                              ; preds = %333
  %346 = getelementptr inbounds i8, ptr %23, i64 16
  %347 = load i32, ptr %346, align 4, !tbaa !123
  %348 = getelementptr inbounds i8, ptr %23, i64 20
  %349 = load i32, ptr %348, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %347, i32 noundef %349, ptr noundef nonnull @.str.1188)
  br label %664

350:                                              ; preds = %333
  %351 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %351, ptr noundef nonnull @.str.1159)
          to label %352 unwind label %353

352:                                              ; preds = %350
  call void @__cxa_throw(ptr nonnull %351, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

353:                                              ; preds = %350
  %354 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %351) #6
  br label %665

355:                                              ; preds = %208
  %356 = getelementptr inbounds i8, ptr %23, i64 12
  %357 = load i32, ptr %356, align 4, !tbaa !123
  switch i32 %357, label %372 [
    i32 0, label %358
    i32 1, label %361
    i32 2, label %364
    i32 3, label %367
  ]

358:                                              ; preds = %355
  %359 = getelementptr inbounds i8, ptr %23, i64 16
  %360 = load i32, ptr %359, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %360, ptr noundef nonnull @.str.1189)
  br label %664

361:                                              ; preds = %355
  %362 = getelementptr inbounds i8, ptr %23, i64 16
  %363 = load i32, ptr %362, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %363, ptr noundef nonnull @.str.1190)
  br label %664

364:                                              ; preds = %355
  %365 = getelementptr inbounds i8, ptr %23, i64 16
  %366 = load i32, ptr %365, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %366, ptr noundef nonnull @.str.1191)
  br label %664

367:                                              ; preds = %355
  %368 = getelementptr inbounds i8, ptr %23, i64 16
  %369 = load i32, ptr %368, align 4, !tbaa !123
  %370 = getelementptr inbounds i8, ptr %23, i64 20
  %371 = load i32, ptr %370, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %369, i32 noundef %371, ptr noundef nonnull @.str.1192)
  br label %664

372:                                              ; preds = %355
  %373 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %373, ptr noundef nonnull @.str.1159)
          to label %374 unwind label %375

374:                                              ; preds = %372
  call void @__cxa_throw(ptr nonnull %373, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

375:                                              ; preds = %372
  %376 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %373) #6
  br label %665

377:                                              ; preds = %208
  %378 = getelementptr inbounds i8, ptr %23, i64 12
  %379 = load i32, ptr %378, align 4, !tbaa !123
  switch i32 %379, label %394 [
    i32 0, label %380
    i32 1, label %383
    i32 2, label %386
    i32 3, label %389
  ]

380:                                              ; preds = %377
  %381 = getelementptr inbounds i8, ptr %23, i64 16
  %382 = load i32, ptr %381, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %382, ptr noundef nonnull @.str.886)
  br label %664

383:                                              ; preds = %377
  %384 = getelementptr inbounds i8, ptr %23, i64 16
  %385 = load i32, ptr %384, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %385, ptr noundef nonnull @.str.888)
  br label %664

386:                                              ; preds = %377
  %387 = getelementptr inbounds i8, ptr %23, i64 16
  %388 = load i32, ptr %387, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %388, ptr noundef nonnull @.str.887)
  br label %664

389:                                              ; preds = %377
  %390 = getelementptr inbounds i8, ptr %23, i64 16
  %391 = load i32, ptr %390, align 4, !tbaa !123
  %392 = getelementptr inbounds i8, ptr %23, i64 20
  %393 = load i32, ptr %392, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %391, i32 noundef %393, ptr noundef nonnull @.str.1183)
  br label %664

394:                                              ; preds = %377
  %395 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %395, ptr noundef nonnull @.str.1159)
          to label %396 unwind label %397

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

397:                                              ; preds = %394
  %398 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %395) #6
  br label %665

399:                                              ; preds = %208
  %400 = getelementptr inbounds i8, ptr %23, i64 12
  %401 = load i32, ptr %400, align 4, !tbaa !123
  switch i32 %401, label %416 [
    i32 0, label %402
    i32 1, label %405
    i32 2, label %408
    i32 3, label %411
  ]

402:                                              ; preds = %399
  %403 = getelementptr inbounds i8, ptr %23, i64 16
  %404 = load i32, ptr %403, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %404, ptr noundef nonnull @.str.889)
  br label %664

405:                                              ; preds = %399
  %406 = getelementptr inbounds i8, ptr %23, i64 16
  %407 = load i32, ptr %406, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %407, ptr noundef nonnull @.str.891)
  br label %664

408:                                              ; preds = %399
  %409 = getelementptr inbounds i8, ptr %23, i64 16
  %410 = load i32, ptr %409, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %410, ptr noundef nonnull @.str.890)
  br label %664

411:                                              ; preds = %399
  %412 = getelementptr inbounds i8, ptr %23, i64 16
  %413 = load i32, ptr %412, align 4, !tbaa !123
  %414 = getelementptr inbounds i8, ptr %23, i64 20
  %415 = load i32, ptr %414, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %413, i32 noundef %415, ptr noundef nonnull @.str.1184)
  br label %664

416:                                              ; preds = %399
  %417 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %417, ptr noundef nonnull @.str.1159)
          to label %418 unwind label %419

418:                                              ; preds = %416
  call void @__cxa_throw(ptr nonnull %417, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

419:                                              ; preds = %416
  %420 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %417) #6
  br label %665

421:                                              ; preds = %208
  %422 = getelementptr inbounds i8, ptr %23, i64 12
  %423 = load i32, ptr %422, align 4, !tbaa !123
  switch i32 %423, label %438 [
    i32 0, label %424
    i32 1, label %427
    i32 2, label %430
    i32 3, label %433
  ]

424:                                              ; preds = %421
  %425 = getelementptr inbounds i8, ptr %23, i64 16
  %426 = load i32, ptr %425, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL23emit_unary_func_op_castEjjjPKcNS_8SPIRType8BaseTypeES4_(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %426, ptr noundef nonnull @.str.1185, i32 noundef %38, i32 noundef %38)
  br label %664

427:                                              ; preds = %421
  %428 = getelementptr inbounds i8, ptr %23, i64 16
  %429 = load i32, ptr %428, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL23emit_unary_func_op_castEjjjPKcNS_8SPIRType8BaseTypeES4_(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %429, ptr noundef nonnull @.str.1186, i32 noundef %38, i32 noundef %38)
  br label %664

430:                                              ; preds = %421
  %431 = getelementptr inbounds i8, ptr %23, i64 16
  %432 = load i32, ptr %431, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL23emit_unary_func_op_castEjjjPKcNS_8SPIRType8BaseTypeES4_(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %432, ptr noundef nonnull @.str.1187, i32 noundef %38, i32 noundef %38)
  br label %664

433:                                              ; preds = %421
  %434 = getelementptr inbounds i8, ptr %23, i64 16
  %435 = load i32, ptr %434, align 4, !tbaa !123
  %436 = getelementptr inbounds i8, ptr %23, i64 20
  %437 = load i32, ptr %436, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL34emit_binary_func_op_cast_clusteredEjjjjPKcNS_8SPIRType8BaseTypeE(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %435, i32 noundef %437, ptr noundef nonnull @.str.1188, i32 noundef %38)
  br label %664

438:                                              ; preds = %421
  %439 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %439, ptr noundef nonnull @.str.1159)
          to label %440 unwind label %441

440:                                              ; preds = %438
  call void @__cxa_throw(ptr nonnull %439, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

441:                                              ; preds = %438
  %442 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %439) #6
  br label %665

443:                                              ; preds = %208
  %444 = getelementptr inbounds i8, ptr %23, i64 12
  %445 = load i32, ptr %444, align 4, !tbaa !123
  switch i32 %445, label %460 [
    i32 0, label %446
    i32 1, label %449
    i32 2, label %452
    i32 3, label %455
  ]

446:                                              ; preds = %443
  %447 = getelementptr inbounds i8, ptr %23, i64 16
  %448 = load i32, ptr %447, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL23emit_unary_func_op_castEjjjPKcNS_8SPIRType8BaseTypeES4_(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %448, ptr noundef nonnull @.str.1189, i32 noundef %38, i32 noundef %38)
  br label %664

449:                                              ; preds = %443
  %450 = getelementptr inbounds i8, ptr %23, i64 16
  %451 = load i32, ptr %450, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL23emit_unary_func_op_castEjjjPKcNS_8SPIRType8BaseTypeES4_(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %451, ptr noundef nonnull @.str.1190, i32 noundef %38, i32 noundef %38)
  br label %664

452:                                              ; preds = %443
  %453 = getelementptr inbounds i8, ptr %23, i64 16
  %454 = load i32, ptr %453, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL23emit_unary_func_op_castEjjjPKcNS_8SPIRType8BaseTypeES4_(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %454, ptr noundef nonnull @.str.1191, i32 noundef %38, i32 noundef %38)
  br label %664

455:                                              ; preds = %443
  %456 = getelementptr inbounds i8, ptr %23, i64 16
  %457 = load i32, ptr %456, align 4, !tbaa !123
  %458 = getelementptr inbounds i8, ptr %23, i64 20
  %459 = load i32, ptr %458, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL34emit_binary_func_op_cast_clusteredEjjjjPKcNS_8SPIRType8BaseTypeE(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %457, i32 noundef %459, ptr noundef nonnull @.str.1192, i32 noundef %38)
  br label %664

460:                                              ; preds = %443
  %461 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %461, ptr noundef nonnull @.str.1159)
          to label %462 unwind label %463

462:                                              ; preds = %460
  call void @__cxa_throw(ptr nonnull %461, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

463:                                              ; preds = %460
  %464 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %461) #6
  br label %665

465:                                              ; preds = %208
  %466 = getelementptr inbounds i8, ptr %23, i64 12
  %467 = load i32, ptr %466, align 4, !tbaa !123
  switch i32 %467, label %482 [
    i32 0, label %468
    i32 1, label %471
    i32 2, label %474
    i32 3, label %477
  ]

468:                                              ; preds = %465
  %469 = getelementptr inbounds i8, ptr %23, i64 16
  %470 = load i32, ptr %469, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL23emit_unary_func_op_castEjjjPKcNS_8SPIRType8BaseTypeES4_(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %470, ptr noundef nonnull @.str.1185, i32 noundef %39, i32 noundef %39)
  br label %664

471:                                              ; preds = %465
  %472 = getelementptr inbounds i8, ptr %23, i64 16
  %473 = load i32, ptr %472, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL23emit_unary_func_op_castEjjjPKcNS_8SPIRType8BaseTypeES4_(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %473, ptr noundef nonnull @.str.1186, i32 noundef %39, i32 noundef %39)
  br label %664

474:                                              ; preds = %465
  %475 = getelementptr inbounds i8, ptr %23, i64 16
  %476 = load i32, ptr %475, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL23emit_unary_func_op_castEjjjPKcNS_8SPIRType8BaseTypeES4_(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %476, ptr noundef nonnull @.str.1187, i32 noundef %39, i32 noundef %39)
  br label %664

477:                                              ; preds = %465
  %478 = getelementptr inbounds i8, ptr %23, i64 16
  %479 = load i32, ptr %478, align 4, !tbaa !123
  %480 = getelementptr inbounds i8, ptr %23, i64 20
  %481 = load i32, ptr %480, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL34emit_binary_func_op_cast_clusteredEjjjjPKcNS_8SPIRType8BaseTypeE(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %479, i32 noundef %481, ptr noundef nonnull @.str.1188, i32 noundef %39)
  br label %664

482:                                              ; preds = %465
  %483 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %483, ptr noundef nonnull @.str.1159)
          to label %484 unwind label %485

484:                                              ; preds = %482
  call void @__cxa_throw(ptr nonnull %483, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

485:                                              ; preds = %482
  %486 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %483) #6
  br label %665

487:                                              ; preds = %208
  %488 = getelementptr inbounds i8, ptr %23, i64 12
  %489 = load i32, ptr %488, align 4, !tbaa !123
  switch i32 %489, label %504 [
    i32 0, label %490
    i32 1, label %493
    i32 2, label %496
    i32 3, label %499
  ]

490:                                              ; preds = %487
  %491 = getelementptr inbounds i8, ptr %23, i64 16
  %492 = load i32, ptr %491, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL23emit_unary_func_op_castEjjjPKcNS_8SPIRType8BaseTypeES4_(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %492, ptr noundef nonnull @.str.1189, i32 noundef %39, i32 noundef %39)
  br label %664

493:                                              ; preds = %487
  %494 = getelementptr inbounds i8, ptr %23, i64 16
  %495 = load i32, ptr %494, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL23emit_unary_func_op_castEjjjPKcNS_8SPIRType8BaseTypeES4_(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %495, ptr noundef nonnull @.str.1190, i32 noundef %39, i32 noundef %39)
  br label %664

496:                                              ; preds = %487
  %497 = getelementptr inbounds i8, ptr %23, i64 16
  %498 = load i32, ptr %497, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL23emit_unary_func_op_castEjjjPKcNS_8SPIRType8BaseTypeES4_(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %498, ptr noundef nonnull @.str.1191, i32 noundef %39, i32 noundef %39)
  br label %664

499:                                              ; preds = %487
  %500 = getelementptr inbounds i8, ptr %23, i64 16
  %501 = load i32, ptr %500, align 4, !tbaa !123
  %502 = getelementptr inbounds i8, ptr %23, i64 20
  %503 = load i32, ptr %502, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL34emit_binary_func_op_cast_clusteredEjjjjPKcNS_8SPIRType8BaseTypeE(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %501, i32 noundef %503, ptr noundef nonnull @.str.1192, i32 noundef %39)
  br label %664

504:                                              ; preds = %487
  %505 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %505, ptr noundef nonnull @.str.1159)
          to label %506 unwind label %507

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

507:                                              ; preds = %504
  %508 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %505) #6
  br label %665

509:                                              ; preds = %208
  %510 = getelementptr inbounds i8, ptr %23, i64 12
  %511 = load i32, ptr %510, align 4, !tbaa !123
  switch i32 %511, label %526 [
    i32 0, label %512
    i32 1, label %515
    i32 2, label %518
    i32 3, label %521
  ]

512:                                              ; preds = %509
  %513 = getelementptr inbounds i8, ptr %23, i64 16
  %514 = load i32, ptr %513, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %514, ptr noundef nonnull @.str.1193)
  br label %664

515:                                              ; preds = %509
  %516 = getelementptr inbounds i8, ptr %23, i64 16
  %517 = load i32, ptr %516, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %517, ptr noundef nonnull @.str.1194)
  br label %664

518:                                              ; preds = %509
  %519 = getelementptr inbounds i8, ptr %23, i64 16
  %520 = load i32, ptr %519, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %520, ptr noundef nonnull @.str.1195)
  br label %664

521:                                              ; preds = %509
  %522 = getelementptr inbounds i8, ptr %23, i64 16
  %523 = load i32, ptr %522, align 4, !tbaa !123
  %524 = getelementptr inbounds i8, ptr %23, i64 20
  %525 = load i32, ptr %524, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %523, i32 noundef %525, ptr noundef nonnull @.str.1196)
  br label %664

526:                                              ; preds = %509
  %527 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %527, ptr noundef nonnull @.str.1159)
          to label %528 unwind label %529

528:                                              ; preds = %526
  call void @__cxa_throw(ptr nonnull %527, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

529:                                              ; preds = %526
  %530 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %527) #6
  br label %665

531:                                              ; preds = %208
  %532 = getelementptr inbounds i8, ptr %23, i64 12
  %533 = load i32, ptr %532, align 4, !tbaa !123
  switch i32 %533, label %548 [
    i32 0, label %534
    i32 1, label %537
    i32 2, label %540
    i32 3, label %543
  ]

534:                                              ; preds = %531
  %535 = getelementptr inbounds i8, ptr %23, i64 16
  %536 = load i32, ptr %535, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %536, ptr noundef nonnull @.str.1197)
  br label %664

537:                                              ; preds = %531
  %538 = getelementptr inbounds i8, ptr %23, i64 16
  %539 = load i32, ptr %538, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %539, ptr noundef nonnull @.str.1198)
  br label %664

540:                                              ; preds = %531
  %541 = getelementptr inbounds i8, ptr %23, i64 16
  %542 = load i32, ptr %541, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %542, ptr noundef nonnull @.str.1199)
  br label %664

543:                                              ; preds = %531
  %544 = getelementptr inbounds i8, ptr %23, i64 16
  %545 = load i32, ptr %544, align 4, !tbaa !123
  %546 = getelementptr inbounds i8, ptr %23, i64 20
  %547 = load i32, ptr %546, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %545, i32 noundef %547, ptr noundef nonnull @.str.1200)
  br label %664

548:                                              ; preds = %531
  %549 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %549, ptr noundef nonnull @.str.1159)
          to label %550 unwind label %551

550:                                              ; preds = %548
  call void @__cxa_throw(ptr nonnull %549, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

551:                                              ; preds = %548
  %552 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %549) #6
  br label %665

553:                                              ; preds = %208
  %554 = getelementptr inbounds i8, ptr %23, i64 12
  %555 = load i32, ptr %554, align 4, !tbaa !123
  switch i32 %555, label %570 [
    i32 0, label %556
    i32 1, label %559
    i32 2, label %562
    i32 3, label %565
  ]

556:                                              ; preds = %553
  %557 = getelementptr inbounds i8, ptr %23, i64 16
  %558 = load i32, ptr %557, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %558, ptr noundef nonnull @.str.1201)
  br label %664

559:                                              ; preds = %553
  %560 = getelementptr inbounds i8, ptr %23, i64 16
  %561 = load i32, ptr %560, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %561, ptr noundef nonnull @.str.1202)
  br label %664

562:                                              ; preds = %553
  %563 = getelementptr inbounds i8, ptr %23, i64 16
  %564 = load i32, ptr %563, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %564, ptr noundef nonnull @.str.1203)
  br label %664

565:                                              ; preds = %553
  %566 = getelementptr inbounds i8, ptr %23, i64 16
  %567 = load i32, ptr %566, align 4, !tbaa !123
  %568 = getelementptr inbounds i8, ptr %23, i64 20
  %569 = load i32, ptr %568, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %567, i32 noundef %569, ptr noundef nonnull @.str.1204)
  br label %664

570:                                              ; preds = %553
  %571 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %571, ptr noundef nonnull @.str.1159)
          to label %572 unwind label %573

572:                                              ; preds = %570
  call void @__cxa_throw(ptr nonnull %571, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

573:                                              ; preds = %570
  %574 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %571) #6
  br label %665

575:                                              ; preds = %208
  %576 = getelementptr inbounds i8, ptr %23, i64 12
  %577 = load i32, ptr %576, align 4, !tbaa !123
  switch i32 %577, label %592 [
    i32 0, label %578
    i32 1, label %581
    i32 2, label %584
    i32 3, label %587
  ]

578:                                              ; preds = %575
  %579 = getelementptr inbounds i8, ptr %23, i64 16
  %580 = load i32, ptr %579, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %580, ptr noundef nonnull @.str.1193)
  br label %664

581:                                              ; preds = %575
  %582 = getelementptr inbounds i8, ptr %23, i64 16
  %583 = load i32, ptr %582, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %583, ptr noundef nonnull @.str.1194)
  br label %664

584:                                              ; preds = %575
  %585 = getelementptr inbounds i8, ptr %23, i64 16
  %586 = load i32, ptr %585, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %586, ptr noundef nonnull @.str.1195)
  br label %664

587:                                              ; preds = %575
  %588 = getelementptr inbounds i8, ptr %23, i64 16
  %589 = load i32, ptr %588, align 4, !tbaa !123
  %590 = getelementptr inbounds i8, ptr %23, i64 20
  %591 = load i32, ptr %590, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %589, i32 noundef %591, ptr noundef nonnull @.str.1196)
  br label %664

592:                                              ; preds = %575
  %593 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %593, ptr noundef nonnull @.str.1159)
          to label %594 unwind label %595

594:                                              ; preds = %592
  call void @__cxa_throw(ptr nonnull %593, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

595:                                              ; preds = %592
  %596 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %593) #6
  br label %665

597:                                              ; preds = %208
  %598 = getelementptr inbounds i8, ptr %23, i64 12
  %599 = load i32, ptr %598, align 4, !tbaa !123
  switch i32 %599, label %614 [
    i32 0, label %600
    i32 1, label %603
    i32 2, label %606
    i32 3, label %609
  ]

600:                                              ; preds = %597
  %601 = getelementptr inbounds i8, ptr %23, i64 16
  %602 = load i32, ptr %601, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %602, ptr noundef nonnull @.str.1197)
  br label %664

603:                                              ; preds = %597
  %604 = getelementptr inbounds i8, ptr %23, i64 16
  %605 = load i32, ptr %604, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %605, ptr noundef nonnull @.str.1198)
  br label %664

606:                                              ; preds = %597
  %607 = getelementptr inbounds i8, ptr %23, i64 16
  %608 = load i32, ptr %607, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %608, ptr noundef nonnull @.str.1199)
  br label %664

609:                                              ; preds = %597
  %610 = getelementptr inbounds i8, ptr %23, i64 16
  %611 = load i32, ptr %610, align 4, !tbaa !123
  %612 = getelementptr inbounds i8, ptr %23, i64 20
  %613 = load i32, ptr %612, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %611, i32 noundef %613, ptr noundef nonnull @.str.1200)
  br label %664

614:                                              ; preds = %597
  %615 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %615, ptr noundef nonnull @.str.1159)
          to label %616 unwind label %617

616:                                              ; preds = %614
  call void @__cxa_throw(ptr nonnull %615, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

617:                                              ; preds = %614
  %618 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %615) #6
  br label %665

619:                                              ; preds = %208
  %620 = getelementptr inbounds i8, ptr %23, i64 12
  %621 = load i32, ptr %620, align 4, !tbaa !123
  switch i32 %621, label %636 [
    i32 0, label %622
    i32 1, label %625
    i32 2, label %628
    i32 3, label %631
  ]

622:                                              ; preds = %619
  %623 = getelementptr inbounds i8, ptr %23, i64 16
  %624 = load i32, ptr %623, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %624, ptr noundef nonnull @.str.1201)
  br label %664

625:                                              ; preds = %619
  %626 = getelementptr inbounds i8, ptr %23, i64 16
  %627 = load i32, ptr %626, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %627, ptr noundef nonnull @.str.1202)
  br label %664

628:                                              ; preds = %619
  %629 = getelementptr inbounds i8, ptr %23, i64 16
  %630 = load i32, ptr %629, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %630, ptr noundef nonnull @.str.1203)
  br label %664

631:                                              ; preds = %619
  %632 = getelementptr inbounds i8, ptr %23, i64 16
  %633 = load i32, ptr %632, align 4, !tbaa !123
  %634 = getelementptr inbounds i8, ptr %23, i64 20
  %635 = load i32, ptr %634, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %633, i32 noundef %635, ptr noundef nonnull @.str.1204)
  br label %664

636:                                              ; preds = %619
  %637 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %637, ptr noundef nonnull @.str.1159)
          to label %638 unwind label %639

638:                                              ; preds = %636
  call void @__cxa_throw(ptr nonnull %637, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

639:                                              ; preds = %636
  %640 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %637) #6
  br label %665

641:                                              ; preds = %208
  %642 = getelementptr inbounds i8, ptr %23, i64 16
  %643 = load i32, ptr %642, align 4, !tbaa !123
  %644 = call noundef i32 @_ZNK11spirv_cross8Compiler21evaluate_constant_u32Ej(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %643)
  switch i32 %644, label %654 [
    i32 0, label %645
    i32 1, label %648
    i32 2, label %651
  ]

645:                                              ; preds = %641
  %646 = getelementptr inbounds i8, ptr %23, i64 12
  %647 = load i32, ptr %646, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %647, ptr noundef nonnull @.str.1205)
  br label %664

648:                                              ; preds = %641
  %649 = getelementptr inbounds i8, ptr %23, i64 12
  %650 = load i32, ptr %649, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %650, ptr noundef nonnull @.str.1206)
  br label %664

651:                                              ; preds = %641
  %652 = getelementptr inbounds i8, ptr %23, i64 12
  %653 = load i32, ptr %652, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL18emit_unary_func_opEjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %653, ptr noundef nonnull @.str.1207)
  br label %664

654:                                              ; preds = %641
  %655 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %655, ptr noundef nonnull @.str.1208)
          to label %656 unwind label %657

656:                                              ; preds = %654
  call void @__cxa_throw(ptr nonnull %655, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

657:                                              ; preds = %654
  %658 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %655) #6
  br label %665

659:                                              ; preds = %208
  %660 = getelementptr inbounds i8, ptr %23, i64 12
  %661 = load i32, ptr %660, align 4, !tbaa !123
  %662 = getelementptr inbounds i8, ptr %23, i64 16
  %663 = load i32, ptr %662, align 4, !tbaa !123
  call void @_ZN11spirv_cross12CompilerGLSL19emit_binary_func_opEjjjjPKc(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %197, i32 noundef %199, i32 noundef %661, i32 noundef %663, ptr noundef nonnull @.str.1209)
  br label %664

default.unreachable:                              ; preds = %208
  unreachable

664:                                              ; preds = %645, %651, %648, %622, %628, %631, %625, %600, %606, %609, %603, %578, %584, %587, %581, %556, %562, %565, %559, %534, %540, %543, %537, %512, %518, %521, %515, %490, %496, %499, %493, %468, %474, %477, %471, %446, %452, %455, %449, %424, %430, %433, %427, %402, %408, %411, %405, %380, %386, %389, %383, %358, %364, %367, %361, %336, %342, %345, %339, %314, %320, %323, %317, %292, %298, %301, %295, %246, %252, %249, %659, %286, %283, %280, %275, %270, %265, %260, %240, %237, %232, %229, %226, %223, %218, %212
  call void @_ZN11spirv_cross12CompilerGLSL37register_control_dependent_expressionEj(ptr noundef nonnull align 8 dereferenceable(9848) %0, i32 noundef %199)
  ret void

665:                                              ; preds = %60, %68, %190, %194, %98, %91, %117, %110, %136, %129, %155, %148, %181, %177, %168, %657, %639, %617, %595, %573, %551, %529, %507, %485, %463, %441, %419, %397, %375, %353, %331, %309, %258, %217, %206, %34
  %.pn517.pn = phi { ptr, i32 } [ %35, %34 ], [ %195, %194 ], [ %.pn, %190 ], [ %.pn509, %68 ], [ %.pn511, %60 ], [ %.pn506, %91 ], [ %99, %98 ], [ %.pn503, %110 ], [ %118, %117 ], [ %.pn500, %129 ], [ %137, %136 ], [ %.pn497, %148 ], [ %156, %155 ], [ %.pn494, %168 ], [ %.pn492, %177 ], [ %182, %181 ], [ %207, %206 ], [ %658, %657 ], [ %640, %639 ], [ %618, %617 ], [ %596, %595 ], [ %574, %573 ], [ %552, %551 ], [ %530, %529 ], [ %508, %507 ], [ %486, %485 ], [ %464, %463 ], [ %442, %441 ], [ %420, %419 ], [ %398, %397 ], [ %376, %375 ], [ %354, %353 ], [ %332, %331 ], [ %310, %309 ], [ %259, %258 ], [ %.pn513, %217 ]
  resume { ptr, i32 } %.pn517.pn
}

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

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

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

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

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


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