; 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 }
%"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::SPIREntryPoint" = type <{ %"class.spirv_cross::TypedID", [4 x i8], %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.spirv_cross::SmallVector.293", %"class.spirv_cross::Bitset", %"struct.spirv_cross::SPIREntryPoint::WorkgroupSize", i32, i32, i32, i32, i8, [3 x i8] }>
%"class.spirv_cross::SmallVector.293" = type { %"class.spirv_cross::VectorView.294", i64, %"class.spirv_cross::AlignedBuffer.295" }
%"class.spirv_cross::VectorView.294" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.295" = type { [32 x i8] }
%"struct.spirv_cross::SPIREntryPoint::WorkgroupSize" = type { i32, i32, i32, i32, i32, i32, i32 }

@_ZTIN11spirv_cross13CompilerErrorE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.105 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.198 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.200 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.1229 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.1230 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.1231 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.1232 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.1233 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.1234 = external hidden unnamed_addr constant [88 x i8], align 1
@.str.1235 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.1236 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.1237 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.1238 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.1239 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.1240 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.1241 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.1242 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.1243 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.1244 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.1245 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.1246 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.1247 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.1248 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.1249 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.1250 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1251 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.1252 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.1253 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.1254 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.1255 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.1256 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.1257 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.1258 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.1259 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.1260 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.1261 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.1262 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.1263 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.1264 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.1265 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.1266 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.1267 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1268 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.1269 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.1270 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.1271 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.1272 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.1273 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.1274 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.1275 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.1276 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.1277 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.1278 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.1279 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.1280 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.1281 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.1282 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.1283 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.1284 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.1285 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.1286 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.1287 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.1288 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.1289 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.1290 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.1291 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.1292 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.1293 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.1294 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.1295 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.1296 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.1297 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.1298 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.1299 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.1300 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.1301 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.1302 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.1303 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.1304 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.1305 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.1306 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.1307 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.1308 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.1309 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.1310 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1311 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.1312 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1313 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.1314 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.1315 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.1316 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.1317 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.1318 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.1319 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.1320 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.1321 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.1322 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.1323 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.1324 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.1325 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.1326 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.1327 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.1328 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.1329 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.1330 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.1331 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.1332 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.1333 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.1334 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.1335 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.1336 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.1337 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.1338 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.1339 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.1340 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.1341 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.1342 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.1343 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.1344 = external hidden unnamed_addr constant [12 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)

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

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

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

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

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

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

; Function Attrs: 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: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK11spirv_cross12CompilerGLSL9is_legacyEv(ptr noundef nonnull align 8 dereferenceable(9848)) #5 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11spirv_cross12CompilerGLSL15builtin_to_glslB5cxx11EN3spv7BuiltInENS1_12StorageClassE(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(9848) %1, i32 noundef %2, i32 noundef %3) unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca %"class.std::allocator.71", align 1
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %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::allocator.71", align 1
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca %"class.std::allocator.71", align 1
  %18 = alloca %"class.std::allocator.71", align 1
  %19 = alloca %"class.std::allocator.71", align 1
  %20 = alloca i32, align 4
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca %"class.std::allocator.71", align 1
  %23 = alloca %"class.std::allocator.71", align 1
  %24 = alloca %"class.std::allocator.71", align 1
  %25 = alloca %"class.std::allocator.71", align 1
  %26 = alloca %"class.std::allocator.71", align 1
  %27 = alloca %"class.std::__cxx11::basic_string", align 8
  %28 = alloca %"class.std::allocator.71", align 1
  %29 = alloca %"class.std::__cxx11::basic_string", align 8
  %30 = alloca %"class.std::allocator.71", align 1
  %31 = alloca %"class.std::allocator.71", align 1
  %32 = alloca %"class.std::allocator.71", align 1
  %33 = alloca %"class.std::allocator.71", align 1
  %34 = alloca %"class.std::allocator.71", align 1
  %35 = alloca %"class.std::allocator.71", align 1
  %36 = alloca %"class.std::allocator.71", align 1
  %37 = alloca %"class.std::allocator.71", align 1
  %38 = alloca %"class.std::allocator.71", align 1
  %39 = alloca %"class.std::allocator.71", align 1
  %40 = alloca %"class.std::allocator.71", align 1
  %41 = alloca %"class.std::allocator.71", align 1
  %42 = alloca %"class.std::allocator.71", align 1
  %43 = alloca %"class.std::allocator.71", align 1
  %44 = alloca %"class.std::allocator.71", align 1
  %45 = alloca %"class.std::allocator.71", align 1
  %46 = alloca %"class.std::allocator.71", align 1
  %47 = alloca %"class.std::allocator.71", align 1
  %48 = alloca %"class.std::allocator.71", align 1
  %49 = alloca %"class.std::allocator.71", align 1
  %50 = alloca %"class.std::allocator.71", align 1
  %51 = alloca %"class.std::allocator.71", align 1
  %52 = alloca %"class.std::allocator.71", align 1
  %53 = alloca %"class.std::__cxx11::basic_string", align 8
  %54 = alloca %"class.std::allocator.71", align 1
  %55 = alloca %"class.std::allocator.71", align 1
  %56 = alloca %"class.std::allocator.71", align 1
  %57 = alloca %"class.std::__cxx11::basic_string", align 8
  %58 = alloca %"class.std::allocator.71", align 1
  %59 = alloca %"class.std::allocator.71", align 1
  %60 = alloca %"class.std::__cxx11::basic_string", align 8
  %61 = alloca %"class.std::allocator.71", align 1
  %62 = alloca %"class.std::allocator.71", align 1
  %63 = alloca %"class.std::allocator.71", align 1
  %64 = alloca %"class.std::__cxx11::basic_string", align 8
  %65 = alloca %"class.std::allocator.71", align 1
  %66 = alloca %"class.std::allocator.71", align 1
  %67 = alloca %"class.std::__cxx11::basic_string", align 8
  %68 = alloca %"class.std::allocator.71", align 1
  %69 = alloca %"class.std::allocator.71", align 1
  %70 = alloca %"class.std::allocator.71", align 1
  %71 = alloca %"class.std::__cxx11::basic_string", align 8
  %72 = alloca %"class.std::allocator.71", align 1
  %73 = alloca %"class.std::allocator.71", align 1
  %74 = alloca %"class.std::__cxx11::basic_string", align 8
  %75 = alloca %"class.std::allocator.71", align 1
  %76 = alloca %"class.std::__cxx11::basic_string", align 8
  %77 = alloca %"class.std::allocator.71", align 1
  %78 = alloca %"class.std::allocator.71", align 1
  %79 = alloca %"class.std::__cxx11::basic_string", align 8
  %80 = alloca %"class.std::allocator.71", align 1
  %81 = alloca %"class.std::__cxx11::basic_string", align 8
  %82 = alloca %"class.std::allocator.71", align 1
  %83 = alloca %"class.std::allocator.71", align 1
  %84 = alloca %"class.std::allocator.71", align 1
  %85 = alloca %"class.std::__cxx11::basic_string", align 8
  %86 = alloca %"class.std::allocator.71", align 1
  %87 = alloca %"class.std::__cxx11::basic_string", align 8
  %88 = alloca %"class.std::allocator.71", align 1
  %89 = alloca %"class.std::allocator.71", align 1
  %90 = alloca %"class.std::allocator.71", align 1
  %91 = alloca %"class.std::allocator.71", align 1
  %92 = alloca %"class.std::allocator.71", align 1
  %93 = alloca %"class.std::allocator.71", align 1
  %94 = alloca %"class.std::allocator.71", align 1
  %95 = alloca %"class.std::allocator.71", align 1
  %96 = alloca %"class.std::allocator.71", align 1
  %97 = alloca %"class.std::allocator.71", align 1
  %98 = alloca %"class.std::allocator.71", align 1
  %99 = alloca %"class.std::allocator.71", align 1
  %100 = alloca %"class.std::allocator.71", align 1
  %101 = alloca %"class.std::allocator.71", align 1
  %102 = alloca %"class.std::allocator.71", align 1
  %103 = alloca %"class.std::allocator.71", align 1
  %104 = alloca %"class.std::allocator.71", align 1
  %105 = alloca %"class.std::allocator.71", align 1
  %106 = alloca %"class.std::allocator.71", align 1
  %107 = alloca %"class.std::allocator.71", align 1
  %108 = alloca %"class.std::allocator.71", align 1
  %109 = alloca %"class.std::allocator.71", align 1
  %110 = alloca %"class.std::allocator.71", align 1
  %111 = alloca %"class.std::allocator.71", align 1
  %112 = alloca %"class.std::allocator.71", align 1
  %113 = alloca %"class.std::allocator.71", align 1
  %114 = alloca %"class.std::allocator.71", align 1
  %115 = alloca %"class.std::__cxx11::basic_string", align 8
  %116 = alloca %"class.std::allocator.71", align 1
  %117 = alloca %"class.std::allocator.71", align 1
  %118 = alloca %"class.std::__cxx11::basic_string", align 8
  %119 = alloca %"class.std::allocator.71", align 1
  %120 = alloca %"class.std::allocator.71", align 1
  %121 = alloca %"class.std::__cxx11::basic_string", align 8
  %122 = alloca %"class.std::allocator.71", align 1
  %123 = alloca %"class.std::allocator.71", align 1
  %124 = alloca %"class.std::__cxx11::basic_string", align 8
  %125 = alloca %"class.std::allocator.71", align 1
  %126 = alloca %"class.std::allocator.71", align 1
  %127 = alloca %"class.std::__cxx11::basic_string", align 8
  %128 = alloca %"class.std::allocator.71", align 1
  %129 = alloca %"class.std::allocator.71", align 1
  %130 = alloca %"class.std::__cxx11::basic_string", align 8
  %131 = alloca %"class.std::allocator.71", align 1
  %132 = alloca %"class.std::allocator.71", align 1
  %133 = alloca %"class.std::__cxx11::basic_string", align 8
  %134 = alloca %"class.std::allocator.71", align 1
  %135 = alloca %"class.std::allocator.71", align 1
  %136 = alloca %"class.std::__cxx11::basic_string", align 8
  %137 = alloca %"class.std::allocator.71", align 1
  %138 = alloca %"class.std::allocator.71", align 1
  %139 = alloca %"class.std::__cxx11::basic_string", align 8
  %140 = alloca %"class.std::allocator.71", align 1
  %141 = alloca %"class.std::allocator.71", align 1
  %142 = alloca %"class.std::allocator.71", align 1
  %143 = alloca %"class.std::allocator.71", align 1
  %144 = alloca %"class.std::allocator.71", align 1
  %145 = alloca %"class.std::allocator.71", align 1
  %146 = alloca %"class.std::__cxx11::basic_string", align 8
  store ptr %0, ptr %5, align 8
  store ptr %1, ptr %6, align 8, !tbaa !5
  store i32 %2, ptr %7, align 4, !tbaa !9
  store i32 %3, ptr %8, align 4, !tbaa !11
  %147 = load ptr, ptr %6, align 8
  %148 = load i32, ptr %7, align 4, !tbaa !9
  switch i32 %148, label %1399 [
    i32 0, label %149
    i32 1, label %155
    i32 3, label %161
    i32 4, label %184
    i32 5, label %207
    i32 6, label %225
    i32 42, label %272
    i32 43, label %289
    i32 7, label %357
    i32 8, label %377
    i32 9, label %383
    i32 10, label %389
    i32 11, label %395
    i32 12, label %401
    i32 13, label %407
    i32 14, label %413
    i32 15, label %419
    i32 16, label %425
    i32 17, label %431
    i32 22, label %437
    i32 24, label %443
    i32 25, label %449
    i32 26, label %455
    i32 27, label %461
    i32 28, label %467
    i32 29, label %473
    i32 23, label %479
    i32 4424, label %485
    i32 4425, label %547
    i32 4426, label %609
    i32 18, label %671
    i32 20, label %732
    i32 19, label %802
    i32 4440, label %863
    i32 38, label %880
    i32 40, label %886
    i32 36, label %892
    i32 41, label %898
    i32 4416, label %904
    i32 4417, label %910
    i32 4418, label %916
    i32 4419, label %922
    i32 4420, label %928
    i32 5319, label %934
    i32 5320, label %945
    i32 5321, label %956
    i32 5322, label %967
    i32 5323, label %978
    i32 5324, label %989
    i32 5325, label %1000
    i32 5326, label %1011
    i32 5327, label %1022
    i32 5330, label %1033
    i32 5331, label %1044
    i32 5332, label %1055
    i32 5333, label %1061
    i32 5351, label %1072
    i32 5286, label %1083
    i32 5287, label %1156
    i32 5014, label %1229
    i32 4432, label %1258
    i32 4444, label %1287
    i32 4438, label %1316
    i32 5264, label %1345
    i32 5296, label %1375
    i32 5295, label %1381
    i32 5294, label %1387
    i32 5299, label %1393
  ]

149:                                              ; preds = %4
  call void @llvm.lifetime.start.p0(i64 1, ptr %9) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1229, ptr noundef nonnull align 1 dereferenceable(1) %9)
          to label %150 unwind label %151

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

151:                                              ; preds = %149
  %152 = landingpad { ptr, i32 }
          cleanup
  %153 = extractvalue { ptr, i32 } %152, 0
  store ptr %153, ptr %10, align 8
  %154 = extractvalue { ptr, i32 } %152, 1
  store i32 %154, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %9) #6
  br label %1406

155:                                              ; preds = %4
  call void @llvm.lifetime.start.p0(i64 1, ptr %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) %0, ptr noundef @.str.1230, ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %156 unwind label %157

156:                                              ; preds = %155
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %12) #6
  br label %1405

157:                                              ; preds = %155
  %158 = landingpad { ptr, i32 }
          cleanup
  %159 = extractvalue { ptr, i32 } %158, 0
  store ptr %159, ptr %10, align 8
  %160 = extractvalue { ptr, i32 } %158, 1
  store i32 %160, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %12) #6
  br label %1406

161:                                              ; preds = %4
  %162 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 9
  %163 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %162, i32 0, i32 1
  %164 = load i8, ptr %163, align 4, !tbaa !13, !range !123, !noundef !124
  %165 = trunc i8 %164 to i1
  br i1 %165, label %166, label %178

166:                                              ; preds = %161
  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.1231, ptr noundef nonnull align 1 dereferenceable(1) %14)
          to label %167 unwind label %169

167:                                              ; preds = %166
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %147, ptr noundef nonnull align 8 dereferenceable(32) %13)
          to label %168 unwind label %173

168:                                              ; preds = %167
  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 %178

169:                                              ; preds = %166
  %170 = landingpad { ptr, i32 }
          cleanup
  %171 = extractvalue { ptr, i32 } %170, 0
  store ptr %171, ptr %10, align 8
  %172 = extractvalue { ptr, i32 } %170, 1
  store i32 %172, ptr %11, align 4
  br label %177

173:                                              ; preds = %167
  %174 = landingpad { ptr, i32 }
          cleanup
  %175 = extractvalue { ptr, i32 } %174, 0
  store ptr %175, ptr %10, align 8
  %176 = extractvalue { ptr, i32 } %174, 1
  store i32 %176, ptr %11, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #6
  br label %177

177:                                              ; preds = %173, %169
  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 %1406

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

179:                                              ; preds = %178
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #6
  br label %1405

180:                                              ; preds = %178
  %181 = landingpad { ptr, i32 }
          cleanup
  %182 = extractvalue { ptr, i32 } %181, 0
  store ptr %182, ptr %10, align 8
  %183 = extractvalue { ptr, i32 } %181, 1
  store i32 %183, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #6
  br label %1406

184:                                              ; preds = %4
  %185 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 9
  %186 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %185, i32 0, i32 1
  %187 = load i8, ptr %186, align 4, !tbaa !13, !range !123, !noundef !124
  %188 = trunc i8 %187 to i1
  br i1 %188, label %189, label %201

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

190:                                              ; preds = %189
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %147, ptr noundef nonnull align 8 dereferenceable(32) %16)
          to label %191 unwind label %196

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

192:                                              ; preds = %189
  %193 = landingpad { ptr, i32 }
          cleanup
  %194 = extractvalue { ptr, i32 } %193, 0
  store ptr %194, ptr %10, align 8
  %195 = extractvalue { ptr, i32 } %193, 1
  store i32 %195, ptr %11, align 4
  br label %200

196:                                              ; preds = %190
  %197 = landingpad { ptr, i32 }
          cleanup
  %198 = extractvalue { ptr, i32 } %197, 0
  store ptr %198, ptr %10, align 8
  %199 = extractvalue { ptr, i32 } %197, 1
  store i32 %199, ptr %11, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #6
  br label %200

200:                                              ; preds = %196, %192
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #6
  br label %1406

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

202:                                              ; preds = %201
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #6
  br label %1405

203:                                              ; preds = %201
  %204 = landingpad { ptr, i32 }
          cleanup
  %205 = extractvalue { ptr, i32 } %204, 0
  store ptr %205, ptr %10, align 8
  %206 = extractvalue { ptr, i32 } %204, 1
  store i32 %206, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #6
  br label %1406

207:                                              ; preds = %4
  %208 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 9
  %209 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %208, i32 0, i32 4
  %210 = load i8, ptr %209, align 4, !tbaa !125, !range !123, !noundef !124
  %211 = trunc i8 %210 to i1
  br i1 %211, label %212, label %219

212:                                              ; preds = %207
  %213 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %213, ptr noundef @.str.1234)
          to label %214 unwind label %215

214:                                              ; preds = %212
  call void @__cxa_throw(ptr %213, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

215:                                              ; preds = %212
  %216 = landingpad { ptr, i32 }
          cleanup
  %217 = extractvalue { ptr, i32 } %216, 0
  store ptr %217, ptr %10, align 8
  %218 = extractvalue { ptr, i32 } %216, 1
  store i32 %218, ptr %11, align 4
  call void @__cxa_free_exception(ptr %213) #6
  br label %1406

219:                                              ; preds = %207
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1235, ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %220 unwind label %221

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

221:                                              ; preds = %219
  %222 = landingpad { ptr, i32 }
          cleanup
  %223 = extractvalue { ptr, i32 } %222, 0
  store ptr %223, ptr %10, align 8
  %224 = extractvalue { ptr, i32 } %222, 1
  store i32 %224, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #6
  br label %1406

225:                                              ; preds = %4
  %226 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 9
  %227 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %226, i32 0, i32 4
  %228 = load i8, ptr %227, align 4, !tbaa !125, !range !123, !noundef !124
  %229 = trunc i8 %228 to i1
  br i1 %229, label %230, label %244

230:                                              ; preds = %225
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #6
  %231 = call noundef nonnull align 8 dereferenceable(237) ptr @_ZN11spirv_cross8Compiler15get_entry_pointEv(ptr noundef nonnull align 8 dereferenceable(3176) %147)
  %232 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %231, i32 0, i32 10
  %233 = load i32, ptr %232, align 8, !tbaa !126
  store i32 %233, ptr %20, align 4, !tbaa !133
  %234 = load i32, ptr %20, align 4, !tbaa !133
  switch i32 %234, label %236 [
    i32 5314, label %235
    i32 5315, label %235
    i32 5316, label %235
  ]

235:                                              ; preds = %230, %230, %230
  br label %243

236:                                              ; preds = %230
  %237 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %237, ptr noundef @.str.1236)
          to label %238 unwind label %239

238:                                              ; preds = %236
  call void @__cxa_throw(ptr %237, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

239:                                              ; preds = %236
  %240 = landingpad { ptr, i32 }
          cleanup
  %241 = extractvalue { ptr, i32 } %240, 0
  store ptr %241, ptr %10, align 8
  %242 = extractvalue { ptr, i32 } %240, 1
  store i32 %242, ptr %11, align 4
  call void @__cxa_free_exception(ptr %237) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #6
  br label %1406

243:                                              ; preds = %235
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #6
  br label %244

244:                                              ; preds = %243, %225
  %245 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 9
  %246 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %245, i32 0, i32 1
  %247 = load i8, ptr %246, align 4, !tbaa !13, !range !123, !noundef !124
  %248 = trunc i8 %247 to i1
  br i1 %248, label %266, label %249

249:                                              ; preds = %244
  %250 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 9
  %251 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %250, i32 0, i32 0
  %252 = load i32, ptr %251, align 4, !tbaa !134
  %253 = icmp ult i32 %252, 140
  br i1 %253, label %254, label %266

254:                                              ; preds = %249
  call void @llvm.lifetime.start.p0(i64 32, ptr %21) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %22) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef @.str.1237, ptr noundef nonnull align 1 dereferenceable(1) %22)
          to label %255 unwind label %257

255:                                              ; preds = %254
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %147, ptr noundef nonnull align 8 dereferenceable(32) %21)
          to label %256 unwind label %261

256:                                              ; preds = %255
  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 %22) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #6
  br label %266

257:                                              ; preds = %254
  %258 = landingpad { ptr, i32 }
          cleanup
  %259 = extractvalue { ptr, i32 } %258, 0
  store ptr %259, ptr %10, align 8
  %260 = extractvalue { ptr, i32 } %258, 1
  store i32 %260, ptr %11, align 4
  br label %265

261:                                              ; preds = %255
  %262 = landingpad { ptr, i32 }
          cleanup
  %263 = extractvalue { ptr, i32 } %262, 0
  store ptr %263, ptr %10, align 8
  %264 = extractvalue { ptr, i32 } %262, 1
  store i32 %264, ptr %11, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #6
  br label %265

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

266:                                              ; preds = %256, %249, %244
  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) %0, ptr noundef @.str.1238, ptr noundef nonnull align 1 dereferenceable(1) %23)
          to label %267 unwind label %268

267:                                              ; preds = %266
  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
  br label %1405

268:                                              ; preds = %266
  %269 = landingpad { ptr, i32 }
          cleanup
  %270 = extractvalue { ptr, i32 } %269, 0
  store ptr %270, ptr %10, align 8
  %271 = extractvalue { ptr, i32 } %269, 1
  store i32 %271, ptr %11, align 4
  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
  br label %1406

272:                                              ; preds = %4
  %273 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 9
  %274 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %273, i32 0, i32 4
  %275 = load i8, ptr %274, align 4, !tbaa !125, !range !123, !noundef !124
  %276 = trunc i8 %275 to i1
  br i1 %276, label %277, label %283

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

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

279:                                              ; preds = %277
  %280 = landingpad { ptr, i32 }
          cleanup
  %281 = extractvalue { ptr, i32 } %280, 0
  store ptr %281, ptr %10, align 8
  %282 = extractvalue { ptr, i32 } %280, 1
  store i32 %282, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #6
  br label %1406

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

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

285:                                              ; preds = %283
  %286 = landingpad { ptr, i32 }
          cleanup
  %287 = extractvalue { ptr, i32 } %286, 0
  store ptr %287, ptr %10, align 8
  %288 = extractvalue { ptr, i32 } %286, 1
  store i32 %288, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #6
  br label %1406

289:                                              ; preds = %4
  %290 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 9
  %291 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %290, i32 0, i32 4
  %292 = load i8, ptr %291, align 4, !tbaa !125, !range !123, !noundef !124
  %293 = trunc i8 %292 to i1
  br i1 %293, label %294, label %300

294:                                              ; preds = %289
  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) %0, ptr noundef @.str.1240, ptr noundef nonnull align 1 dereferenceable(1) %26)
          to label %295 unwind label %296

295:                                              ; preds = %294
  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
  br label %1405

296:                                              ; preds = %294
  %297 = landingpad { ptr, i32 }
          cleanup
  %298 = extractvalue { ptr, i32 } %297, 0
  store ptr %298, ptr %10, align 8
  %299 = extractvalue { ptr, i32 } %297, 1
  store i32 %299, ptr %11, align 4
  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
  br label %1406

300:                                              ; preds = %289
  %301 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 9
  %302 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %301, i32 0, i32 1
  %303 = load i8, ptr %302, align 4, !tbaa !13, !range !123, !noundef !124
  %304 = trunc i8 %303 to i1
  br i1 %304, label %322, label %305

305:                                              ; preds = %300
  %306 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 9
  %307 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %306, i32 0, i32 0
  %308 = load i32, ptr %307, align 4, !tbaa !134
  %309 = icmp ult i32 %308, 140
  br i1 %309, label %310, label %322

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

311:                                              ; preds = %310
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %147, ptr noundef nonnull align 8 dereferenceable(32) %27)
          to label %312 unwind label %317

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

313:                                              ; preds = %310
  %314 = landingpad { ptr, i32 }
          cleanup
  %315 = extractvalue { ptr, i32 } %314, 0
  store ptr %315, ptr %10, align 8
  %316 = extractvalue { ptr, i32 } %314, 1
  store i32 %316, ptr %11, align 4
  br label %321

317:                                              ; preds = %311
  %318 = landingpad { ptr, i32 }
          cleanup
  %319 = extractvalue { ptr, i32 } %318, 0
  store ptr %319, ptr %10, align 8
  %320 = extractvalue { ptr, i32 } %318, 1
  store i32 %320, ptr %11, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #6
  br label %321

321:                                              ; preds = %317, %313
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #6
  br label %1406

322:                                              ; preds = %312, %305, %300
  %323 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 9
  %324 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %323, i32 0, i32 17
  %325 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options::VertexOptions", ptr %324, i32 0, i32 2
  %326 = load i8, ptr %325, align 2, !tbaa !135, !range !123, !noundef !124
  %327 = trunc i8 %326 to i1
  br i1 %327, label %328, label %351

328:                                              ; preds = %322
  %329 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 9
  %330 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %329, i32 0, i32 4
  %331 = load i8, ptr %330, align 4, !tbaa !125, !range !123, !noundef !124
  %332 = trunc i8 %331 to i1
  br i1 %332, label %345, label %333

333:                                              ; preds = %328
  call void @llvm.lifetime.start.p0(i64 32, ptr %29) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %30) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef @.str.105, ptr noundef nonnull align 1 dereferenceable(1) %30)
          to label %334 unwind label %336

334:                                              ; preds = %333
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %147, ptr noundef nonnull align 8 dereferenceable(32) %29)
          to label %335 unwind label %340

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

336:                                              ; preds = %333
  %337 = landingpad { ptr, i32 }
          cleanup
  %338 = extractvalue { ptr, i32 } %337, 0
  store ptr %338, ptr %10, align 8
  %339 = extractvalue { ptr, i32 } %337, 1
  store i32 %339, ptr %11, align 4
  br label %344

340:                                              ; preds = %334
  %341 = landingpad { ptr, i32 }
          cleanup
  %342 = extractvalue { ptr, i32 } %341, 0
  store ptr %342, ptr %10, align 8
  %343 = extractvalue { ptr, i32 } %341, 1
  store i32 %343, ptr %11, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #6
  br label %344

344:                                              ; preds = %340, %336
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #6
  br label %1406

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

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

347:                                              ; preds = %345
  %348 = landingpad { ptr, i32 }
          cleanup
  %349 = extractvalue { ptr, i32 } %348, 0
  store ptr %349, ptr %10, align 8
  %350 = extractvalue { ptr, i32 } %348, 1
  store i32 %350, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #6
  br label %1406

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

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

353:                                              ; preds = %351
  %354 = landingpad { ptr, i32 }
          cleanup
  %355 = extractvalue { ptr, i32 } %354, 0
  store ptr %355, ptr %10, align 8
  %356 = extractvalue { ptr, i32 } %354, 1
  store i32 %356, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #6
  br label %1406

357:                                              ; preds = %4
  %358 = load i32, ptr %8, align 4, !tbaa !11
  %359 = icmp eq i32 %358, 1
  br i1 %359, label %360, label %371

360:                                              ; preds = %357
  %361 = call noundef nonnull align 8 dereferenceable(237) ptr @_ZN11spirv_cross8Compiler15get_entry_pointEv(ptr noundef nonnull align 8 dereferenceable(3176) %147)
  %362 = getelementptr inbounds %"struct.spirv_cross::SPIREntryPoint", ptr %361, i32 0, i32 10
  %363 = load i32, ptr %362, align 8, !tbaa !126
  %364 = icmp eq i32 %363, 3
  br i1 %364, label %365, label %371

365:                                              ; preds = %360
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1242, ptr noundef nonnull align 1 dereferenceable(1) %33)
          to label %366 unwind label %367

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

367:                                              ; preds = %365
  %368 = landingpad { ptr, i32 }
          cleanup
  %369 = extractvalue { ptr, i32 } %368, 0
  store ptr %369, ptr %10, align 8
  %370 = extractvalue { ptr, i32 } %368, 1
  store i32 %370, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #6
  br label %1406

371:                                              ; preds = %360, %357
  call void @llvm.lifetime.start.p0(i64 1, ptr %34) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1243, ptr noundef nonnull align 1 dereferenceable(1) %34)
          to label %372 unwind label %373

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

373:                                              ; preds = %371
  %374 = landingpad { ptr, i32 }
          cleanup
  %375 = extractvalue { ptr, i32 } %374, 0
  store ptr %375, ptr %10, align 8
  %376 = extractvalue { ptr, i32 } %374, 1
  store i32 %376, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #6
  br label %1406

377:                                              ; preds = %4
  call void @llvm.lifetime.start.p0(i64 1, ptr %35) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1244, ptr noundef nonnull align 1 dereferenceable(1) %35)
          to label %378 unwind label %379

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

379:                                              ; preds = %377
  %380 = landingpad { ptr, i32 }
          cleanup
  %381 = extractvalue { ptr, i32 } %380, 0
  store ptr %381, ptr %10, align 8
  %382 = extractvalue { ptr, i32 } %380, 1
  store i32 %382, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #6
  br label %1406

383:                                              ; preds = %4
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1245, ptr noundef nonnull align 1 dereferenceable(1) %36)
          to label %384 unwind label %385

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

385:                                              ; preds = %383
  %386 = landingpad { ptr, i32 }
          cleanup
  %387 = extractvalue { ptr, i32 } %386, 0
  store ptr %387, ptr %10, align 8
  %388 = extractvalue { ptr, i32 } %386, 1
  store i32 %388, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #6
  br label %1406

389:                                              ; preds = %4
  call void @llvm.lifetime.start.p0(i64 1, ptr %37) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1246, ptr noundef nonnull align 1 dereferenceable(1) %37)
          to label %390 unwind label %391

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

391:                                              ; preds = %389
  %392 = landingpad { ptr, i32 }
          cleanup
  %393 = extractvalue { ptr, i32 } %392, 0
  store ptr %393, ptr %10, align 8
  %394 = extractvalue { ptr, i32 } %392, 1
  store i32 %394, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #6
  br label %1406

395:                                              ; preds = %4
  call void @llvm.lifetime.start.p0(i64 1, ptr %38) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1247, ptr noundef nonnull align 1 dereferenceable(1) %38)
          to label %396 unwind label %397

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

397:                                              ; preds = %395
  %398 = landingpad { ptr, i32 }
          cleanup
  %399 = extractvalue { ptr, i32 } %398, 0
  store ptr %399, ptr %10, align 8
  %400 = extractvalue { ptr, i32 } %398, 1
  store i32 %400, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #6
  br label %1406

401:                                              ; preds = %4
  call void @llvm.lifetime.start.p0(i64 1, ptr %39) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1248, ptr noundef nonnull align 1 dereferenceable(1) %39)
          to label %402 unwind label %403

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

403:                                              ; preds = %401
  %404 = landingpad { ptr, i32 }
          cleanup
  %405 = extractvalue { ptr, i32 } %404, 0
  store ptr %405, ptr %10, align 8
  %406 = extractvalue { ptr, i32 } %404, 1
  store i32 %406, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #6
  br label %1406

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

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

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

413:                                              ; preds = %4
  call void @llvm.lifetime.start.p0(i64 1, ptr %41) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1250, ptr noundef nonnull align 1 dereferenceable(1) %41)
          to label %414 unwind label %415

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

415:                                              ; preds = %413
  %416 = landingpad { ptr, i32 }
          cleanup
  %417 = extractvalue { ptr, i32 } %416, 0
  store ptr %417, ptr %10, align 8
  %418 = extractvalue { ptr, i32 } %416, 1
  store i32 %418, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #6
  br label %1406

419:                                              ; preds = %4
  call void @llvm.lifetime.start.p0(i64 1, ptr %42) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1251, ptr noundef nonnull align 1 dereferenceable(1) %42)
          to label %420 unwind label %421

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

421:                                              ; preds = %419
  %422 = landingpad { ptr, i32 }
          cleanup
  %423 = extractvalue { ptr, i32 } %422, 0
  store ptr %423, ptr %10, align 8
  %424 = extractvalue { ptr, i32 } %422, 1
  store i32 %424, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #6
  br label %1406

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

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

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

431:                                              ; preds = %4
  call void @llvm.lifetime.start.p0(i64 1, ptr %44) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1253, ptr noundef nonnull align 1 dereferenceable(1) %44)
          to label %432 unwind label %433

432:                                              ; preds = %431
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #6
  br label %1405

433:                                              ; preds = %431
  %434 = landingpad { ptr, i32 }
          cleanup
  %435 = extractvalue { ptr, i32 } %434, 0
  store ptr %435, ptr %10, align 8
  %436 = extractvalue { ptr, i32 } %434, 1
  store i32 %436, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #6
  br label %1406

437:                                              ; preds = %4
  call void @llvm.lifetime.start.p0(i64 1, ptr %45) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1254, ptr noundef nonnull align 1 dereferenceable(1) %45)
          to label %438 unwind label %439

438:                                              ; preds = %437
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #6
  br label %1405

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

443:                                              ; preds = %4
  call void @llvm.lifetime.start.p0(i64 1, ptr %46) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1255, ptr noundef nonnull align 1 dereferenceable(1) %46)
          to label %444 unwind label %445

444:                                              ; preds = %443
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #6
  br label %1405

445:                                              ; preds = %443
  %446 = landingpad { ptr, i32 }
          cleanup
  %447 = extractvalue { ptr, i32 } %446, 0
  store ptr %447, ptr %10, align 8
  %448 = extractvalue { ptr, i32 } %446, 1
  store i32 %448, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #6
  br label %1406

449:                                              ; preds = %4
  call void @llvm.lifetime.start.p0(i64 1, ptr %47) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1256, ptr noundef nonnull align 1 dereferenceable(1) %47)
          to label %450 unwind label %451

450:                                              ; preds = %449
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #6
  br label %1405

451:                                              ; preds = %449
  %452 = landingpad { ptr, i32 }
          cleanup
  %453 = extractvalue { ptr, i32 } %452, 0
  store ptr %453, ptr %10, align 8
  %454 = extractvalue { ptr, i32 } %452, 1
  store i32 %454, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #6
  br label %1406

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

456:                                              ; preds = %455
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #6
  br label %1405

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

461:                                              ; preds = %4
  call void @llvm.lifetime.start.p0(i64 1, ptr %49) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1258, ptr noundef nonnull align 1 dereferenceable(1) %49)
          to label %462 unwind label %463

462:                                              ; preds = %461
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #6
  br label %1405

463:                                              ; preds = %461
  %464 = landingpad { ptr, i32 }
          cleanup
  %465 = extractvalue { ptr, i32 } %464, 0
  store ptr %465, ptr %10, align 8
  %466 = extractvalue { ptr, i32 } %464, 1
  store i32 %466, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #6
  br label %1406

467:                                              ; preds = %4
  call void @llvm.lifetime.start.p0(i64 1, ptr %50) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1259, ptr noundef nonnull align 1 dereferenceable(1) %50)
          to label %468 unwind label %469

468:                                              ; preds = %467
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %50) #6
  br label %1405

469:                                              ; preds = %467
  %470 = landingpad { ptr, i32 }
          cleanup
  %471 = extractvalue { ptr, i32 } %470, 0
  store ptr %471, ptr %10, align 8
  %472 = extractvalue { ptr, i32 } %470, 1
  store i32 %472, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %50) #6
  br label %1406

473:                                              ; preds = %4
  call void @llvm.lifetime.start.p0(i64 1, ptr %51) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1260, ptr noundef nonnull align 1 dereferenceable(1) %51)
          to label %474 unwind label %475

474:                                              ; preds = %473
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #6
  br label %1405

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

479:                                              ; preds = %4
  call void @llvm.lifetime.start.p0(i64 1, ptr %52) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1261, ptr noundef nonnull align 1 dereferenceable(1) %52)
          to label %480 unwind label %481

480:                                              ; preds = %479
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #6
  br label %1405

481:                                              ; preds = %479
  %482 = landingpad { ptr, i32 }
          cleanup
  %483 = extractvalue { ptr, i32 } %482, 0
  store ptr %483, ptr %10, align 8
  %484 = extractvalue { ptr, i32 } %482, 1
  store i32 %484, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #6
  br label %1406

485:                                              ; preds = %4
  %486 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 9
  %487 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %486, i32 0, i32 1
  %488 = load i8, ptr %487, align 4, !tbaa !13, !range !123, !noundef !124
  %489 = trunc i8 %488 to i1
  br i1 %489, label %490, label %497

490:                                              ; preds = %485
  %491 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %491, ptr noundef @.str.1262)
          to label %492 unwind label %493

492:                                              ; preds = %490
  call void @__cxa_throw(ptr %491, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

493:                                              ; preds = %490
  %494 = landingpad { ptr, i32 }
          cleanup
  %495 = extractvalue { ptr, i32 } %494, 0
  store ptr %495, ptr %10, align 8
  %496 = extractvalue { ptr, i32 } %494, 1
  store i32 %496, ptr %11, align 4
  call void @__cxa_free_exception(ptr %491) #6
  br label %1406

497:                                              ; preds = %485
  %498 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 9
  %499 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %498, i32 0, i32 4
  %500 = load i8, ptr %499, align 4, !tbaa !125, !range !123, !noundef !124
  %501 = trunc i8 %500 to i1
  br i1 %501, label %502, label %530

502:                                              ; preds = %497
  %503 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 9
  %504 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %503, i32 0, i32 0
  %505 = load i32, ptr %504, align 4, !tbaa !134
  %506 = icmp ult i32 %505, 460
  br i1 %506, label %507, label %524

507:                                              ; preds = %502
  call void @llvm.lifetime.start.p0(i64 32, ptr %53) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %54) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %53, ptr noundef @.str.105, ptr noundef nonnull align 1 dereferenceable(1) %54)
          to label %508 unwind label %511

508:                                              ; preds = %507
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %147, ptr noundef nonnull align 8 dereferenceable(32) %53)
          to label %509 unwind label %515

509:                                              ; preds = %508
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %54) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %53) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %55) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1263, ptr noundef nonnull align 1 dereferenceable(1) %55)
          to label %510 unwind label %520

510:                                              ; preds = %509
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #6
  br label %1405

511:                                              ; preds = %507
  %512 = landingpad { ptr, i32 }
          cleanup
  %513 = extractvalue { ptr, i32 } %512, 0
  store ptr %513, ptr %10, align 8
  %514 = extractvalue { ptr, i32 } %512, 1
  store i32 %514, ptr %11, align 4
  br label %519

515:                                              ; preds = %508
  %516 = landingpad { ptr, i32 }
          cleanup
  %517 = extractvalue { ptr, i32 } %516, 0
  store ptr %517, ptr %10, align 8
  %518 = extractvalue { ptr, i32 } %516, 1
  store i32 %518, ptr %11, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #6
  br label %519

519:                                              ; preds = %515, %511
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %54) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %53) #6
  br label %1406

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

524:                                              ; preds = %502
  call void @llvm.lifetime.start.p0(i64 1, ptr %56) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %56) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1264, ptr noundef nonnull align 1 dereferenceable(1) %56)
          to label %525 unwind label %526

525:                                              ; preds = %524
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %56) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %56) #6
  br label %1405

526:                                              ; preds = %524
  %527 = landingpad { ptr, i32 }
          cleanup
  %528 = extractvalue { ptr, i32 } %527, 0
  store ptr %528, ptr %10, align 8
  %529 = extractvalue { ptr, i32 } %527, 1
  store i32 %529, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %56) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %56) #6
  br label %1406

530:                                              ; preds = %497
  call void @llvm.lifetime.start.p0(i64 32, ptr %57) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %58) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %57, ptr noundef @.str.105, ptr noundef nonnull align 1 dereferenceable(1) %58)
          to label %531 unwind label %534

531:                                              ; preds = %530
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %147, ptr noundef nonnull align 8 dereferenceable(32) %57)
          to label %532 unwind label %538

532:                                              ; preds = %531
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %57) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %59) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1265, ptr noundef nonnull align 1 dereferenceable(1) %59)
          to label %533 unwind label %543

533:                                              ; preds = %532
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %59) #6
  br label %1405

534:                                              ; preds = %530
  %535 = landingpad { ptr, i32 }
          cleanup
  %536 = extractvalue { ptr, i32 } %535, 0
  store ptr %536, ptr %10, align 8
  %537 = extractvalue { ptr, i32 } %535, 1
  store i32 %537, ptr %11, align 4
  br label %542

538:                                              ; preds = %531
  %539 = landingpad { ptr, i32 }
          cleanup
  %540 = extractvalue { ptr, i32 } %539, 0
  store ptr %540, ptr %10, align 8
  %541 = extractvalue { ptr, i32 } %539, 1
  store i32 %541, ptr %11, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #6
  br label %542

542:                                              ; preds = %538, %534
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %57) #6
  br label %1406

543:                                              ; preds = %532
  %544 = landingpad { ptr, i32 }
          cleanup
  %545 = extractvalue { ptr, i32 } %544, 0
  store ptr %545, ptr %10, align 8
  %546 = extractvalue { ptr, i32 } %544, 1
  store i32 %546, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %59) #6
  br label %1406

547:                                              ; preds = %4
  %548 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 9
  %549 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %548, i32 0, i32 1
  %550 = load i8, ptr %549, align 4, !tbaa !13, !range !123, !noundef !124
  %551 = trunc i8 %550 to i1
  br i1 %551, label %552, label %559

552:                                              ; preds = %547
  %553 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %553, ptr noundef @.str.1266)
          to label %554 unwind label %555

554:                                              ; preds = %552
  call void @__cxa_throw(ptr %553, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

555:                                              ; preds = %552
  %556 = landingpad { ptr, i32 }
          cleanup
  %557 = extractvalue { ptr, i32 } %556, 0
  store ptr %557, ptr %10, align 8
  %558 = extractvalue { ptr, i32 } %556, 1
  store i32 %558, ptr %11, align 4
  call void @__cxa_free_exception(ptr %553) #6
  br label %1406

559:                                              ; preds = %547
  %560 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 9
  %561 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %560, i32 0, i32 4
  %562 = load i8, ptr %561, align 4, !tbaa !125, !range !123, !noundef !124
  %563 = trunc i8 %562 to i1
  br i1 %563, label %564, label %592

564:                                              ; preds = %559
  %565 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 9
  %566 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %565, i32 0, i32 0
  %567 = load i32, ptr %566, align 4, !tbaa !134
  %568 = icmp ult i32 %567, 460
  br i1 %568, label %569, label %586

569:                                              ; preds = %564
  call void @llvm.lifetime.start.p0(i64 32, ptr %60) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %61) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %61) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %60, ptr noundef @.str.105, ptr noundef nonnull align 1 dereferenceable(1) %61)
          to label %570 unwind label %573

570:                                              ; preds = %569
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %147, ptr noundef nonnull align 8 dereferenceable(32) %60)
          to label %571 unwind label %577

571:                                              ; preds = %570
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %61) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %61) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %60) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %62) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1267, ptr noundef nonnull align 1 dereferenceable(1) %62)
          to label %572 unwind label %582

572:                                              ; preds = %571
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %62) #6
  br label %1405

573:                                              ; preds = %569
  %574 = landingpad { ptr, i32 }
          cleanup
  %575 = extractvalue { ptr, i32 } %574, 0
  store ptr %575, ptr %10, align 8
  %576 = extractvalue { ptr, i32 } %574, 1
  store i32 %576, ptr %11, align 4
  br label %581

577:                                              ; preds = %570
  %578 = landingpad { ptr, i32 }
          cleanup
  %579 = extractvalue { ptr, i32 } %578, 0
  store ptr %579, ptr %10, align 8
  %580 = extractvalue { ptr, i32 } %578, 1
  store i32 %580, ptr %11, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #6
  br label %581

581:                                              ; preds = %577, %573
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %61) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %61) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %60) #6
  br label %1406

582:                                              ; preds = %571
  %583 = landingpad { ptr, i32 }
          cleanup
  %584 = extractvalue { ptr, i32 } %583, 0
  store ptr %584, ptr %10, align 8
  %585 = extractvalue { ptr, i32 } %583, 1
  store i32 %585, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %62) #6
  br label %1406

586:                                              ; preds = %564
  call void @llvm.lifetime.start.p0(i64 1, ptr %63) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %63) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1268, ptr noundef nonnull align 1 dereferenceable(1) %63)
          to label %587 unwind label %588

587:                                              ; preds = %586
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %63) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %63) #6
  br label %1405

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

592:                                              ; preds = %559
  call void @llvm.lifetime.start.p0(i64 32, ptr %64) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %65) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %65) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %64, ptr noundef @.str.105, ptr noundef nonnull align 1 dereferenceable(1) %65)
          to label %593 unwind label %596

593:                                              ; preds = %592
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %147, ptr noundef nonnull align 8 dereferenceable(32) %64)
          to label %594 unwind label %600

594:                                              ; preds = %593
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %65) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %65) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %64) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %66) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %66) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1269, ptr noundef nonnull align 1 dereferenceable(1) %66)
          to label %595 unwind label %605

595:                                              ; preds = %594
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %66) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %66) #6
  br label %1405

596:                                              ; preds = %592
  %597 = landingpad { ptr, i32 }
          cleanup
  %598 = extractvalue { ptr, i32 } %597, 0
  store ptr %598, ptr %10, align 8
  %599 = extractvalue { ptr, i32 } %597, 1
  store i32 %599, ptr %11, align 4
  br label %604

600:                                              ; preds = %593
  %601 = landingpad { ptr, i32 }
          cleanup
  %602 = extractvalue { ptr, i32 } %601, 0
  store ptr %602, ptr %10, align 8
  %603 = extractvalue { ptr, i32 } %601, 1
  store i32 %603, ptr %11, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #6
  br label %604

604:                                              ; preds = %600, %596
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %65) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %65) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %64) #6
  br label %1406

605:                                              ; preds = %594
  %606 = landingpad { ptr, i32 }
          cleanup
  %607 = extractvalue { ptr, i32 } %606, 0
  store ptr %607, ptr %10, align 8
  %608 = extractvalue { ptr, i32 } %606, 1
  store i32 %608, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %66) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %66) #6
  br label %1406

609:                                              ; preds = %4
  %610 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 9
  %611 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %610, i32 0, i32 1
  %612 = load i8, ptr %611, align 4, !tbaa !13, !range !123, !noundef !124
  %613 = trunc i8 %612 to i1
  br i1 %613, label %614, label %621

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

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

617:                                              ; preds = %614
  %618 = landingpad { ptr, i32 }
          cleanup
  %619 = extractvalue { ptr, i32 } %618, 0
  store ptr %619, ptr %10, align 8
  %620 = extractvalue { ptr, i32 } %618, 1
  store i32 %620, ptr %11, align 4
  call void @__cxa_free_exception(ptr %615) #6
  br label %1406

621:                                              ; preds = %609
  %622 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 9
  %623 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %622, i32 0, i32 4
  %624 = load i8, ptr %623, align 4, !tbaa !125, !range !123, !noundef !124
  %625 = trunc i8 %624 to i1
  br i1 %625, label %626, label %654

626:                                              ; preds = %621
  %627 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 9
  %628 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %627, i32 0, i32 0
  %629 = load i32, ptr %628, align 4, !tbaa !134
  %630 = icmp ult i32 %629, 460
  br i1 %630, label %631, label %648

631:                                              ; preds = %626
  call void @llvm.lifetime.start.p0(i64 32, ptr %67) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %68) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %67, ptr noundef @.str.105, ptr noundef nonnull align 1 dereferenceable(1) %68)
          to label %632 unwind label %635

632:                                              ; preds = %631
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %147, ptr noundef nonnull align 8 dereferenceable(32) %67)
          to label %633 unwind label %639

633:                                              ; preds = %632
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %67) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %69) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %69) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1271, ptr noundef nonnull align 1 dereferenceable(1) %69)
          to label %634 unwind label %644

634:                                              ; preds = %633
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %69) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %69) #6
  br label %1405

635:                                              ; preds = %631
  %636 = landingpad { ptr, i32 }
          cleanup
  %637 = extractvalue { ptr, i32 } %636, 0
  store ptr %637, ptr %10, align 8
  %638 = extractvalue { ptr, i32 } %636, 1
  store i32 %638, ptr %11, align 4
  br label %643

639:                                              ; preds = %632
  %640 = landingpad { ptr, i32 }
          cleanup
  %641 = extractvalue { ptr, i32 } %640, 0
  store ptr %641, ptr %10, align 8
  %642 = extractvalue { ptr, i32 } %640, 1
  store i32 %642, ptr %11, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #6
  br label %643

643:                                              ; preds = %639, %635
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %67) #6
  br label %1406

644:                                              ; preds = %633
  %645 = landingpad { ptr, i32 }
          cleanup
  %646 = extractvalue { ptr, i32 } %645, 0
  store ptr %646, ptr %10, align 8
  %647 = extractvalue { ptr, i32 } %645, 1
  store i32 %647, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %69) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %69) #6
  br label %1406

648:                                              ; preds = %626
  call void @llvm.lifetime.start.p0(i64 1, ptr %70) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %70) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1272, ptr noundef nonnull align 1 dereferenceable(1) %70)
          to label %649 unwind label %650

649:                                              ; preds = %648
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %70) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %70) #6
  br label %1405

650:                                              ; preds = %648
  %651 = landingpad { ptr, i32 }
          cleanup
  %652 = extractvalue { ptr, i32 } %651, 0
  store ptr %652, ptr %10, align 8
  %653 = extractvalue { ptr, i32 } %651, 1
  store i32 %653, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %70) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %70) #6
  br label %1406

654:                                              ; preds = %621
  call void @llvm.lifetime.start.p0(i64 32, ptr %71) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %72) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %72) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %71, ptr noundef @.str.105, ptr noundef nonnull align 1 dereferenceable(1) %72)
          to label %655 unwind label %658

655:                                              ; preds = %654
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %147, ptr noundef nonnull align 8 dereferenceable(32) %71)
          to label %656 unwind label %662

656:                                              ; preds = %655
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %72) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %72) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %71) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %73) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %73) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1271, ptr noundef nonnull align 1 dereferenceable(1) %73)
          to label %657 unwind label %667

657:                                              ; preds = %656
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %73) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #6
  br label %1405

658:                                              ; preds = %654
  %659 = landingpad { ptr, i32 }
          cleanup
  %660 = extractvalue { ptr, i32 } %659, 0
  store ptr %660, ptr %10, align 8
  %661 = extractvalue { ptr, i32 } %659, 1
  store i32 %661, ptr %11, align 4
  br label %666

662:                                              ; preds = %655
  %663 = landingpad { ptr, i32 }
          cleanup
  %664 = extractvalue { ptr, i32 } %663, 0
  store ptr %664, ptr %10, align 8
  %665 = extractvalue { ptr, i32 } %663, 1
  store i32 %665, ptr %11, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #6
  br label %666

666:                                              ; preds = %662, %658
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %72) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %72) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %71) #6
  br label %1406

667:                                              ; preds = %656
  %668 = landingpad { ptr, i32 }
          cleanup
  %669 = extractvalue { ptr, i32 } %668, 0
  store ptr %669, ptr %10, align 8
  %670 = extractvalue { ptr, i32 } %668, 1
  store i32 %670, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %73) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #6
  br label %1406

671:                                              ; preds = %4
  %672 = call noundef zeroext i1 @_ZNK11spirv_cross12CompilerGLSL9is_legacyEv(ptr noundef nonnull align 8 dereferenceable(9848) %147)
  br i1 %672, label %673, label %680

673:                                              ; preds = %671
  %674 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %674, ptr noundef @.str.1273)
          to label %675 unwind label %676

675:                                              ; preds = %673
  call void @__cxa_throw(ptr %674, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

676:                                              ; preds = %673
  %677 = landingpad { ptr, i32 }
          cleanup
  %678 = extractvalue { ptr, i32 } %677, 0
  store ptr %678, ptr %10, align 8
  %679 = extractvalue { ptr, i32 } %677, 1
  store i32 %679, ptr %11, align 4
  call void @__cxa_free_exception(ptr %674) #6
  br label %1406

680:                                              ; preds = %671
  %681 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 9
  %682 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %681, i32 0, i32 1
  %683 = load i8, ptr %682, align 4, !tbaa !13, !range !123, !noundef !124
  %684 = trunc i8 %683 to i1
  br i1 %684, label %685, label %702

685:                                              ; preds = %680
  %686 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 9
  %687 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %686, i32 0, i32 0
  %688 = load i32, ptr %687, align 4, !tbaa !134
  %689 = icmp ult i32 %688, 320
  br i1 %689, label %690, label %702

690:                                              ; preds = %685
  call void @llvm.lifetime.start.p0(i64 32, ptr %74) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %75) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %75) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %74, ptr noundef @.str.1274, ptr noundef nonnull align 1 dereferenceable(1) %75)
          to label %691 unwind label %693

691:                                              ; preds = %690
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %147, ptr noundef nonnull align 8 dereferenceable(32) %74)
          to label %692 unwind label %697

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

693:                                              ; preds = %690
  %694 = landingpad { ptr, i32 }
          cleanup
  %695 = extractvalue { ptr, i32 } %694, 0
  store ptr %695, ptr %10, align 8
  %696 = extractvalue { ptr, i32 } %694, 1
  store i32 %696, ptr %11, align 4
  br label %701

697:                                              ; preds = %691
  %698 = landingpad { ptr, i32 }
          cleanup
  %699 = extractvalue { ptr, i32 } %698, 0
  store ptr %699, ptr %10, align 8
  %700 = extractvalue { ptr, i32 } %698, 1
  store i32 %700, ptr %11, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %74) #6
  br label %701

701:                                              ; preds = %697, %693
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %75) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %75) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %74) #6
  br label %1406

702:                                              ; preds = %685, %680
  %703 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 9
  %704 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %703, i32 0, i32 1
  %705 = load i8, ptr %704, align 4, !tbaa !13, !range !123, !noundef !124
  %706 = trunc i8 %705 to i1
  br i1 %706, label %724, label %707

707:                                              ; preds = %702
  %708 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 9
  %709 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %708, i32 0, i32 0
  %710 = load i32, ptr %709, align 4, !tbaa !134
  %711 = icmp ult i32 %710, 400
  br i1 %711, label %712, label %724

712:                                              ; preds = %707
  call void @llvm.lifetime.start.p0(i64 32, ptr %76) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %77) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %77) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %76, ptr noundef @.str.1275, ptr noundef nonnull align 1 dereferenceable(1) %77)
          to label %713 unwind label %715

713:                                              ; preds = %712
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %147, ptr noundef nonnull align 8 dereferenceable(32) %76)
          to label %714 unwind label %719

714:                                              ; preds = %713
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %77) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %77) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %76) #6
  br label %724

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

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

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

724:                                              ; preds = %714, %707, %702
  br label %725

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

726:                                              ; preds = %725
  call void @llvm.lifetime.start.p0(i64 1, ptr %78) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %78) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1276, ptr noundef nonnull align 1 dereferenceable(1) %78)
          to label %727 unwind label %728

727:                                              ; preds = %726
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %78) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %78) #6
  br label %1405

728:                                              ; preds = %726
  %729 = landingpad { ptr, i32 }
          cleanup
  %730 = extractvalue { ptr, i32 } %729, 0
  store ptr %730, ptr %10, align 8
  %731 = extractvalue { ptr, i32 } %729, 1
  store i32 %731, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %78) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %78) #6
  br label %1406

732:                                              ; preds = %4
  %733 = call noundef zeroext i1 @_ZNK11spirv_cross12CompilerGLSL9is_legacyEv(ptr noundef nonnull align 8 dereferenceable(9848) %147)
  br i1 %733, label %734, label %741

734:                                              ; preds = %732
  %735 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %735, ptr noundef @.str.1273)
          to label %736 unwind label %737

736:                                              ; preds = %734
  call void @__cxa_throw(ptr %735, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

737:                                              ; preds = %734
  %738 = landingpad { ptr, i32 }
          cleanup
  %739 = extractvalue { ptr, i32 } %738, 0
  store ptr %739, ptr %10, align 8
  %740 = extractvalue { ptr, i32 } %738, 1
  store i32 %740, ptr %11, align 4
  call void @__cxa_free_exception(ptr %735) #6
  br label %1406

741:                                              ; preds = %732
  %742 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 9
  %743 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %742, i32 0, i32 1
  %744 = load i8, ptr %743, align 4, !tbaa !13, !range !123, !noundef !124
  %745 = trunc i8 %744 to i1
  br i1 %745, label %746, label %763

746:                                              ; preds = %741
  %747 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 9
  %748 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %747, i32 0, i32 0
  %749 = load i32, ptr %748, align 4, !tbaa !134
  %750 = icmp ult i32 %749, 320
  br i1 %750, label %751, label %763

751:                                              ; preds = %746
  call void @llvm.lifetime.start.p0(i64 32, ptr %79) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %80) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %80) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %79, ptr noundef @.str.1274, ptr noundef nonnull align 1 dereferenceable(1) %80)
          to label %752 unwind label %754

752:                                              ; preds = %751
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %147, ptr noundef nonnull align 8 dereferenceable(32) %79)
          to label %753 unwind label %758

753:                                              ; preds = %752
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %79) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %80) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %80) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %79) #6
  br label %786

754:                                              ; preds = %751
  %755 = landingpad { ptr, i32 }
          cleanup
  %756 = extractvalue { ptr, i32 } %755, 0
  store ptr %756, ptr %10, align 8
  %757 = extractvalue { ptr, i32 } %755, 1
  store i32 %757, ptr %11, align 4
  br label %762

758:                                              ; preds = %752
  %759 = landingpad { ptr, i32 }
          cleanup
  %760 = extractvalue { ptr, i32 } %759, 0
  store ptr %760, ptr %10, align 8
  %761 = extractvalue { ptr, i32 } %759, 1
  store i32 %761, ptr %11, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %79) #6
  br label %762

762:                                              ; preds = %758, %754
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %80) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %80) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %79) #6
  br label %1406

763:                                              ; preds = %746, %741
  %764 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 9
  %765 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %764, i32 0, i32 1
  %766 = load i8, ptr %765, align 4, !tbaa !13, !range !123, !noundef !124
  %767 = trunc i8 %766 to i1
  br i1 %767, label %785, label %768

768:                                              ; preds = %763
  %769 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 9
  %770 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %769, i32 0, i32 0
  %771 = load i32, ptr %770, align 4, !tbaa !134
  %772 = icmp ult i32 %771, 400
  br i1 %772, label %773, label %785

773:                                              ; preds = %768
  call void @llvm.lifetime.start.p0(i64 32, ptr %81) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %82) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %82) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %81, ptr noundef @.str.1275, ptr noundef nonnull align 1 dereferenceable(1) %82)
          to label %774 unwind label %776

774:                                              ; preds = %773
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %147, ptr noundef nonnull align 8 dereferenceable(32) %81)
          to label %775 unwind label %780

775:                                              ; preds = %774
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %82) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %82) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %81) #6
  br label %785

776:                                              ; preds = %773
  %777 = landingpad { ptr, i32 }
          cleanup
  %778 = extractvalue { ptr, i32 } %777, 0
  store ptr %778, ptr %10, align 8
  %779 = extractvalue { ptr, i32 } %777, 1
  store i32 %779, ptr %11, align 4
  br label %784

780:                                              ; preds = %774
  %781 = landingpad { ptr, i32 }
          cleanup
  %782 = extractvalue { ptr, i32 } %781, 0
  store ptr %782, ptr %10, align 8
  %783 = extractvalue { ptr, i32 } %781, 1
  store i32 %783, ptr %11, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #6
  br label %784

784:                                              ; preds = %780, %776
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %82) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %82) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %81) #6
  br label %1406

785:                                              ; preds = %775, %768, %763
  br label %786

786:                                              ; preds = %785, %753
  br label %787

787:                                              ; preds = %786
  %788 = load i32, ptr %8, align 4, !tbaa !11
  %789 = icmp eq i32 %788, 1
  br i1 %789, label %790, label %796

790:                                              ; preds = %787
  call void @llvm.lifetime.start.p0(i64 1, ptr %83) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %83) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1277, ptr noundef nonnull align 1 dereferenceable(1) %83)
          to label %791 unwind label %792

791:                                              ; preds = %790
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %83) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %83) #6
  br label %1405

792:                                              ; preds = %790
  %793 = landingpad { ptr, i32 }
          cleanup
  %794 = extractvalue { ptr, i32 } %793, 0
  store ptr %794, ptr %10, align 8
  %795 = extractvalue { ptr, i32 } %793, 1
  store i32 %795, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %83) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %83) #6
  br label %1406

796:                                              ; preds = %787
  call void @llvm.lifetime.start.p0(i64 1, ptr %84) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %84) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1278, ptr noundef nonnull align 1 dereferenceable(1) %84)
          to label %797 unwind label %798

797:                                              ; preds = %796
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %84) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %84) #6
  br label %1405

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

802:                                              ; preds = %4
  %803 = call noundef zeroext i1 @_ZNK11spirv_cross12CompilerGLSL9is_legacyEv(ptr noundef nonnull align 8 dereferenceable(9848) %147)
  br i1 %803, label %804, label %811

804:                                              ; preds = %802
  %805 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %805, ptr noundef @.str.1273)
          to label %806 unwind label %807

806:                                              ; preds = %804
  call void @__cxa_throw(ptr %805, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

807:                                              ; preds = %804
  %808 = landingpad { ptr, i32 }
          cleanup
  %809 = extractvalue { ptr, i32 } %808, 0
  store ptr %809, ptr %10, align 8
  %810 = extractvalue { ptr, i32 } %808, 1
  store i32 %810, ptr %11, align 4
  call void @__cxa_free_exception(ptr %805) #6
  br label %1406

811:                                              ; preds = %802
  %812 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 9
  %813 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %812, i32 0, i32 1
  %814 = load i8, ptr %813, align 4, !tbaa !13, !range !123, !noundef !124
  %815 = trunc i8 %814 to i1
  br i1 %815, label %816, label %833

816:                                              ; preds = %811
  %817 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 9
  %818 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %817, i32 0, i32 0
  %819 = load i32, ptr %818, align 4, !tbaa !134
  %820 = icmp ult i32 %819, 320
  br i1 %820, label %821, label %833

821:                                              ; preds = %816
  call void @llvm.lifetime.start.p0(i64 32, ptr %85) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %86) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %86) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %85, ptr noundef @.str.1274, ptr noundef nonnull align 1 dereferenceable(1) %86)
          to label %822 unwind label %824

822:                                              ; preds = %821
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %147, ptr noundef nonnull align 8 dereferenceable(32) %85)
          to label %823 unwind label %828

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

824:                                              ; preds = %821
  %825 = landingpad { ptr, i32 }
          cleanup
  %826 = extractvalue { ptr, i32 } %825, 0
  store ptr %826, ptr %10, align 8
  %827 = extractvalue { ptr, i32 } %825, 1
  store i32 %827, ptr %11, align 4
  br label %832

828:                                              ; preds = %822
  %829 = landingpad { ptr, i32 }
          cleanup
  %830 = extractvalue { ptr, i32 } %829, 0
  store ptr %830, ptr %10, align 8
  %831 = extractvalue { ptr, i32 } %829, 1
  store i32 %831, ptr %11, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %85) #6
  br label %832

832:                                              ; preds = %828, %824
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %86) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %86) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %85) #6
  br label %1406

833:                                              ; preds = %816, %811
  %834 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 9
  %835 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %834, i32 0, i32 1
  %836 = load i8, ptr %835, align 4, !tbaa !13, !range !123, !noundef !124
  %837 = trunc i8 %836 to i1
  br i1 %837, label %855, label %838

838:                                              ; preds = %833
  %839 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 9
  %840 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %839, i32 0, i32 0
  %841 = load i32, ptr %840, align 4, !tbaa !134
  %842 = icmp ult i32 %841, 400
  br i1 %842, label %843, label %855

843:                                              ; preds = %838
  call void @llvm.lifetime.start.p0(i64 32, ptr %87) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %88) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %88) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %87, ptr noundef @.str.1275, ptr noundef nonnull align 1 dereferenceable(1) %88)
          to label %844 unwind label %846

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

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

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

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

854:                                              ; preds = %850, %846
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %88) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %88) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %87) #6
  br label %1406

855:                                              ; preds = %845, %838, %833
  br label %856

856:                                              ; preds = %855, %823
  br label %857

857:                                              ; preds = %856
  call void @llvm.lifetime.start.p0(i64 1, ptr %89) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %89) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1279, ptr noundef nonnull align 1 dereferenceable(1) %89)
          to label %858 unwind label %859

858:                                              ; preds = %857
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %89) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #6
  br label %1405

859:                                              ; preds = %857
  %860 = landingpad { ptr, i32 }
          cleanup
  %861 = extractvalue { ptr, i32 } %860, 0
  store ptr %861, ptr %10, align 8
  %862 = extractvalue { ptr, i32 } %860, 1
  store i32 %862, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %89) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #6
  br label %1406

863:                                              ; preds = %4
  %864 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 9
  %865 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %864, i32 0, i32 4
  %866 = load i8, ptr %865, align 4, !tbaa !125, !range !123, !noundef !124
  %867 = trunc i8 %866 to i1
  br i1 %867, label %868, label %874

868:                                              ; preds = %863
  call void @llvm.lifetime.start.p0(i64 1, ptr %90) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %90) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1280, ptr noundef nonnull align 1 dereferenceable(1) %90)
          to label %869 unwind label %870

869:                                              ; preds = %868
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %90) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %90) #6
  br label %1405

870:                                              ; preds = %868
  %871 = landingpad { ptr, i32 }
          cleanup
  %872 = extractvalue { ptr, i32 } %871, 0
  store ptr %872, ptr %10, align 8
  %873 = extractvalue { ptr, i32 } %871, 1
  store i32 %873, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %90) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %90) #6
  br label %1406

874:                                              ; preds = %863
  call void @llvm.lifetime.start.p0(i64 1, ptr %91) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %91) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1281, ptr noundef nonnull align 1 dereferenceable(1) %91)
          to label %875 unwind label %876

875:                                              ; preds = %874
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %91) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %91) #6
  br label %1405

876:                                              ; preds = %874
  %877 = landingpad { ptr, i32 }
          cleanup
  %878 = extractvalue { ptr, i32 } %877, 0
  store ptr %878, ptr %10, align 8
  %879 = extractvalue { ptr, i32 } %877, 1
  store i32 %879, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %91) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %91) #6
  br label %1406

880:                                              ; preds = %4
  call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %147, i32 noundef 4)
  call void @llvm.lifetime.start.p0(i64 1, ptr %92) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %92) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1282, ptr noundef nonnull align 1 dereferenceable(1) %92)
          to label %881 unwind label %882

881:                                              ; preds = %880
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %92) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %92) #6
  br label %1405

882:                                              ; preds = %880
  %883 = landingpad { ptr, i32 }
          cleanup
  %884 = extractvalue { ptr, i32 } %883, 0
  store ptr %884, ptr %10, align 8
  %885 = extractvalue { ptr, i32 } %883, 1
  store i32 %885, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %92) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %92) #6
  br label %1406

886:                                              ; preds = %4
  call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %147, i32 noundef 3)
  call void @llvm.lifetime.start.p0(i64 1, ptr %93) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %93) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1283, ptr noundef nonnull align 1 dereferenceable(1) %93)
          to label %887 unwind label %888

887:                                              ; preds = %886
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %93) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %93) #6
  br label %1405

888:                                              ; preds = %886
  %889 = landingpad { ptr, i32 }
          cleanup
  %890 = extractvalue { ptr, i32 } %889, 0
  store ptr %890, ptr %10, align 8
  %891 = extractvalue { ptr, i32 } %889, 1
  store i32 %891, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %93) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %93) #6
  br label %1406

892:                                              ; preds = %4
  call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %147, i32 noundef 1)
  call void @llvm.lifetime.start.p0(i64 1, ptr %94) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %94) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1284, ptr noundef nonnull align 1 dereferenceable(1) %94)
          to label %893 unwind label %894

893:                                              ; preds = %892
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %94) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %94) #6
  br label %1405

894:                                              ; preds = %892
  %895 = landingpad { ptr, i32 }
          cleanup
  %896 = extractvalue { ptr, i32 } %895, 0
  store ptr %896, ptr %10, align 8
  %897 = extractvalue { ptr, i32 } %895, 1
  store i32 %897, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %94) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %94) #6
  br label %1406

898:                                              ; preds = %4
  call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %147, i32 noundef 2)
  call void @llvm.lifetime.start.p0(i64 1, ptr %95) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %95) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1285, ptr noundef nonnull align 1 dereferenceable(1) %95)
          to label %899 unwind label %900

899:                                              ; preds = %898
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %95) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %95) #6
  br label %1405

900:                                              ; preds = %898
  %901 = landingpad { ptr, i32 }
          cleanup
  %902 = extractvalue { ptr, i32 } %901, 0
  store ptr %902, ptr %10, align 8
  %903 = extractvalue { ptr, i32 } %901, 1
  store i32 %903, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %95) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %95) #6
  br label %1406

904:                                              ; preds = %4
  call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %147, i32 noundef 0)
  call void @llvm.lifetime.start.p0(i64 1, ptr %96) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %96) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1286, ptr noundef nonnull align 1 dereferenceable(1) %96)
          to label %905 unwind label %906

905:                                              ; preds = %904
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %96) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %96) #6
  br label %1405

906:                                              ; preds = %904
  %907 = landingpad { ptr, i32 }
          cleanup
  %908 = extractvalue { ptr, i32 } %907, 0
  store ptr %908, ptr %10, align 8
  %909 = extractvalue { ptr, i32 } %907, 1
  store i32 %909, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %96) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %96) #6
  br label %1406

910:                                              ; preds = %4
  call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %147, i32 noundef 0)
  call void @llvm.lifetime.start.p0(i64 1, ptr %97) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %97) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1287, ptr noundef nonnull align 1 dereferenceable(1) %97)
          to label %911 unwind label %912

911:                                              ; preds = %910
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %97) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %97) #6
  br label %1405

912:                                              ; preds = %910
  %913 = landingpad { ptr, i32 }
          cleanup
  %914 = extractvalue { ptr, i32 } %913, 0
  store ptr %914, ptr %10, align 8
  %915 = extractvalue { ptr, i32 } %913, 1
  store i32 %915, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %97) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %97) #6
  br label %1406

916:                                              ; preds = %4
  call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %147, i32 noundef 0)
  call void @llvm.lifetime.start.p0(i64 1, ptr %98) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %98) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1288, ptr noundef nonnull align 1 dereferenceable(1) %98)
          to label %917 unwind label %918

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

918:                                              ; preds = %916
  %919 = landingpad { ptr, i32 }
          cleanup
  %920 = extractvalue { ptr, i32 } %919, 0
  store ptr %920, ptr %10, align 8
  %921 = extractvalue { ptr, i32 } %919, 1
  store i32 %921, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %98) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %98) #6
  br label %1406

922:                                              ; preds = %4
  call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %147, i32 noundef 0)
  call void @llvm.lifetime.start.p0(i64 1, ptr %99) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %99) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1289, ptr noundef nonnull align 1 dereferenceable(1) %99)
          to label %923 unwind label %924

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

924:                                              ; preds = %922
  %925 = landingpad { ptr, i32 }
          cleanup
  %926 = extractvalue { ptr, i32 } %925, 0
  store ptr %926, ptr %10, align 8
  %927 = extractvalue { ptr, i32 } %925, 1
  store i32 %927, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %99) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %99) #6
  br label %1406

928:                                              ; preds = %4
  call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %147, i32 noundef 0)
  call void @llvm.lifetime.start.p0(i64 1, ptr %100) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %100) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1290, ptr noundef nonnull align 1 dereferenceable(1) %100)
          to label %929 unwind label %930

929:                                              ; preds = %928
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %100) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %100) #6
  br label %1405

930:                                              ; preds = %928
  %931 = landingpad { ptr, i32 }
          cleanup
  %932 = extractvalue { ptr, i32 } %931, 0
  store ptr %932, ptr %10, align 8
  %933 = extractvalue { ptr, i32 } %931, 1
  store i32 %933, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %100) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %100) #6
  br label %1406

934:                                              ; preds = %4
  %935 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 36
  %936 = load i8, ptr %935, align 4, !tbaa !136, !range !123, !noundef !124
  %937 = trunc i8 %936 to i1
  %938 = zext i1 %937 to i64
  %939 = select i1 %937, ptr @.str.1291, ptr @.str.1292
  call void @llvm.lifetime.start.p0(i64 1, ptr %101) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %101) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %939, ptr noundef nonnull align 1 dereferenceable(1) %101)
          to label %940 unwind label %941

940:                                              ; preds = %934
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %101) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %101) #6
  br label %1405

941:                                              ; preds = %934
  %942 = landingpad { ptr, i32 }
          cleanup
  %943 = extractvalue { ptr, i32 } %942, 0
  store ptr %943, ptr %10, align 8
  %944 = extractvalue { ptr, i32 } %942, 1
  store i32 %944, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %101) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %101) #6
  br label %1406

945:                                              ; preds = %4
  %946 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 36
  %947 = load i8, ptr %946, align 4, !tbaa !136, !range !123, !noundef !124
  %948 = trunc i8 %947 to i1
  %949 = zext i1 %948 to i64
  %950 = select i1 %948, ptr @.str.1293, ptr @.str.1294
  call void @llvm.lifetime.start.p0(i64 1, ptr %102) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %102) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %950, ptr noundef nonnull align 1 dereferenceable(1) %102)
          to label %951 unwind label %952

951:                                              ; preds = %945
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %102) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %102) #6
  br label %1405

952:                                              ; preds = %945
  %953 = landingpad { ptr, i32 }
          cleanup
  %954 = extractvalue { ptr, i32 } %953, 0
  store ptr %954, ptr %10, align 8
  %955 = extractvalue { ptr, i32 } %953, 1
  store i32 %955, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %102) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %102) #6
  br label %1406

956:                                              ; preds = %4
  %957 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 36
  %958 = load i8, ptr %957, align 4, !tbaa !136, !range !123, !noundef !124
  %959 = trunc i8 %958 to i1
  %960 = zext i1 %959 to i64
  %961 = select i1 %959, ptr @.str.1295, ptr @.str.1296
  call void @llvm.lifetime.start.p0(i64 1, ptr %103) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %103) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %961, ptr noundef nonnull align 1 dereferenceable(1) %103)
          to label %962 unwind label %963

962:                                              ; preds = %956
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %103) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %103) #6
  br label %1405

963:                                              ; preds = %956
  %964 = landingpad { ptr, i32 }
          cleanup
  %965 = extractvalue { ptr, i32 } %964, 0
  store ptr %965, ptr %10, align 8
  %966 = extractvalue { ptr, i32 } %964, 1
  store i32 %966, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %103) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %103) #6
  br label %1406

967:                                              ; preds = %4
  %968 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 36
  %969 = load i8, ptr %968, align 4, !tbaa !136, !range !123, !noundef !124
  %970 = trunc i8 %969 to i1
  %971 = zext i1 %970 to i64
  %972 = select i1 %970, ptr @.str.1297, ptr @.str.1298
  call void @llvm.lifetime.start.p0(i64 1, ptr %104) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %104) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %972, ptr noundef nonnull align 1 dereferenceable(1) %104)
          to label %973 unwind label %974

973:                                              ; preds = %967
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %104) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %104) #6
  br label %1405

974:                                              ; preds = %967
  %975 = landingpad { ptr, i32 }
          cleanup
  %976 = extractvalue { ptr, i32 } %975, 0
  store ptr %976, ptr %10, align 8
  %977 = extractvalue { ptr, i32 } %975, 1
  store i32 %977, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %104) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %104) #6
  br label %1406

978:                                              ; preds = %4
  %979 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 36
  %980 = load i8, ptr %979, align 4, !tbaa !136, !range !123, !noundef !124
  %981 = trunc i8 %980 to i1
  %982 = zext i1 %981 to i64
  %983 = select i1 %981, ptr @.str.1299, ptr @.str.1300
  call void @llvm.lifetime.start.p0(i64 1, ptr %105) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %105) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %983, ptr noundef nonnull align 1 dereferenceable(1) %105)
          to label %984 unwind label %985

984:                                              ; preds = %978
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %105) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %105) #6
  br label %1405

985:                                              ; preds = %978
  %986 = landingpad { ptr, i32 }
          cleanup
  %987 = extractvalue { ptr, i32 } %986, 0
  store ptr %987, ptr %10, align 8
  %988 = extractvalue { ptr, i32 } %986, 1
  store i32 %988, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %105) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %105) #6
  br label %1406

989:                                              ; preds = %4
  %990 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 36
  %991 = load i8, ptr %990, align 4, !tbaa !136, !range !123, !noundef !124
  %992 = trunc i8 %991 to i1
  %993 = zext i1 %992 to i64
  %994 = select i1 %992, ptr @.str.1301, ptr @.str.1302
  call void @llvm.lifetime.start.p0(i64 1, ptr %106) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %106) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %994, ptr noundef nonnull align 1 dereferenceable(1) %106)
          to label %995 unwind label %996

995:                                              ; preds = %989
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %106) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %106) #6
  br label %1405

996:                                              ; preds = %989
  %997 = landingpad { ptr, i32 }
          cleanup
  %998 = extractvalue { ptr, i32 } %997, 0
  store ptr %998, ptr %10, align 8
  %999 = extractvalue { ptr, i32 } %997, 1
  store i32 %999, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %106) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %106) #6
  br label %1406

1000:                                             ; preds = %4
  %1001 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 36
  %1002 = load i8, ptr %1001, align 4, !tbaa !136, !range !123, !noundef !124
  %1003 = trunc i8 %1002 to i1
  %1004 = zext i1 %1003 to i64
  %1005 = select i1 %1003, ptr @.str.1303, ptr @.str.1304
  call void @llvm.lifetime.start.p0(i64 1, ptr %107) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %107) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %1005, ptr noundef nonnull align 1 dereferenceable(1) %107)
          to label %1006 unwind label %1007

1006:                                             ; preds = %1000
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %107) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %107) #6
  br label %1405

1007:                                             ; preds = %1000
  %1008 = landingpad { ptr, i32 }
          cleanup
  %1009 = extractvalue { ptr, i32 } %1008, 0
  store ptr %1009, ptr %10, align 8
  %1010 = extractvalue { ptr, i32 } %1008, 1
  store i32 %1010, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %107) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %107) #6
  br label %1406

1011:                                             ; preds = %4
  %1012 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 36
  %1013 = load i8, ptr %1012, align 4, !tbaa !136, !range !123, !noundef !124
  %1014 = trunc i8 %1013 to i1
  %1015 = zext i1 %1014 to i64
  %1016 = select i1 %1014, ptr @.str.1305, ptr @.str.1306
  call void @llvm.lifetime.start.p0(i64 1, ptr %108) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %108) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %1016, ptr noundef nonnull align 1 dereferenceable(1) %108)
          to label %1017 unwind label %1018

1017:                                             ; preds = %1011
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %108) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %108) #6
  br label %1405

1018:                                             ; preds = %1011
  %1019 = landingpad { ptr, i32 }
          cleanup
  %1020 = extractvalue { ptr, i32 } %1019, 0
  store ptr %1020, ptr %10, align 8
  %1021 = extractvalue { ptr, i32 } %1019, 1
  store i32 %1021, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %108) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %108) #6
  br label %1406

1022:                                             ; preds = %4
  %1023 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 36
  %1024 = load i8, ptr %1023, align 4, !tbaa !136, !range !123, !noundef !124
  %1025 = trunc i8 %1024 to i1
  %1026 = zext i1 %1025 to i64
  %1027 = select i1 %1025, ptr @.str.1307, ptr @.str.1308
  call void @llvm.lifetime.start.p0(i64 1, ptr %109) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %109) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %1027, ptr noundef nonnull align 1 dereferenceable(1) %109)
          to label %1028 unwind label %1029

1028:                                             ; preds = %1022
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %109) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %109) #6
  br label %1405

1029:                                             ; preds = %1022
  %1030 = landingpad { ptr, i32 }
          cleanup
  %1031 = extractvalue { ptr, i32 } %1030, 0
  store ptr %1031, ptr %10, align 8
  %1032 = extractvalue { ptr, i32 } %1030, 1
  store i32 %1032, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %109) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %109) #6
  br label %1406

1033:                                             ; preds = %4
  %1034 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 36
  %1035 = load i8, ptr %1034, align 4, !tbaa !136, !range !123, !noundef !124
  %1036 = trunc i8 %1035 to i1
  %1037 = zext i1 %1036 to i64
  %1038 = select i1 %1036, ptr @.str.1309, ptr @.str.1310
  call void @llvm.lifetime.start.p0(i64 1, ptr %110) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %110) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %1038, ptr noundef nonnull align 1 dereferenceable(1) %110)
          to label %1039 unwind label %1040

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

1040:                                             ; preds = %1033
  %1041 = landingpad { ptr, i32 }
          cleanup
  %1042 = extractvalue { ptr, i32 } %1041, 0
  store ptr %1042, ptr %10, align 8
  %1043 = extractvalue { ptr, i32 } %1041, 1
  store i32 %1043, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %110) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %110) #6
  br label %1406

1044:                                             ; preds = %4
  %1045 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 36
  %1046 = load i8, ptr %1045, align 4, !tbaa !136, !range !123, !noundef !124
  %1047 = trunc i8 %1046 to i1
  %1048 = zext i1 %1047 to i64
  %1049 = select i1 %1047, ptr @.str.1311, ptr @.str.1312
  call void @llvm.lifetime.start.p0(i64 1, ptr %111) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %111) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %1049, ptr noundef nonnull align 1 dereferenceable(1) %111)
          to label %1050 unwind label %1051

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

1051:                                             ; preds = %1044
  %1052 = landingpad { ptr, i32 }
          cleanup
  %1053 = extractvalue { ptr, i32 } %1052, 0
  store ptr %1053, ptr %10, align 8
  %1054 = extractvalue { ptr, i32 } %1052, 1
  store i32 %1054, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %111) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %111) #6
  br label %1406

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

1056:                                             ; preds = %1055
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %112) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %112) #6
  br label %1405

1057:                                             ; preds = %1055
  %1058 = landingpad { ptr, i32 }
          cleanup
  %1059 = extractvalue { ptr, i32 } %1058, 0
  store ptr %1059, ptr %10, align 8
  %1060 = extractvalue { ptr, i32 } %1058, 1
  store i32 %1060, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %112) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %112) #6
  br label %1406

1061:                                             ; preds = %4
  %1062 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 36
  %1063 = load i8, ptr %1062, align 4, !tbaa !136, !range !123, !noundef !124
  %1064 = trunc i8 %1063 to i1
  %1065 = zext i1 %1064 to i64
  %1066 = select i1 %1064, ptr @.str.1314, ptr @.str.1315
  call void @llvm.lifetime.start.p0(i64 1, ptr %113) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %113) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %1066, ptr noundef nonnull align 1 dereferenceable(1) %113)
          to label %1067 unwind label %1068

1067:                                             ; preds = %1061
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %113) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %113) #6
  br label %1405

1068:                                             ; preds = %1061
  %1069 = landingpad { ptr, i32 }
          cleanup
  %1070 = extractvalue { ptr, i32 } %1069, 0
  store ptr %1070, ptr %10, align 8
  %1071 = extractvalue { ptr, i32 } %1069, 1
  store i32 %1071, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %113) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %113) #6
  br label %1406

1072:                                             ; preds = %4
  %1073 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 36
  %1074 = load i8, ptr %1073, align 4, !tbaa !136, !range !123, !noundef !124
  %1075 = trunc i8 %1074 to i1
  %1076 = zext i1 %1075 to i64
  %1077 = select i1 %1075, ptr @.str.1316, ptr @.str.1317
  call void @llvm.lifetime.start.p0(i64 1, ptr %114) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %114) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %1077, ptr noundef nonnull align 1 dereferenceable(1) %114)
          to label %1078 unwind label %1079

1078:                                             ; preds = %1072
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %114) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %114) #6
  br label %1405

1079:                                             ; preds = %1072
  %1080 = landingpad { ptr, i32 }
          cleanup
  %1081 = extractvalue { ptr, i32 } %1080, 0
  store ptr %1081, ptr %10, align 8
  %1082 = extractvalue { ptr, i32 } %1080, 1
  store i32 %1082, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %114) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %114) #6
  br label %1406

1083:                                             ; preds = %4
  %1084 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 9
  %1085 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %1084, i32 0, i32 1
  %1086 = load i8, ptr %1085, align 4, !tbaa !13, !range !123, !noundef !124
  %1087 = trunc i8 %1086 to i1
  br i1 %1087, label %1088, label %1100

1088:                                             ; preds = %1083
  %1089 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 9
  %1090 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %1089, i32 0, i32 0
  %1091 = load i32, ptr %1090, align 4, !tbaa !134
  %1092 = icmp ult i32 %1091, 320
  br i1 %1092, label %1093, label %1100

1093:                                             ; preds = %1088
  %1094 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1094, ptr noundef @.str.1318)
          to label %1095 unwind label %1096

1095:                                             ; preds = %1093
  call void @__cxa_throw(ptr %1094, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1096:                                             ; preds = %1093
  %1097 = landingpad { ptr, i32 }
          cleanup
  %1098 = extractvalue { ptr, i32 } %1097, 0
  store ptr %1098, ptr %10, align 8
  %1099 = extractvalue { ptr, i32 } %1097, 1
  store i32 %1099, ptr %11, align 4
  call void @__cxa_free_exception(ptr %1094) #6
  br label %1406

1100:                                             ; preds = %1088, %1083
  %1101 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 9
  %1102 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %1101, i32 0, i32 1
  %1103 = load i8, ptr %1102, align 4, !tbaa !13, !range !123, !noundef !124
  %1104 = trunc i8 %1103 to i1
  br i1 %1104, label %1117, label %1105

1105:                                             ; preds = %1100
  %1106 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 9
  %1107 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %1106, i32 0, i32 0
  %1108 = load i32, ptr %1107, align 4, !tbaa !134
  %1109 = icmp ult i32 %1108, 450
  br i1 %1109, label %1110, label %1117

1110:                                             ; preds = %1105
  %1111 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1111, ptr noundef @.str.1319)
          to label %1112 unwind label %1113

1112:                                             ; preds = %1110
  call void @__cxa_throw(ptr %1111, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1113:                                             ; preds = %1110
  %1114 = landingpad { ptr, i32 }
          cleanup
  %1115 = extractvalue { ptr, i32 } %1114, 0
  store ptr %1115, ptr %10, align 8
  %1116 = extractvalue { ptr, i32 } %1114, 1
  store i32 %1116, ptr %11, align 4
  call void @__cxa_free_exception(ptr %1111) #6
  br label %1406

1117:                                             ; preds = %1105, %1100
  br label %1118

1118:                                             ; preds = %1117
  %1119 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 37
  %1120 = load i8, ptr %1119, align 1, !tbaa !137, !range !123, !noundef !124
  %1121 = trunc i8 %1120 to i1
  br i1 %1121, label %1122, label %1139

1122:                                             ; preds = %1118
  call void @llvm.lifetime.start.p0(i64 32, ptr %115) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %116) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %116) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %115, ptr noundef @.str.198, ptr noundef nonnull align 1 dereferenceable(1) %116)
          to label %1123 unwind label %1126

1123:                                             ; preds = %1122
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %147, ptr noundef nonnull align 8 dereferenceable(32) %115)
          to label %1124 unwind label %1130

1124:                                             ; preds = %1123
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %115) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %116) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %116) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %115) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %117) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %117) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1320, ptr noundef nonnull align 1 dereferenceable(1) %117)
          to label %1125 unwind label %1135

1125:                                             ; preds = %1124
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %117) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %117) #6
  br label %1405

1126:                                             ; preds = %1122
  %1127 = landingpad { ptr, i32 }
          cleanup
  %1128 = extractvalue { ptr, i32 } %1127, 0
  store ptr %1128, ptr %10, align 8
  %1129 = extractvalue { ptr, i32 } %1127, 1
  store i32 %1129, ptr %11, align 4
  br label %1134

1130:                                             ; preds = %1123
  %1131 = landingpad { ptr, i32 }
          cleanup
  %1132 = extractvalue { ptr, i32 } %1131, 0
  store ptr %1132, ptr %10, align 8
  %1133 = extractvalue { ptr, i32 } %1131, 1
  store i32 %1133, ptr %11, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %115) #6
  br label %1134

1134:                                             ; preds = %1130, %1126
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %116) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %116) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %115) #6
  br label %1406

1135:                                             ; preds = %1124
  %1136 = landingpad { ptr, i32 }
          cleanup
  %1137 = extractvalue { ptr, i32 } %1136, 0
  store ptr %1137, ptr %10, align 8
  %1138 = extractvalue { ptr, i32 } %1136, 1
  store i32 %1138, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %117) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %117) #6
  br label %1406

1139:                                             ; preds = %1118
  call void @llvm.lifetime.start.p0(i64 32, ptr %118) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %119) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %119) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %118, ptr noundef @.str.200, ptr noundef nonnull align 1 dereferenceable(1) %119)
          to label %1140 unwind label %1143

1140:                                             ; preds = %1139
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %147, ptr noundef nonnull align 8 dereferenceable(32) %118)
          to label %1141 unwind label %1147

1141:                                             ; preds = %1140
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %118) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %119) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %119) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %118) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %120) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %120) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1321, ptr noundef nonnull align 1 dereferenceable(1) %120)
          to label %1142 unwind label %1152

1142:                                             ; preds = %1141
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %120) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %120) #6
  br label %1405

1143:                                             ; preds = %1139
  %1144 = landingpad { ptr, i32 }
          cleanup
  %1145 = extractvalue { ptr, i32 } %1144, 0
  store ptr %1145, ptr %10, align 8
  %1146 = extractvalue { ptr, i32 } %1144, 1
  store i32 %1146, ptr %11, align 4
  br label %1151

1147:                                             ; preds = %1140
  %1148 = landingpad { ptr, i32 }
          cleanup
  %1149 = extractvalue { ptr, i32 } %1148, 0
  store ptr %1149, ptr %10, align 8
  %1150 = extractvalue { ptr, i32 } %1148, 1
  store i32 %1150, ptr %11, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %118) #6
  br label %1151

1151:                                             ; preds = %1147, %1143
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %119) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %119) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %118) #6
  br label %1406

1152:                                             ; preds = %1141
  %1153 = landingpad { ptr, i32 }
          cleanup
  %1154 = extractvalue { ptr, i32 } %1153, 0
  store ptr %1154, ptr %10, align 8
  %1155 = extractvalue { ptr, i32 } %1153, 1
  store i32 %1155, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %120) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %120) #6
  br label %1406

1156:                                             ; preds = %4
  %1157 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 9
  %1158 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %1157, i32 0, i32 1
  %1159 = load i8, ptr %1158, align 4, !tbaa !13, !range !123, !noundef !124
  %1160 = trunc i8 %1159 to i1
  br i1 %1160, label %1161, label %1173

1161:                                             ; preds = %1156
  %1162 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 9
  %1163 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %1162, i32 0, i32 0
  %1164 = load i32, ptr %1163, align 4, !tbaa !134
  %1165 = icmp ult i32 %1164, 320
  br i1 %1165, label %1166, label %1173

1166:                                             ; preds = %1161
  %1167 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1167, ptr noundef @.str.1322)
          to label %1168 unwind label %1169

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

1169:                                             ; preds = %1166
  %1170 = landingpad { ptr, i32 }
          cleanup
  %1171 = extractvalue { ptr, i32 } %1170, 0
  store ptr %1171, ptr %10, align 8
  %1172 = extractvalue { ptr, i32 } %1170, 1
  store i32 %1172, ptr %11, align 4
  call void @__cxa_free_exception(ptr %1167) #6
  br label %1406

1173:                                             ; preds = %1161, %1156
  %1174 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 9
  %1175 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %1174, i32 0, i32 1
  %1176 = load i8, ptr %1175, align 4, !tbaa !13, !range !123, !noundef !124
  %1177 = trunc i8 %1176 to i1
  br i1 %1177, label %1190, label %1178

1178:                                             ; preds = %1173
  %1179 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 9
  %1180 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %1179, i32 0, i32 0
  %1181 = load i32, ptr %1180, align 4, !tbaa !134
  %1182 = icmp ult i32 %1181, 450
  br i1 %1182, label %1183, label %1190

1183:                                             ; preds = %1178
  %1184 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1184, ptr noundef @.str.1323)
          to label %1185 unwind label %1186

1185:                                             ; preds = %1183
  call void @__cxa_throw(ptr %1184, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1186:                                             ; preds = %1183
  %1187 = landingpad { ptr, i32 }
          cleanup
  %1188 = extractvalue { ptr, i32 } %1187, 0
  store ptr %1188, ptr %10, align 8
  %1189 = extractvalue { ptr, i32 } %1187, 1
  store i32 %1189, ptr %11, align 4
  call void @__cxa_free_exception(ptr %1184) #6
  br label %1406

1190:                                             ; preds = %1178, %1173
  br label %1191

1191:                                             ; preds = %1190
  %1192 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 37
  %1193 = load i8, ptr %1192, align 1, !tbaa !137, !range !123, !noundef !124
  %1194 = trunc i8 %1193 to i1
  br i1 %1194, label %1195, label %1212

1195:                                             ; preds = %1191
  call void @llvm.lifetime.start.p0(i64 32, ptr %121) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %122) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %122) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %121, ptr noundef @.str.198, ptr noundef nonnull align 1 dereferenceable(1) %122)
          to label %1196 unwind label %1199

1196:                                             ; preds = %1195
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %147, ptr noundef nonnull align 8 dereferenceable(32) %121)
          to label %1197 unwind label %1203

1197:                                             ; preds = %1196
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %121) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %122) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %122) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %121) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %123) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %123) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1324, ptr noundef nonnull align 1 dereferenceable(1) %123)
          to label %1198 unwind label %1208

1198:                                             ; preds = %1197
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %123) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %123) #6
  br label %1405

1199:                                             ; preds = %1195
  %1200 = landingpad { ptr, i32 }
          cleanup
  %1201 = extractvalue { ptr, i32 } %1200, 0
  store ptr %1201, ptr %10, align 8
  %1202 = extractvalue { ptr, i32 } %1200, 1
  store i32 %1202, ptr %11, align 4
  br label %1207

1203:                                             ; preds = %1196
  %1204 = landingpad { ptr, i32 }
          cleanup
  %1205 = extractvalue { ptr, i32 } %1204, 0
  store ptr %1205, ptr %10, align 8
  %1206 = extractvalue { ptr, i32 } %1204, 1
  store i32 %1206, ptr %11, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %121) #6
  br label %1207

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

1208:                                             ; preds = %1197
  %1209 = landingpad { ptr, i32 }
          cleanup
  %1210 = extractvalue { ptr, i32 } %1209, 0
  store ptr %1210, ptr %10, align 8
  %1211 = extractvalue { ptr, i32 } %1209, 1
  store i32 %1211, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %123) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %123) #6
  br label %1406

1212:                                             ; preds = %1191
  call void @llvm.lifetime.start.p0(i64 32, ptr %124) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %125) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %125) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %124, ptr noundef @.str.200, ptr noundef nonnull align 1 dereferenceable(1) %125)
          to label %1213 unwind label %1216

1213:                                             ; preds = %1212
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %147, ptr noundef nonnull align 8 dereferenceable(32) %124)
          to label %1214 unwind label %1220

1214:                                             ; preds = %1213
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %124) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %125) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %125) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %124) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %126) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %126) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1325, ptr noundef nonnull align 1 dereferenceable(1) %126)
          to label %1215 unwind label %1225

1215:                                             ; preds = %1214
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %126) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %126) #6
  br label %1405

1216:                                             ; preds = %1212
  %1217 = landingpad { ptr, i32 }
          cleanup
  %1218 = extractvalue { ptr, i32 } %1217, 0
  store ptr %1218, ptr %10, align 8
  %1219 = extractvalue { ptr, i32 } %1217, 1
  store i32 %1219, ptr %11, align 4
  br label %1224

1220:                                             ; preds = %1213
  %1221 = landingpad { ptr, i32 }
          cleanup
  %1222 = extractvalue { ptr, i32 } %1221, 0
  store ptr %1222, ptr %10, align 8
  %1223 = extractvalue { ptr, i32 } %1221, 1
  store i32 %1223, ptr %11, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %124) #6
  br label %1224

1224:                                             ; preds = %1220, %1216
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %125) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %125) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %124) #6
  br label %1406

1225:                                             ; preds = %1214
  %1226 = landingpad { ptr, i32 }
          cleanup
  %1227 = extractvalue { ptr, i32 } %1226, 0
  store ptr %1227, ptr %10, align 8
  %1228 = extractvalue { ptr, i32 } %1226, 1
  store i32 %1228, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %126) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %126) #6
  br label %1406

1229:                                             ; preds = %4
  %1230 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 9
  %1231 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %1230, i32 0, i32 1
  %1232 = load i8, ptr %1231, align 4, !tbaa !13, !range !123, !noundef !124
  %1233 = trunc i8 %1232 to i1
  br i1 %1233, label %1251, label %1234

1234:                                             ; preds = %1229
  call void @llvm.lifetime.start.p0(i64 32, ptr %127) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %128) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %128) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %127, ptr noundef @.str.1326, ptr noundef nonnull align 1 dereferenceable(1) %128)
          to label %1235 unwind label %1238

1235:                                             ; preds = %1234
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %147, ptr noundef nonnull align 8 dereferenceable(32) %127)
          to label %1236 unwind label %1242

1236:                                             ; preds = %1235
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %127) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %128) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %128) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %127) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %129) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %129) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1327, ptr noundef nonnull align 1 dereferenceable(1) %129)
          to label %1237 unwind label %1247

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

1238:                                             ; preds = %1234
  %1239 = landingpad { ptr, i32 }
          cleanup
  %1240 = extractvalue { ptr, i32 } %1239, 0
  store ptr %1240, ptr %10, align 8
  %1241 = extractvalue { ptr, i32 } %1239, 1
  store i32 %1241, ptr %11, align 4
  br label %1246

1242:                                             ; preds = %1235
  %1243 = landingpad { ptr, i32 }
          cleanup
  %1244 = extractvalue { ptr, i32 } %1243, 0
  store ptr %1244, ptr %10, align 8
  %1245 = extractvalue { ptr, i32 } %1243, 1
  store i32 %1245, ptr %11, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %127) #6
  br label %1246

1246:                                             ; preds = %1242, %1238
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %128) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %128) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %127) #6
  br label %1406

1247:                                             ; preds = %1236
  %1248 = landingpad { ptr, i32 }
          cleanup
  %1249 = extractvalue { ptr, i32 } %1248, 0
  store ptr %1249, ptr %10, align 8
  %1250 = extractvalue { ptr, i32 } %1248, 1
  store i32 %1250, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %129) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %129) #6
  br label %1406

1251:                                             ; preds = %1229
  %1252 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1252, ptr noundef @.str.1328)
          to label %1253 unwind label %1254

1253:                                             ; preds = %1251
  call void @__cxa_throw(ptr %1252, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1254:                                             ; preds = %1251
  %1255 = landingpad { ptr, i32 }
          cleanup
  %1256 = extractvalue { ptr, i32 } %1255, 0
  store ptr %1256, ptr %10, align 8
  %1257 = extractvalue { ptr, i32 } %1255, 1
  store i32 %1257, ptr %11, align 4
  call void @__cxa_free_exception(ptr %1252) #6
  br label %1406

1258:                                             ; preds = %4
  %1259 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 9
  %1260 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %1259, i32 0, i32 4
  %1261 = load i8, ptr %1260, align 4, !tbaa !125, !range !123, !noundef !124
  %1262 = trunc i8 %1261 to i1
  br i1 %1262, label %1270, label %1263

1263:                                             ; preds = %1258
  %1264 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1264, ptr noundef @.str.1329)
          to label %1265 unwind label %1266

1265:                                             ; preds = %1263
  call void @__cxa_throw(ptr %1264, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1266:                                             ; preds = %1263
  %1267 = landingpad { ptr, i32 }
          cleanup
  %1268 = extractvalue { ptr, i32 } %1267, 0
  store ptr %1268, ptr %10, align 8
  %1269 = extractvalue { ptr, i32 } %1267, 1
  store i32 %1269, ptr %11, align 4
  call void @__cxa_free_exception(ptr %1264) #6
  br label %1406

1270:                                             ; preds = %1258
  call void @llvm.lifetime.start.p0(i64 32, ptr %130) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %131) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %131) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %130, ptr noundef @.str.1330, ptr noundef nonnull align 1 dereferenceable(1) %131)
          to label %1271 unwind label %1274

1271:                                             ; preds = %1270
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %147, ptr noundef nonnull align 8 dereferenceable(32) %130)
          to label %1272 unwind label %1278

1272:                                             ; preds = %1271
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %130) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %131) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %131) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %130) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %132) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %132) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1331, ptr noundef nonnull align 1 dereferenceable(1) %132)
          to label %1273 unwind label %1283

1273:                                             ; preds = %1272
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %132) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %132) #6
  br label %1405

1274:                                             ; preds = %1270
  %1275 = landingpad { ptr, i32 }
          cleanup
  %1276 = extractvalue { ptr, i32 } %1275, 0
  store ptr %1276, ptr %10, align 8
  %1277 = extractvalue { ptr, i32 } %1275, 1
  store i32 %1277, ptr %11, align 4
  br label %1282

1278:                                             ; preds = %1271
  %1279 = landingpad { ptr, i32 }
          cleanup
  %1280 = extractvalue { ptr, i32 } %1279, 0
  store ptr %1280, ptr %10, align 8
  %1281 = extractvalue { ptr, i32 } %1279, 1
  store i32 %1281, ptr %11, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %130) #6
  br label %1282

1282:                                             ; preds = %1278, %1274
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %131) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %131) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %130) #6
  br label %1406

1283:                                             ; preds = %1272
  %1284 = landingpad { ptr, i32 }
          cleanup
  %1285 = extractvalue { ptr, i32 } %1284, 0
  store ptr %1285, ptr %10, align 8
  %1286 = extractvalue { ptr, i32 } %1284, 1
  store i32 %1286, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %132) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %132) #6
  br label %1406

1287:                                             ; preds = %4
  %1288 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 9
  %1289 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %1288, i32 0, i32 4
  %1290 = load i8, ptr %1289, align 4, !tbaa !125, !range !123, !noundef !124
  %1291 = trunc i8 %1290 to i1
  br i1 %1291, label %1299, label %1292

1292:                                             ; preds = %1287
  %1293 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1293, ptr noundef @.str.1332)
          to label %1294 unwind label %1295

1294:                                             ; preds = %1292
  call void @__cxa_throw(ptr %1293, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1295:                                             ; preds = %1292
  %1296 = landingpad { ptr, i32 }
          cleanup
  %1297 = extractvalue { ptr, i32 } %1296, 0
  store ptr %1297, ptr %10, align 8
  %1298 = extractvalue { ptr, i32 } %1296, 1
  store i32 %1298, ptr %11, align 4
  call void @__cxa_free_exception(ptr %1293) #6
  br label %1406

1299:                                             ; preds = %1287
  call void @llvm.lifetime.start.p0(i64 32, ptr %133) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %134) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %134) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %133, ptr noundef @.str.1330, ptr noundef nonnull align 1 dereferenceable(1) %134)
          to label %1300 unwind label %1303

1300:                                             ; preds = %1299
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %147, ptr noundef nonnull align 8 dereferenceable(32) %133)
          to label %1301 unwind label %1307

1301:                                             ; preds = %1300
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %133) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %134) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %134) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %133) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %135) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %135) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1333, ptr noundef nonnull align 1 dereferenceable(1) %135)
          to label %1302 unwind label %1312

1302:                                             ; preds = %1301
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %135) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %135) #6
  br label %1405

1303:                                             ; preds = %1299
  %1304 = landingpad { ptr, i32 }
          cleanup
  %1305 = extractvalue { ptr, i32 } %1304, 0
  store ptr %1305, ptr %10, align 8
  %1306 = extractvalue { ptr, i32 } %1304, 1
  store i32 %1306, ptr %11, align 4
  br label %1311

1307:                                             ; preds = %1300
  %1308 = landingpad { ptr, i32 }
          cleanup
  %1309 = extractvalue { ptr, i32 } %1308, 0
  store ptr %1309, ptr %10, align 8
  %1310 = extractvalue { ptr, i32 } %1308, 1
  store i32 %1310, ptr %11, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %133) #6
  br label %1311

1311:                                             ; preds = %1307, %1303
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %134) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %134) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %133) #6
  br label %1406

1312:                                             ; preds = %1301
  %1313 = landingpad { ptr, i32 }
          cleanup
  %1314 = extractvalue { ptr, i32 } %1313, 0
  store ptr %1314, ptr %10, align 8
  %1315 = extractvalue { ptr, i32 } %1313, 1
  store i32 %1315, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %135) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %135) #6
  br label %1406

1316:                                             ; preds = %4
  %1317 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 9
  %1318 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %1317, i32 0, i32 4
  %1319 = load i8, ptr %1318, align 4, !tbaa !125, !range !123, !noundef !124
  %1320 = trunc i8 %1319 to i1
  br i1 %1320, label %1328, label %1321

1321:                                             ; preds = %1316
  %1322 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1322, ptr noundef @.str.1334)
          to label %1323 unwind label %1324

1323:                                             ; preds = %1321
  call void @__cxa_throw(ptr %1322, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1324:                                             ; preds = %1321
  %1325 = landingpad { ptr, i32 }
          cleanup
  %1326 = extractvalue { ptr, i32 } %1325, 0
  store ptr %1326, ptr %10, align 8
  %1327 = extractvalue { ptr, i32 } %1325, 1
  store i32 %1327, ptr %11, align 4
  call void @__cxa_free_exception(ptr %1322) #6
  br label %1406

1328:                                             ; preds = %1316
  call void @llvm.lifetime.start.p0(i64 32, ptr %136) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %137) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %137) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %136, ptr noundef @.str.1335, ptr noundef nonnull align 1 dereferenceable(1) %137)
          to label %1329 unwind label %1332

1329:                                             ; preds = %1328
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %147, ptr noundef nonnull align 8 dereferenceable(32) %136)
          to label %1330 unwind label %1336

1330:                                             ; preds = %1329
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %136) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %137) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %137) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %136) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %138) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %138) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1336, ptr noundef nonnull align 1 dereferenceable(1) %138)
          to label %1331 unwind label %1341

1331:                                             ; preds = %1330
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %138) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %138) #6
  br label %1405

1332:                                             ; preds = %1328
  %1333 = landingpad { ptr, i32 }
          cleanup
  %1334 = extractvalue { ptr, i32 } %1333, 0
  store ptr %1334, ptr %10, align 8
  %1335 = extractvalue { ptr, i32 } %1333, 1
  store i32 %1335, ptr %11, align 4
  br label %1340

1336:                                             ; preds = %1329
  %1337 = landingpad { ptr, i32 }
          cleanup
  %1338 = extractvalue { ptr, i32 } %1337, 0
  store ptr %1338, ptr %10, align 8
  %1339 = extractvalue { ptr, i32 } %1337, 1
  store i32 %1339, ptr %11, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %136) #6
  br label %1340

1340:                                             ; preds = %1336, %1332
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %137) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %137) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %136) #6
  br label %1406

1341:                                             ; preds = %1330
  %1342 = landingpad { ptr, i32 }
          cleanup
  %1343 = extractvalue { ptr, i32 } %1342, 0
  store ptr %1343, ptr %10, align 8
  %1344 = extractvalue { ptr, i32 } %1342, 1
  store i32 %1344, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %138) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %138) #6
  br label %1406

1345:                                             ; preds = %4
  %1346 = getelementptr inbounds %"class.spirv_cross::CompilerGLSL", ptr %147, i32 0, i32 9
  %1347 = getelementptr inbounds %"struct.spirv_cross::CompilerGLSL::Options", ptr %1346, i32 0, i32 1
  %1348 = load i8, ptr %1347, align 4, !tbaa !13, !range !123, !noundef !124
  %1349 = trunc i8 %1348 to i1
  br i1 %1349, label %1362, label %1350

1350:                                             ; preds = %1345
  call void @llvm.lifetime.start.p0(i64 32, ptr %139) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %140) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %140) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %139, ptr noundef @.str.1337, ptr noundef nonnull align 1 dereferenceable(1) %140)
          to label %1351 unwind label %1353

1351:                                             ; preds = %1350
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %147, ptr noundef nonnull align 8 dereferenceable(32) %139)
          to label %1352 unwind label %1357

1352:                                             ; preds = %1351
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %139) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %140) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %140) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %139) #6
  br label %1369

1353:                                             ; preds = %1350
  %1354 = landingpad { ptr, i32 }
          cleanup
  %1355 = extractvalue { ptr, i32 } %1354, 0
  store ptr %1355, ptr %10, align 8
  %1356 = extractvalue { ptr, i32 } %1354, 1
  store i32 %1356, ptr %11, align 4
  br label %1361

1357:                                             ; preds = %1351
  %1358 = landingpad { ptr, i32 }
          cleanup
  %1359 = extractvalue { ptr, i32 } %1358, 0
  store ptr %1359, ptr %10, align 8
  %1360 = extractvalue { ptr, i32 } %1358, 1
  store i32 %1360, ptr %11, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %139) #6
  br label %1361

1361:                                             ; preds = %1357, %1353
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %140) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %140) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %139) #6
  br label %1406

1362:                                             ; preds = %1345
  %1363 = call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1363, ptr noundef @.str.1338)
          to label %1364 unwind label %1365

1364:                                             ; preds = %1362
  call void @__cxa_throw(ptr %1363, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #7
  unreachable

1365:                                             ; preds = %1362
  %1366 = landingpad { ptr, i32 }
          cleanup
  %1367 = extractvalue { ptr, i32 } %1366, 0
  store ptr %1367, ptr %10, align 8
  %1368 = extractvalue { ptr, i32 } %1366, 1
  store i32 %1368, ptr %11, align 4
  call void @__cxa_free_exception(ptr %1363) #6
  br label %1406

1369:                                             ; preds = %1352
  call void @llvm.lifetime.start.p0(i64 1, ptr %141) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %141) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1339, ptr noundef nonnull align 1 dereferenceable(1) %141)
          to label %1370 unwind label %1371

1370:                                             ; preds = %1369
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %141) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %141) #6
  br label %1405

1371:                                             ; preds = %1369
  %1372 = landingpad { ptr, i32 }
          cleanup
  %1373 = extractvalue { ptr, i32 } %1372, 0
  store ptr %1373, ptr %10, align 8
  %1374 = extractvalue { ptr, i32 } %1372, 1
  store i32 %1374, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %141) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %141) #6
  br label %1406

1375:                                             ; preds = %4
  call void @llvm.lifetime.start.p0(i64 1, ptr %142) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %142) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1340, ptr noundef nonnull align 1 dereferenceable(1) %142)
          to label %1376 unwind label %1377

1376:                                             ; preds = %1375
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %142) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %142) #6
  br label %1405

1377:                                             ; preds = %1375
  %1378 = landingpad { ptr, i32 }
          cleanup
  %1379 = extractvalue { ptr, i32 } %1378, 0
  store ptr %1379, ptr %10, align 8
  %1380 = extractvalue { ptr, i32 } %1378, 1
  store i32 %1380, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %142) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %142) #6
  br label %1406

1381:                                             ; preds = %4
  call void @llvm.lifetime.start.p0(i64 1, ptr %143) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %143) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1341, ptr noundef nonnull align 1 dereferenceable(1) %143)
          to label %1382 unwind label %1383

1382:                                             ; preds = %1381
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %143) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %143) #6
  br label %1405

1383:                                             ; preds = %1381
  %1384 = landingpad { ptr, i32 }
          cleanup
  %1385 = extractvalue { ptr, i32 } %1384, 0
  store ptr %1385, ptr %10, align 8
  %1386 = extractvalue { ptr, i32 } %1384, 1
  store i32 %1386, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %143) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %143) #6
  br label %1406

1387:                                             ; preds = %4
  call void @llvm.lifetime.start.p0(i64 1, ptr %144) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %144) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1342, ptr noundef nonnull align 1 dereferenceable(1) %144)
          to label %1388 unwind label %1389

1388:                                             ; preds = %1387
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %144) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %144) #6
  br label %1405

1389:                                             ; preds = %1387
  %1390 = landingpad { ptr, i32 }
          cleanup
  %1391 = extractvalue { ptr, i32 } %1390, 0
  store ptr %1391, ptr %10, align 8
  %1392 = extractvalue { ptr, i32 } %1390, 1
  store i32 %1392, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %144) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %144) #6
  br label %1406

1393:                                             ; preds = %4
  call void @llvm.lifetime.start.p0(i64 1, ptr %145) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %145) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.1343, ptr noundef nonnull align 1 dereferenceable(1) %145)
          to label %1394 unwind label %1395

1394:                                             ; preds = %1393
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %145) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %145) #6
  br label %1405

1395:                                             ; preds = %1393
  %1396 = landingpad { ptr, i32 }
          cleanup
  %1397 = extractvalue { ptr, i32 } %1396, 0
  store ptr %1397, ptr %10, align 8
  %1398 = extractvalue { ptr, i32 } %1396, 1
  store i32 %1398, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %145) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %145) #6
  br label %1406

1399:                                             ; preds = %4
  call void @llvm.lifetime.start.p0(i64 32, ptr %146) #6
  call void @_ZN11spirv_cross17convert_to_stringIN3spv7BuiltInETnNSt9enable_ifIXntsr3std17is_floating_pointIT_EE5valueEiE4typeELi0EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS4_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %146, ptr noundef nonnull align 4 dereferenceable(4) %7)
  invoke void @_ZN11spirv_cross4joinIJRA12_KcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEES9_DpOT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 1 dereferenceable(12) @.str.1344, ptr noundef nonnull align 8 dereferenceable(32) %146)
          to label %1400 unwind label %1401

1400:                                             ; preds = %1399
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %146) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %146) #6
  br label %1405

1401:                                             ; preds = %1399
  %1402 = landingpad { ptr, i32 }
          cleanup
  %1403 = extractvalue { ptr, i32 } %1402, 0
  store ptr %1403, ptr %10, align 8
  %1404 = extractvalue { ptr, i32 } %1402, 1
  store i32 %1404, ptr %11, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %146) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %146) #6
  br label %1406

1405:                                             ; preds = %1400, %1394, %1388, %1382, %1376, %1370, %1331, %1302, %1273, %1237, %1215, %1198, %1142, %1125, %1078, %1067, %1056, %1050, %1039, %1028, %1017, %1006, %995, %984, %973, %962, %951, %940, %929, %923, %917, %911, %905, %899, %893, %887, %881, %875, %869, %858, %797, %791, %727, %657, %649, %634, %595, %587, %572, %533, %525, %510, %480, %474, %468, %462, %456, %450, %444, %438, %432, %426, %420, %414, %408, %402, %396, %390, %384, %378, %372, %366, %352, %346, %295, %284, %278, %267, %220, %202, %179, %156, %150
  ret void

1406:                                             ; preds = %1401, %1395, %1389, %1383, %1377, %1371, %1365, %1361, %1341, %1340, %1324, %1312, %1311, %1295, %1283, %1282, %1266, %1254, %1247, %1246, %1225, %1224, %1208, %1207, %1186, %1169, %1152, %1151, %1135, %1134, %1113, %1096, %1079, %1068, %1057, %1051, %1040, %1029, %1018, %1007, %996, %985, %974, %963, %952, %941, %930, %924, %918, %912, %906, %900, %894, %888, %882, %876, %870, %859, %854, %832, %807, %798, %792, %784, %762, %737, %728, %723, %701, %676, %667, %666, %650, %644, %643, %617, %605, %604, %588, %582, %581, %555, %543, %542, %526, %520, %519, %493, %481, %475, %469, %463, %457, %451, %445, %439, %433, %427, %421, %415, %409, %403, %397, %391, %385, %379, %373, %367, %353, %347, %344, %321, %296, %285, %279, %268, %265, %239, %221, %215, %203, %200, %180, %177, %157, %151
  %1407 = load ptr, ptr %10, align 8
  %1408 = load i32, ptr %11, align 4
  %1409 = insertvalue { ptr, i32 } poison, ptr %1407, 0
  %1410 = insertvalue { ptr, i32 } %1409, i32 %1408, 1
  resume { ptr, i32 } %1410
}

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN11spirv_cross17convert_to_stringIN3spv7BuiltInETnNSt9enable_ifIXntsr3std17is_floating_pointIT_EE5valueEiE4typeELi0EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS4_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 4 dereferenceable(4)) #5

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

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

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


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

%"class.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.105 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.198 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.200 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.1229 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.1230 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.1231 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.1232 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.1233 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.1234 = external hidden unnamed_addr constant [88 x i8], align 1
@.str.1235 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.1236 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.1237 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.1238 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.1239 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.1240 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.1241 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.1242 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.1243 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.1244 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.1245 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.1246 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.1247 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.1248 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.1249 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.1250 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1251 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.1252 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.1253 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.1254 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.1255 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.1256 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.1257 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.1258 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.1259 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.1260 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.1261 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.1262 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.1263 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.1264 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.1265 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.1266 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.1267 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1268 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.1269 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.1270 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.1271 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.1272 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.1273 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.1274 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.1275 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.1276 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.1277 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.1278 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.1279 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.1280 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.1281 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.1282 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.1283 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.1284 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.1285 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.1286 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.1287 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.1288 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.1289 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.1290 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.1291 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.1292 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.1293 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.1294 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.1295 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.1296 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.1297 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.1298 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.1299 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.1300 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.1301 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.1302 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.1303 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.1304 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.1305 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.1306 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.1307 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.1308 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.1309 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.1310 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1311 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.1312 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1313 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.1314 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.1315 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.1316 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.1317 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.1318 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.1319 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.1320 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.1321 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.1322 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.1323 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.1324 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.1325 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.1326 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.1327 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.1328 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.1329 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.1330 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.1331 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.1332 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.1333 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.1334 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.1335 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.1336 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.1337 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.1338 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.1339 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.1340 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.1341 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.1342 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.1343 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.1344 = external hidden unnamed_addr constant [12 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

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

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

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

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

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

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

; Function Attrs: 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: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK11spirv_cross12CompilerGLSL9is_legacyEv(ptr noundef nonnull align 8 dereferenceable(9848)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11spirv_cross12CompilerGLSL15builtin_to_glslB5cxx11EN3spv7BuiltInENS1_12StorageClassE(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(9848) %1, i32 noundef %2, i32 noundef %3) unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca i32, align 4
  %6 = alloca %"class.std::allocator.71", align 1
  %7 = alloca %"class.std::allocator.71", align 1
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca %"class.std::allocator.71", align 1
  %10 = alloca %"class.std::allocator.71", align 1
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::allocator.71", align 1
  %13 = alloca %"class.std::allocator.71", align 1
  %14 = alloca %"class.std::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::allocator.71", align 1
  %18 = alloca %"class.std::allocator.71", align 1
  %19 = alloca %"class.std::allocator.71", align 1
  %20 = alloca %"class.std::allocator.71", align 1
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca %"class.std::allocator.71", align 1
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.std::allocator.71", align 1
  %25 = alloca %"class.std::allocator.71", align 1
  %26 = alloca %"class.std::allocator.71", align 1
  %27 = alloca %"class.std::allocator.71", align 1
  %28 = alloca %"class.std::allocator.71", align 1
  %29 = alloca %"class.std::allocator.71", align 1
  %30 = alloca %"class.std::allocator.71", align 1
  %31 = alloca %"class.std::allocator.71", align 1
  %32 = alloca %"class.std::allocator.71", align 1
  %33 = alloca %"class.std::allocator.71", align 1
  %34 = alloca %"class.std::allocator.71", align 1
  %35 = alloca %"class.std::allocator.71", align 1
  %36 = alloca %"class.std::allocator.71", align 1
  %37 = alloca %"class.std::allocator.71", align 1
  %38 = alloca %"class.std::allocator.71", align 1
  %39 = alloca %"class.std::allocator.71", align 1
  %40 = alloca %"class.std::allocator.71", align 1
  %41 = alloca %"class.std::allocator.71", align 1
  %42 = alloca %"class.std::allocator.71", align 1
  %43 = alloca %"class.std::allocator.71", align 1
  %44 = alloca %"class.std::allocator.71", align 1
  %45 = alloca %"class.std::allocator.71", align 1
  %46 = alloca %"class.std::allocator.71", align 1
  %47 = alloca %"class.std::__cxx11::basic_string", align 8
  %48 = alloca %"class.std::allocator.71", align 1
  %49 = alloca %"class.std::allocator.71", align 1
  %50 = alloca %"class.std::allocator.71", align 1
  %51 = alloca %"class.std::__cxx11::basic_string", align 8
  %52 = alloca %"class.std::allocator.71", align 1
  %53 = alloca %"class.std::allocator.71", align 1
  %54 = alloca %"class.std::__cxx11::basic_string", align 8
  %55 = alloca %"class.std::allocator.71", align 1
  %56 = alloca %"class.std::allocator.71", align 1
  %57 = alloca %"class.std::allocator.71", align 1
  %58 = alloca %"class.std::__cxx11::basic_string", align 8
  %59 = alloca %"class.std::allocator.71", align 1
  %60 = alloca %"class.std::allocator.71", align 1
  %61 = alloca %"class.std::__cxx11::basic_string", align 8
  %62 = alloca %"class.std::allocator.71", align 1
  %63 = alloca %"class.std::allocator.71", align 1
  %64 = alloca %"class.std::allocator.71", align 1
  %65 = alloca %"class.std::__cxx11::basic_string", align 8
  %66 = alloca %"class.std::allocator.71", align 1
  %67 = alloca %"class.std::allocator.71", align 1
  %68 = alloca %"class.std::__cxx11::basic_string", align 8
  %69 = alloca %"class.std::allocator.71", align 1
  %70 = alloca %"class.std::__cxx11::basic_string", align 8
  %71 = alloca %"class.std::allocator.71", align 1
  %72 = alloca %"class.std::allocator.71", align 1
  %73 = alloca %"class.std::__cxx11::basic_string", align 8
  %74 = alloca %"class.std::allocator.71", align 1
  %75 = alloca %"class.std::__cxx11::basic_string", align 8
  %76 = alloca %"class.std::allocator.71", align 1
  %77 = alloca %"class.std::allocator.71", align 1
  %78 = alloca %"class.std::allocator.71", align 1
  %79 = alloca %"class.std::__cxx11::basic_string", align 8
  %80 = alloca %"class.std::allocator.71", align 1
  %81 = alloca %"class.std::__cxx11::basic_string", align 8
  %82 = alloca %"class.std::allocator.71", align 1
  %83 = alloca %"class.std::allocator.71", align 1
  %84 = alloca %"class.std::allocator.71", align 1
  %85 = alloca %"class.std::allocator.71", align 1
  %86 = alloca %"class.std::allocator.71", align 1
  %87 = alloca %"class.std::allocator.71", align 1
  %88 = alloca %"class.std::allocator.71", align 1
  %89 = alloca %"class.std::allocator.71", align 1
  %90 = alloca %"class.std::allocator.71", align 1
  %91 = alloca %"class.std::allocator.71", align 1
  %92 = alloca %"class.std::allocator.71", align 1
  %93 = alloca %"class.std::allocator.71", align 1
  %94 = alloca %"class.std::allocator.71", align 1
  %95 = alloca %"class.std::allocator.71", align 1
  %96 = alloca %"class.std::allocator.71", align 1
  %97 = alloca %"class.std::allocator.71", align 1
  %98 = alloca %"class.std::allocator.71", align 1
  %99 = alloca %"class.std::allocator.71", align 1
  %100 = alloca %"class.std::allocator.71", align 1
  %101 = alloca %"class.std::allocator.71", align 1
  %102 = alloca %"class.std::allocator.71", align 1
  %103 = alloca %"class.std::allocator.71", align 1
  %104 = alloca %"class.std::allocator.71", align 1
  %105 = alloca %"class.std::allocator.71", align 1
  %106 = alloca %"class.std::allocator.71", align 1
  %107 = alloca %"class.std::allocator.71", align 1
  %108 = alloca %"class.std::allocator.71", align 1
  %109 = alloca %"class.std::__cxx11::basic_string", align 8
  %110 = alloca %"class.std::allocator.71", align 1
  %111 = alloca %"class.std::allocator.71", align 1
  %112 = alloca %"class.std::__cxx11::basic_string", align 8
  %113 = alloca %"class.std::allocator.71", align 1
  %114 = alloca %"class.std::allocator.71", align 1
  %115 = alloca %"class.std::__cxx11::basic_string", align 8
  %116 = alloca %"class.std::allocator.71", align 1
  %117 = alloca %"class.std::allocator.71", align 1
  %118 = alloca %"class.std::__cxx11::basic_string", align 8
  %119 = alloca %"class.std::allocator.71", align 1
  %120 = alloca %"class.std::allocator.71", align 1
  %121 = alloca %"class.std::__cxx11::basic_string", align 8
  %122 = alloca %"class.std::allocator.71", align 1
  %123 = alloca %"class.std::allocator.71", align 1
  %124 = alloca %"class.std::__cxx11::basic_string", align 8
  %125 = alloca %"class.std::allocator.71", align 1
  %126 = alloca %"class.std::allocator.71", align 1
  %127 = alloca %"class.std::__cxx11::basic_string", align 8
  %128 = alloca %"class.std::allocator.71", align 1
  %129 = alloca %"class.std::allocator.71", align 1
  %130 = alloca %"class.std::__cxx11::basic_string", align 8
  %131 = alloca %"class.std::allocator.71", align 1
  %132 = alloca %"class.std::allocator.71", align 1
  %133 = alloca %"class.std::__cxx11::basic_string", align 8
  %134 = alloca %"class.std::allocator.71", align 1
  %135 = alloca %"class.std::allocator.71", align 1
  %136 = alloca %"class.std::allocator.71", align 1
  %137 = alloca %"class.std::allocator.71", align 1
  %138 = alloca %"class.std::allocator.71", align 1
  %139 = alloca %"class.std::allocator.71", align 1
  %140 = alloca %"class.std::__cxx11::basic_string", align 8
  store i32 %2, ptr %5, align 4, !tbaa !5
  switch i32 %2, label %976 [
    i32 0, label %141
    i32 1, label %145
    i32 3, label %149
    i32 4, label %165
    i32 5, label %181
    i32 6, label %194
    i32 42, label %226
    i32 43, label %238
    i32 7, label %284
    i32 8, label %299
    i32 9, label %303
    i32 10, label %307
    i32 11, label %311
    i32 12, label %315
    i32 13, label %319
    i32 14, label %323
    i32 15, label %327
    i32 16, label %331
    i32 17, label %335
    i32 22, label %339
    i32 24, label %343
    i32 25, label %347
    i32 26, label %351
    i32 27, label %355
    i32 28, label %359
    i32 29, label %363
    i32 23, label %367
    i32 4424, label %371
    i32 4425, label %414
    i32 4426, label %457
    i32 18, label %500
    i32 20, label %536
    i32 19, label %578
    i32 4440, label %614
    i32 38, label %626
    i32 40, label %630
    i32 36, label %634
    i32 41, label %638
    i32 4416, label %642
    i32 4417, label %646
    i32 4418, label %650
    i32 4419, label %654
    i32 4420, label %658
    i32 5319, label %662
    i32 5320, label %670
    i32 5321, label %678
    i32 5322, label %686
    i32 5323, label %694
    i32 5324, label %702
    i32 5325, label %710
    i32 5326, label %718
    i32 5327, label %726
    i32 5330, label %734
    i32 5331, label %742
    i32 5332, label %750
    i32 5333, label %754
    i32 5351, label %762
    i32 5286, label %770
    i32 5287, label %815
    i32 5014, label %860
    i32 4432, label %880
    i32 4444, label %900
    i32 4438, label %920
    i32 5264, label %940
    i32 5296, label %960
    i32 5295, label %964
    i32 5294, label %968
    i32 5299, label %972
  ]

141:                                              ; preds = %4
  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) %0, ptr noundef nonnull @.str.1229, ptr noundef nonnull align 1 dereferenceable(1) %6)
          to label %142 unwind label %143

142:                                              ; preds = %141
  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
  br label %980

143:                                              ; preds = %141
  %144 = landingpad { ptr, i32 }
          cleanup
  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
  br label %981

145:                                              ; preds = %4
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %7) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1230, ptr noundef nonnull align 1 dereferenceable(1) %7)
          to label %146 unwind label %147

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

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

149:                                              ; preds = %4
  %150 = getelementptr inbounds i8, ptr %1, i64 7640
  %151 = load i8, ptr %150, align 8, !tbaa !9, !range !120, !noundef !121
  %152 = trunc nuw i8 %151 to i1
  br i1 %152, label %153, label %161

153:                                              ; preds = %149
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %9) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull @.str.1231, ptr noundef nonnull align 1 dereferenceable(1) %9)
          to label %154 unwind label %156

154:                                              ; preds = %153
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %1, ptr noundef nonnull align 8 dereferenceable(32) %8)
          to label %155 unwind label %158

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

156:                                              ; preds = %153
  %157 = landingpad { ptr, i32 }
          cleanup
  br label %160

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

160:                                              ; preds = %158, %156
  %.pn85 = phi { ptr, i32 } [ %159, %158 ], [ %157, %156 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #6
  br label %981

161:                                              ; preds = %155, %149
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1232, ptr noundef nonnull align 1 dereferenceable(1) %10)
          to label %162 unwind label %163

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

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

165:                                              ; preds = %4
  %166 = getelementptr inbounds i8, ptr %1, i64 7640
  %167 = load i8, ptr %166, align 8, !tbaa !9, !range !120, !noundef !121
  %168 = trunc nuw i8 %167 to i1
  br i1 %168, label %169, label %177

169:                                              ; preds = %165
  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.1231, ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %170 unwind label %172

170:                                              ; preds = %169
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %1, ptr noundef nonnull align 8 dereferenceable(32) %11)
          to label %171 unwind label %174

171:                                              ; preds = %170
  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 %177

172:                                              ; preds = %169
  %173 = landingpad { ptr, i32 }
          cleanup
  br label %176

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

176:                                              ; preds = %174, %172
  %.pn83 = phi { ptr, i32 } [ %175, %174 ], [ %173, %172 ]
  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 %981

177:                                              ; preds = %171, %165
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %13) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1233, ptr noundef nonnull align 1 dereferenceable(1) %13)
          to label %178 unwind label %179

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

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

181:                                              ; preds = %4
  %182 = getelementptr inbounds i8, ptr %1, i64 7648
  %183 = load i8, ptr %182, align 8, !tbaa !122, !range !120, !noundef !121
  %184 = trunc nuw i8 %183 to i1
  br i1 %184, label %185, label %190

185:                                              ; preds = %181
  %186 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %186, ptr noundef nonnull @.str.1234)
          to label %187 unwind label %188

187:                                              ; preds = %185
  tail call void @__cxa_throw(ptr nonnull %186, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

188:                                              ; preds = %185
  %189 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %186) #6
  br label %981

190:                                              ; preds = %181
  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) %0, ptr noundef nonnull @.str.1235, ptr noundef nonnull align 1 dereferenceable(1) %14)
          to label %191 unwind label %192

191:                                              ; preds = %190
  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
  br label %980

192:                                              ; preds = %190
  %193 = landingpad { ptr, i32 }
          cleanup
  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
  br label %981

194:                                              ; preds = %4
  %195 = getelementptr inbounds i8, ptr %1, i64 7636
  %196 = getelementptr inbounds i8, ptr %1, i64 7648
  %197 = load i8, ptr %196, align 8, !tbaa !122, !range !120, !noundef !121
  %198 = trunc nuw i8 %197 to i1
  br i1 %198, label %199, label %208

199:                                              ; preds = %194
  %200 = tail call noundef nonnull align 8 dereferenceable(237) ptr @_ZN11spirv_cross8Compiler15get_entry_pointEv(ptr noundef nonnull align 8 dereferenceable(3176) %1)
  %201 = getelementptr inbounds i8, ptr %200, i64 232
  %202 = load i32, ptr %201, align 8, !tbaa !123
  %.off = add i32 %202, -5314
  %switch = icmp ult i32 %.off, 3
  br i1 %switch, label %208, label %203

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

205:                                              ; preds = %203
  tail 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
  tail call void @__cxa_free_exception(ptr %204) #6
  br label %981

208:                                              ; preds = %199, %194
  %209 = getelementptr inbounds i8, ptr %1, i64 7640
  %210 = load i8, ptr %209, align 8, !tbaa !9, !range !120, !noundef !121
  %211 = trunc nuw i8 %210 to i1
  %212 = load i32, ptr %195, align 4
  %213 = icmp ugt i32 %212, 139
  %or.cond.not = select i1 %211, i1 true, i1 %213
  br i1 %or.cond.not, label %222, label %214

214:                                              ; preds = %208
  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.1237, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %215 unwind label %217

215:                                              ; preds = %214
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %1, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %216 unwind label %219

216:                                              ; preds = %215
  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 %222

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

219:                                              ; preds = %215
  %220 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #6
  br label %221

221:                                              ; preds = %219, %217
  %.pn81 = phi { ptr, i32 } [ %220, %219 ], [ %218, %217 ]
  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 %981

222:                                              ; preds = %216, %208
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %17) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1238, ptr noundef nonnull align 1 dereferenceable(1) %17)
          to label %223 unwind label %224

223:                                              ; preds = %222
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %17) #6
  br label %980

224:                                              ; preds = %222
  %225 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %17) #6
  br label %981

226:                                              ; preds = %4
  %227 = getelementptr inbounds i8, ptr %1, i64 7648
  %228 = load i8, ptr %227, align 8, !tbaa !122, !range !120, !noundef !121
  %229 = trunc nuw i8 %228 to i1
  br i1 %229, label %230, label %234

230:                                              ; preds = %226
  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) %0, ptr noundef nonnull @.str.1239, ptr noundef nonnull align 1 dereferenceable(1) %18)
          to label %231 unwind label %232

231:                                              ; preds = %230
  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
  br label %980

232:                                              ; preds = %230
  %233 = landingpad { ptr, i32 }
          cleanup
  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
  br label %981

234:                                              ; preds = %226
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %19) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1235, ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %235 unwind label %236

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

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

238:                                              ; preds = %4
  %239 = getelementptr inbounds i8, ptr %1, i64 7648
  %240 = load i8, ptr %239, align 8, !tbaa !122, !range !120, !noundef !121
  %241 = trunc nuw i8 %240 to i1
  br i1 %241, label %242, label %246

242:                                              ; preds = %238
  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) %0, ptr noundef nonnull @.str.1240, ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %243 unwind label %244

243:                                              ; preds = %242
  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
  br label %980

244:                                              ; preds = %242
  %245 = landingpad { ptr, i32 }
          cleanup
  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
  br label %981

246:                                              ; preds = %238
  %247 = getelementptr inbounds i8, ptr %1, i64 7636
  %248 = getelementptr inbounds i8, ptr %1, i64 7640
  %249 = load i8, ptr %248, align 8, !tbaa !9, !range !120, !noundef !121
  %250 = trunc nuw i8 %249 to i1
  %251 = load i32, ptr %247, align 4
  %252 = icmp ugt i32 %251, 139
  %or.cond92.not = select i1 %250, i1 true, i1 %252
  br i1 %or.cond92.not, label %261, label %253

253:                                              ; preds = %246
  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.1237, ptr noundef nonnull align 1 dereferenceable(1) %22)
          to label %254 unwind label %256

254:                                              ; preds = %253
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %1, ptr noundef nonnull align 8 dereferenceable(32) %21)
          to label %255 unwind label %258

255:                                              ; preds = %254
  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 %261

256:                                              ; preds = %253
  %257 = landingpad { ptr, i32 }
          cleanup
  br label %260

258:                                              ; preds = %254
  %259 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #6
  br label %260

260:                                              ; preds = %258, %256
  %.pn77 = phi { ptr, i32 } [ %259, %258 ], [ %257, %256 ]
  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 %981

261:                                              ; preds = %255, %246
  %262 = getelementptr inbounds i8, ptr %1, i64 7666
  %263 = load i8, ptr %262, align 2, !tbaa !130, !range !120, !noundef !121
  %264 = trunc nuw i8 %263 to i1
  br i1 %264, label %265, label %280

265:                                              ; preds = %261
  %266 = load i8, ptr %239, align 8, !tbaa !122, !range !120, !noundef !121
  %267 = trunc nuw i8 %266 to i1
  br i1 %267, label %276, label %268

268:                                              ; preds = %265
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %23) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %24) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull @.str.105, ptr noundef nonnull align 1 dereferenceable(1) %24)
          to label %269 unwind label %271

269:                                              ; preds = %268
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %1, ptr noundef nonnull align 8 dereferenceable(32) %23)
          to label %270 unwind label %273

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

271:                                              ; preds = %268
  %272 = landingpad { ptr, i32 }
          cleanup
  br label %275

273:                                              ; preds = %269
  %274 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #6
  br label %275

275:                                              ; preds = %273, %271
  %.pn79 = phi { ptr, i32 } [ %274, %273 ], [ %272, %271 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %24) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #6
  br label %981

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

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

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

280:                                              ; preds = %261
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %26) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1238, ptr noundef nonnull align 1 dereferenceable(1) %26)
          to label %281 unwind label %282

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

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

284:                                              ; preds = %4
  %285 = icmp eq i32 %3, 1
  br i1 %285, label %286, label %295

286:                                              ; preds = %284
  %287 = tail call noundef nonnull align 8 dereferenceable(237) ptr @_ZN11spirv_cross8Compiler15get_entry_pointEv(ptr noundef nonnull align 8 dereferenceable(3176) %1)
  %288 = getelementptr inbounds i8, ptr %287, i64 232
  %289 = load i32, ptr %288, align 8, !tbaa !123
  %290 = icmp eq i32 %289, 3
  br i1 %290, label %291, label %295

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

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

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

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

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

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

299:                                              ; preds = %4
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %29) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1244, ptr noundef nonnull align 1 dereferenceable(1) %29)
          to label %300 unwind label %301

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

351:                                              ; preds = %4
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %42) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1257, ptr noundef nonnull align 1 dereferenceable(1) %42)
          to label %352 unwind label %353

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

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

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

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

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

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

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

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

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

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

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

367:                                              ; preds = %4
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %46) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1261, ptr noundef nonnull align 1 dereferenceable(1) %46)
          to label %368 unwind label %369

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

369:                                              ; preds = %367
  %370 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %46) #6
  br label %981

371:                                              ; preds = %4
  %372 = getelementptr inbounds i8, ptr %1, i64 7636
  %373 = getelementptr inbounds i8, ptr %1, i64 7640
  %374 = load i8, ptr %373, align 8, !tbaa !9, !range !120, !noundef !121
  %375 = trunc nuw i8 %374 to i1
  br i1 %375, label %376, label %381

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

378:                                              ; preds = %376
  tail call void @__cxa_throw(ptr nonnull %377, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

379:                                              ; preds = %376
  %380 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %377) #6
  br label %981

381:                                              ; preds = %371
  %382 = getelementptr inbounds i8, ptr %1, i64 7648
  %383 = load i8, ptr %382, align 8, !tbaa !122, !range !120, !noundef !121
  %384 = trunc nuw i8 %383 to i1
  br i1 %384, label %385, label %403

385:                                              ; preds = %381
  %386 = load i32, ptr %372, align 4, !tbaa !131
  %387 = icmp ult i32 %386, 460
  br i1 %387, label %388, label %399

388:                                              ; preds = %385
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %47) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %48) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef nonnull @.str.105, ptr noundef nonnull align 1 dereferenceable(1) %48)
          to label %389 unwind label %392

389:                                              ; preds = %388
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %1, ptr noundef nonnull align 8 dereferenceable(32) %47)
          to label %390 unwind label %394

390:                                              ; preds = %389
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %48) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %47) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %49) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1263, ptr noundef nonnull align 1 dereferenceable(1) %49)
          to label %391 unwind label %397

391:                                              ; preds = %390
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %49) #6
  br label %980

392:                                              ; preds = %388
  %393 = landingpad { ptr, i32 }
          cleanup
  br label %396

394:                                              ; preds = %389
  %395 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #6
  br label %396

396:                                              ; preds = %394, %392
  %.pn75 = phi { ptr, i32 } [ %395, %394 ], [ %393, %392 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %48) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %47) #6
  br label %981

397:                                              ; preds = %390
  %398 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %49) #6
  br label %981

399:                                              ; preds = %385
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %50) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1264, ptr noundef nonnull align 1 dereferenceable(1) %50)
          to label %400 unwind label %401

400:                                              ; preds = %399
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %50) #6
  br label %980

401:                                              ; preds = %399
  %402 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %50) #6
  br label %981

403:                                              ; preds = %381
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %51) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %52) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %51, ptr noundef nonnull @.str.105, ptr noundef nonnull align 1 dereferenceable(1) %52)
          to label %404 unwind label %407

404:                                              ; preds = %403
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %1, ptr noundef nonnull align 8 dereferenceable(32) %51)
          to label %405 unwind label %409

405:                                              ; preds = %404
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %52) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %51) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %53) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1265, ptr noundef nonnull align 1 dereferenceable(1) %53)
          to label %406 unwind label %412

406:                                              ; preds = %405
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %53) #6
  br label %980

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

409:                                              ; preds = %404
  %410 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #6
  br label %411

411:                                              ; preds = %409, %407
  %.pn73 = phi { ptr, i32 } [ %410, %409 ], [ %408, %407 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %52) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %51) #6
  br label %981

412:                                              ; preds = %405
  %413 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %53) #6
  br label %981

414:                                              ; preds = %4
  %415 = getelementptr inbounds i8, ptr %1, i64 7636
  %416 = getelementptr inbounds i8, ptr %1, i64 7640
  %417 = load i8, ptr %416, align 8, !tbaa !9, !range !120, !noundef !121
  %418 = trunc nuw i8 %417 to i1
  br i1 %418, label %419, label %424

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

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

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

424:                                              ; preds = %414
  %425 = getelementptr inbounds i8, ptr %1, i64 7648
  %426 = load i8, ptr %425, align 8, !tbaa !122, !range !120, !noundef !121
  %427 = trunc nuw i8 %426 to i1
  br i1 %427, label %428, label %446

428:                                              ; preds = %424
  %429 = load i32, ptr %415, align 4, !tbaa !131
  %430 = icmp ult i32 %429, 460
  br i1 %430, label %431, label %442

431:                                              ; preds = %428
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %54) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %55) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %54, ptr noundef nonnull @.str.105, ptr noundef nonnull align 1 dereferenceable(1) %55)
          to label %432 unwind label %435

432:                                              ; preds = %431
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %1, ptr noundef nonnull align 8 dereferenceable(32) %54)
          to label %433 unwind label %437

433:                                              ; preds = %432
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %55) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %54) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %56) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %56) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1267, ptr noundef nonnull align 1 dereferenceable(1) %56)
          to label %434 unwind label %440

434:                                              ; preds = %433
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %56) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %56) #6
  br label %980

435:                                              ; preds = %431
  %436 = landingpad { ptr, i32 }
          cleanup
  br label %439

437:                                              ; preds = %432
  %438 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #6
  br label %439

439:                                              ; preds = %437, %435
  %.pn71 = phi { ptr, i32 } [ %438, %437 ], [ %436, %435 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %55) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %54) #6
  br label %981

440:                                              ; preds = %433
  %441 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %56) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %56) #6
  br label %981

442:                                              ; preds = %428
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %57) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1268, ptr noundef nonnull align 1 dereferenceable(1) %57)
          to label %443 unwind label %444

443:                                              ; preds = %442
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %57) #6
  br label %980

444:                                              ; preds = %442
  %445 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %57) #6
  br label %981

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

447:                                              ; preds = %446
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %1, ptr noundef nonnull align 8 dereferenceable(32) %58)
          to label %448 unwind label %452

448:                                              ; preds = %447
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %59) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %58) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %60) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %60) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1269, ptr noundef nonnull align 1 dereferenceable(1) %60)
          to label %449 unwind label %455

449:                                              ; preds = %448
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %60) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %60) #6
  br label %980

450:                                              ; preds = %446
  %451 = landingpad { ptr, i32 }
          cleanup
  br label %454

452:                                              ; preds = %447
  %453 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #6
  br label %454

454:                                              ; preds = %452, %450
  %.pn69 = phi { ptr, i32 } [ %453, %452 ], [ %451, %450 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %59) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %58) #6
  br label %981

455:                                              ; preds = %448
  %456 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %60) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %60) #6
  br label %981

457:                                              ; preds = %4
  %458 = getelementptr inbounds i8, ptr %1, i64 7636
  %459 = getelementptr inbounds i8, ptr %1, i64 7640
  %460 = load i8, ptr %459, align 8, !tbaa !9, !range !120, !noundef !121
  %461 = trunc nuw i8 %460 to i1
  br i1 %461, label %462, label %467

462:                                              ; preds = %457
  %463 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %463, ptr noundef nonnull @.str.1270)
          to label %464 unwind label %465

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

465:                                              ; preds = %462
  %466 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %463) #6
  br label %981

467:                                              ; preds = %457
  %468 = getelementptr inbounds i8, ptr %1, i64 7648
  %469 = load i8, ptr %468, align 8, !tbaa !122, !range !120, !noundef !121
  %470 = trunc nuw i8 %469 to i1
  br i1 %470, label %471, label %489

471:                                              ; preds = %467
  %472 = load i32, ptr %458, align 4, !tbaa !131
  %473 = icmp ult i32 %472, 460
  br i1 %473, label %474, label %485

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

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

476:                                              ; preds = %475
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %62) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %61) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %63) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %63) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1271, ptr noundef nonnull align 1 dereferenceable(1) %63)
          to label %477 unwind label %483

477:                                              ; preds = %476
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %63) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %63) #6
  br label %980

478:                                              ; preds = %474
  %479 = landingpad { ptr, i32 }
          cleanup
  br label %482

480:                                              ; preds = %475
  %481 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #6
  br label %482

482:                                              ; preds = %480, %478
  %.pn67 = phi { ptr, i32 } [ %481, %480 ], [ %479, %478 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %62) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %61) #6
  br label %981

483:                                              ; preds = %476
  %484 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %63) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %63) #6
  br label %981

485:                                              ; preds = %471
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %64) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %64) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1272, ptr noundef nonnull align 1 dereferenceable(1) %64)
          to label %486 unwind label %487

486:                                              ; preds = %485
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %64) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %64) #6
  br label %980

487:                                              ; preds = %485
  %488 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %64) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %64) #6
  br label %981

489:                                              ; preds = %467
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %65) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %66) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %66) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %65, ptr noundef nonnull @.str.105, ptr noundef nonnull align 1 dereferenceable(1) %66)
          to label %490 unwind label %493

490:                                              ; preds = %489
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %1, ptr noundef nonnull align 8 dereferenceable(32) %65)
          to label %491 unwind label %495

491:                                              ; preds = %490
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %66) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %66) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %65) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %67) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %67) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1271, ptr noundef nonnull align 1 dereferenceable(1) %67)
          to label %492 unwind label %498

492:                                              ; preds = %491
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %67) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %67) #6
  br label %980

493:                                              ; preds = %489
  %494 = landingpad { ptr, i32 }
          cleanup
  br label %497

495:                                              ; preds = %490
  %496 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #6
  br label %497

497:                                              ; preds = %495, %493
  %.pn65 = phi { ptr, i32 } [ %496, %495 ], [ %494, %493 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %66) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %66) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %65) #6
  br label %981

498:                                              ; preds = %491
  %499 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %67) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %67) #6
  br label %981

500:                                              ; preds = %4
  %501 = tail call noundef zeroext i1 @_ZNK11spirv_cross12CompilerGLSL9is_legacyEv(ptr noundef nonnull align 8 dereferenceable(9848) %1)
  br i1 %501, label %502, label %507

502:                                              ; preds = %500
  %503 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %503, ptr noundef nonnull @.str.1273)
          to label %504 unwind label %505

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

505:                                              ; preds = %502
  %506 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %503) #6
  br label %981

507:                                              ; preds = %500
  %508 = getelementptr inbounds i8, ptr %1, i64 7636
  %509 = getelementptr inbounds i8, ptr %1, i64 7640
  %510 = load i8, ptr %509, align 8, !tbaa !9, !range !120, !noundef !121
  %511 = trunc nuw i8 %510 to i1
  %512 = load i32, ptr %508, align 4
  %513 = icmp ult i32 %512, 320
  %or.cond94 = select i1 %511, i1 %513, i1 false
  br i1 %or.cond94, label %514, label %522

514:                                              ; preds = %507
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %68) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %69) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %69) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %68, ptr noundef nonnull @.str.1274, ptr noundef nonnull align 1 dereferenceable(1) %69)
          to label %515 unwind label %517

515:                                              ; preds = %514
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %1, ptr noundef nonnull align 8 dereferenceable(32) %68)
          to label %516 unwind label %519

516:                                              ; preds = %515
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %69) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %69) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %68) #6
  br label %532

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

519:                                              ; preds = %515
  %520 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #6
  br label %521

521:                                              ; preds = %519, %517
  %.pn63 = phi { ptr, i32 } [ %520, %519 ], [ %518, %517 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %69) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %69) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %68) #6
  br label %981

522:                                              ; preds = %507
  %523 = icmp ugt i32 %512, 399
  %or.cond97.not = select i1 %511, i1 true, i1 %523
  br i1 %or.cond97.not, label %532, label %524

524:                                              ; preds = %522
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %70) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %71) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %70, ptr noundef nonnull @.str.1275, ptr noundef nonnull align 1 dereferenceable(1) %71)
          to label %525 unwind label %527

525:                                              ; preds = %524
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %1, ptr noundef nonnull align 8 dereferenceable(32) %70)
          to label %526 unwind label %529

526:                                              ; preds = %525
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %71) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %70) #6
  br label %532

527:                                              ; preds = %524
  %528 = landingpad { ptr, i32 }
          cleanup
  br label %531

529:                                              ; preds = %525
  %530 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #6
  br label %531

531:                                              ; preds = %529, %527
  %.pn61 = phi { ptr, i32 } [ %530, %529 ], [ %528, %527 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %71) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %70) #6
  br label %981

532:                                              ; preds = %516, %526, %522
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %72) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %72) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1276, ptr noundef nonnull align 1 dereferenceable(1) %72)
          to label %533 unwind label %534

533:                                              ; preds = %532
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %72) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %72) #6
  br label %980

534:                                              ; preds = %532
  %535 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %72) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %72) #6
  br label %981

536:                                              ; preds = %4
  %537 = tail call noundef zeroext i1 @_ZNK11spirv_cross12CompilerGLSL9is_legacyEv(ptr noundef nonnull align 8 dereferenceable(9848) %1)
  br i1 %537, label %538, label %543

538:                                              ; preds = %536
  %539 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %539, ptr noundef nonnull @.str.1273)
          to label %540 unwind label %541

540:                                              ; preds = %538
  tail call void @__cxa_throw(ptr nonnull %539, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

541:                                              ; preds = %538
  %542 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %539) #6
  br label %981

543:                                              ; preds = %536
  %544 = getelementptr inbounds i8, ptr %1, i64 7636
  %545 = getelementptr inbounds i8, ptr %1, i64 7640
  %546 = load i8, ptr %545, align 8, !tbaa !9, !range !120, !noundef !121
  %547 = trunc nuw i8 %546 to i1
  %548 = load i32, ptr %544, align 4
  %549 = icmp ult i32 %548, 320
  %or.cond99 = select i1 %547, i1 %549, i1 false
  br i1 %or.cond99, label %550, label %558

550:                                              ; preds = %543
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %73) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %74) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %74) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %73, ptr noundef nonnull @.str.1274, ptr noundef nonnull align 1 dereferenceable(1) %74)
          to label %551 unwind label %553

551:                                              ; preds = %550
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %1, ptr noundef nonnull align 8 dereferenceable(32) %73)
          to label %552 unwind label %555

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

553:                                              ; preds = %550
  %554 = landingpad { ptr, i32 }
          cleanup
  br label %557

555:                                              ; preds = %551
  %556 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %73) #6
  br label %557

557:                                              ; preds = %555, %553
  %.pn59 = phi { ptr, i32 } [ %556, %555 ], [ %554, %553 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %74) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %74) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %73) #6
  br label %981

558:                                              ; preds = %543
  %559 = icmp ugt i32 %548, 399
  %or.cond102.not = select i1 %547, i1 true, i1 %559
  br i1 %or.cond102.not, label %568, label %560

560:                                              ; preds = %558
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %75) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %76) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %76) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %75, ptr noundef nonnull @.str.1275, ptr noundef nonnull align 1 dereferenceable(1) %76)
          to label %561 unwind label %563

561:                                              ; preds = %560
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %1, ptr noundef nonnull align 8 dereferenceable(32) %75)
          to label %562 unwind label %565

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

563:                                              ; preds = %560
  %564 = landingpad { ptr, i32 }
          cleanup
  br label %567

565:                                              ; preds = %561
  %566 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #6
  br label %567

567:                                              ; preds = %565, %563
  %.pn57 = phi { ptr, i32 } [ %566, %565 ], [ %564, %563 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %76) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %76) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %75) #6
  br label %981

568:                                              ; preds = %552, %562, %558
  %569 = icmp eq i32 %3, 1
  br i1 %569, label %570, label %574

570:                                              ; preds = %568
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %77) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %77) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1277, ptr noundef nonnull align 1 dereferenceable(1) %77)
          to label %571 unwind label %572

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

572:                                              ; preds = %570
  %573 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %77) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %77) #6
  br label %981

574:                                              ; preds = %568
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %78) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %78) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1278, ptr noundef nonnull align 1 dereferenceable(1) %78)
          to label %575 unwind label %576

575:                                              ; preds = %574
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %78) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %78) #6
  br label %980

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

578:                                              ; preds = %4
  %579 = tail call noundef zeroext i1 @_ZNK11spirv_cross12CompilerGLSL9is_legacyEv(ptr noundef nonnull align 8 dereferenceable(9848) %1)
  br i1 %579, label %580, label %585

580:                                              ; preds = %578
  %581 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %581, ptr noundef nonnull @.str.1273)
          to label %582 unwind label %583

582:                                              ; preds = %580
  tail call void @__cxa_throw(ptr nonnull %581, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

583:                                              ; preds = %580
  %584 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %581) #6
  br label %981

585:                                              ; preds = %578
  %586 = getelementptr inbounds i8, ptr %1, i64 7636
  %587 = getelementptr inbounds i8, ptr %1, i64 7640
  %588 = load i8, ptr %587, align 8, !tbaa !9, !range !120, !noundef !121
  %589 = trunc nuw i8 %588 to i1
  %590 = load i32, ptr %586, align 4
  %591 = icmp ult i32 %590, 320
  %or.cond104 = select i1 %589, i1 %591, i1 false
  br i1 %or.cond104, label %592, label %600

592:                                              ; preds = %585
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %79) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %80) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %80) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %79, ptr noundef nonnull @.str.1274, ptr noundef nonnull align 1 dereferenceable(1) %80)
          to label %593 unwind label %595

593:                                              ; preds = %592
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %1, ptr noundef nonnull align 8 dereferenceable(32) %79)
          to label %594 unwind label %597

594:                                              ; preds = %593
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %79) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %80) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %80) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %79) #6
  br label %610

595:                                              ; preds = %592
  %596 = landingpad { ptr, i32 }
          cleanup
  br label %599

597:                                              ; preds = %593
  %598 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %79) #6
  br label %599

599:                                              ; preds = %597, %595
  %.pn55 = phi { ptr, i32 } [ %598, %597 ], [ %596, %595 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %80) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %80) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %79) #6
  br label %981

600:                                              ; preds = %585
  %601 = icmp ugt i32 %590, 399
  %or.cond107.not = select i1 %589, i1 true, i1 %601
  br i1 %or.cond107.not, label %610, label %602

602:                                              ; preds = %600
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %81) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %82) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %82) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %81, ptr noundef nonnull @.str.1275, ptr noundef nonnull align 1 dereferenceable(1) %82)
          to label %603 unwind label %605

603:                                              ; preds = %602
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %1, ptr noundef nonnull align 8 dereferenceable(32) %81)
          to label %604 unwind label %607

604:                                              ; preds = %603
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %82) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %82) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %81) #6
  br label %610

605:                                              ; preds = %602
  %606 = landingpad { ptr, i32 }
          cleanup
  br label %609

607:                                              ; preds = %603
  %608 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #6
  br label %609

609:                                              ; preds = %607, %605
  %.pn53 = phi { ptr, i32 } [ %608, %607 ], [ %606, %605 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %82) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %82) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %81) #6
  br label %981

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

611:                                              ; preds = %610
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %83) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %83) #6
  br label %980

612:                                              ; preds = %610
  %613 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %83) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %83) #6
  br label %981

614:                                              ; preds = %4
  %615 = getelementptr inbounds i8, ptr %1, i64 7648
  %616 = load i8, ptr %615, align 8, !tbaa !122, !range !120, !noundef !121
  %617 = trunc nuw i8 %616 to i1
  br i1 %617, label %618, label %622

618:                                              ; preds = %614
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %84) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %84) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1280, ptr noundef nonnull align 1 dereferenceable(1) %84)
          to label %619 unwind label %620

619:                                              ; preds = %618
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %84) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %84) #6
  br label %980

620:                                              ; preds = %618
  %621 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %84) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %84) #6
  br label %981

622:                                              ; preds = %614
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %85) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %85) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1281, ptr noundef nonnull align 1 dereferenceable(1) %85)
          to label %623 unwind label %624

623:                                              ; preds = %622
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %85) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %85) #6
  br label %980

624:                                              ; preds = %622
  %625 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %85) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %85) #6
  br label %981

626:                                              ; preds = %4
  tail call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %1, i32 noundef 4)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %86) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %86) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1282, ptr noundef nonnull align 1 dereferenceable(1) %86)
          to label %627 unwind label %628

627:                                              ; preds = %626
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %86) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %86) #6
  br label %980

628:                                              ; preds = %626
  %629 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %86) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %86) #6
  br label %981

630:                                              ; preds = %4
  tail call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %1, i32 noundef 3)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %87) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %87) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1283, ptr noundef nonnull align 1 dereferenceable(1) %87)
          to label %631 unwind label %632

631:                                              ; preds = %630
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %87) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %87) #6
  br label %980

632:                                              ; preds = %630
  %633 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %87) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %87) #6
  br label %981

634:                                              ; preds = %4
  tail call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %1, i32 noundef 1)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %88) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %88) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1284, ptr noundef nonnull align 1 dereferenceable(1) %88)
          to label %635 unwind label %636

635:                                              ; preds = %634
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %88) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %88) #6
  br label %980

636:                                              ; preds = %634
  %637 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %88) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %88) #6
  br label %981

638:                                              ; preds = %4
  tail call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %1, i32 noundef 2)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %89) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %89) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1285, ptr noundef nonnull align 1 dereferenceable(1) %89)
          to label %639 unwind label %640

639:                                              ; preds = %638
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %89) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %89) #6
  br label %980

640:                                              ; preds = %638
  %641 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %89) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %89) #6
  br label %981

642:                                              ; preds = %4
  tail call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %1, i32 noundef 0)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %90) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %90) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1286, ptr noundef nonnull align 1 dereferenceable(1) %90)
          to label %643 unwind label %644

643:                                              ; preds = %642
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %90) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %90) #6
  br label %980

644:                                              ; preds = %642
  %645 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %90) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %90) #6
  br label %981

646:                                              ; preds = %4
  tail call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %1, i32 noundef 0)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %91) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %91) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1287, ptr noundef nonnull align 1 dereferenceable(1) %91)
          to label %647 unwind label %648

647:                                              ; preds = %646
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %91) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %91) #6
  br label %980

648:                                              ; preds = %646
  %649 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %91) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %91) #6
  br label %981

650:                                              ; preds = %4
  tail call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %1, i32 noundef 0)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %92) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %92) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1288, ptr noundef nonnull align 1 dereferenceable(1) %92)
          to label %651 unwind label %652

651:                                              ; preds = %650
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %92) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %92) #6
  br label %980

652:                                              ; preds = %650
  %653 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %92) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %92) #6
  br label %981

654:                                              ; preds = %4
  tail call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %1, i32 noundef 0)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %93) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %93) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1289, ptr noundef nonnull align 1 dereferenceable(1) %93)
          to label %655 unwind label %656

655:                                              ; preds = %654
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %93) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %93) #6
  br label %980

656:                                              ; preds = %654
  %657 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %93) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %93) #6
  br label %981

658:                                              ; preds = %4
  tail call void @_ZN11spirv_cross12CompilerGLSL24request_subgroup_featureENS0_27ShaderSubgroupSupportHelper7FeatureE(ptr noundef nonnull align 8 dereferenceable(9848) %1, i32 noundef 0)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %94) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %94) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1290, ptr noundef nonnull align 1 dereferenceable(1) %94)
          to label %659 unwind label %660

659:                                              ; preds = %658
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %94) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %94) #6
  br label %980

660:                                              ; preds = %658
  %661 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %94) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %94) #6
  br label %981

662:                                              ; preds = %4
  %663 = getelementptr inbounds i8, ptr %1, i64 9396
  %664 = load i8, ptr %663, align 4, !tbaa !132, !range !120, !noundef !121
  %665 = trunc nuw i8 %664 to i1
  %666 = select i1 %665, ptr @.str.1291, ptr @.str.1292
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %95) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %95) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull %666, ptr noundef nonnull align 1 dereferenceable(1) %95)
          to label %667 unwind label %668

667:                                              ; preds = %662
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %95) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %95) #6
  br label %980

668:                                              ; preds = %662
  %669 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %95) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %95) #6
  br label %981

670:                                              ; preds = %4
  %671 = getelementptr inbounds i8, ptr %1, i64 9396
  %672 = load i8, ptr %671, align 4, !tbaa !132, !range !120, !noundef !121
  %673 = trunc nuw i8 %672 to i1
  %674 = select i1 %673, ptr @.str.1293, ptr @.str.1294
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %96) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %96) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull %674, ptr noundef nonnull align 1 dereferenceable(1) %96)
          to label %675 unwind label %676

675:                                              ; preds = %670
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %96) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %96) #6
  br label %980

676:                                              ; preds = %670
  %677 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %96) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %96) #6
  br label %981

678:                                              ; preds = %4
  %679 = getelementptr inbounds i8, ptr %1, i64 9396
  %680 = load i8, ptr %679, align 4, !tbaa !132, !range !120, !noundef !121
  %681 = trunc nuw i8 %680 to i1
  %682 = select i1 %681, ptr @.str.1295, ptr @.str.1296
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %97) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %97) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull %682, ptr noundef nonnull align 1 dereferenceable(1) %97)
          to label %683 unwind label %684

683:                                              ; preds = %678
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %97) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %97) #6
  br label %980

684:                                              ; preds = %678
  %685 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %97) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %97) #6
  br label %981

686:                                              ; preds = %4
  %687 = getelementptr inbounds i8, ptr %1, i64 9396
  %688 = load i8, ptr %687, align 4, !tbaa !132, !range !120, !noundef !121
  %689 = trunc nuw i8 %688 to i1
  %690 = select i1 %689, ptr @.str.1297, ptr @.str.1298
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %98) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %98) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull %690, ptr noundef nonnull align 1 dereferenceable(1) %98)
          to label %691 unwind label %692

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

692:                                              ; preds = %686
  %693 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %98) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %98) #6
  br label %981

694:                                              ; preds = %4
  %695 = getelementptr inbounds i8, ptr %1, i64 9396
  %696 = load i8, ptr %695, align 4, !tbaa !132, !range !120, !noundef !121
  %697 = trunc nuw i8 %696 to i1
  %698 = select i1 %697, ptr @.str.1299, ptr @.str.1300
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %99) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %99) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull %698, ptr noundef nonnull align 1 dereferenceable(1) %99)
          to label %699 unwind label %700

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

700:                                              ; preds = %694
  %701 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %99) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %99) #6
  br label %981

702:                                              ; preds = %4
  %703 = getelementptr inbounds i8, ptr %1, i64 9396
  %704 = load i8, ptr %703, align 4, !tbaa !132, !range !120, !noundef !121
  %705 = trunc nuw i8 %704 to i1
  %706 = select i1 %705, ptr @.str.1301, ptr @.str.1302
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %100) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %100) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull %706, ptr noundef nonnull align 1 dereferenceable(1) %100)
          to label %707 unwind label %708

707:                                              ; preds = %702
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %100) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %100) #6
  br label %980

708:                                              ; preds = %702
  %709 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %100) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %100) #6
  br label %981

710:                                              ; preds = %4
  %711 = getelementptr inbounds i8, ptr %1, i64 9396
  %712 = load i8, ptr %711, align 4, !tbaa !132, !range !120, !noundef !121
  %713 = trunc nuw i8 %712 to i1
  %714 = select i1 %713, ptr @.str.1303, ptr @.str.1304
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %101) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %101) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull %714, ptr noundef nonnull align 1 dereferenceable(1) %101)
          to label %715 unwind label %716

715:                                              ; preds = %710
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %101) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %101) #6
  br label %980

716:                                              ; preds = %710
  %717 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %101) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %101) #6
  br label %981

718:                                              ; preds = %4
  %719 = getelementptr inbounds i8, ptr %1, i64 9396
  %720 = load i8, ptr %719, align 4, !tbaa !132, !range !120, !noundef !121
  %721 = trunc nuw i8 %720 to i1
  %722 = select i1 %721, ptr @.str.1305, ptr @.str.1306
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %102) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %102) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull %722, ptr noundef nonnull align 1 dereferenceable(1) %102)
          to label %723 unwind label %724

723:                                              ; preds = %718
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %102) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %102) #6
  br label %980

724:                                              ; preds = %718
  %725 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %102) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %102) #6
  br label %981

726:                                              ; preds = %4
  %727 = getelementptr inbounds i8, ptr %1, i64 9396
  %728 = load i8, ptr %727, align 4, !tbaa !132, !range !120, !noundef !121
  %729 = trunc nuw i8 %728 to i1
  %730 = select i1 %729, ptr @.str.1307, ptr @.str.1308
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %103) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %103) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull %730, ptr noundef nonnull align 1 dereferenceable(1) %103)
          to label %731 unwind label %732

731:                                              ; preds = %726
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %103) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %103) #6
  br label %980

732:                                              ; preds = %726
  %733 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %103) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %103) #6
  br label %981

734:                                              ; preds = %4
  %735 = getelementptr inbounds i8, ptr %1, i64 9396
  %736 = load i8, ptr %735, align 4, !tbaa !132, !range !120, !noundef !121
  %737 = trunc nuw i8 %736 to i1
  %738 = select i1 %737, ptr @.str.1309, ptr @.str.1310
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %104) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %104) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull %738, ptr noundef nonnull align 1 dereferenceable(1) %104)
          to label %739 unwind label %740

739:                                              ; preds = %734
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %104) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %104) #6
  br label %980

740:                                              ; preds = %734
  %741 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %104) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %104) #6
  br label %981

742:                                              ; preds = %4
  %743 = getelementptr inbounds i8, ptr %1, i64 9396
  %744 = load i8, ptr %743, align 4, !tbaa !132, !range !120, !noundef !121
  %745 = trunc nuw i8 %744 to i1
  %746 = select i1 %745, ptr @.str.1311, ptr @.str.1312
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %105) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %105) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull %746, ptr noundef nonnull align 1 dereferenceable(1) %105)
          to label %747 unwind label %748

747:                                              ; preds = %742
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %105) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %105) #6
  br label %980

748:                                              ; preds = %742
  %749 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %105) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %105) #6
  br label %981

750:                                              ; preds = %4
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %106) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %106) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1313, ptr noundef nonnull align 1 dereferenceable(1) %106)
          to label %751 unwind label %752

751:                                              ; preds = %750
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %106) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %106) #6
  br label %980

752:                                              ; preds = %750
  %753 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %106) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %106) #6
  br label %981

754:                                              ; preds = %4
  %755 = getelementptr inbounds i8, ptr %1, i64 9396
  %756 = load i8, ptr %755, align 4, !tbaa !132, !range !120, !noundef !121
  %757 = trunc nuw i8 %756 to i1
  %758 = select i1 %757, ptr @.str.1314, ptr @.str.1315
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %107) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %107) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull %758, ptr noundef nonnull align 1 dereferenceable(1) %107)
          to label %759 unwind label %760

759:                                              ; preds = %754
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %107) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %107) #6
  br label %980

760:                                              ; preds = %754
  %761 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %107) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %107) #6
  br label %981

762:                                              ; preds = %4
  %763 = getelementptr inbounds i8, ptr %1, i64 9396
  %764 = load i8, ptr %763, align 4, !tbaa !132, !range !120, !noundef !121
  %765 = trunc nuw i8 %764 to i1
  %766 = select i1 %765, ptr @.str.1316, ptr @.str.1317
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %108) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %108) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull %766, ptr noundef nonnull align 1 dereferenceable(1) %108)
          to label %767 unwind label %768

767:                                              ; preds = %762
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %108) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %108) #6
  br label %980

768:                                              ; preds = %762
  %769 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %108) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %108) #6
  br label %981

770:                                              ; preds = %4
  %771 = getelementptr inbounds i8, ptr %1, i64 7636
  %772 = getelementptr inbounds i8, ptr %1, i64 7640
  %773 = load i8, ptr %772, align 8, !tbaa !9, !range !120, !noundef !121
  %774 = trunc nuw i8 %773 to i1
  %775 = load i32, ptr %771, align 4
  %776 = icmp ult i32 %775, 320
  %or.cond109 = select i1 %774, i1 %776, i1 false
  br i1 %or.cond109, label %777, label %782

777:                                              ; preds = %770
  %778 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %778, ptr noundef nonnull @.str.1318)
          to label %779 unwind label %780

779:                                              ; preds = %777
  tail call void @__cxa_throw(ptr nonnull %778, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

780:                                              ; preds = %777
  %781 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %778) #6
  br label %981

782:                                              ; preds = %770
  %783 = icmp ugt i32 %775, 449
  %or.cond112.not = select i1 %774, i1 true, i1 %783
  br i1 %or.cond112.not, label %789, label %784

784:                                              ; preds = %782
  %785 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %785, ptr noundef nonnull @.str.1319)
          to label %786 unwind label %787

786:                                              ; preds = %784
  tail call void @__cxa_throw(ptr nonnull %785, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

787:                                              ; preds = %784
  %788 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %785) #6
  br label %981

789:                                              ; preds = %782
  %790 = getelementptr inbounds i8, ptr %1, i64 9397
  %791 = load i8, ptr %790, align 1, !tbaa !133, !range !120, !noundef !121
  %792 = trunc nuw i8 %791 to i1
  br i1 %792, label %793, label %804

793:                                              ; preds = %789
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %109) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %110) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %110) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %109, ptr noundef nonnull @.str.198, ptr noundef nonnull align 1 dereferenceable(1) %110)
          to label %794 unwind label %797

794:                                              ; preds = %793
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %1, ptr noundef nonnull align 8 dereferenceable(32) %109)
          to label %795 unwind label %799

795:                                              ; preds = %794
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %109) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %110) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %110) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %109) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %111) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %111) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1320, ptr noundef nonnull align 1 dereferenceable(1) %111)
          to label %796 unwind label %802

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

797:                                              ; preds = %793
  %798 = landingpad { ptr, i32 }
          cleanup
  br label %801

799:                                              ; preds = %794
  %800 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %109) #6
  br label %801

801:                                              ; preds = %799, %797
  %.pn51 = phi { ptr, i32 } [ %800, %799 ], [ %798, %797 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %110) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %110) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %109) #6
  br label %981

802:                                              ; preds = %795
  %803 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %111) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %111) #6
  br label %981

804:                                              ; preds = %789
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %112) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %113) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %113) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %112, ptr noundef nonnull @.str.200, ptr noundef nonnull align 1 dereferenceable(1) %113)
          to label %805 unwind label %808

805:                                              ; preds = %804
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %1, ptr noundef nonnull align 8 dereferenceable(32) %112)
          to label %806 unwind label %810

806:                                              ; preds = %805
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %112) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %113) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %113) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %112) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %114) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %114) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1321, ptr noundef nonnull align 1 dereferenceable(1) %114)
          to label %807 unwind label %813

807:                                              ; preds = %806
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %114) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %114) #6
  br label %980

808:                                              ; preds = %804
  %809 = landingpad { ptr, i32 }
          cleanup
  br label %812

810:                                              ; preds = %805
  %811 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %112) #6
  br label %812

812:                                              ; preds = %810, %808
  %.pn49 = phi { ptr, i32 } [ %811, %810 ], [ %809, %808 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %113) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %113) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %112) #6
  br label %981

813:                                              ; preds = %806
  %814 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %114) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %114) #6
  br label %981

815:                                              ; preds = %4
  %816 = getelementptr inbounds i8, ptr %1, i64 7636
  %817 = getelementptr inbounds i8, ptr %1, i64 7640
  %818 = load i8, ptr %817, align 8, !tbaa !9, !range !120, !noundef !121
  %819 = trunc nuw i8 %818 to i1
  %820 = load i32, ptr %816, align 4
  %821 = icmp ult i32 %820, 320
  %or.cond114 = select i1 %819, i1 %821, i1 false
  br i1 %or.cond114, label %822, label %827

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

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

825:                                              ; preds = %822
  %826 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %823) #6
  br label %981

827:                                              ; preds = %815
  %828 = icmp ugt i32 %820, 449
  %or.cond117.not = select i1 %819, i1 true, i1 %828
  br i1 %or.cond117.not, label %834, label %829

829:                                              ; preds = %827
  %830 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %830, ptr noundef nonnull @.str.1323)
          to label %831 unwind label %832

831:                                              ; preds = %829
  tail call void @__cxa_throw(ptr nonnull %830, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

832:                                              ; preds = %829
  %833 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %830) #6
  br label %981

834:                                              ; preds = %827
  %835 = getelementptr inbounds i8, ptr %1, i64 9397
  %836 = load i8, ptr %835, align 1, !tbaa !133, !range !120, !noundef !121
  %837 = trunc nuw i8 %836 to i1
  br i1 %837, label %838, label %849

838:                                              ; preds = %834
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %115) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %116) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %116) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %115, ptr noundef nonnull @.str.198, ptr noundef nonnull align 1 dereferenceable(1) %116)
          to label %839 unwind label %842

839:                                              ; preds = %838
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %1, ptr noundef nonnull align 8 dereferenceable(32) %115)
          to label %840 unwind label %844

840:                                              ; preds = %839
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %115) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %116) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %116) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %115) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %117) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %117) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1324, ptr noundef nonnull align 1 dereferenceable(1) %117)
          to label %841 unwind label %847

841:                                              ; preds = %840
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %117) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %117) #6
  br label %980

842:                                              ; preds = %838
  %843 = landingpad { ptr, i32 }
          cleanup
  br label %846

844:                                              ; preds = %839
  %845 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %115) #6
  br label %846

846:                                              ; preds = %844, %842
  %.pn47 = phi { ptr, i32 } [ %845, %844 ], [ %843, %842 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %116) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %116) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %115) #6
  br label %981

847:                                              ; preds = %840
  %848 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %117) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %117) #6
  br label %981

849:                                              ; preds = %834
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %118) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %119) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %119) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %118, ptr noundef nonnull @.str.200, ptr noundef nonnull align 1 dereferenceable(1) %119)
          to label %850 unwind label %853

850:                                              ; preds = %849
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %1, ptr noundef nonnull align 8 dereferenceable(32) %118)
          to label %851 unwind label %855

851:                                              ; preds = %850
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %118) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %119) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %119) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %118) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %120) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %120) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1325, ptr noundef nonnull align 1 dereferenceable(1) %120)
          to label %852 unwind label %858

852:                                              ; preds = %851
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %120) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %120) #6
  br label %980

853:                                              ; preds = %849
  %854 = landingpad { ptr, i32 }
          cleanup
  br label %857

855:                                              ; preds = %850
  %856 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %118) #6
  br label %857

857:                                              ; preds = %855, %853
  %.pn45 = phi { ptr, i32 } [ %856, %855 ], [ %854, %853 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %119) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %119) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %118) #6
  br label %981

858:                                              ; preds = %851
  %859 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %120) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %120) #6
  br label %981

860:                                              ; preds = %4
  %861 = getelementptr inbounds i8, ptr %1, i64 7640
  %862 = load i8, ptr %861, align 8, !tbaa !9, !range !120, !noundef !121
  %863 = trunc nuw i8 %862 to i1
  br i1 %863, label %875, label %864

864:                                              ; preds = %860
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %121) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %122) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %122) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %121, ptr noundef nonnull @.str.1326, ptr noundef nonnull align 1 dereferenceable(1) %122)
          to label %865 unwind label %868

865:                                              ; preds = %864
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %1, ptr noundef nonnull align 8 dereferenceable(32) %121)
          to label %866 unwind label %870

866:                                              ; preds = %865
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %121) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %122) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %122) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %121) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %123) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %123) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1327, ptr noundef nonnull align 1 dereferenceable(1) %123)
          to label %867 unwind label %873

867:                                              ; preds = %866
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %123) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %123) #6
  br label %980

868:                                              ; preds = %864
  %869 = landingpad { ptr, i32 }
          cleanup
  br label %872

870:                                              ; preds = %865
  %871 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %121) #6
  br label %872

872:                                              ; preds = %870, %868
  %.pn43 = phi { ptr, i32 } [ %871, %870 ], [ %869, %868 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %122) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %122) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %121) #6
  br label %981

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

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

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

878:                                              ; preds = %875
  %879 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %876) #6
  br label %981

880:                                              ; preds = %4
  %881 = getelementptr inbounds i8, ptr %1, i64 7648
  %882 = load i8, ptr %881, align 8, !tbaa !122, !range !120, !noundef !121
  %883 = trunc nuw i8 %882 to i1
  br i1 %883, label %889, label %884

884:                                              ; preds = %880
  %885 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %885, ptr noundef nonnull @.str.1329)
          to label %886 unwind label %887

886:                                              ; preds = %884
  tail call void @__cxa_throw(ptr nonnull %885, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

887:                                              ; preds = %884
  %888 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %885) #6
  br label %981

889:                                              ; preds = %880
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %124) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %125) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %125) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %124, ptr noundef nonnull @.str.1330, ptr noundef nonnull align 1 dereferenceable(1) %125)
          to label %890 unwind label %893

890:                                              ; preds = %889
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %1, ptr noundef nonnull align 8 dereferenceable(32) %124)
          to label %891 unwind label %895

891:                                              ; preds = %890
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %124) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %125) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %125) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %124) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %126) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %126) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1331, ptr noundef nonnull align 1 dereferenceable(1) %126)
          to label %892 unwind label %898

892:                                              ; preds = %891
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %126) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %126) #6
  br label %980

893:                                              ; preds = %889
  %894 = landingpad { ptr, i32 }
          cleanup
  br label %897

895:                                              ; preds = %890
  %896 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %124) #6
  br label %897

897:                                              ; preds = %895, %893
  %.pn41 = phi { ptr, i32 } [ %896, %895 ], [ %894, %893 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %125) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %125) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %124) #6
  br label %981

898:                                              ; preds = %891
  %899 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %126) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %126) #6
  br label %981

900:                                              ; preds = %4
  %901 = getelementptr inbounds i8, ptr %1, i64 7648
  %902 = load i8, ptr %901, align 8, !tbaa !122, !range !120, !noundef !121
  %903 = trunc nuw i8 %902 to i1
  br i1 %903, label %909, label %904

904:                                              ; preds = %900
  %905 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %905, ptr noundef nonnull @.str.1332)
          to label %906 unwind label %907

906:                                              ; preds = %904
  tail call void @__cxa_throw(ptr nonnull %905, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

907:                                              ; preds = %904
  %908 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %905) #6
  br label %981

909:                                              ; preds = %900
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %127) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %128) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %128) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %127, ptr noundef nonnull @.str.1330, ptr noundef nonnull align 1 dereferenceable(1) %128)
          to label %910 unwind label %913

910:                                              ; preds = %909
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %1, ptr noundef nonnull align 8 dereferenceable(32) %127)
          to label %911 unwind label %915

911:                                              ; preds = %910
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %127) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %128) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %128) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %127) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %129) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %129) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1333, ptr noundef nonnull align 1 dereferenceable(1) %129)
          to label %912 unwind label %918

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

913:                                              ; preds = %909
  %914 = landingpad { ptr, i32 }
          cleanup
  br label %917

915:                                              ; preds = %910
  %916 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %127) #6
  br label %917

917:                                              ; preds = %915, %913
  %.pn39 = phi { ptr, i32 } [ %916, %915 ], [ %914, %913 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %128) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %128) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %127) #6
  br label %981

918:                                              ; preds = %911
  %919 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %129) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %129) #6
  br label %981

920:                                              ; preds = %4
  %921 = getelementptr inbounds i8, ptr %1, i64 7648
  %922 = load i8, ptr %921, align 8, !tbaa !122, !range !120, !noundef !121
  %923 = trunc nuw i8 %922 to i1
  br i1 %923, label %929, label %924

924:                                              ; preds = %920
  %925 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %925, ptr noundef nonnull @.str.1334)
          to label %926 unwind label %927

926:                                              ; preds = %924
  tail call void @__cxa_throw(ptr nonnull %925, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

927:                                              ; preds = %924
  %928 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %925) #6
  br label %981

929:                                              ; preds = %920
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %130) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %131) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %131) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %130, ptr noundef nonnull @.str.1335, ptr noundef nonnull align 1 dereferenceable(1) %131)
          to label %930 unwind label %933

930:                                              ; preds = %929
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %1, ptr noundef nonnull align 8 dereferenceable(32) %130)
          to label %931 unwind label %935

931:                                              ; preds = %930
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %130) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %131) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %131) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %130) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %132) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %132) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1336, ptr noundef nonnull align 1 dereferenceable(1) %132)
          to label %932 unwind label %938

932:                                              ; preds = %931
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %132) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %132) #6
  br label %980

933:                                              ; preds = %929
  %934 = landingpad { ptr, i32 }
          cleanup
  br label %937

935:                                              ; preds = %930
  %936 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %130) #6
  br label %937

937:                                              ; preds = %935, %933
  %.pn37 = phi { ptr, i32 } [ %936, %935 ], [ %934, %933 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %131) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %131) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %130) #6
  br label %981

938:                                              ; preds = %931
  %939 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %132) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %132) #6
  br label %981

940:                                              ; preds = %4
  %941 = getelementptr inbounds i8, ptr %1, i64 7640
  %942 = load i8, ptr %941, align 8, !tbaa !9, !range !120, !noundef !121
  %943 = trunc nuw i8 %942 to i1
  br i1 %943, label %952, label %944

944:                                              ; preds = %940
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %133) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %134) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %134) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %133, ptr noundef nonnull @.str.1337, ptr noundef nonnull align 1 dereferenceable(1) %134)
          to label %945 unwind label %947

945:                                              ; preds = %944
  invoke void @_ZN11spirv_cross12CompilerGLSL26require_extension_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(9848) %1, ptr noundef nonnull align 8 dereferenceable(32) %133)
          to label %946 unwind label %949

946:                                              ; preds = %945
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %133) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %134) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %134) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %133) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %135) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %135) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1339, ptr noundef nonnull align 1 dereferenceable(1) %135)
          to label %957 unwind label %958

947:                                              ; preds = %944
  %948 = landingpad { ptr, i32 }
          cleanup
  br label %951

949:                                              ; preds = %945
  %950 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %133) #6
  br label %951

951:                                              ; preds = %949, %947
  %.pn = phi { ptr, i32 } [ %950, %949 ], [ %948, %947 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %134) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %134) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %133) #6
  br label %981

952:                                              ; preds = %940
  %953 = tail call ptr @__cxa_allocate_exception(i64 16) #6
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %953, ptr noundef nonnull @.str.1338)
          to label %954 unwind label %955

954:                                              ; preds = %952
  tail call void @__cxa_throw(ptr nonnull %953, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #7
  unreachable

955:                                              ; preds = %952
  %956 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %953) #6
  br label %981

957:                                              ; preds = %946
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %135) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %135) #6
  br label %980

958:                                              ; preds = %946
  %959 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %135) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %135) #6
  br label %981

960:                                              ; preds = %4
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %136) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %136) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1340, ptr noundef nonnull align 1 dereferenceable(1) %136)
          to label %961 unwind label %962

961:                                              ; preds = %960
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %136) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %136) #6
  br label %980

962:                                              ; preds = %960
  %963 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %136) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %136) #6
  br label %981

964:                                              ; preds = %4
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %137) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %137) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1341, ptr noundef nonnull align 1 dereferenceable(1) %137)
          to label %965 unwind label %966

965:                                              ; preds = %964
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %137) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %137) #6
  br label %980

966:                                              ; preds = %964
  %967 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %137) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %137) #6
  br label %981

968:                                              ; preds = %4
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %138) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %138) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1342, ptr noundef nonnull align 1 dereferenceable(1) %138)
          to label %969 unwind label %970

969:                                              ; preds = %968
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %138) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %138) #6
  br label %980

970:                                              ; preds = %968
  %971 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %138) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %138) #6
  br label %981

972:                                              ; preds = %4
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %139) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %139) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.1343, ptr noundef nonnull align 1 dereferenceable(1) %139)
          to label %973 unwind label %974

973:                                              ; preds = %972
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %139) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %139) #6
  br label %980

974:                                              ; preds = %972
  %975 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %139) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %139) #6
  br label %981

976:                                              ; preds = %4
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %140) #6
  call void @_ZN11spirv_cross17convert_to_stringIN3spv7BuiltInETnNSt9enable_ifIXntsr3std17is_floating_pointIT_EE5valueEiE4typeELi0EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS4_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %140, ptr noundef nonnull align 4 dereferenceable(4) %5)
  invoke void @_ZN11spirv_cross4joinIJRA12_KcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEES9_DpOT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 1 dereferenceable(12) @.str.1344, ptr noundef nonnull align 8 dereferenceable(32) %140)
          to label %977 unwind label %978

977:                                              ; preds = %976
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %140) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %140) #6
  br label %980

978:                                              ; preds = %976
  %979 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %140) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %140) #6
  br label %981

980:                                              ; preds = %977, %973, %969, %965, %961, %957, %932, %912, %892, %867, %852, %841, %807, %796, %767, %759, %751, %747, %739, %731, %723, %715, %707, %699, %691, %683, %675, %667, %659, %655, %651, %647, %643, %639, %635, %631, %627, %623, %619, %611, %575, %571, %533, %492, %486, %477, %449, %443, %434, %406, %400, %391, %368, %364, %360, %356, %352, %348, %344, %340, %336, %332, %328, %324, %320, %316, %312, %308, %304, %300, %296, %292, %281, %277, %243, %235, %231, %223, %191, %178, %162, %146, %142
  ret void

981:                                              ; preds = %978, %974, %970, %966, %962, %958, %955, %951, %938, %937, %927, %918, %917, %907, %898, %897, %887, %878, %873, %872, %858, %857, %847, %846, %832, %825, %813, %812, %802, %801, %787, %780, %768, %760, %752, %748, %740, %732, %724, %716, %708, %700, %692, %684, %676, %668, %660, %656, %652, %648, %644, %640, %636, %632, %628, %624, %620, %612, %609, %599, %583, %576, %572, %567, %557, %541, %534, %531, %521, %505, %498, %497, %487, %483, %482, %465, %455, %454, %444, %440, %439, %422, %412, %411, %401, %397, %396, %379, %369, %365, %361, %357, %353, %349, %345, %341, %337, %333, %329, %325, %321, %317, %313, %309, %305, %301, %297, %293, %282, %278, %275, %260, %244, %236, %232, %224, %221, %206, %192, %188, %179, %176, %163, %160, %147, %143
  %.pn87 = phi { ptr, i32 } [ %979, %978 ], [ %975, %974 ], [ %971, %970 ], [ %967, %966 ], [ %963, %962 ], [ %956, %955 ], [ %959, %958 ], [ %.pn, %951 ], [ %939, %938 ], [ %.pn37, %937 ], [ %928, %927 ], [ %919, %918 ], [ %.pn39, %917 ], [ %908, %907 ], [ %899, %898 ], [ %.pn41, %897 ], [ %888, %887 ], [ %879, %878 ], [ %874, %873 ], [ %.pn43, %872 ], [ %826, %825 ], [ %848, %847 ], [ %.pn47, %846 ], [ %859, %858 ], [ %.pn45, %857 ], [ %833, %832 ], [ %781, %780 ], [ %803, %802 ], [ %.pn51, %801 ], [ %814, %813 ], [ %.pn49, %812 ], [ %788, %787 ], [ %769, %768 ], [ %761, %760 ], [ %753, %752 ], [ %749, %748 ], [ %741, %740 ], [ %733, %732 ], [ %725, %724 ], [ %717, %716 ], [ %709, %708 ], [ %701, %700 ], [ %693, %692 ], [ %685, %684 ], [ %677, %676 ], [ %669, %668 ], [ %661, %660 ], [ %657, %656 ], [ %653, %652 ], [ %649, %648 ], [ %645, %644 ], [ %641, %640 ], [ %637, %636 ], [ %633, %632 ], [ %629, %628 ], [ %621, %620 ], [ %625, %624 ], [ %584, %583 ], [ %613, %612 ], [ %.pn55, %599 ], [ %.pn53, %609 ], [ %542, %541 ], [ %573, %572 ], [ %577, %576 ], [ %.pn59, %557 ], [ %.pn57, %567 ], [ %506, %505 ], [ %535, %534 ], [ %.pn63, %521 ], [ %.pn61, %531 ], [ %466, %465 ], [ %484, %483 ], [ %.pn67, %482 ], [ %488, %487 ], [ %499, %498 ], [ %.pn65, %497 ], [ %423, %422 ], [ %441, %440 ], [ %.pn71, %439 ], [ %445, %444 ], [ %456, %455 ], [ %.pn69, %454 ], [ %380, %379 ], [ %398, %397 ], [ %.pn75, %396 ], [ %402, %401 ], [ %413, %412 ], [ %.pn73, %411 ], [ %370, %369 ], [ %366, %365 ], [ %362, %361 ], [ %358, %357 ], [ %354, %353 ], [ %350, %349 ], [ %346, %345 ], [ %342, %341 ], [ %338, %337 ], [ %334, %333 ], [ %330, %329 ], [ %326, %325 ], [ %322, %321 ], [ %318, %317 ], [ %314, %313 ], [ %310, %309 ], [ %306, %305 ], [ %302, %301 ], [ %294, %293 ], [ %298, %297 ], [ %245, %244 ], [ %279, %278 ], [ %.pn79, %275 ], [ %283, %282 ], [ %.pn77, %260 ], [ %233, %232 ], [ %237, %236 ], [ %207, %206 ], [ %225, %224 ], [ %.pn81, %221 ], [ %189, %188 ], [ %193, %192 ], [ %180, %179 ], [ %.pn83, %176 ], [ %164, %163 ], [ %.pn85, %160 ], [ %148, %147 ], [ %144, %143 ]
  resume { ptr, i32 } %.pn87
}

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN11spirv_cross17convert_to_stringIN3spv7BuiltInETnNSt9enable_ifIXntsr3std17is_floating_pointIT_EE5valueEiE4typeELi0EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS4_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #5

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

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


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