; LLVM IR from hbatagelo/abcg :: abcg/external/glslang/glslang/MachineIndependent (ParseHelper)

; 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.glslang::TQualifier" = type <{ ptr, i64, i8, [3 x i8], i32, i32, i64, i64, i8, i8, i8, i8, i8, [3 x i8], i32, i8, [3 x i8], i32, ptr }>
%"class.glslang::TType" = type { ptr, i32, [4 x i8], %"class.glslang::TQualifier", ptr, %union.anon.179, ptr, ptr, %"struct.glslang::TSampler", ptr, ptr }
%union.anon.179 = type { ptr }
%"struct.glslang::TSampler" = type { i32 }
%"class.glslang::TParseVersions" = type { ptr, i8, i32, ptr, i32, i32, %"struct.glslang::SpvVersion", ptr, %"class.glslang::TMap", %"class.glslang::TMap.0", i32, i32, ptr }
%"struct.glslang::SpvVersion" = type <{ i32, i32, i32, i32, i8, [3 x i8] }>
%"class.glslang::TMap" = type { %"class.std::map" }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, glslang::TExtensionBehavior>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, glslang::TExtensionBehavior>>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>>, glslang::pool_allocator<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, glslang::TExtensionBehavior>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, glslang::TExtensionBehavior>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, glslang::TExtensionBehavior>>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>>, glslang::pool_allocator<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, glslang::TExtensionBehavior>>>::_Rb_tree_impl" = type { %"class.glslang::pool_allocator", [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.glslang::pool_allocator" = type { ptr }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.glslang::TMap.0" = type { %"class.std::map.1" }
%"class.std::map.1" = type { %"class.std::_Rb_tree.2" }
%"class.std::_Rb_tree.2" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, unsigned int>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, unsigned int>>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>>, glslang::pool_allocator<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, unsigned int>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, unsigned int>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, unsigned int>>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>>, glslang::pool_allocator<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, unsigned int>>>::_Rb_tree_impl" = type { %"class.glslang::pool_allocator.3", [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.glslang::pool_allocator.3" = type { ptr }
%"class.glslang::TParseContext" = type { %"class.glslang::TParseContextBase", i8, ptr, %"class.glslang::TQualifier", [22 x i32], %struct.TBuiltInResource, ptr, [5632 x i32], %"class.glslang::TPrecisionManager", %"class.glslang::TQualifier", %"class.glslang::TQualifier", %"class.glslang::TQualifier", %"class.glslang::TQualifier", %"class.glslang::TQualifier", %"class.std::__cxx11::basic_string", ptr, i8, %"class.std::set", %"class.glslang::TVector.35", %"class.std::map.39", %"class.std::map.39", %"class.glslang::TVector" }
%"class.glslang::TParseContextBase" = type { %"class.glslang::TParseVersions", ptr, ptr, i32, i32, i32, i32, i32, ptr, i8, i8, %"class.glslang::TList", %"class.glslang::TList.5", %"struct.glslang::TPragma", i32, i32, i8, %"class.glslang::TVector", ptr, ptr, %struct.TBuiltInResource, ptr, %"class.std::__cxx11::basic_string", %"class.std::function", %"class.std::function.15", %"class.std::function.17", %"class.std::function.19", %"class.std::function.21", ptr, i32, i32, i32, %"class.glslang::TMap.24", i32, %"class.glslang::TMap.29" }
%"class.glslang::TList" = type { %"class.std::__cxx11::list" }
%"class.std::__cxx11::list" = type { %"class.std::__cxx11::_List_base" }
%"class.std::__cxx11::_List_base" = type { %"struct.std::__cxx11::_List_base<glslang::TVector<TIntermNode *> *, glslang::pool_allocator<glslang::TVector<TIntermNode *> *>>::_List_impl" }
%"struct.std::__cxx11::_List_base<glslang::TVector<TIntermNode *> *, glslang::pool_allocator<glslang::TVector<TIntermNode *> *>>::_List_impl" = type { %"class.glslang::pool_allocator.4", %"struct.std::__detail::_List_node_header" }
%"class.glslang::pool_allocator.4" = type { ptr }
%"struct.std::__detail::_List_node_header" = type { %"struct.std::__detail::_List_node_base", i64 }
%"struct.std::__detail::_List_node_base" = type { ptr, ptr }
%"class.glslang::TList.5" = type { %"class.std::__cxx11::list.6" }
%"class.std::__cxx11::list.6" = type { %"class.std::__cxx11::_List_base.7" }
%"class.std::__cxx11::_List_base.7" = type { %"struct.std::__cxx11::_List_base<int, glslang::pool_allocator<int>>::_List_impl" }
%"struct.std::__cxx11::_List_base<int, glslang::pool_allocator<int>>::_List_impl" = type { %"class.glslang::pool_allocator.8", %"struct.std::__detail::_List_node_header" }
%"class.glslang::pool_allocator.8" = type { ptr }
%"struct.glslang::TPragma" = type { i8, i8, %"class.glslang::TPragmaTable" }
%"class.glslang::TPragmaTable" = type { %"class.glslang::TMap.9" }
%"class.glslang::TMap.9" = type { %"class.std::map.10" }
%"class.std::map.10" = type { %"class.std::_Rb_tree.11" }
%"class.std::_Rb_tree.11" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>>>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>>, glslang::pool_allocator<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>>>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>>, glslang::pool_allocator<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>>>>::_Rb_tree_impl" = type { %"class.glslang::pool_allocator.12", [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.glslang::pool_allocator.12" = type { ptr }
%"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.std::function.15" = type { %"class.std::_Function_base", ptr }
%"class.std::function.17" = type { %"class.std::_Function_base", ptr }
%"class.std::function.19" = type { %"class.std::_Function_base", ptr }
%"class.std::function.21" = type { %"class.std::_Function_base", ptr }
%"class.glslang::TMap.24" = type { %"class.std::map.25" }
%"class.std::map.25" = type { %"class.std::_Rb_tree.26" }
%"class.std::_Rb_tree.26" = type { %"struct.std::_Rb_tree<int, std::pair<const int, glslang::TVariable *>, std::_Select1st<std::pair<const int, glslang::TVariable *>>, std::less<int>, glslang::pool_allocator<std::pair<const int, glslang::TVariable *>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<int, std::pair<const int, glslang::TVariable *>, std::_Select1st<std::pair<const int, glslang::TVariable *>>, std::less<int>, glslang::pool_allocator<std::pair<const int, glslang::TVariable *>>>::_Rb_tree_impl" = type { %"class.glslang::pool_allocator.27", [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.glslang::pool_allocator.27" = type { ptr }
%"class.glslang::TMap.29" = type { %"class.std::map.30" }
%"class.std::map.30" = type { %"class.std::_Rb_tree.31" }
%"class.std::_Rb_tree.31" = type { %"struct.std::_Rb_tree<int, std::pair<const int, int>, std::_Select1st<std::pair<const int, int>>, std::less<int>, glslang::pool_allocator<std::pair<const int, int>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<int, std::pair<const int, int>, std::_Select1st<std::pair<const int, int>>, std::less<int>, glslang::pool_allocator<std::pair<const int, int>>>::_Rb_tree_impl" = type { %"class.glslang::pool_allocator.32", [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.glslang::pool_allocator.32" = type { ptr }
%struct.TBuiltInResource = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, %struct.TLimits }
%struct.TLimits = type { i8, i8, i8, i8, i8, i8, i8, i8, i8 }
%"class.glslang::TPrecisionManager" = type <{ ptr, i8, i8, i8, i8, [4 x i8] }>
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>::_Alloc_hider" = type { %"class.glslang::pool_allocator.14", ptr }
%"class.glslang::pool_allocator.14" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::set" = type { %"class.std::_Rb_tree.33" }
%"class.std::_Rb_tree.33" = type { %"struct.std::_Rb_tree<long long, long long, std::_Identity<long long>, std::less<long long>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<long long, long long, std::_Identity<long long>, std::less<long long>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.glslang::TVector.35" = type { %"class.std::vector.36" }
%"class.std::vector.36" = type { %"struct.std::_Vector_base.37" }
%"struct.std::_Vector_base.37" = type { %"struct.std::_Vector_base<glslang::TIntermTyped *, glslang::pool_allocator<glslang::TIntermTyped *>>::_Vector_impl" }
%"struct.std::_Vector_base<glslang::TIntermTyped *, glslang::pool_allocator<glslang::TIntermTyped *>>::_Vector_impl" = type { %"class.glslang::pool_allocator.38", %"struct.std::_Vector_base<glslang::TIntermTyped *, glslang::pool_allocator<glslang::TIntermTyped *>>::_Vector_impl_data" }
%"class.glslang::pool_allocator.38" = type { ptr }
%"struct.std::_Vector_base<glslang::TIntermTyped *, glslang::pool_allocator<glslang::TIntermTyped *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::map.39" = type { %"class.std::_Rb_tree.40" }
%"class.std::_Rb_tree.40" = type { %"struct.std::_Rb_tree<const glslang::TVector<glslang::TTypeLoc> *, std::pair<const glslang::TVector<glslang::TTypeLoc> *const, std::map<unsigned long, const glslang::TVector<glslang::TTypeLoc> *>>, std::_Select1st<std::pair<const glslang::TVector<glslang::TTypeLoc> *const, std::map<unsigned long, const glslang::TVector<glslang::TTypeLoc> *>>>, std::less<const glslang::TVector<glslang::TTypeLoc> *>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<const glslang::TVector<glslang::TTypeLoc> *, std::pair<const glslang::TVector<glslang::TTypeLoc> *const, std::map<unsigned long, const glslang::TVector<glslang::TTypeLoc> *>>, std::_Select1st<std::pair<const glslang::TVector<glslang::TTypeLoc> *const, std::map<unsigned long, const glslang::TVector<glslang::TTypeLoc> *>>>, std::less<const glslang::TVector<glslang::TTypeLoc> *>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.glslang::TVector" = type { %"class.std::vector" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<glslang::TSymbol *, glslang::pool_allocator<glslang::TSymbol *>>::_Vector_impl" }
%"struct.std::_Vector_base<glslang::TSymbol *, glslang::pool_allocator<glslang::TSymbol *>>::_Vector_impl" = type { %"class.glslang::pool_allocator.13", %"struct.std::_Vector_base<glslang::TSymbol *, glslang::pool_allocator<glslang::TSymbol *>>::_Vector_impl_data" }
%"class.glslang::pool_allocator.13" = type { ptr }
%"struct.std::_Vector_base<glslang::TSymbol *, glslang::pool_allocator<glslang::TSymbol *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.glslang::TTypeLoc" = type { ptr, %"struct.glslang::TSourceLoc" }
%"struct.glslang::TSourceLoc" = type { ptr, i32, i32, i32 }
%"struct.glslang::TSpirvDecorate" = type { %"class.glslang::TMap.201", %"class.glslang::TMap.205", %"class.glslang::TMap.201" }
%"class.glslang::TMap.205" = type { %"class.std::map.206" }
%"class.std::map.206" = type { %"class.std::_Rb_tree.207" }
%"class.std::_Rb_tree.207" = type { %"struct.std::_Rb_tree<int, std::pair<const int, glslang::TVector<const glslang::TIntermTyped *>>, std::_Select1st<std::pair<const int, glslang::TVector<const glslang::TIntermTyped *>>>, std::less<int>, glslang::pool_allocator<std::pair<const int, glslang::TVector<const glslang::TIntermTyped *>>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<int, std::pair<const int, glslang::TVector<const glslang::TIntermTyped *>>, std::_Select1st<std::pair<const int, glslang::TVector<const glslang::TIntermTyped *>>>, std::less<int>, glslang::pool_allocator<std::pair<const int, glslang::TVector<const glslang::TIntermTyped *>>>>::_Rb_tree_impl" = type { %"class.glslang::pool_allocator.208", [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.glslang::pool_allocator.208" = type { ptr }
%"class.glslang::TMap.201" = type { %"class.std::map.202" }
%"class.std::map.202" = type { %"class.std::_Rb_tree.203" }
%"class.std::_Rb_tree.203" = type { %"struct.std::_Rb_tree<int, std::pair<const int, glslang::TVector<const glslang::TIntermConstantUnion *>>, std::_Select1st<std::pair<const int, glslang::TVector<const glslang::TIntermConstantUnion *>>>, std::less<int>, glslang::pool_allocator<std::pair<const int, glslang::TVector<const glslang::TIntermConstantUnion *>>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<int, std::pair<const int, glslang::TVector<const glslang::TIntermConstantUnion *>>, std::_Select1st<std::pair<const int, glslang::TVector<const glslang::TIntermConstantUnion *>>>, std::less<int>, glslang::pool_allocator<std::pair<const int, glslang::TVector<const glslang::TIntermConstantUnion *>>>>::_Rb_tree_impl" = type { %"class.glslang::pool_allocator.204", [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.glslang::pool_allocator.204" = type { ptr }

@.str.2 = external hidden unnamed_addr constant [1 x i8], align 1
@_ZN7glslangL20AEP_shader_io_blocksE = external hidden constant [2 x ptr], align 16
@.str.510 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.511 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.577 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.611 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.615 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.653 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.745 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.831 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.832 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.833 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.834 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.835 = external hidden unnamed_addr constant [86 x i8], align 1
@.str.836 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.837 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.838 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.839 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.840 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.841 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.842 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.843 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.844 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.845 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.846 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.847 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.848 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.849 = external hidden unnamed_addr constant [33 x i8], align 1

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang10TQualifier5clearEv(ptr noundef nonnull align 8 dereferenceable(72)) #0 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang13TParseContext19blockQualifierCheckERKNS_10TSourceLocERKNS_10TQualifierEb(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(72), i1 noundef zeroext) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN7glslang12TSymbolTable4findERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEEPbSA_Pi(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(40), ptr noundef, ptr noundef, ptr noundef) #0 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZNK7glslang5TType9getStructEv(ptr noundef nonnull align 8 dereferenceable(144)) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN7glslang7TSymbolnwEm(i64 noundef) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang5TTypeC2ENS_10TBasicTypeENS_17TStorageQualifierEiiib(ptr noundef nonnull align 8 dereferenceable(144), i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i1 noundef zeroext) unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang9TVariableC2EPKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEERKNS_5TTypeEb(ptr noundef nonnull align 8 dereferenceable(228), ptr noundef, ptr noundef nonnull align 8 dereferenceable(144), i1 noundef zeroext) unnamed_addr #0 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN7glslang7TSymboldlEPv(ptr noundef) #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK7glslang5TType11isReferenceEv(ptr noundef nonnull align 8 dereferenceable(144)) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK7glslang13TParseContext15isIoResizeArrayERKNS_5TTypeE(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(144)) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK7glslang10TQualifier9isPerViewEv(ptr noundef nonnull align 8 dereferenceable(72)) #3 align 2

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

declare void @_ZN7glslang14TParseVersions14requireProfileERKNS_10TSourceLocEiPKc(ptr noundef nonnull align 8 dereferenceable(192), ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, ptr noundef) #4

declare void @_ZN7glslang14TParseVersions15profileRequiresERKNS_10TSourceLocEiiiPKPKcS5_(ptr noundef nonnull align 8 dereferenceable(192), ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef) #4

declare void @_ZN7glslang14TParseVersions15profileRequiresERKNS_10TSourceLocEiiPKcS5_(ptr noundef nonnull align 8 dereferenceable(192), ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, i32 noundef, ptr noundef, ptr noundef) #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(72) ptr @_ZN7glslang5TType12getQualifierEv(ptr noundef nonnull align 8 dereferenceable(144)) unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang13TParseContext23inheritMemoryQualifiersERKNS_10TQualifierERS1_(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(72), ptr noundef nonnull align 8 dereferenceable(72)) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang13TParseContext14fixIoArraySizeERKNS_10TSourceLocERNS_5TTypeE(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(144)) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN7glslang12TSymbolTable14atBuiltInLevelEv(ptr noundef nonnull align 8 dereferenceable(40)) #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang13TParseContext12ioArrayCheckERKNS_10TSourceLocERKNS_5TTypeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEE(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(144), ptr noundef nonnull align 8 dereferenceable(40)) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZNK7glslang5TType25getStorageQualifierStringEv(ptr noundef nonnull align 8 dereferenceable(144)) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang13TParseContext24checkIoArraysConsistencyERKNS_10TSourceLocEb(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(24), i1 noundef zeroext) #0 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32)) #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN7glslang12TSymbolTable6insertERNS_7TSymbolE(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(33)) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang13TParseContext18reservedErrorCheckERKNS_10TSourceLocERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEE(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(40)) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN7glslang13TParseContext11builtInNameERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEE(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(40)) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK7glslang10TQualifier11hasLocationEv(ptr noundef nonnull align 8 dereferenceable(72)) #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang13TParseContext23globalQualifierFixCheckERKNS_10TSourceLocERNS_10TQualifierEb(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(72), i1 noundef zeroext) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK7glslang10TQualifier18hasBufferReferenceEv(ptr noundef nonnull align 8 dereferenceable(72)) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK7glslang10TQualifier15isInterpolationEv(ptr noundef nonnull align 8 dereferenceable(72)) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK7glslang10TQualifier12isTaskMemoryEv(ptr noundef nonnull align 8 dereferenceable(72)) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK7glslang10TQualifier11isAuxiliaryEv(ptr noundef nonnull align 8 dereferenceable(72)) #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang13TParseContext15mergeQualifiersERKNS_10TSourceLocERNS_10TQualifierERKS4_b(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(72), ptr noundef nonnull align 8 dereferenceable(72), i1 noundef zeroext) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang13TParseContext27mergeObjectLayoutQualifiersERNS_10TQualifierERKS1_b(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(72), ptr noundef nonnull align 8 dereferenceable(72), i1 noundef zeroext) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK7glslang10TQualifier16hasSprivDecorateEv(ptr noundef nonnull align 8 dereferenceable(72)) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(168) ptr @_ZN7glslang10TQualifier16getSpirvDecorateEv(ptr noundef nonnull align 8 dereferenceable(72)) #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang13TParseContext15arraySizesCheckERKNS_10TSourceLocERKNS_10TQualifierEPNS_11TArraySizesEPKNS_12TIntermTypedEb(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(72), ptr noundef, ptr noundef, i1 noundef zeroext) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang13TParseContext24arrayOfArrayVersionCheckERKNS_10TSourceLocEPKNS_11TArraySizesE(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang13TParseContext25checkAndResizeMeshViewDimERKNS_10TSourceLocERNS_5TTypeEb(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(144), i1 noundef zeroext) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang13TParseContext21redeclareBuiltinBlockERKNS_10TSourceLocERNS_7TVectorINS_8TTypeLocEEERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEEPSF_PNS_11TArraySizesE(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(40), ptr noundef, ptr noundef) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK7glslang10TQualifier12hasXfbBufferEv(ptr noundef nonnull align 8 dereferenceable(72)) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK7glslang10TQualifier9hasStreamEv(ptr noundef nonnull align 8 dereferenceable(72)) #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang13TParseContext13fixXfbOffsetsERNS_10TQualifierERNS_7TVectorINS_8TTypeLocEEE(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(72), ptr noundef nonnull align 8 dereferenceable(32)) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang13TParseContext15layoutTypeCheckERKNS_10TSourceLocERKNS_5TTypeE(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(144)) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang13TParseContext17layoutObjectCheckERKNS_10TSourceLocERKNS_7TSymbolE(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(33)) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK7glslang10TQualifier10hasPackingEv(ptr noundef nonnull align 8 dereferenceable(72)) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK7glslang10TQualifier8hasAlignEv(ptr noundef nonnull align 8 dereferenceable(72)) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK7glslang10TQualifier9hasOffsetEv(ptr noundef nonnull align 8 dereferenceable(72)) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK7glslang10TQualifier12hasXfbOffsetEv(ptr noundef nonnull align 8 dereferenceable(72)) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK7glslang10TQualifier14isPushConstantEv(ptr noundef nonnull align 8 dereferenceable(72)) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK7glslang10TQualifier14isShaderRecordEv(ptr noundef nonnull align 8 dereferenceable(72)) #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang13TParseContext30layoutMemberLocationArrayCheckERKNS_10TSourceLocEbPNS_11TArraySizesE(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(24), i1 noundef zeroext, ptr noundef) #0 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK7glslang5TType15containsCoopMatEv(ptr noundef nonnull align 8 dereferenceable(144)) #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZN7glslang14NewPoolTStringB5cxx11EPKc(ptr noundef) #6

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN7glslang13TParseContext12declareBlockERKNS_10TSourceLocERNS_7TVectorINS_8TTypeLocEEEPKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEEPNS_11TArraySizesE(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(32) %2, ptr noundef %3, ptr noundef %4) #0 align 2 personality ptr @__gxx_personality_v0 {
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca i32, align 4
  %16 = alloca %"class.glslang::TQualifier", align 8
  %17 = alloca i8, align 1
  %18 = alloca i8, align 1
  %19 = alloca i8, align 1
  %20 = alloca i32, align 4
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca %"class.glslang::TQualifier", align 8
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca %"class.glslang::TType", align 8
  %28 = alloca ptr, align 8
  %29 = alloca i32, align 4
  %30 = alloca %"class.glslang::TType", align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca i32, align 4
  %34 = alloca %"class.glslang::TType", align 8
  %35 = alloca ptr, align 8
  %36 = alloca ptr, align 8
  %37 = alloca ptr, align 8
  %38 = alloca ptr, align 8
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store ptr %2, ptr %8, align 8, !tbaa !5
  store ptr %3, ptr %9, align 8, !tbaa !5
  store ptr %4, ptr %10, align 8, !tbaa !5
  %39 = load ptr, ptr %6, align 8
  %40 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %39, i32 0, i32 6
  %41 = getelementptr inbounds %"struct.glslang::SpvVersion", ptr %40, i32 0, i32 2
  %42 = load i32, ptr %41, align 8, !tbaa !9
  %43 = icmp sgt i32 %42, 0
  br i1 %43, label %44, label %54

44:                                               ; preds = %5
  %45 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %39, i32 0, i32 6
  %46 = getelementptr inbounds %"struct.glslang::SpvVersion", ptr %45, i32 0, i32 4
  %47 = load i8, ptr %46, align 8, !tbaa !33, !range !34, !noundef !35
  %48 = trunc i8 %47 to i1
  br i1 %48, label %49, label %54

49:                                               ; preds = %44
  %50 = load ptr, ptr %7, align 8, !tbaa !5
  %51 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 2
  %52 = load ptr, ptr %51, align 8, !tbaa !36
  %53 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 3
  call void @_ZN7glslang13TParseContext17blockStorageRemapERKNS_10TSourceLocEPKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEERNS_10TQualifierE(ptr noundef nonnull align 8 dereferenceable(24912) %39, ptr noundef nonnull align 8 dereferenceable(24) %50, ptr noundef %52, ptr noundef nonnull align 8 dereferenceable(72) %53)
  br label %54

54:                                               ; preds = %49, %44, %5
  %55 = load ptr, ptr %7, align 8, !tbaa !5
  %56 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 3
  call void @_ZN7glslang13TParseContext17blockStageIoCheckERKNS_10TSourceLocERKNS_10TQualifierE(ptr noundef nonnull align 8 dereferenceable(24912) %39, ptr noundef nonnull align 8 dereferenceable(24) %55, ptr noundef nonnull align 8 dereferenceable(72) %56)
  %57 = load ptr, ptr %7, align 8, !tbaa !5
  %58 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 3
  %59 = load ptr, ptr %9, align 8, !tbaa !5
  %60 = icmp ne ptr %59, null
  call void @_ZN7glslang13TParseContext19blockQualifierCheckERKNS_10TSourceLocERKNS_10TQualifierEb(ptr noundef nonnull align 8 dereferenceable(24912) %39, ptr noundef nonnull align 8 dereferenceable(24) %57, ptr noundef nonnull align 8 dereferenceable(72) %58, i1 noundef zeroext %60)
  %61 = load ptr, ptr %10, align 8, !tbaa !5
  %62 = icmp ne ptr %61, null
  br i1 %62, label %63, label %75

63:                                               ; preds = %54
  %64 = load ptr, ptr %7, align 8, !tbaa !5
  %65 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 3
  %66 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN7glslang13TParseContext15arraySizesCheckERKNS_10TSourceLocERKNS_10TQualifierEPNS_11TArraySizesEPKNS_12TIntermTypedEb(ptr noundef nonnull align 8 dereferenceable(24912) %39, ptr noundef nonnull align 8 dereferenceable(24) %64, ptr noundef nonnull align 8 dereferenceable(72) %65, ptr noundef %66, ptr noundef null, i1 noundef zeroext false)
  %67 = load ptr, ptr %7, align 8, !tbaa !5
  %68 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN7glslang13TParseContext24arrayOfArrayVersionCheckERKNS_10TSourceLocEPKNS_11TArraySizesE(ptr noundef nonnull align 8 dereferenceable(24912) %39, ptr noundef nonnull align 8 dereferenceable(24) %67, ptr noundef %68)
  %69 = load ptr, ptr %10, align 8, !tbaa !5
  %70 = call noundef i32 @_ZNK7glslang11TArraySizes10getNumDimsEv(ptr noundef nonnull align 8 dereferenceable(21) %69)
  %71 = icmp sgt i32 %70, 1
  br i1 %71, label %72, label %74

72:                                               ; preds = %63
  %73 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN7glslang14TParseVersions14requireProfileERKNS_10TSourceLocEiPKc(ptr noundef nonnull align 8 dereferenceable(192) %39, ptr noundef nonnull align 8 dereferenceable(24) %73, i32 noundef -9, ptr noundef @.str.831)
  br label %74

74:                                               ; preds = %72, %63
  br label %75

75:                                               ; preds = %74, %54
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #7
  store i32 0, ptr %11, align 4, !tbaa !111
  br label %76

76:                                               ; preds = %357, %75
  %77 = load i32, ptr %11, align 4, !tbaa !111
  %78 = zext i32 %77 to i64
  %79 = load ptr, ptr %8, align 8, !tbaa !5
  %80 = call noundef i64 @_ZNKSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %79) #7
  %81 = icmp ult i64 %78, %80
  br i1 %81, label %83, label %82

82:                                               ; preds = %76
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #7
  br label %360

83:                                               ; preds = %76
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #7
  %84 = load ptr, ptr %8, align 8, !tbaa !5
  %85 = load i32, ptr %11, align 4, !tbaa !111
  %86 = zext i32 %85 to i64
  %87 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %84, i64 noundef %86) #7
  %88 = getelementptr inbounds %"struct.glslang::TTypeLoc", ptr %87, i32 0, i32 0
  %89 = load ptr, ptr %88, align 8, !tbaa !112
  store ptr %89, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #7
  %90 = load ptr, ptr %12, align 8, !tbaa !5
  %91 = load ptr, ptr %90, align 8, !tbaa !115
  %92 = getelementptr inbounds ptr, ptr %91, i64 10
  %93 = load ptr, ptr %92, align 8
  %94 = call noundef nonnull align 8 dereferenceable(72) ptr %93(ptr noundef nonnull align 8 dereferenceable(144) %90)
  store ptr %94, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #7
  %95 = load ptr, ptr %8, align 8, !tbaa !5
  %96 = load i32, ptr %11, align 4, !tbaa !111
  %97 = zext i32 %96 to i64
  %98 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %95, i64 noundef %97) #7
  %99 = getelementptr inbounds %"struct.glslang::TTypeLoc", ptr %98, i32 0, i32 1
  store ptr %99, ptr %14, align 8, !tbaa !5
  %100 = load ptr, ptr %13, align 8, !tbaa !5
  %101 = getelementptr inbounds %"class.glslang::TQualifier", ptr %100, i32 0, i32 1
  %102 = load i64, ptr %101, align 8
  %103 = and i64 %102, 63
  %104 = trunc i64 %103 to i32
  %105 = icmp ne i32 %104, 0
  br i1 %105, label %106, label %136

106:                                              ; preds = %83
  %107 = load ptr, ptr %13, align 8, !tbaa !5
  %108 = getelementptr inbounds %"class.glslang::TQualifier", ptr %107, i32 0, i32 1
  %109 = load i64, ptr %108, align 8
  %110 = and i64 %109, 63
  %111 = trunc i64 %110 to i32
  %112 = icmp ne i32 %111, 1
  br i1 %112, label %113, label %136

113:                                              ; preds = %106
  %114 = load ptr, ptr %13, align 8, !tbaa !5
  %115 = getelementptr inbounds %"class.glslang::TQualifier", ptr %114, i32 0, i32 1
  %116 = load i64, ptr %115, align 8
  %117 = and i64 %116, 63
  %118 = trunc i64 %117 to i32
  %119 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 3
  %120 = getelementptr inbounds %"class.glslang::TQualifier", ptr %119, i32 0, i32 1
  %121 = load i64, ptr %120, align 8
  %122 = and i64 %121, 63
  %123 = trunc i64 %122 to i32
  %124 = icmp ne i32 %118, %123
  br i1 %124, label %125, label %136

125:                                              ; preds = %113
  %126 = load ptr, ptr %14, align 8, !tbaa !5
  %127 = load ptr, ptr %12, align 8, !tbaa !5
  %128 = load ptr, ptr %127, align 8, !tbaa !115
  %129 = getelementptr inbounds ptr, ptr %128, i64 6
  %130 = load ptr, ptr %129, align 8
  %131 = call noundef nonnull align 8 dereferenceable(40) ptr %130(ptr noundef nonnull align 8 dereferenceable(144) %127)
  %132 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %131) #7
  %133 = load ptr, ptr %39, align 8, !tbaa !115
  %134 = getelementptr inbounds ptr, ptr %133, i64 42
  %135 = load ptr, ptr %134, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %135(ptr noundef nonnull align 8 dereferenceable(1176) %39, ptr noundef nonnull align 8 dereferenceable(24) %126, ptr noundef @.str.832, ptr noundef %132, ptr noundef @.str.2)
  br label %136

136:                                              ; preds = %125, %113, %106, %83
  %137 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 3
  %138 = getelementptr inbounds %"class.glslang::TQualifier", ptr %137, i32 0, i32 1
  %139 = load i64, ptr %138, align 8
  %140 = and i64 %139, 63
  %141 = trunc i64 %140 to i32
  %142 = load ptr, ptr %13, align 8, !tbaa !5
  %143 = getelementptr inbounds %"class.glslang::TQualifier", ptr %142, i32 0, i32 1
  %144 = zext i32 %141 to i64
  %145 = load i64, ptr %143, align 8
  %146 = and i64 %144, 63
  %147 = and i64 %145, -64
  %148 = or i64 %147, %146
  store i64 %148, ptr %143, align 8
  %149 = load ptr, ptr %14, align 8, !tbaa !5
  %150 = load ptr, ptr %13, align 8, !tbaa !5
  call void @_ZN7glslang13TParseContext23globalQualifierFixCheckERKNS_10TSourceLocERNS_10TQualifierEb(ptr noundef nonnull align 8 dereferenceable(24912) %39, ptr noundef nonnull align 8 dereferenceable(24) %149, ptr noundef nonnull align 8 dereferenceable(72) %150, i1 noundef zeroext false)
  %151 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 3
  %152 = load ptr, ptr %13, align 8, !tbaa !5
  call void @_ZN7glslang13TParseContext23inheritMemoryQualifiersERKNS_10TQualifierERS1_(ptr noundef nonnull align 8 dereferenceable(24912) %39, ptr noundef nonnull align 8 dereferenceable(72) %151, ptr noundef nonnull align 8 dereferenceable(72) %152)
  %153 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 3
  %154 = getelementptr inbounds %"class.glslang::TQualifier", ptr %153, i32 0, i32 1
  %155 = load i64, ptr %154, align 8
  %156 = lshr i64 %155, 40
  %157 = and i64 %156, 1
  %158 = trunc i64 %157 to i1
  br i1 %158, label %159, label %173

159:                                              ; preds = %136
  %160 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 3
  %161 = getelementptr inbounds %"class.glslang::TQualifier", ptr %160, i32 0, i32 1
  %162 = load i64, ptr %161, align 8
  %163 = lshr i64 %162, 40
  %164 = and i64 %163, 1
  %165 = trunc i64 %164 to i1
  %166 = load ptr, ptr %13, align 8, !tbaa !5
  %167 = getelementptr inbounds %"class.glslang::TQualifier", ptr %166, i32 0, i32 1
  %168 = zext i1 %165 to i64
  %169 = load i64, ptr %167, align 8
  %170 = shl i64 %168, 40
  %171 = and i64 %169, -1099511627777
  %172 = or i64 %171, %170
  store i64 %172, ptr %167, align 8
  br label %173

173:                                              ; preds = %159, %136
  %174 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 3
  %175 = getelementptr inbounds %"class.glslang::TQualifier", ptr %174, i32 0, i32 1
  %176 = load i64, ptr %175, align 8
  %177 = lshr i64 %176, 41
  %178 = and i64 %177, 1
  %179 = trunc i64 %178 to i1
  br i1 %179, label %180, label %194

180:                                              ; preds = %173
  %181 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 3
  %182 = getelementptr inbounds %"class.glslang::TQualifier", ptr %181, i32 0, i32 1
  %183 = load i64, ptr %182, align 8
  %184 = lshr i64 %183, 41
  %185 = and i64 %184, 1
  %186 = trunc i64 %185 to i1
  %187 = load ptr, ptr %13, align 8, !tbaa !5
  %188 = getelementptr inbounds %"class.glslang::TQualifier", ptr %187, i32 0, i32 1
  %189 = zext i1 %186 to i64
  %190 = load i64, ptr %188, align 8
  %191 = shl i64 %189, 41
  %192 = and i64 %190, -2199023255553
  %193 = or i64 %192, %191
  store i64 %193, ptr %188, align 8
  br label %194

194:                                              ; preds = %180, %173
  %195 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 3
  %196 = getelementptr inbounds %"class.glslang::TQualifier", ptr %195, i32 0, i32 1
  %197 = load i64, ptr %196, align 8
  %198 = lshr i64 %197, 42
  %199 = and i64 %198, 1
  %200 = trunc i64 %199 to i1
  br i1 %200, label %201, label %215

201:                                              ; preds = %194
  %202 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 3
  %203 = getelementptr inbounds %"class.glslang::TQualifier", ptr %202, i32 0, i32 1
  %204 = load i64, ptr %203, align 8
  %205 = lshr i64 %204, 42
  %206 = and i64 %205, 1
  %207 = trunc i64 %206 to i1
  %208 = load ptr, ptr %13, align 8, !tbaa !5
  %209 = getelementptr inbounds %"class.glslang::TQualifier", ptr %208, i32 0, i32 1
  %210 = zext i1 %207 to i64
  %211 = load i64, ptr %209, align 8
  %212 = shl i64 %210, 42
  %213 = and i64 %211, -4398046511105
  %214 = or i64 %213, %212
  store i64 %214, ptr %209, align 8
  br label %215

215:                                              ; preds = %201, %194
  %216 = load ptr, ptr %13, align 8, !tbaa !5
  %217 = getelementptr inbounds %"class.glslang::TQualifier", ptr %216, i32 0, i32 1
  %218 = load i64, ptr %217, align 8
  %219 = and i64 %218, 63
  %220 = trunc i64 %219 to i32
  %221 = icmp eq i32 %220, 8
  br i1 %221, label %222, label %233

222:                                              ; preds = %215
  %223 = load ptr, ptr %14, align 8, !tbaa !5
  %224 = load ptr, ptr %12, align 8, !tbaa !5
  %225 = load ptr, ptr %224, align 8, !tbaa !115
  %226 = getelementptr inbounds ptr, ptr %225, i64 6
  %227 = load ptr, ptr %226, align 8
  %228 = call noundef nonnull align 8 dereferenceable(40) ptr %227(ptr noundef nonnull align 8 dereferenceable(144) %224)
  %229 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %228) #7
  %230 = load ptr, ptr %39, align 8, !tbaa !115
  %231 = getelementptr inbounds ptr, ptr %230, i64 42
  %232 = load ptr, ptr %231, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %232(ptr noundef nonnull align 8 dereferenceable(1176) %39, ptr noundef nonnull align 8 dereferenceable(24) %223, ptr noundef @.str.833, ptr noundef %229, ptr noundef @.str.2)
  br label %233

233:                                              ; preds = %222, %215
  %234 = load ptr, ptr %13, align 8, !tbaa !5
  %235 = call noundef zeroext i1 @_ZNK7glslang10TQualifier16hasSprivDecorateEv(ptr noundef nonnull align 8 dereferenceable(72) %234)
  br i1 %235, label %236, label %252

236:                                              ; preds = %233
  %237 = load ptr, ptr %13, align 8, !tbaa !5
  %238 = call noundef nonnull align 8 dereferenceable(168) ptr @_ZN7glslang10TQualifier16getSpirvDecorateEv(ptr noundef nonnull align 8 dereferenceable(72) %237)
  %239 = getelementptr inbounds %"struct.glslang::TSpirvDecorate", ptr %238, i32 0, i32 1
  %240 = call noundef zeroext i1 @_ZNKSt3mapIiN7glslang7TVectorIPKNS0_12TIntermTypedEEESt4lessIiENS0_14pool_allocatorISt4pairIKiS5_EEEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(56) %239) #7
  br i1 %240, label %252, label %241

241:                                              ; preds = %236
  %242 = load ptr, ptr %14, align 8, !tbaa !5
  %243 = load ptr, ptr %12, align 8, !tbaa !5
  %244 = load ptr, ptr %243, align 8, !tbaa !115
  %245 = getelementptr inbounds ptr, ptr %244, i64 6
  %246 = load ptr, ptr %245, align 8
  %247 = call noundef nonnull align 8 dereferenceable(40) ptr %246(ptr noundef nonnull align 8 dereferenceable(144) %243)
  %248 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %247) #7
  %249 = load ptr, ptr %39, align 8, !tbaa !115
  %250 = getelementptr inbounds ptr, ptr %249, i64 42
  %251 = load ptr, ptr %250, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %251(ptr noundef nonnull align 8 dereferenceable(1176) %39, ptr noundef nonnull align 8 dereferenceable(24) %242, ptr noundef @.str.834, ptr noundef %248, ptr noundef @.str.2)
  br label %252

252:                                              ; preds = %241, %236, %233
  %253 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 3
  %254 = getelementptr inbounds %"class.glslang::TQualifier", ptr %253, i32 0, i32 1
  %255 = load i64, ptr %254, align 8
  %256 = and i64 %255, 63
  %257 = trunc i64 %256 to i32
  %258 = icmp eq i32 %257, 5
  br i1 %258, label %266, label %259

259:                                              ; preds = %252
  %260 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 3
  %261 = getelementptr inbounds %"class.glslang::TQualifier", ptr %260, i32 0, i32 1
  %262 = load i64, ptr %261, align 8
  %263 = and i64 %262, 63
  %264 = trunc i64 %263 to i32
  %265 = icmp eq i32 %264, 6
  br i1 %265, label %266, label %283

266:                                              ; preds = %259, %252
  %267 = load ptr, ptr %13, align 8, !tbaa !5
  %268 = call noundef zeroext i1 @_ZNK7glslang10TQualifier15isInterpolationEv(ptr noundef nonnull align 8 dereferenceable(72) %267)
  br i1 %268, label %272, label %269

269:                                              ; preds = %266
  %270 = load ptr, ptr %13, align 8, !tbaa !5
  %271 = call noundef zeroext i1 @_ZNK7glslang10TQualifier11isAuxiliaryEv(ptr noundef nonnull align 8 dereferenceable(72) %270)
  br i1 %271, label %272, label %283

272:                                              ; preds = %269, %266
  %273 = load ptr, ptr %14, align 8, !tbaa !5
  %274 = load ptr, ptr %12, align 8, !tbaa !5
  %275 = load ptr, ptr %274, align 8, !tbaa !115
  %276 = getelementptr inbounds ptr, ptr %275, i64 6
  %277 = load ptr, ptr %276, align 8
  %278 = call noundef nonnull align 8 dereferenceable(40) ptr %277(ptr noundef nonnull align 8 dereferenceable(144) %274)
  %279 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %278) #7
  %280 = load ptr, ptr %39, align 8, !tbaa !115
  %281 = getelementptr inbounds ptr, ptr %280, i64 42
  %282 = load ptr, ptr %281, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %282(ptr noundef nonnull align 8 dereferenceable(1176) %39, ptr noundef nonnull align 8 dereferenceable(24) %273, ptr noundef @.str.835, ptr noundef %279, ptr noundef @.str.2)
  br label %283

283:                                              ; preds = %272, %269, %259
  %284 = load ptr, ptr %12, align 8, !tbaa !5
  %285 = load ptr, ptr %284, align 8, !tbaa !115
  %286 = getelementptr inbounds ptr, ptr %285, i64 29
  %287 = load ptr, ptr %286, align 8
  %288 = call noundef zeroext i1 %287(ptr noundef nonnull align 8 dereferenceable(144) %284)
  br i1 %288, label %289, label %303

289:                                              ; preds = %283
  %290 = load ptr, ptr %14, align 8, !tbaa !5
  %291 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 3
  %292 = load ptr, ptr %12, align 8, !tbaa !5
  %293 = load ptr, ptr %292, align 8, !tbaa !115
  %294 = getelementptr inbounds ptr, ptr %293, i64 20
  %295 = load ptr, ptr %294, align 8
  %296 = call noundef ptr %295(ptr noundef nonnull align 8 dereferenceable(144) %292)
  %297 = load i32, ptr %11, align 4, !tbaa !111
  %298 = zext i32 %297 to i64
  %299 = load ptr, ptr %8, align 8, !tbaa !5
  %300 = call noundef i64 @_ZNKSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %299) #7
  %301 = sub i64 %300, 1
  %302 = icmp eq i64 %298, %301
  call void @_ZN7glslang13TParseContext15arraySizesCheckERKNS_10TSourceLocERKNS_10TQualifierEPNS_11TArraySizesEPKNS_12TIntermTypedEb(ptr noundef nonnull align 8 dereferenceable(24912) %39, ptr noundef nonnull align 8 dereferenceable(24) %290, ptr noundef nonnull align 8 dereferenceable(72) %291, ptr noundef %296, ptr noundef null, i1 noundef zeroext %302)
  br label %303

303:                                              ; preds = %289, %283
  %304 = load ptr, ptr %13, align 8, !tbaa !5
  %305 = call noundef zeroext i1 @_ZNK7glslang10TQualifier9hasOffsetEv(ptr noundef nonnull align 8 dereferenceable(72) %304)
  br i1 %305, label %306, label %315

306:                                              ; preds = %303
  %307 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %39, i32 0, i32 6
  %308 = getelementptr inbounds %"struct.glslang::SpvVersion", ptr %307, i32 0, i32 0
  %309 = load i32, ptr %308, align 8, !tbaa !117
  %310 = icmp eq i32 %309, 0
  br i1 %310, label %311, label %314

311:                                              ; preds = %306
  %312 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN7glslang14TParseVersions15profileRequiresERKNS_10TSourceLocEiiPKcS5_(ptr noundef nonnull align 8 dereferenceable(192) %39, ptr noundef nonnull align 8 dereferenceable(24) %312, i32 noundef -9, i32 noundef 440, ptr noundef @.str.611, ptr noundef @.str.836)
  %313 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN7glslang14TParseVersions15profileRequiresERKNS_10TSourceLocEiiPKcS5_(ptr noundef nonnull align 8 dereferenceable(192) %39, ptr noundef nonnull align 8 dereferenceable(24) %313, i32 noundef 8, i32 noundef 300, ptr noundef @.str.611, ptr noundef @.str.836)
  br label %314

314:                                              ; preds = %311, %306
  br label %315

315:                                              ; preds = %314, %303
  %316 = load ptr, ptr %12, align 8, !tbaa !5
  %317 = load ptr, ptr %316, align 8, !tbaa !115
  %318 = getelementptr inbounds ptr, ptr %317, i64 49
  %319 = load ptr, ptr %318, align 8
  %320 = call noundef zeroext i1 %319(ptr noundef nonnull align 8 dereferenceable(144) %316)
  br i1 %320, label %321, label %337

321:                                              ; preds = %315
  %322 = load ptr, ptr %14, align 8, !tbaa !5
  %323 = load ptr, ptr %8, align 8, !tbaa !5
  %324 = load i32, ptr %11, align 4, !tbaa !111
  %325 = zext i32 %324 to i64
  %326 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %323, i64 noundef %325) #7
  %327 = getelementptr inbounds %"struct.glslang::TTypeLoc", ptr %326, i32 0, i32 0
  %328 = load ptr, ptr %327, align 8, !tbaa !112
  %329 = load ptr, ptr %328, align 8, !tbaa !115
  %330 = getelementptr inbounds ptr, ptr %329, i64 6
  %331 = load ptr, ptr %330, align 8
  %332 = call noundef nonnull align 8 dereferenceable(40) ptr %331(ptr noundef nonnull align 8 dereferenceable(144) %328)
  %333 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %332) #7
  %334 = load ptr, ptr %39, align 8, !tbaa !115
  %335 = getelementptr inbounds ptr, ptr %334, i64 42
  %336 = load ptr, ptr %335, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %336(ptr noundef nonnull align 8 dereferenceable(1176) %39, ptr noundef nonnull align 8 dereferenceable(24) %322, ptr noundef @.str.837, ptr noundef %333, ptr noundef @.str.2)
  br label %337

337:                                              ; preds = %321, %315
  %338 = load ptr, ptr %12, align 8, !tbaa !5
  %339 = call noundef zeroext i1 @_ZNK7glslang5TType15containsCoopMatEv(ptr noundef nonnull align 8 dereferenceable(144) %338)
  br i1 %339, label %340, label %356

340:                                              ; preds = %337
  %341 = load ptr, ptr %14, align 8, !tbaa !5
  %342 = load ptr, ptr %8, align 8, !tbaa !5
  %343 = load i32, ptr %11, align 4, !tbaa !111
  %344 = zext i32 %343 to i64
  %345 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %342, i64 noundef %344) #7
  %346 = getelementptr inbounds %"struct.glslang::TTypeLoc", ptr %345, i32 0, i32 0
  %347 = load ptr, ptr %346, align 8, !tbaa !112
  %348 = load ptr, ptr %347, align 8, !tbaa !115
  %349 = getelementptr inbounds ptr, ptr %348, i64 6
  %350 = load ptr, ptr %349, align 8
  %351 = call noundef nonnull align 8 dereferenceable(40) ptr %350(ptr noundef nonnull align 8 dereferenceable(144) %347)
  %352 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %351) #7
  %353 = load ptr, ptr %39, align 8, !tbaa !115
  %354 = getelementptr inbounds ptr, ptr %353, i64 42
  %355 = load ptr, ptr %354, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %355(ptr noundef nonnull align 8 dereferenceable(1176) %39, ptr noundef nonnull align 8 dereferenceable(24) %341, ptr noundef @.str.838, ptr noundef %352, ptr noundef @.str.2)
  br label %356

356:                                              ; preds = %340, %337
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #7
  br label %357

357:                                              ; preds = %356
  %358 = load i32, ptr %11, align 4, !tbaa !111
  %359 = add i32 %358, 1
  store i32 %359, ptr %11, align 4, !tbaa !111
  br label %76, !llvm.loop !118

360:                                              ; preds = %82
  %361 = getelementptr inbounds %"class.glslang::TParseContextBase", ptr %39, i32 0, i32 2
  %362 = load ptr, ptr %361, align 8, !tbaa !120
  %363 = call noundef zeroext i1 @_ZN7glslang12TSymbolTable14atBuiltInLevelEv(ptr noundef nonnull align 8 dereferenceable(40) %362)
  br i1 %363, label %375, label %364

364:                                              ; preds = %360
  %365 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 2
  %366 = load ptr, ptr %365, align 8, !tbaa !36
  %367 = call noundef zeroext i1 @_ZN7glslang13TParseContext11builtInNameERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEE(ptr noundef nonnull align 8 dereferenceable(24912) %39, ptr noundef nonnull align 8 dereferenceable(40) %366)
  br i1 %367, label %368, label %375

368:                                              ; preds = %364
  %369 = load ptr, ptr %7, align 8, !tbaa !5
  %370 = load ptr, ptr %8, align 8, !tbaa !5
  %371 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 2
  %372 = load ptr, ptr %371, align 8, !tbaa !36
  %373 = load ptr, ptr %9, align 8, !tbaa !5
  %374 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN7glslang13TParseContext21redeclareBuiltinBlockERKNS_10TSourceLocERNS_7TVectorINS_8TTypeLocEEERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEEPSF_PNS_11TArraySizesE(ptr noundef nonnull align 8 dereferenceable(24912) %39, ptr noundef nonnull align 8 dereferenceable(24) %369, ptr noundef nonnull align 8 dereferenceable(32) %370, ptr noundef nonnull align 8 dereferenceable(40) %372, ptr noundef %373, ptr noundef %374)
  br label %1104

375:                                              ; preds = %364, %360
  %376 = load ptr, ptr %7, align 8, !tbaa !5
  %377 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 2
  %378 = load ptr, ptr %377, align 8, !tbaa !36
  call void @_ZN7glslang13TParseContext18reservedErrorCheckERKNS_10TSourceLocERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEE(ptr noundef nonnull align 8 dereferenceable(24912) %39, ptr noundef nonnull align 8 dereferenceable(24) %376, ptr noundef nonnull align 8 dereferenceable(40) %378)
  %379 = load ptr, ptr %9, align 8, !tbaa !5
  %380 = icmp ne ptr %379, null
  br i1 %380, label %381, label %384

381:                                              ; preds = %375
  %382 = load ptr, ptr %7, align 8, !tbaa !5
  %383 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZN7glslang13TParseContext18reservedErrorCheckERKNS_10TSourceLocERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEE(ptr noundef nonnull align 8 dereferenceable(24912) %39, ptr noundef nonnull align 8 dereferenceable(24) %382, ptr noundef nonnull align 8 dereferenceable(40) %383)
  br label %384

384:                                              ; preds = %381, %375
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #7
  store i32 0, ptr %15, align 4, !tbaa !111
  br label %385

385:                                              ; preds = %408, %384
  %386 = load i32, ptr %15, align 4, !tbaa !111
  %387 = zext i32 %386 to i64
  %388 = load ptr, ptr %8, align 8, !tbaa !5
  %389 = call noundef i64 @_ZNKSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %388) #7
  %390 = icmp ult i64 %387, %389
  br i1 %390, label %392, label %391

391:                                              ; preds = %385
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #7
  br label %411

392:                                              ; preds = %385
  %393 = load ptr, ptr %8, align 8, !tbaa !5
  %394 = load i32, ptr %15, align 4, !tbaa !111
  %395 = zext i32 %394 to i64
  %396 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %393, i64 noundef %395) #7
  %397 = getelementptr inbounds %"struct.glslang::TTypeLoc", ptr %396, i32 0, i32 1
  %398 = load ptr, ptr %8, align 8, !tbaa !5
  %399 = load i32, ptr %15, align 4, !tbaa !111
  %400 = zext i32 %399 to i64
  %401 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %398, i64 noundef %400) #7
  %402 = getelementptr inbounds %"struct.glslang::TTypeLoc", ptr %401, i32 0, i32 0
  %403 = load ptr, ptr %402, align 8, !tbaa !112
  %404 = load ptr, ptr %403, align 8, !tbaa !115
  %405 = getelementptr inbounds ptr, ptr %404, i64 6
  %406 = load ptr, ptr %405, align 8
  %407 = call noundef nonnull align 8 dereferenceable(40) ptr %406(ptr noundef nonnull align 8 dereferenceable(144) %403)
  call void @_ZN7glslang13TParseContext18reservedErrorCheckERKNS_10TSourceLocERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEE(ptr noundef nonnull align 8 dereferenceable(24912) %39, ptr noundef nonnull align 8 dereferenceable(24) %397, ptr noundef nonnull align 8 dereferenceable(40) %407)
  br label %408

408:                                              ; preds = %392
  %409 = load i32, ptr %15, align 4, !tbaa !111
  %410 = add i32 %409, 1
  store i32 %410, ptr %15, align 4, !tbaa !111
  br label %385, !llvm.loop !121

411:                                              ; preds = %391
  call void @llvm.lifetime.start.p0(i64 72, ptr %16) #7
  %412 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 3
  %413 = getelementptr inbounds %"class.glslang::TQualifier", ptr %412, i32 0, i32 1
  %414 = load i64, ptr %413, align 8
  %415 = and i64 %414, 63
  %416 = trunc i64 %415 to i32
  switch i32 %416, label %427 [
    i32 5, label %417
    i32 6, label %419
    i32 3, label %421
    i32 4, label %423
    i32 7, label %425
  ]

417:                                              ; preds = %411
  %418 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 10
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %16, ptr align 8 %418, i64 72, i1 false), !tbaa.struct !122
  br label %428

419:                                              ; preds = %411
  %420 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 9
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %16, ptr align 8 %420, i64 72, i1 false), !tbaa.struct !122
  br label %428

421:                                              ; preds = %411
  %422 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %16, ptr align 8 %422, i64 72, i1 false), !tbaa.struct !122
  br label %428

423:                                              ; preds = %411
  %424 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 12
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %16, ptr align 8 %424, i64 72, i1 false), !tbaa.struct !122
  br label %428

425:                                              ; preds = %411
  %426 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 13
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %16, ptr align 8 %426, i64 72, i1 false), !tbaa.struct !122
  br label %428

427:                                              ; preds = %411
  call void @_ZN7glslang10TQualifier5clearEv(ptr noundef nonnull align 8 dereferenceable(72) %16)
  br label %428

428:                                              ; preds = %427, %425, %423, %421, %419, %417
  %429 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 3
  %430 = call noundef zeroext i1 @_ZNK7glslang10TQualifier14isPushConstantEv(ptr noundef nonnull align 8 dereferenceable(72) %429)
  br i1 %430, label %431, label %434

431:                                              ; preds = %428
  %432 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 3
  %433 = call noundef zeroext i1 @_ZNK7glslang10TQualifier10hasPackingEv(ptr noundef nonnull align 8 dereferenceable(72) %432)
  br i1 %433, label %434, label %440

434:                                              ; preds = %431, %428
  %435 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 3
  %436 = call noundef zeroext i1 @_ZNK7glslang10TQualifier14isShaderRecordEv(ptr noundef nonnull align 8 dereferenceable(72) %435)
  br i1 %436, label %437, label %446

437:                                              ; preds = %434
  %438 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 3
  %439 = call noundef zeroext i1 @_ZNK7glslang10TQualifier10hasPackingEv(ptr noundef nonnull align 8 dereferenceable(72) %438)
  br i1 %439, label %446, label %440

440:                                              ; preds = %437, %431
  %441 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 3
  %442 = getelementptr inbounds %"class.glslang::TQualifier", ptr %441, i32 0, i32 2
  %443 = load i8, ptr %442, align 8
  %444 = and i8 %443, -16
  %445 = or i8 %444, 3
  store i8 %445, ptr %442, align 8
  br label %446

446:                                              ; preds = %440, %437, %434
  %447 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 3
  %448 = call noundef zeroext i1 @_ZNK7glslang10TQualifier12isTaskMemoryEv(ptr noundef nonnull align 8 dereferenceable(72) %447)
  br i1 %448, label %449, label %458

449:                                              ; preds = %446
  %450 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 3
  %451 = call noundef zeroext i1 @_ZNK7glslang10TQualifier10hasPackingEv(ptr noundef nonnull align 8 dereferenceable(72) %450)
  br i1 %451, label %458, label %452

452:                                              ; preds = %449
  %453 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 3
  %454 = getelementptr inbounds %"class.glslang::TQualifier", ptr %453, i32 0, i32 2
  %455 = load i8, ptr %454, align 8
  %456 = and i8 %455, -16
  %457 = or i8 %456, 3
  store i8 %457, ptr %454, align 8
  br label %458

458:                                              ; preds = %452, %449, %446
  %459 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 3
  call void @_ZN7glslang13TParseContext27mergeObjectLayoutQualifiersERNS_10TQualifierERKS1_b(ptr noundef nonnull align 8 dereferenceable(24912) %39, ptr noundef nonnull align 8 dereferenceable(72) %16, ptr noundef nonnull align 8 dereferenceable(72) %459, i1 noundef zeroext true)
  %460 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 3
  %461 = call noundef zeroext i1 @_ZNK7glslang10TQualifier8hasAlignEv(ptr noundef nonnull align 8 dereferenceable(72) %460)
  br i1 %461, label %462, label %487

462:                                              ; preds = %458
  %463 = getelementptr inbounds %"class.glslang::TQualifier", ptr %16, i32 0, i32 2
  %464 = load i8, ptr %463, align 8
  %465 = and i8 %464, 15
  %466 = zext i8 %465 to i32
  %467 = icmp ne i32 %466, 2
  br i1 %467, label %468, label %486

468:                                              ; preds = %462
  %469 = getelementptr inbounds %"class.glslang::TQualifier", ptr %16, i32 0, i32 2
  %470 = load i8, ptr %469, align 8
  %471 = and i8 %470, 15
  %472 = zext i8 %471 to i32
  %473 = icmp ne i32 %472, 3
  br i1 %473, label %474, label %486

474:                                              ; preds = %468
  %475 = getelementptr inbounds %"class.glslang::TQualifier", ptr %16, i32 0, i32 2
  %476 = load i8, ptr %475, align 8
  %477 = and i8 %476, 15
  %478 = zext i8 %477 to i32
  %479 = icmp ne i32 %478, 5
  br i1 %479, label %480, label %486

480:                                              ; preds = %474
  %481 = load ptr, ptr %7, align 8, !tbaa !5
  %482 = load ptr, ptr %39, align 8, !tbaa !115
  %483 = getelementptr inbounds ptr, ptr %482, i64 42
  %484 = load ptr, ptr %483, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %484(ptr noundef nonnull align 8 dereferenceable(1176) %39, ptr noundef nonnull align 8 dereferenceable(24) %481, ptr noundef @.str.839, ptr noundef @.str.615, ptr noundef @.str.2)
  %485 = getelementptr inbounds %"class.glslang::TQualifier", ptr %16, i32 0, i32 5
  store i32 -1, ptr %485, align 8, !tbaa !125
  br label %486

486:                                              ; preds = %480, %474, %468, %462
  br label %487

487:                                              ; preds = %486, %458
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #7
  store i8 0, ptr %17, align 1, !tbaa !124
  call void @llvm.lifetime.start.p0(i64 1, ptr %18) #7
  store i8 0, ptr %18, align 1, !tbaa !124
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #7
  store i8 0, ptr %19, align 1, !tbaa !124
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #7
  store i32 0, ptr %20, align 4, !tbaa !111
  br label %488

488:                                              ; preds = %631, %487
  %489 = load i32, ptr %20, align 4, !tbaa !111
  %490 = zext i32 %489 to i64
  %491 = load ptr, ptr %8, align 8, !tbaa !5
  %492 = call noundef i64 @_ZNKSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %491) #7
  %493 = icmp ult i64 %490, %492
  br i1 %493, label %495, label %494

494:                                              ; preds = %488
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #7
  br label %634

495:                                              ; preds = %488
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #7
  %496 = load ptr, ptr %8, align 8, !tbaa !5
  %497 = load i32, ptr %20, align 4, !tbaa !111
  %498 = zext i32 %497 to i64
  %499 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %496, i64 noundef %498) #7
  %500 = getelementptr inbounds %"struct.glslang::TTypeLoc", ptr %499, i32 0, i32 0
  %501 = load ptr, ptr %500, align 8, !tbaa !112
  %502 = load ptr, ptr %501, align 8, !tbaa !115
  %503 = getelementptr inbounds ptr, ptr %502, i64 10
  %504 = load ptr, ptr %503, align 8
  %505 = call noundef nonnull align 8 dereferenceable(72) ptr %504(ptr noundef nonnull align 8 dereferenceable(144) %501)
  store ptr %505, ptr %21, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #7
  %506 = load ptr, ptr %8, align 8, !tbaa !5
  %507 = load i32, ptr %20, align 4, !tbaa !111
  %508 = zext i32 %507 to i64
  %509 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %506, i64 noundef %508) #7
  %510 = getelementptr inbounds %"struct.glslang::TTypeLoc", ptr %509, i32 0, i32 1
  store ptr %510, ptr %22, align 8, !tbaa !5
  %511 = load ptr, ptr %21, align 8, !tbaa !5
  %512 = call noundef zeroext i1 @_ZNK7glslang10TQualifier9hasStreamEv(ptr noundef nonnull align 8 dereferenceable(72) %511)
  br i1 %512, label %513, label %530

513:                                              ; preds = %495
  %514 = getelementptr inbounds %"class.glslang::TQualifier", ptr %16, i32 0, i32 6
  %515 = load i64, ptr %514, align 4
  %516 = lshr i64 %515, 56
  %517 = trunc i64 %516 to i32
  %518 = load ptr, ptr %21, align 8, !tbaa !5
  %519 = getelementptr inbounds %"class.glslang::TQualifier", ptr %518, i32 0, i32 6
  %520 = load i64, ptr %519, align 4
  %521 = lshr i64 %520, 56
  %522 = trunc i64 %521 to i32
  %523 = icmp ne i32 %517, %522
  br i1 %523, label %524, label %529

524:                                              ; preds = %513
  %525 = load ptr, ptr %22, align 8, !tbaa !5
  %526 = load ptr, ptr %39, align 8, !tbaa !115
  %527 = getelementptr inbounds ptr, ptr %526, i64 42
  %528 = load ptr, ptr %527, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %528(ptr noundef nonnull align 8 dereferenceable(1176) %39, ptr noundef nonnull align 8 dereferenceable(24) %525, ptr noundef @.str.840, ptr noundef @.str.653, ptr noundef @.str.2)
  br label %529

529:                                              ; preds = %524, %513
  br label %530

530:                                              ; preds = %529, %495
  %531 = load ptr, ptr %21, align 8, !tbaa !5
  %532 = call noundef zeroext i1 @_ZNK7glslang10TQualifier12hasXfbBufferEv(ptr noundef nonnull align 8 dereferenceable(72) %531)
  br i1 %532, label %533, label %550

533:                                              ; preds = %530
  %534 = getelementptr inbounds %"class.glslang::TQualifier", ptr %16, i32 0, i32 7
  %535 = load i64, ptr %534, align 4
  %536 = and i64 %535, 15
  %537 = trunc i64 %536 to i32
  %538 = load ptr, ptr %21, align 8, !tbaa !5
  %539 = getelementptr inbounds %"class.glslang::TQualifier", ptr %538, i32 0, i32 7
  %540 = load i64, ptr %539, align 4
  %541 = and i64 %540, 15
  %542 = trunc i64 %541 to i32
  %543 = icmp ne i32 %537, %542
  br i1 %543, label %544, label %549

544:                                              ; preds = %533
  %545 = load ptr, ptr %22, align 8, !tbaa !5
  %546 = load ptr, ptr %39, align 8, !tbaa !115
  %547 = getelementptr inbounds ptr, ptr %546, i64 42
  %548 = load ptr, ptr %547, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %548(ptr noundef nonnull align 8 dereferenceable(1176) %39, ptr noundef nonnull align 8 dereferenceable(24) %545, ptr noundef @.str.510, ptr noundef @.str.511, ptr noundef @.str.2)
  br label %549

549:                                              ; preds = %544, %533
  br label %550

550:                                              ; preds = %549, %530
  %551 = load ptr, ptr %21, align 8, !tbaa !5
  %552 = call noundef zeroext i1 @_ZNK7glslang10TQualifier10hasPackingEv(ptr noundef nonnull align 8 dereferenceable(72) %551)
  br i1 %552, label %553, label %569

553:                                              ; preds = %550
  %554 = load ptr, ptr %22, align 8, !tbaa !5
  %555 = load ptr, ptr %8, align 8, !tbaa !5
  %556 = load i32, ptr %20, align 4, !tbaa !111
  %557 = zext i32 %556 to i64
  %558 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %555, i64 noundef %557) #7
  %559 = getelementptr inbounds %"struct.glslang::TTypeLoc", ptr %558, i32 0, i32 0
  %560 = load ptr, ptr %559, align 8, !tbaa !112
  %561 = load ptr, ptr %560, align 8, !tbaa !115
  %562 = getelementptr inbounds ptr, ptr %561, i64 6
  %563 = load ptr, ptr %562, align 8
  %564 = call noundef nonnull align 8 dereferenceable(40) ptr %563(ptr noundef nonnull align 8 dereferenceable(144) %560)
  %565 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %564) #7
  %566 = load ptr, ptr %39, align 8, !tbaa !115
  %567 = getelementptr inbounds ptr, ptr %566, i64 42
  %568 = load ptr, ptr %567, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %568(ptr noundef nonnull align 8 dereferenceable(1176) %39, ptr noundef nonnull align 8 dereferenceable(24) %554, ptr noundef @.str.841, ptr noundef %565, ptr noundef @.str.2)
  br label %569

569:                                              ; preds = %553, %550
  %570 = load ptr, ptr %21, align 8, !tbaa !5
  %571 = call noundef zeroext i1 @_ZNK7glslang10TQualifier11hasLocationEv(ptr noundef nonnull align 8 dereferenceable(72) %570)
  br i1 %571, label %572, label %592

572:                                              ; preds = %569
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #7
  store ptr @.str.842, ptr %23, align 8, !tbaa !5
  %573 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 3
  %574 = getelementptr inbounds %"class.glslang::TQualifier", ptr %573, i32 0, i32 1
  %575 = load i64, ptr %574, align 8
  %576 = and i64 %575, 63
  %577 = trunc i64 %576 to i32
  switch i32 %577, label %585 [
    i32 3, label %578
    i32 4, label %578
  ]

578:                                              ; preds = %572, %572
  %579 = load ptr, ptr %22, align 8, !tbaa !5
  %580 = load ptr, ptr %23, align 8, !tbaa !5
  call void @_ZN7glslang14TParseVersions14requireProfileERKNS_10TSourceLocEiPKc(ptr noundef nonnull align 8 dereferenceable(192) %39, ptr noundef nonnull align 8 dereferenceable(24) %579, i32 noundef 14, ptr noundef %580)
  %581 = load ptr, ptr %22, align 8, !tbaa !5
  %582 = load ptr, ptr %23, align 8, !tbaa !5
  call void @_ZN7glslang14TParseVersions15profileRequiresERKNS_10TSourceLocEiiPKcS5_(ptr noundef nonnull align 8 dereferenceable(192) %39, ptr noundef nonnull align 8 dereferenceable(24) %581, i32 noundef 6, i32 noundef 440, ptr noundef @.str.611, ptr noundef %582)
  %583 = load ptr, ptr %22, align 8, !tbaa !5
  %584 = load ptr, ptr %23, align 8, !tbaa !5
  call void @_ZN7glslang14TParseVersions15profileRequiresERKNS_10TSourceLocEiiiPKPKcS5_(ptr noundef nonnull align 8 dereferenceable(192) %39, ptr noundef nonnull align 8 dereferenceable(24) %583, i32 noundef 8, i32 noundef 320, i32 noundef 2, ptr noundef @_ZN7glslangL20AEP_shader_io_blocksE, ptr noundef %584)
  store i8 1, ptr %17, align 1, !tbaa !124
  br label %591

585:                                              ; preds = %572
  %586 = load ptr, ptr %22, align 8, !tbaa !5
  %587 = load ptr, ptr %23, align 8, !tbaa !5
  %588 = load ptr, ptr %39, align 8, !tbaa !115
  %589 = getelementptr inbounds ptr, ptr %588, i64 42
  %590 = load ptr, ptr %589, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %590(ptr noundef nonnull align 8 dereferenceable(1176) %39, ptr noundef nonnull align 8 dereferenceable(24) %586, ptr noundef @.str.843, ptr noundef %587, ptr noundef @.str.2)
  br label %591

591:                                              ; preds = %585, %578
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  br label %593

592:                                              ; preds = %569
  store i8 1, ptr %18, align 1, !tbaa !124
  br label %593

593:                                              ; preds = %592, %591
  %594 = load ptr, ptr %21, align 8, !tbaa !5
  %595 = call noundef zeroext i1 @_ZNK7glslang10TQualifier8hasAlignEv(ptr noundef nonnull align 8 dereferenceable(72) %594)
  br i1 %595, label %599, label %596

596:                                              ; preds = %593
  %597 = load ptr, ptr %21, align 8, !tbaa !5
  %598 = call noundef zeroext i1 @_ZNK7glslang10TQualifier9hasOffsetEv(ptr noundef nonnull align 8 dereferenceable(72) %597)
  br i1 %598, label %599, label %623

599:                                              ; preds = %596, %593
  %600 = getelementptr inbounds %"class.glslang::TQualifier", ptr %16, i32 0, i32 2
  %601 = load i8, ptr %600, align 8
  %602 = and i8 %601, 15
  %603 = zext i8 %602 to i32
  %604 = icmp ne i32 %603, 2
  br i1 %604, label %605, label %622

605:                                              ; preds = %599
  %606 = getelementptr inbounds %"class.glslang::TQualifier", ptr %16, i32 0, i32 2
  %607 = load i8, ptr %606, align 8
  %608 = and i8 %607, 15
  %609 = zext i8 %608 to i32
  %610 = icmp ne i32 %609, 3
  br i1 %610, label %611, label %622

611:                                              ; preds = %605
  %612 = getelementptr inbounds %"class.glslang::TQualifier", ptr %16, i32 0, i32 2
  %613 = load i8, ptr %612, align 8
  %614 = and i8 %613, 15
  %615 = zext i8 %614 to i32
  %616 = icmp ne i32 %615, 5
  br i1 %616, label %617, label %622

617:                                              ; preds = %611
  %618 = load ptr, ptr %22, align 8, !tbaa !5
  %619 = load ptr, ptr %39, align 8, !tbaa !115
  %620 = getelementptr inbounds ptr, ptr %619, i64 42
  %621 = load ptr, ptr %620, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %621(ptr noundef nonnull align 8 dereferenceable(1176) %39, ptr noundef nonnull align 8 dereferenceable(24) %618, ptr noundef @.str.839, ptr noundef @.str.844, ptr noundef @.str.2)
  br label %622

622:                                              ; preds = %617, %611, %605, %599
  br label %623

623:                                              ; preds = %622, %596
  %624 = load ptr, ptr %21, align 8, !tbaa !5
  %625 = call noundef zeroext i1 @_ZNK7glslang10TQualifier9isPerViewEv(ptr noundef nonnull align 8 dereferenceable(72) %624)
  br i1 %625, label %626, label %627

626:                                              ; preds = %623
  store i8 1, ptr %19, align 1, !tbaa !124
  br label %627

627:                                              ; preds = %626, %623
  call void @llvm.lifetime.start.p0(i64 72, ptr %24) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %24, ptr align 8 %16, i64 72, i1 false), !tbaa.struct !122
  %628 = load ptr, ptr %22, align 8, !tbaa !5
  %629 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN7glslang13TParseContext15mergeQualifiersERKNS_10TSourceLocERNS_10TQualifierERKS4_b(ptr noundef nonnull align 8 dereferenceable(24912) %39, ptr noundef nonnull align 8 dereferenceable(24) %628, ptr noundef nonnull align 8 dereferenceable(72) %24, ptr noundef nonnull align 8 dereferenceable(72) %629, i1 noundef zeroext false)
  %630 = load ptr, ptr %21, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %630, ptr align 8 %24, i64 72, i1 false), !tbaa.struct !122
  call void @llvm.lifetime.end.p0(i64 72, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #7
  br label %631

631:                                              ; preds = %627
  %632 = load i32, ptr %20, align 4, !tbaa !111
  %633 = add i32 %632, 1
  store i32 %633, ptr %20, align 4, !tbaa !111
  br label %488, !llvm.loop !126

634:                                              ; preds = %494
  %635 = load ptr, ptr %7, align 8, !tbaa !5
  %636 = load i8, ptr %17, align 1, !tbaa !124, !range !34, !noundef !35
  %637 = trunc i8 %636 to i1
  %638 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN7glslang13TParseContext30layoutMemberLocationArrayCheckERKNS_10TSourceLocEbPNS_11TArraySizesE(ptr noundef nonnull align 8 dereferenceable(24912) %39, ptr noundef nonnull align 8 dereferenceable(24) %635, i1 noundef zeroext %637, ptr noundef %638)
  %639 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 3
  %640 = getelementptr inbounds %"class.glslang::TQualifier", ptr %639, i32 0, i32 1
  %641 = load i64, ptr %640, align 8
  %642 = and i64 %641, 63
  %643 = trunc i64 %642 to i32
  %644 = icmp eq i32 %643, 4
  br i1 %644, label %645, label %668

645:                                              ; preds = %634
  %646 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 12
  %647 = call noundef zeroext i1 @_ZNK7glslang10TQualifier12hasXfbBufferEv(ptr noundef nonnull align 8 dereferenceable(72) %646)
  br i1 %647, label %648, label %668

648:                                              ; preds = %645
  %649 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 3
  %650 = call noundef zeroext i1 @_ZNK7glslang10TQualifier12hasXfbBufferEv(ptr noundef nonnull align 8 dereferenceable(72) %649)
  br i1 %650, label %667, label %651

651:                                              ; preds = %648
  %652 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 3
  %653 = call noundef zeroext i1 @_ZNK7glslang10TQualifier12hasXfbOffsetEv(ptr noundef nonnull align 8 dereferenceable(72) %652)
  br i1 %653, label %654, label %667

654:                                              ; preds = %651
  %655 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 12
  %656 = getelementptr inbounds %"class.glslang::TQualifier", ptr %655, i32 0, i32 7
  %657 = load i64, ptr %656, align 4
  %658 = and i64 %657, 15
  %659 = trunc i64 %658 to i32
  %660 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 3
  %661 = getelementptr inbounds %"class.glslang::TQualifier", ptr %660, i32 0, i32 7
  %662 = zext i32 %659 to i64
  %663 = load i64, ptr %661, align 4
  %664 = and i64 %662, 15
  %665 = and i64 %663, -16
  %666 = or i64 %665, %664
  store i64 %666, ptr %661, align 4
  br label %667

667:                                              ; preds = %654, %651, %648
  br label %668

668:                                              ; preds = %667, %645, %634
  %669 = load ptr, ptr %7, align 8, !tbaa !5
  %670 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 3
  %671 = load ptr, ptr %8, align 8, !tbaa !5
  %672 = load i8, ptr %17, align 1, !tbaa !124, !range !34, !noundef !35
  %673 = trunc i8 %672 to i1
  %674 = load i8, ptr %18, align 1, !tbaa !124, !range !34, !noundef !35
  %675 = trunc i8 %674 to i1
  call void @_ZN7glslang13TParseContext17fixBlockLocationsERKNS_10TSourceLocERNS_10TQualifierERNS_7TVectorINS_8TTypeLocEEEbb(ptr noundef nonnull align 8 dereferenceable(24912) %39, ptr noundef nonnull align 8 dereferenceable(24) %669, ptr noundef nonnull align 8 dereferenceable(72) %670, ptr noundef nonnull align 8 dereferenceable(32) %671, i1 noundef zeroext %673, i1 noundef zeroext %675)
  %676 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 3
  %677 = load ptr, ptr %8, align 8, !tbaa !5
  call void @_ZN7glslang13TParseContext13fixXfbOffsetsERNS_10TQualifierERNS_7TVectorINS_8TTypeLocEEE(ptr noundef nonnull align 8 dereferenceable(24912) %39, ptr noundef nonnull align 8 dereferenceable(72) %676, ptr noundef nonnull align 8 dereferenceable(32) %677)
  %678 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 3
  %679 = load ptr, ptr %8, align 8, !tbaa !5
  call void @_ZN7glslang13TParseContext22fixBlockUniformOffsetsERNS_10TQualifierERNS_7TVectorINS_8TTypeLocEEE(ptr noundef nonnull align 8 dereferenceable(24912) %39, ptr noundef nonnull align 8 dereferenceable(72) %678, ptr noundef nonnull align 8 dereferenceable(32) %679)
  %680 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 3
  %681 = load ptr, ptr %8, align 8, !tbaa !5
  call void @_ZN7glslang13TParseContext27fixBlockUniformLayoutMatrixERNS_10TQualifierEPNS_7TVectorINS_8TTypeLocEEES6_(ptr noundef nonnull align 8 dereferenceable(24912) %39, ptr noundef nonnull align 8 dereferenceable(72) %680, ptr noundef %681, ptr noundef null)
  %682 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 3
  %683 = load ptr, ptr %8, align 8, !tbaa !5
  call void @_ZN7glslang13TParseContext28fixBlockUniformLayoutPackingERNS_10TQualifierEPNS_7TVectorINS_8TTypeLocEEES6_(ptr noundef nonnull align 8 dereferenceable(24912) %39, ptr noundef nonnull align 8 dereferenceable(72) %682, ptr noundef %683, ptr noundef null)
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #7
  store i32 0, ptr %25, align 4, !tbaa !111
  br label %684

684:                                              ; preds = %703, %668
  %685 = load i32, ptr %25, align 4, !tbaa !111
  %686 = zext i32 %685 to i64
  %687 = load ptr, ptr %8, align 8, !tbaa !5
  %688 = call noundef i64 @_ZNKSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %687) #7
  %689 = icmp ult i64 %686, %688
  br i1 %689, label %691, label %690

690:                                              ; preds = %684
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #7
  br label %706

691:                                              ; preds = %684
  %692 = load ptr, ptr %8, align 8, !tbaa !5
  %693 = load i32, ptr %25, align 4, !tbaa !111
  %694 = zext i32 %693 to i64
  %695 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %692, i64 noundef %694) #7
  %696 = getelementptr inbounds %"struct.glslang::TTypeLoc", ptr %695, i32 0, i32 1
  %697 = load ptr, ptr %8, align 8, !tbaa !5
  %698 = load i32, ptr %25, align 4, !tbaa !111
  %699 = zext i32 %698 to i64
  %700 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %697, i64 noundef %699) #7
  %701 = getelementptr inbounds %"struct.glslang::TTypeLoc", ptr %700, i32 0, i32 0
  %702 = load ptr, ptr %701, align 8, !tbaa !112
  call void @_ZN7glslang13TParseContext15layoutTypeCheckERKNS_10TSourceLocERKNS_5TTypeE(ptr noundef nonnull align 8 dereferenceable(24912) %39, ptr noundef nonnull align 8 dereferenceable(24) %696, ptr noundef nonnull align 8 dereferenceable(144) %702)
  br label %703

703:                                              ; preds = %691
  %704 = load i32, ptr %25, align 4, !tbaa !111
  %705 = add i32 %704, 1
  store i32 %705, ptr %25, align 4, !tbaa !111
  br label %684, !llvm.loop !127

706:                                              ; preds = %690
  %707 = load i8, ptr %19, align 1, !tbaa !124, !range !34, !noundef !35
  %708 = trunc i8 %707 to i1
  br i1 %708, label %709, label %733

709:                                              ; preds = %706
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #7
  store i32 0, ptr %26, align 4, !tbaa !111
  br label %710

710:                                              ; preds = %729, %709
  %711 = load i32, ptr %26, align 4, !tbaa !111
  %712 = zext i32 %711 to i64
  %713 = load ptr, ptr %8, align 8, !tbaa !5
  %714 = call noundef i64 @_ZNKSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %713) #7
  %715 = icmp ult i64 %712, %714
  br i1 %715, label %717, label %716

716:                                              ; preds = %710
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #7
  br label %732

717:                                              ; preds = %710
  %718 = load ptr, ptr %8, align 8, !tbaa !5
  %719 = load i32, ptr %26, align 4, !tbaa !111
  %720 = zext i32 %719 to i64
  %721 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %718, i64 noundef %720) #7
  %722 = getelementptr inbounds %"struct.glslang::TTypeLoc", ptr %721, i32 0, i32 1
  %723 = load ptr, ptr %8, align 8, !tbaa !5
  %724 = load i32, ptr %26, align 4, !tbaa !111
  %725 = zext i32 %724 to i64
  %726 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %723, i64 noundef %725) #7
  %727 = getelementptr inbounds %"struct.glslang::TTypeLoc", ptr %726, i32 0, i32 0
  %728 = load ptr, ptr %727, align 8, !tbaa !112
  call void @_ZN7glslang13TParseContext25checkAndResizeMeshViewDimERKNS_10TSourceLocERNS_5TTypeEb(ptr noundef nonnull align 8 dereferenceable(24912) %39, ptr noundef nonnull align 8 dereferenceable(24) %722, ptr noundef nonnull align 8 dereferenceable(144) %728, i1 noundef zeroext true)
  br label %729

729:                                              ; preds = %717
  %730 = load i32, ptr %26, align 4, !tbaa !111
  %731 = add i32 %730, 1
  store i32 %731, ptr %26, align 4, !tbaa !111
  br label %710, !llvm.loop !128

732:                                              ; preds = %716
  br label %733

733:                                              ; preds = %732, %706
  %734 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 3
  call void @_ZN7glslang13TParseContext27mergeObjectLayoutQualifiersERNS_10TQualifierERKS1_b(ptr noundef nonnull align 8 dereferenceable(24912) %39, ptr noundef nonnull align 8 dereferenceable(72) %734, ptr noundef nonnull align 8 dereferenceable(72) %16, i1 noundef zeroext true)
  call void @llvm.lifetime.start.p0(i64 144, ptr %27) #7
  %735 = load ptr, ptr %8, align 8, !tbaa !5
  %736 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 2
  %737 = load ptr, ptr %736, align 8, !tbaa !36
  %738 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 3
  call void @_ZN7glslang5TTypeC2EPNS_7TVectorINS_8TTypeLocEEERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEERKNS_10TQualifierE(ptr noundef nonnull align 8 dereferenceable(144) %27, ptr noundef %735, ptr noundef nonnull align 8 dereferenceable(40) %737, ptr noundef nonnull align 8 dereferenceable(72) %738)
  %739 = load ptr, ptr %10, align 8, !tbaa !5
  %740 = icmp ne ptr %739, null
  br i1 %740, label %741, label %748

741:                                              ; preds = %733
  %742 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN7glslang5TType18transferArraySizesEPNS_11TArraySizesE(ptr noundef nonnull align 8 dereferenceable(144) %27, ptr noundef %742)
          to label %743 unwind label %744

743:                                              ; preds = %741
  br label %748

744:                                              ; preds = %1022, %774, %763, %760, %741
  %745 = landingpad { ptr, i32 }
          cleanup
  %746 = extractvalue { ptr, i32 } %745, 0
  store ptr %746, ptr %28, align 8
  %747 = extractvalue { ptr, i32 } %745, 1
  store i32 %747, ptr %29, align 4
  br label %1106

748:                                              ; preds = %743, %733
  %749 = load ptr, ptr %10, align 8, !tbaa !5
  %750 = icmp eq ptr %749, null
  br i1 %750, label %751, label %763

751:                                              ; preds = %748
  %752 = load ptr, ptr %7, align 8, !tbaa !5
  %753 = load ptr, ptr %9, align 8, !tbaa !5
  %754 = icmp ne ptr %753, null
  br i1 %754, label %755, label %757

755:                                              ; preds = %751
  %756 = load ptr, ptr %9, align 8, !tbaa !5
  br label %760

757:                                              ; preds = %751
  %758 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 2
  %759 = load ptr, ptr %758, align 8, !tbaa !36
  br label %760

760:                                              ; preds = %757, %755
  %761 = phi ptr [ %756, %755 ], [ %759, %757 ]
  invoke void @_ZN7glslang13TParseContext12ioArrayCheckERKNS_10TSourceLocERKNS_5TTypeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEE(ptr noundef nonnull align 8 dereferenceable(24912) %39, ptr noundef nonnull align 8 dereferenceable(24) %752, ptr noundef nonnull align 8 dereferenceable(144) %27, ptr noundef nonnull align 8 dereferenceable(40) %761)
          to label %762 unwind label %744

762:                                              ; preds = %760
  br label %763

763:                                              ; preds = %762, %748
  %764 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 3
  %765 = invoke noundef zeroext i1 @_ZNK7glslang10TQualifier18hasBufferReferenceEv(ptr noundef nonnull align 8 dereferenceable(72) %764)
          to label %766 unwind label %744

766:                                              ; preds = %763
  br i1 %765, label %767, label %912

767:                                              ; preds = %766
  %768 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 3
  %769 = getelementptr inbounds %"class.glslang::TQualifier", ptr %768, i32 0, i32 1
  %770 = load i64, ptr %769, align 8
  %771 = and i64 %770, 63
  %772 = trunc i64 %771 to i32
  %773 = icmp ne i32 %772, 6
  br i1 %773, label %774, label %780

774:                                              ; preds = %767
  %775 = load ptr, ptr %7, align 8, !tbaa !5
  %776 = load ptr, ptr %39, align 8, !tbaa !115
  %777 = getelementptr inbounds ptr, ptr %776, i64 42
  %778 = load ptr, ptr %777, align 8
  invoke void (ptr, ptr, ptr, ptr, ptr, ...) %778(ptr noundef nonnull align 8 dereferenceable(1176) %39, ptr noundef nonnull align 8 dereferenceable(24) %775, ptr noundef @.str.745, ptr noundef @.str.577, ptr noundef @.str.2)
          to label %779 unwind label %744

779:                                              ; preds = %774
  br label %780

780:                                              ; preds = %779, %767
  call void @llvm.lifetime.start.p0(i64 144, ptr %30) #7
  %781 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 2
  %782 = load ptr, ptr %781, align 8, !tbaa !36
  invoke void @_ZN7glslang5TTypeC2ENS_10TBasicTypeERKS0_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEE(ptr noundef nonnull align 8 dereferenceable(144) %30, i32 noundef 18, ptr noundef nonnull align 8 dereferenceable(144) %27, ptr noundef nonnull align 8 dereferenceable(40) %782)
          to label %783 unwind label %876

783:                                              ; preds = %780
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #7
  %784 = invoke noundef ptr @_ZN7glslang7TSymbolnwEm(i64 noundef 232)
          to label %785 unwind label %880

785:                                              ; preds = %783
  %786 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 2
  %787 = load ptr, ptr %786, align 8, !tbaa !36
  invoke void @_ZN7glslang9TVariableC2EPKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEERKNS_5TTypeEb(ptr noundef nonnull align 8 dereferenceable(228) %784, ptr noundef %787, ptr noundef nonnull align 8 dereferenceable(144) %30, i1 noundef zeroext true)
          to label %788 unwind label %884

788:                                              ; preds = %785
  store ptr %784, ptr %31, align 8, !tbaa !5
  %789 = getelementptr inbounds %"class.glslang::TParseContextBase", ptr %39, i32 0, i32 2
  %790 = load ptr, ptr %789, align 8, !tbaa !120
  %791 = load ptr, ptr %31, align 8, !tbaa !5
  %792 = invoke noundef zeroext i1 @_ZN7glslang12TSymbolTable6insertERNS_7TSymbolE(ptr noundef nonnull align 8 dereferenceable(40) %790, ptr noundef nonnull align 8 dereferenceable(33) %791)
          to label %793 unwind label %880

793:                                              ; preds = %788
  br i1 %792, label %902, label %794

794:                                              ; preds = %793
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #7
  %795 = getelementptr inbounds %"class.glslang::TParseContextBase", ptr %39, i32 0, i32 2
  %796 = load ptr, ptr %795, align 8, !tbaa !120
  %797 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 2
  %798 = load ptr, ptr %797, align 8, !tbaa !36
  %799 = invoke noundef ptr @_ZN7glslang12TSymbolTable4findERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEEPbSA_Pi(ptr noundef nonnull align 8 dereferenceable(40) %796, ptr noundef nonnull align 8 dereferenceable(40) %798, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %800 unwind label %888

800:                                              ; preds = %794
  store ptr %799, ptr %32, align 8, !tbaa !5
  %801 = load ptr, ptr %32, align 8, !tbaa !5
  %802 = load ptr, ptr %801, align 8, !tbaa !115
  %803 = getelementptr inbounds ptr, ptr %802, i64 12
  %804 = load ptr, ptr %803, align 8
  %805 = invoke noundef nonnull align 8 dereferenceable(144) ptr %804(ptr noundef nonnull align 8 dereferenceable(33) %801)
          to label %806 unwind label %888

806:                                              ; preds = %800
  %807 = invoke noundef zeroext i1 @_ZNK7glslang5TType11isReferenceEv(ptr noundef nonnull align 8 dereferenceable(144) %805)
          to label %808 unwind label %888

808:                                              ; preds = %806
  br i1 %807, label %809, label %892

809:                                              ; preds = %808
  %810 = load ptr, ptr %32, align 8, !tbaa !5
  %811 = load ptr, ptr %810, align 8, !tbaa !115
  %812 = getelementptr inbounds ptr, ptr %811, i64 12
  %813 = load ptr, ptr %812, align 8
  %814 = invoke noundef nonnull align 8 dereferenceable(144) ptr %813(ptr noundef nonnull align 8 dereferenceable(33) %810)
          to label %815 unwind label %888

815:                                              ; preds = %809
  %816 = load ptr, ptr %814, align 8, !tbaa !115
  %817 = getelementptr inbounds ptr, ptr %816, i64 21
  %818 = load ptr, ptr %817, align 8
  %819 = invoke noundef ptr %818(ptr noundef nonnull align 8 dereferenceable(144) %814)
          to label %820 unwind label %888

820:                                              ; preds = %815
  %821 = invoke noundef ptr @_ZNK7glslang5TType9getStructEv(ptr noundef nonnull align 8 dereferenceable(144) %819)
          to label %822 unwind label %888

822:                                              ; preds = %820
  %823 = icmp ne ptr %821, null
  br i1 %823, label %824, label %892

824:                                              ; preds = %822
  %825 = load ptr, ptr %32, align 8, !tbaa !5
  %826 = load ptr, ptr %825, align 8, !tbaa !115
  %827 = getelementptr inbounds ptr, ptr %826, i64 12
  %828 = load ptr, ptr %827, align 8
  %829 = invoke noundef nonnull align 8 dereferenceable(144) ptr %828(ptr noundef nonnull align 8 dereferenceable(33) %825)
          to label %830 unwind label %888

830:                                              ; preds = %824
  %831 = load ptr, ptr %829, align 8, !tbaa !115
  %832 = getelementptr inbounds ptr, ptr %831, i64 21
  %833 = load ptr, ptr %832, align 8
  %834 = invoke noundef ptr %833(ptr noundef nonnull align 8 dereferenceable(144) %829)
          to label %835 unwind label %888

835:                                              ; preds = %830
  %836 = invoke noundef ptr @_ZNK7glslang5TType9getStructEv(ptr noundef nonnull align 8 dereferenceable(144) %834)
          to label %837 unwind label %888

837:                                              ; preds = %835
  %838 = call noundef i64 @_ZNKSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %836) #7
  %839 = icmp eq i64 %838, 0
  br i1 %839, label %840, label %892

840:                                              ; preds = %837
  %841 = load ptr, ptr %32, align 8, !tbaa !5
  %842 = load ptr, ptr %841, align 8, !tbaa !115
  %843 = getelementptr inbounds ptr, ptr %842, i64 12
  %844 = load ptr, ptr %843, align 8
  %845 = invoke noundef nonnull align 8 dereferenceable(144) ptr %844(ptr noundef nonnull align 8 dereferenceable(33) %841)
          to label %846 unwind label %888

846:                                              ; preds = %840
  %847 = load ptr, ptr %845, align 8, !tbaa !115
  %848 = getelementptr inbounds ptr, ptr %847, i64 11
  %849 = load ptr, ptr %848, align 8
  %850 = invoke noundef nonnull align 8 dereferenceable(72) ptr %849(ptr noundef nonnull align 8 dereferenceable(144) %845)
          to label %851 unwind label %888

851:                                              ; preds = %846
  %852 = getelementptr inbounds %"class.glslang::TQualifier", ptr %850, i32 0, i32 1
  %853 = load i64, ptr %852, align 8
  %854 = and i64 %853, 63
  %855 = trunc i64 %854 to i32
  %856 = invoke noundef nonnull align 8 dereferenceable(72) ptr @_ZN7glslang5TType12getQualifierEv(ptr noundef nonnull align 8 dereferenceable(144) %27)
          to label %857 unwind label %888

857:                                              ; preds = %851
  %858 = getelementptr inbounds %"class.glslang::TQualifier", ptr %856, i32 0, i32 1
  %859 = load i64, ptr %858, align 8
  %860 = and i64 %859, 63
  %861 = trunc i64 %860 to i32
  %862 = icmp eq i32 %855, %861
  br i1 %862, label %863, label %892

863:                                              ; preds = %857
  %864 = load ptr, ptr %32, align 8, !tbaa !5
  %865 = load ptr, ptr %864, align 8, !tbaa !115
  %866 = getelementptr inbounds ptr, ptr %865, i64 12
  %867 = load ptr, ptr %866, align 8
  %868 = invoke noundef nonnull align 8 dereferenceable(144) ptr %867(ptr noundef nonnull align 8 dereferenceable(33) %864)
          to label %869 unwind label %888

869:                                              ; preds = %863
  %870 = load ptr, ptr %868, align 8, !tbaa !115
  %871 = getelementptr inbounds ptr, ptr %870, i64 21
  %872 = load ptr, ptr %871, align 8
  %873 = invoke noundef ptr %872(ptr noundef nonnull align 8 dereferenceable(144) %868)
          to label %874 unwind label %888

874:                                              ; preds = %869
  invoke void @_ZN7glslang5TType8deepCopyERKS0_(ptr noundef nonnull align 8 dereferenceable(144) %873, ptr noundef nonnull align 8 dereferenceable(144) %27)
          to label %875 unwind label %888

875:                                              ; preds = %874
  br label %901

876:                                              ; preds = %780
  %877 = landingpad { ptr, i32 }
          cleanup
  %878 = extractvalue { ptr, i32 } %877, 0
  store ptr %878, ptr %28, align 8
  %879 = extractvalue { ptr, i32 } %877, 1
  store i32 %879, ptr %29, align 4
  br label %911

880:                                              ; preds = %788, %783
  %881 = landingpad { ptr, i32 }
          cleanup
  %882 = extractvalue { ptr, i32 } %881, 0
  store ptr %882, ptr %28, align 8
  %883 = extractvalue { ptr, i32 } %881, 1
  store i32 %883, ptr %29, align 4
  br label %910

884:                                              ; preds = %785
  %885 = landingpad { ptr, i32 }
          cleanup
  %886 = extractvalue { ptr, i32 } %885, 0
  store ptr %886, ptr %28, align 8
  %887 = extractvalue { ptr, i32 } %885, 1
  store i32 %887, ptr %29, align 4
  call void @_ZN7glslang7TSymboldlEPv(ptr noundef %784) #7
  br label %910

888:                                              ; preds = %892, %874, %869, %863, %851, %846, %840, %835, %830, %824, %820, %815, %809, %806, %800, %794
  %889 = landingpad { ptr, i32 }
          cleanup
  %890 = extractvalue { ptr, i32 } %889, 0
  store ptr %890, ptr %28, align 8
  %891 = extractvalue { ptr, i32 } %889, 1
  store i32 %891, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #7
  br label %910

892:                                              ; preds = %857, %837, %822, %808
  %893 = load ptr, ptr %7, align 8, !tbaa !5
  %894 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 2
  %895 = load ptr, ptr %894, align 8, !tbaa !36
  %896 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %895) #7
  %897 = load ptr, ptr %39, align 8, !tbaa !115
  %898 = getelementptr inbounds ptr, ptr %897, i64 42
  %899 = load ptr, ptr %898, align 8
  invoke void (ptr, ptr, ptr, ptr, ptr, ...) %899(ptr noundef nonnull align 8 dereferenceable(1176) %39, ptr noundef nonnull align 8 dereferenceable(24) %893, ptr noundef @.str.845, ptr noundef %896, ptr noundef @.str.2)
          to label %900 unwind label %888

900:                                              ; preds = %892
  br label %901

901:                                              ; preds = %900, %875
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #7
  br label %902

902:                                              ; preds = %901, %793
  %903 = load ptr, ptr %9, align 8, !tbaa !5
  %904 = icmp ne ptr %903, null
  br i1 %904, label %906, label %905

905:                                              ; preds = %902
  store i32 1, ptr %33, align 4
  br label %907

906:                                              ; preds = %902
  store i32 0, ptr %33, align 4
  br label %907

907:                                              ; preds = %906, %905
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #7
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %30) #7
  call void @llvm.lifetime.end.p0(i64 144, ptr %30) #7
  %908 = load i32, ptr %33, align 4
  switch i32 %908, label %1102 [
    i32 0, label %909
  ]

909:                                              ; preds = %907
  br label %1019

910:                                              ; preds = %888, %884, %880
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #7
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %30) #7
  br label %911

911:                                              ; preds = %910, %876
  call void @llvm.lifetime.end.p0(i64 144, ptr %30) #7
  br label %1106

912:                                              ; preds = %766
  call void @llvm.lifetime.start.p0(i64 144, ptr %34) #7
  %913 = invoke noundef nonnull align 8 dereferenceable(72) ptr @_ZN7glslang5TType12getQualifierEv(ptr noundef nonnull align 8 dereferenceable(144) %27)
          to label %914 unwind label %983

914:                                              ; preds = %912
  %915 = getelementptr inbounds %"class.glslang::TQualifier", ptr %913, i32 0, i32 1
  %916 = load i64, ptr %915, align 8
  %917 = and i64 %916, 63
  %918 = trunc i64 %917 to i32
  invoke void @_ZN7glslang5TTypeC2ENS_10TBasicTypeENS_17TStorageQualifierEiiib(ptr noundef nonnull align 8 dereferenceable(144) %34, i32 noundef 16, i32 noundef %918, i32 noundef 1, i32 noundef 0, i32 noundef 0, i1 noundef zeroext false)
          to label %919 unwind label %983

919:                                              ; preds = %914
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #7
  %920 = invoke noundef ptr @_ZN7glslang7TSymbolnwEm(i64 noundef 232)
          to label %921 unwind label %987

921:                                              ; preds = %919
  %922 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 2
  %923 = load ptr, ptr %922, align 8, !tbaa !36
  invoke void @_ZN7glslang9TVariableC2EPKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEERKNS_5TTypeEb(ptr noundef nonnull align 8 dereferenceable(228) %920, ptr noundef %923, ptr noundef nonnull align 8 dereferenceable(144) %34, i1 noundef zeroext false)
          to label %924 unwind label %991

924:                                              ; preds = %921
  store ptr %920, ptr %35, align 8, !tbaa !5
  %925 = getelementptr inbounds %"class.glslang::TParseContextBase", ptr %39, i32 0, i32 2
  %926 = load ptr, ptr %925, align 8, !tbaa !120
  %927 = load ptr, ptr %35, align 8, !tbaa !5
  %928 = invoke noundef zeroext i1 @_ZN7glslang12TSymbolTable6insertERNS_7TSymbolE(ptr noundef nonnull align 8 dereferenceable(40) %926, ptr noundef nonnull align 8 dereferenceable(33) %927)
          to label %929 unwind label %987

929:                                              ; preds = %924
  br i1 %928, label %1013, label %930

930:                                              ; preds = %929
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #7
  %931 = getelementptr inbounds %"class.glslang::TParseContextBase", ptr %39, i32 0, i32 2
  %932 = load ptr, ptr %931, align 8, !tbaa !120
  %933 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 2
  %934 = load ptr, ptr %933, align 8, !tbaa !36
  %935 = invoke noundef ptr @_ZN7glslang12TSymbolTable4findERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEEPbSA_Pi(ptr noundef nonnull align 8 dereferenceable(40) %932, ptr noundef nonnull align 8 dereferenceable(40) %934, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %936 unwind label %995

936:                                              ; preds = %930
  store ptr %935, ptr %36, align 8, !tbaa !5
  %937 = load ptr, ptr %36, align 8, !tbaa !5
  %938 = load ptr, ptr %937, align 8, !tbaa !115
  %939 = getelementptr inbounds ptr, ptr %938, i64 12
  %940 = load ptr, ptr %939, align 8
  %941 = invoke noundef nonnull align 8 dereferenceable(144) ptr %940(ptr noundef nonnull align 8 dereferenceable(33) %937)
          to label %942 unwind label %995

942:                                              ; preds = %936
  %943 = load ptr, ptr %941, align 8, !tbaa !115
  %944 = getelementptr inbounds ptr, ptr %943, i64 7
  %945 = load ptr, ptr %944, align 8
  %946 = invoke noundef i32 %945(ptr noundef nonnull align 8 dereferenceable(144) %941)
          to label %947 unwind label %995

947:                                              ; preds = %942
  %948 = icmp eq i32 %946, 16
  br i1 %948, label %949, label %1000

949:                                              ; preds = %947
  %950 = load ptr, ptr %36, align 8, !tbaa !5
  %951 = load ptr, ptr %950, align 8, !tbaa !115
  %952 = getelementptr inbounds ptr, ptr %951, i64 12
  %953 = load ptr, ptr %952, align 8
  %954 = invoke noundef nonnull align 8 dereferenceable(144) ptr %953(ptr noundef nonnull align 8 dereferenceable(33) %950)
          to label %955 unwind label %995

955:                                              ; preds = %949
  %956 = load ptr, ptr %954, align 8, !tbaa !115
  %957 = getelementptr inbounds ptr, ptr %956, i64 11
  %958 = load ptr, ptr %957, align 8
  %959 = invoke noundef nonnull align 8 dereferenceable(72) ptr %958(ptr noundef nonnull align 8 dereferenceable(144) %954)
          to label %960 unwind label %995

960:                                              ; preds = %955
  %961 = getelementptr inbounds %"class.glslang::TQualifier", ptr %959, i32 0, i32 1
  %962 = load i64, ptr %961, align 8
  %963 = and i64 %962, 63
  %964 = trunc i64 %963 to i32
  %965 = invoke noundef nonnull align 8 dereferenceable(72) ptr @_ZN7glslang5TType12getQualifierEv(ptr noundef nonnull align 8 dereferenceable(144) %27)
          to label %966 unwind label %995

966:                                              ; preds = %960
  %967 = getelementptr inbounds %"class.glslang::TQualifier", ptr %965, i32 0, i32 1
  %968 = load i64, ptr %967, align 8
  %969 = and i64 %968, 63
  %970 = trunc i64 %969 to i32
  %971 = icmp eq i32 %964, %970
  br i1 %971, label %972, label %999

972:                                              ; preds = %966
  %973 = load ptr, ptr %7, align 8, !tbaa !5
  %974 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 2
  %975 = load ptr, ptr %974, align 8, !tbaa !36
  %976 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %975) #7
  %977 = invoke noundef ptr @_ZNK7glslang5TType25getStorageQualifierStringEv(ptr noundef nonnull align 8 dereferenceable(144) %27)
          to label %978 unwind label %995

978:                                              ; preds = %972
  %979 = load ptr, ptr %39, align 8, !tbaa !115
  %980 = getelementptr inbounds ptr, ptr %979, i64 42
  %981 = load ptr, ptr %980, align 8
  invoke void (ptr, ptr, ptr, ptr, ptr, ...) %981(ptr noundef nonnull align 8 dereferenceable(1176) %39, ptr noundef nonnull align 8 dereferenceable(24) %973, ptr noundef @.str.846, ptr noundef %976, ptr noundef %977)
          to label %982 unwind label %995

982:                                              ; preds = %978
  store i32 1, ptr %33, align 4
  br label %1010

983:                                              ; preds = %914, %912
  %984 = landingpad { ptr, i32 }
          cleanup
  %985 = extractvalue { ptr, i32 } %984, 0
  store ptr %985, ptr %28, align 8
  %986 = extractvalue { ptr, i32 } %984, 1
  store i32 %986, ptr %29, align 4
  br label %1018

987:                                              ; preds = %924, %919
  %988 = landingpad { ptr, i32 }
          cleanup
  %989 = extractvalue { ptr, i32 } %988, 0
  store ptr %989, ptr %28, align 8
  %990 = extractvalue { ptr, i32 } %988, 1
  store i32 %990, ptr %29, align 4
  br label %1017

991:                                              ; preds = %921
  %992 = landingpad { ptr, i32 }
          cleanup
  %993 = extractvalue { ptr, i32 } %992, 0
  store ptr %993, ptr %28, align 8
  %994 = extractvalue { ptr, i32 } %992, 1
  store i32 %994, ptr %29, align 4
  call void @_ZN7glslang7TSymboldlEPv(ptr noundef %920) #7
  br label %1017

995:                                              ; preds = %1000, %978, %972, %960, %955, %949, %942, %936, %930
  %996 = landingpad { ptr, i32 }
          cleanup
  %997 = extractvalue { ptr, i32 } %996, 0
  store ptr %997, ptr %28, align 8
  %998 = extractvalue { ptr, i32 } %996, 1
  store i32 %998, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #7
  br label %1017

999:                                              ; preds = %966
  br label %1009

1000:                                             ; preds = %947
  %1001 = load ptr, ptr %7, align 8, !tbaa !5
  %1002 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 2
  %1003 = load ptr, ptr %1002, align 8, !tbaa !36
  %1004 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %1003) #7
  %1005 = load ptr, ptr %39, align 8, !tbaa !115
  %1006 = getelementptr inbounds ptr, ptr %1005, i64 42
  %1007 = load ptr, ptr %1006, align 8
  invoke void (ptr, ptr, ptr, ptr, ptr, ...) %1007(ptr noundef nonnull align 8 dereferenceable(1176) %39, ptr noundef nonnull align 8 dereferenceable(24) %1001, ptr noundef @.str.847, ptr noundef %1004, ptr noundef @.str.2)
          to label %1008 unwind label %995

1008:                                             ; preds = %1000
  store i32 1, ptr %33, align 4
  br label %1010

1009:                                             ; preds = %999
  store i32 0, ptr %33, align 4
  br label %1010

1010:                                             ; preds = %1009, %1008, %982
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #7
  %1011 = load i32, ptr %33, align 4
  switch i32 %1011, label %1014 [
    i32 0, label %1012
  ]

1012:                                             ; preds = %1010
  br label %1013

1013:                                             ; preds = %1012, %929
  store i32 0, ptr %33, align 4
  br label %1014

1014:                                             ; preds = %1013, %1010
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #7
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %34) #7
  call void @llvm.lifetime.end.p0(i64 144, ptr %34) #7
  %1015 = load i32, ptr %33, align 4
  switch i32 %1015, label %1102 [
    i32 0, label %1016
  ]

1016:                                             ; preds = %1014
  br label %1019

1017:                                             ; preds = %995, %991, %987
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #7
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %34) #7
  br label %1018

1018:                                             ; preds = %1017, %983
  call void @llvm.lifetime.end.p0(i64 144, ptr %34) #7
  br label %1106

1019:                                             ; preds = %1016, %909
  %1020 = load ptr, ptr %9, align 8, !tbaa !5
  %1021 = icmp ne ptr %1020, null
  br i1 %1021, label %1025, label %1022

1022:                                             ; preds = %1019
  %1023 = invoke noundef ptr @_ZN7glslang14NewPoolTStringB5cxx11EPKc(ptr noundef @.str.2)
          to label %1024 unwind label %744

1024:                                             ; preds = %1022
  store ptr %1023, ptr %9, align 8, !tbaa !5
  br label %1025

1025:                                             ; preds = %1024, %1019
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #7
  %1026 = invoke noundef ptr @_ZN7glslang7TSymbolnwEm(i64 noundef 232)
          to label %1027 unwind label %1048

1027:                                             ; preds = %1025
  %1028 = load ptr, ptr %9, align 8, !tbaa !5
  invoke void @_ZN7glslang9TVariableC2EPKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEERKNS_5TTypeEb(ptr noundef nonnull align 8 dereferenceable(228) %1026, ptr noundef %1028, ptr noundef nonnull align 8 dereferenceable(144) %27, i1 noundef zeroext false)
          to label %1029 unwind label %1052

1029:                                             ; preds = %1027
  store ptr %1026, ptr %37, align 8, !tbaa !5
  %1030 = getelementptr inbounds %"class.glslang::TParseContextBase", ptr %39, i32 0, i32 2
  %1031 = load ptr, ptr %1030, align 8, !tbaa !120
  %1032 = load ptr, ptr %37, align 8, !tbaa !5
  %1033 = invoke noundef zeroext i1 @_ZN7glslang12TSymbolTable6insertERNS_7TSymbolE(ptr noundef nonnull align 8 dereferenceable(40) %1031, ptr noundef nonnull align 8 dereferenceable(33) %1032)
          to label %1034 unwind label %1048

1034:                                             ; preds = %1029
  br i1 %1033, label %1070, label %1035

1035:                                             ; preds = %1034
  %1036 = load ptr, ptr %9, align 8, !tbaa !5
  %1037 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS7_(ptr noundef nonnull align 8 dereferenceable(40) %1036, ptr noundef @.str.2)
          to label %1038 unwind label %1048

1038:                                             ; preds = %1035
  br i1 %1037, label %1039, label %1056

1039:                                             ; preds = %1038
  %1040 = load ptr, ptr %7, align 8, !tbaa !5
  %1041 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 2
  %1042 = load ptr, ptr %1041, align 8, !tbaa !36
  %1043 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %1042) #7
  %1044 = load ptr, ptr %39, align 8, !tbaa !115
  %1045 = getelementptr inbounds ptr, ptr %1044, i64 42
  %1046 = load ptr, ptr %1045, align 8
  invoke void (ptr, ptr, ptr, ptr, ptr, ...) %1046(ptr noundef nonnull align 8 dereferenceable(1176) %39, ptr noundef nonnull align 8 dereferenceable(24) %1040, ptr noundef @.str.848, ptr noundef %1043, ptr noundef @.str.2)
          to label %1047 unwind label %1048

1047:                                             ; preds = %1039
  br label %1069

1048:                                             ; preds = %1095, %1093, %1086, %1079, %1073, %1070, %1063, %1056, %1039, %1035, %1029, %1025
  %1049 = landingpad { ptr, i32 }
          cleanup
  %1050 = extractvalue { ptr, i32 } %1049, 0
  store ptr %1050, ptr %28, align 8
  %1051 = extractvalue { ptr, i32 } %1049, 1
  store i32 %1051, ptr %29, align 4
  br label %1105

1052:                                             ; preds = %1027
  %1053 = landingpad { ptr, i32 }
          cleanup
  %1054 = extractvalue { ptr, i32 } %1053, 0
  store ptr %1054, ptr %28, align 8
  %1055 = extractvalue { ptr, i32 } %1053, 1
  store i32 %1055, ptr %29, align 4
  call void @_ZN7glslang7TSymboldlEPv(ptr noundef %1026) #7
  br label %1105

1056:                                             ; preds = %1038
  %1057 = load ptr, ptr %7, align 8, !tbaa !5
  %1058 = load ptr, ptr %37, align 8, !tbaa !5
  %1059 = load ptr, ptr %1058, align 8, !tbaa !115
  %1060 = getelementptr inbounds ptr, ptr %1059, i64 3
  %1061 = load ptr, ptr %1060, align 8
  %1062 = invoke noundef nonnull align 8 dereferenceable(40) ptr %1061(ptr noundef nonnull align 8 dereferenceable(33) %1058)
          to label %1063 unwind label %1048

1063:                                             ; preds = %1056
  %1064 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %1062) #7
  %1065 = load ptr, ptr %39, align 8, !tbaa !115
  %1066 = getelementptr inbounds ptr, ptr %1065, i64 42
  %1067 = load ptr, ptr %1066, align 8
  invoke void (ptr, ptr, ptr, ptr, ptr, ...) %1067(ptr noundef nonnull align 8 dereferenceable(1176) %39, ptr noundef nonnull align 8 dereferenceable(24) %1057, ptr noundef @.str.849, ptr noundef %1064, ptr noundef @.str.2)
          to label %1068 unwind label %1048

1068:                                             ; preds = %1063
  br label %1069

1069:                                             ; preds = %1068, %1047
  store i32 1, ptr %33, align 4
  br label %1101

1070:                                             ; preds = %1034
  %1071 = load ptr, ptr %7, align 8, !tbaa !5
  %1072 = load ptr, ptr %37, align 8, !tbaa !5
  invoke void @_ZN7glslang13TParseContext17layoutObjectCheckERKNS_10TSourceLocERKNS_7TSymbolE(ptr noundef nonnull align 8 dereferenceable(24912) %39, ptr noundef nonnull align 8 dereferenceable(24) %1071, ptr noundef nonnull align 8 dereferenceable(33) %1072)
          to label %1073 unwind label %1048

1073:                                             ; preds = %1070
  %1074 = invoke noundef zeroext i1 @_ZNK7glslang13TParseContext15isIoResizeArrayERKNS_5TTypeE(ptr noundef nonnull align 8 dereferenceable(24912) %39, ptr noundef nonnull align 8 dereferenceable(144) %27)
          to label %1075 unwind label %1048

1075:                                             ; preds = %1073
  br i1 %1074, label %1076, label %1086

1076:                                             ; preds = %1075
  %1077 = getelementptr inbounds %"class.glslang::TParseContext", ptr %39, i32 0, i32 21
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #7
  %1078 = load ptr, ptr %37, align 8, !tbaa !5
  store ptr %1078, ptr %38, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIPN7glslang7TSymbolENS0_14pool_allocatorIS2_EEE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(32) %1077, ptr noundef nonnull align 8 dereferenceable(8) %38)
          to label %1079 unwind label %1082

1079:                                             ; preds = %1076
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  %1080 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN7glslang13TParseContext24checkIoArraysConsistencyERKNS_10TSourceLocEb(ptr noundef nonnull align 8 dereferenceable(24912) %39, ptr noundef nonnull align 8 dereferenceable(24) %1080, i1 noundef zeroext true)
          to label %1081 unwind label %1048

1081:                                             ; preds = %1079
  br label %1095

1082:                                             ; preds = %1076
  %1083 = landingpad { ptr, i32 }
          cleanup
  %1084 = extractvalue { ptr, i32 } %1083, 0
  store ptr %1084, ptr %28, align 8
  %1085 = extractvalue { ptr, i32 } %1083, 1
  store i32 %1085, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  br label %1105

1086:                                             ; preds = %1075
  %1087 = load ptr, ptr %7, align 8, !tbaa !5
  %1088 = load ptr, ptr %37, align 8, !tbaa !5
  %1089 = load ptr, ptr %1088, align 8, !tbaa !115
  %1090 = getelementptr inbounds ptr, ptr %1089, i64 13
  %1091 = load ptr, ptr %1090, align 8
  %1092 = invoke noundef nonnull align 8 dereferenceable(144) ptr %1091(ptr noundef nonnull align 8 dereferenceable(228) %1088)
          to label %1093 unwind label %1048

1093:                                             ; preds = %1086
  invoke void @_ZN7glslang13TParseContext14fixIoArraySizeERKNS_10TSourceLocERNS_5TTypeE(ptr noundef nonnull align 8 dereferenceable(24912) %39, ptr noundef nonnull align 8 dereferenceable(24) %1087, ptr noundef nonnull align 8 dereferenceable(144) %1092)
          to label %1094 unwind label %1048

1094:                                             ; preds = %1093
  br label %1095

1095:                                             ; preds = %1094, %1081
  %1096 = load ptr, ptr %37, align 8, !tbaa !5
  %1097 = load ptr, ptr %39, align 8, !tbaa !115
  %1098 = getelementptr inbounds ptr, ptr %1097, i64 74
  %1099 = load ptr, ptr %1098, align 8
  invoke void %1099(ptr noundef nonnull align 8 dereferenceable(1176) %39, ptr noundef nonnull align 8 dereferenceable(33) %1096)
          to label %1100 unwind label %1048

1100:                                             ; preds = %1095
  store i32 0, ptr %33, align 4
  br label %1101

1101:                                             ; preds = %1100, %1069
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #7
  br label %1102

1102:                                             ; preds = %1101, %1014, %907
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %27) #7
  call void @llvm.lifetime.end.p0(i64 144, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 72, ptr %16) #7
  %1103 = load i32, ptr %33, align 4
  switch i32 %1103, label %1112 [
    i32 0, label %1104
    i32 1, label %1104
  ]

1104:                                             ; preds = %1102, %1102, %368
  ret void

1105:                                             ; preds = %1082, %1052, %1048
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #7
  br label %1106

1106:                                             ; preds = %1105, %1018, %911, %744
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %27) #7
  call void @llvm.lifetime.end.p0(i64 144, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 72, ptr %16) #7
  br label %1107

1107:                                             ; preds = %1106
  %1108 = load ptr, ptr %28, align 8
  %1109 = load i32, ptr %29, align 4
  %1110 = insertvalue { ptr, i32 } poison, ptr %1108, 0
  %1111 = insertvalue { ptr, i32 } %1110, i32 %1109, 1
  resume { ptr, i32 } %1111

1112:                                             ; preds = %1102
  unreachable
}

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang13TParseContext17blockStorageRemapERKNS_10TSourceLocEPKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEERNS_10TQualifierE(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef, ptr noundef nonnull align 8 dereferenceable(72)) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang13TParseContext17blockStageIoCheckERKNS_10TSourceLocERKNS_10TQualifierE(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(72)) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32), i64 noundef) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNKSt3mapIiN7glslang7TVectorIPKNS0_12TIntermTypedEEESt4lessIiENS0_14pool_allocatorISt4pairIKiS5_EEEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(56)) #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang13TParseContext17fixBlockLocationsERKNS_10TSourceLocERNS_10TQualifierERNS_7TVectorINS_8TTypeLocEEEbb(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(72), ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext, i1 noundef zeroext) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang13TParseContext22fixBlockUniformOffsetsERNS_10TQualifierERNS_7TVectorINS_8TTypeLocEEE(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(72), ptr noundef nonnull align 8 dereferenceable(32)) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang13TParseContext27fixBlockUniformLayoutMatrixERNS_10TQualifierEPNS_7TVectorINS_8TTypeLocEEES6_(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(72), ptr noundef, ptr noundef) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang13TParseContext28fixBlockUniformLayoutPackingERNS_10TQualifierEPNS_7TVectorINS_8TTypeLocEEES6_(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(72), ptr noundef, ptr noundef) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang5TTypeC2EPNS_7TVectorINS_8TTypeLocEEERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEERKNS_10TQualifierE(ptr noundef nonnull align 8 dereferenceable(144), ptr noundef, ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(72)) unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang5TTypeC2ENS_10TBasicTypeERKS0_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEE(ptr noundef nonnull align 8 dereferenceable(144), i32 noundef, ptr noundef nonnull align 8 dereferenceable(144), ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang5TType8deepCopyERKS0_(ptr noundef nonnull align 8 dereferenceable(144), ptr noundef nonnull align 8 dereferenceable(144)) #0 align 2

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

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

!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, !13, i64 40}
!10 = !{!"_ZTSN7glslang14TParseVersionsE", !11, i64 8, !12, i64 12, !6, i64 16, !13, i64 24, !14, i64 28, !15, i64 32, !6, i64 56, !16, i64 64, !27, i64 120, !32, i64 176, !13, i64 180, !6, i64 184}
!11 = !{!"bool", !7, i64 0}
!12 = !{!"_ZTS8EProfile", !7, i64 0}
!13 = !{!"int", !7, i64 0}
!14 = !{!"_ZTS11EShLanguage", !7, i64 0}
!15 = !{!"_ZTSN7glslang10SpvVersionE", !13, i64 0, !13, i64 4, !13, i64 8, !13, i64 12, !11, i64 16}
!16 = !{!"_ZTSN7glslang4TMapINSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEENS_18TExtensionBehaviorESt4lessIS7_EEE", !17, i64 0}
!17 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEENS4_18TExtensionBehaviorESt4lessIS7_ENS5_ISt4pairIKS7_S8_EEEE", !18, i64 0}
!18 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_NS4_18TExtensionBehaviorEESt10_Select1stISB_ESt4lessIS7_ENS5_ISB_EEE", !19, i64 0}
!19 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_NS4_18TExtensionBehaviorEESt10_Select1stISB_ESt4lessIS7_ENS5_ISB_EEE13_Rb_tree_implISF_Lb1EEE", !20, i64 0, !21, i64 8, !23, i64 16}
!20 = !{!"_ZTSN7glslang14pool_allocatorISt13_Rb_tree_nodeISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_IcEEEENS_18TExtensionBehaviorEEEEE", !6, i64 0}
!21 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEEE", !22, i64 0}
!22 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEE"}
!23 = !{!"_ZTSSt15_Rb_tree_header", !24, i64 0, !26, i64 32}
!24 = !{!"_ZTSSt18_Rb_tree_node_base", !25, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!25 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!26 = !{!"long", !7, i64 0}
!27 = !{!"_ZTSN7glslang4TMapINSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEEjSt4lessIS7_EEE", !28, i64 0}
!28 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEjSt4lessIS7_ENS5_ISt4pairIKS7_jEEEE", !29, i64 0}
!29 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_jESt10_Select1stISA_ESt4lessIS7_ENS5_ISA_EEE", !30, i64 0}
!30 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_jESt10_Select1stISA_ESt4lessIS7_ENS5_ISA_EEE13_Rb_tree_implISE_Lb1EEE", !31, i64 0, !21, i64 8, !23, i64 16}
!31 = !{!"_ZTSN7glslang14pool_allocatorISt13_Rb_tree_nodeISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_IcEEEEjEEEE", !6, i64 0}
!32 = !{!"_ZTS11EShMessages", !7, i64 0}
!33 = !{!10, !11, i64 48}
!34 = !{i8 0, i8 2}
!35 = !{}
!36 = !{!37, !6, i64 1184}
!37 = !{!"_ZTSN7glslang13TParseContextE", !38, i64 0, !11, i64 1176, !6, i64 1184, !87, i64 1192, !7, i64 1264, !64, i64 1352, !6, i64 1736, !7, i64 1744, !94, i64 24272, !87, i64 24288, !87, i64 24360, !87, i64 24432, !87, i64 24504, !87, i64 24576, !66, i64 24648, !6, i64 24688, !11, i64 24696, !95, i64 24704, !100, i64 24752, !106, i64 24784, !106, i64 24832, !58, i64 24880}
!38 = !{!"_ZTSN7glslang17TParseContextBaseE", !10, i64 0, !6, i64 192, !6, i64 200, !13, i64 208, !13, i64 212, !13, i64 216, !13, i64 220, !13, i64 224, !6, i64 232, !11, i64 240, !11, i64 241, !39, i64 248, !46, i64 280, !51, i64 312, !13, i64 376, !13, i64 380, !11, i64 384, !58, i64 392, !6, i64 424, !6, i64 432, !64, i64 440, !6, i64 824, !66, i64 832, !69, i64 872, !71, i64 904, !72, i64 936, !73, i64 968, !74, i64 1000, !6, i64 1032, !13, i64 1040, !13, i64 1044, !13, i64 1048, !75, i64 1056, !13, i64 1112, !82, i64 1120}
!39 = !{!"_ZTSN7glslang5TListIPNS_7TVectorIP11TIntermNodeEEEE", !40, i64 0}
!40 = !{!"_ZTSNSt7__cxx114listIPN7glslang7TVectorIP11TIntermNodeEENS1_14pool_allocatorIS6_EEEE", !41, i64 0}
!41 = !{!"_ZTSNSt7__cxx1110_List_baseIPN7glslang7TVectorIP11TIntermNodeEENS1_14pool_allocatorIS6_EEEE", !42, i64 0}
!42 = !{!"_ZTSNSt7__cxx1110_List_baseIPN7glslang7TVectorIP11TIntermNodeEENS1_14pool_allocatorIS6_EEE10_List_implE", !43, i64 0, !44, i64 8}
!43 = !{!"_ZTSN7glslang14pool_allocatorISt10_List_nodeIPNS_7TVectorIP11TIntermNodeEEEEE", !6, i64 0}
!44 = !{!"_ZTSNSt8__detail17_List_node_headerE", !45, i64 0, !26, i64 16}
!45 = !{!"_ZTSNSt8__detail15_List_node_baseE", !6, i64 0, !6, i64 8}
!46 = !{!"_ZTSN7glslang5TListIiEE", !47, i64 0}
!47 = !{!"_ZTSNSt7__cxx114listIiN7glslang14pool_allocatorIiEEEE", !48, i64 0}
!48 = !{!"_ZTSNSt7__cxx1110_List_baseIiN7glslang14pool_allocatorIiEEEE", !49, i64 0}
!49 = !{!"_ZTSNSt7__cxx1110_List_baseIiN7glslang14pool_allocatorIiEEE10_List_implE", !50, i64 0, !44, i64 8}
!50 = !{!"_ZTSN7glslang14pool_allocatorISt10_List_nodeIiEEE", !6, i64 0}
!51 = !{!"_ZTSN7glslang7TPragmaE", !11, i64 0, !11, i64 1, !52, i64 8}
!52 = !{!"_ZTSN7glslang12TPragmaTableE", !53, i64 0}
!53 = !{!"_ZTSN7glslang4TMapINSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEES7_St4lessIS7_EEE", !54, i64 0}
!54 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEES7_St4lessIS7_ENS5_ISt4pairIKS7_S7_EEEE", !55, i64 0}
!55 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_S7_ESt10_Select1stISA_ESt4lessIS7_ENS5_ISA_EEE", !56, i64 0}
!56 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_S7_ESt10_Select1stISA_ESt4lessIS7_ENS5_ISA_EEE13_Rb_tree_implISE_Lb1EEE", !57, i64 0, !21, i64 8, !23, i64 16}
!57 = !{!"_ZTSN7glslang14pool_allocatorISt13_Rb_tree_nodeISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_IcEEEES8_EEEE", !6, i64 0}
!58 = !{!"_ZTSN7glslang7TVectorIPNS_7TSymbolEEE", !59, i64 0}
!59 = !{!"_ZTSSt6vectorIPN7glslang7TSymbolENS0_14pool_allocatorIS2_EEE", !60, i64 0}
!60 = !{!"_ZTSSt12_Vector_baseIPN7glslang7TSymbolENS0_14pool_allocatorIS2_EEE", !61, i64 0}
!61 = !{!"_ZTSNSt12_Vector_baseIPN7glslang7TSymbolENS0_14pool_allocatorIS2_EEE12_Vector_implE", !62, i64 0, !63, i64 8}
!62 = !{!"_ZTSN7glslang14pool_allocatorIPNS_7TSymbolEEE", !6, i64 0}
!63 = !{!"_ZTSNSt12_Vector_baseIPN7glslang7TSymbolENS0_14pool_allocatorIS2_EEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!64 = !{!"_ZTS16TBuiltInResource", !13, i64 0, !13, i64 4, !13, i64 8, !13, i64 12, !13, i64 16, !13, i64 20, !13, i64 24, !13, i64 28, !13, i64 32, !13, i64 36, !13, i64 40, !13, i64 44, !13, i64 48, !13, i64 52, !13, i64 56, !13, i64 60, !13, i64 64, !13, i64 68, !13, i64 72, !13, i64 76, !13, i64 80, !13, i64 84, !13, i64 88, !13, i64 92, !13, i64 96, !13, i64 100, !13, i64 104, !13, i64 108, !13, i64 112, !13, i64 116, !13, i64 120, !13, i64 124, !13, i64 128, !13, i64 132, !13, i64 136, !13, i64 140, !13, i64 144, !13, i64 148, !13, i64 152, !13, i64 156, !13, i64 160, !13, i64 164, !13, i64 168, !13, i64 172, !13, i64 176, !13, i64 180, !13, i64 184, !13, i64 188, !13, i64 192, !13, i64 196, !13, i64 200, !13, i64 204, !13, i64 208, !13, i64 212, !13, i64 216, !13, i64 220, !13, i64 224, !13, i64 228, !13, i64 232, !13, i64 236, !13, i64 240, !13, i64 244, !13, i64 248, !13, i64 252, !13, i64 256, !13, i64 260, !13, i64 264, !13, i64 268, !13, i64 272, !13, i64 276, !13, i64 280, !13, i64 284, !13, i64 288, !13, i64 292, !13, i64 296, !13, i64 300, !13, i64 304, !13, i64 308, !13, i64 312, !13, i64 316, !13, i64 320, !13, i64 324, !13, i64 328, !13, i64 332, !13, i64 336, !13, i64 340, !13, i64 344, !13, i64 348, !13, i64 352, !13, i64 356, !13, i64 360, !13, i64 364, !13, i64 368, !65, i64 372}
!65 = !{!"_ZTS7TLimits", !11, i64 0, !11, i64 1, !11, i64 2, !11, i64 3, !11, i64 4, !11, i64 5, !11, i64 6, !11, i64 7, !11, i64 8}
!66 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEE", !67, i64 0, !26, i64 16, !7, i64 24}
!67 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE12_Alloc_hiderE", !68, i64 0, !6, i64 8}
!68 = !{!"_ZTSN7glslang14pool_allocatorIcEE", !6, i64 0}
!69 = !{!"_ZTSSt8functionIFviibiPKcEE", !70, i64 0, !6, i64 24}
!70 = !{!"_ZTSSt14_Function_base", !7, i64 0, !6, i64 16}
!71 = !{!"_ZTSSt8functionIFviRKN7glslang7TVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_14pool_allocatorIcEEEEEEEE", !70, i64 0, !6, i64 24}
!72 = !{!"_ZTSSt8functionIFviiPKcEE", !70, i64 0, !6, i64 24}
!73 = !{!"_ZTSSt8functionIFviPKcS1_EE", !70, i64 0, !6, i64 24}
!74 = !{!"_ZTSSt8functionIFviPKcEE", !70, i64 0, !6, i64 24}
!75 = !{!"_ZTSN7glslang4TMapIiPNS_9TVariableESt4lessIiEEE", !76, i64 0}
!76 = !{!"_ZTSSt3mapIiPN7glslang9TVariableESt4lessIiENS0_14pool_allocatorISt4pairIKiS2_EEEE", !77, i64 0}
!77 = !{!"_ZTSSt8_Rb_treeIiSt4pairIKiPN7glslang9TVariableEESt10_Select1stIS5_ESt4lessIiENS2_14pool_allocatorIS5_EEE", !78, i64 0}
!78 = !{!"_ZTSNSt8_Rb_treeIiSt4pairIKiPN7glslang9TVariableEESt10_Select1stIS5_ESt4lessIiENS2_14pool_allocatorIS5_EEE13_Rb_tree_implIS9_Lb1EEE", !79, i64 0, !80, i64 8, !23, i64 16}
!79 = !{!"_ZTSN7glslang14pool_allocatorISt13_Rb_tree_nodeISt4pairIKiPNS_9TVariableEEEEE", !6, i64 0}
!80 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIiEE", !81, i64 0}
!81 = !{!"_ZTSSt4lessIiE"}
!82 = !{!"_ZTSN7glslang4TMapIiiSt4lessIiEEE", !83, i64 0}
!83 = !{!"_ZTSSt3mapIiiSt4lessIiEN7glslang14pool_allocatorISt4pairIKiiEEEE", !84, i64 0}
!84 = !{!"_ZTSSt8_Rb_treeIiSt4pairIKiiESt10_Select1stIS2_ESt4lessIiEN7glslang14pool_allocatorIS2_EEE", !85, i64 0}
!85 = !{!"_ZTSNSt8_Rb_treeIiSt4pairIKiiESt10_Select1stIS2_ESt4lessIiEN7glslang14pool_allocatorIS2_EEE13_Rb_tree_implIS6_Lb1EEE", !86, i64 0, !80, i64 8, !23, i64 16}
!86 = !{!"_ZTSN7glslang14pool_allocatorISt13_Rb_tree_nodeISt4pairIKiiEEEE", !6, i64 0}
!87 = !{!"_ZTSN7glslang10TQualifierE", !6, i64 0, !88, i64 8, !89, i64 8, !89, i64 9, !90, i64 11, !11, i64 11, !11, i64 11, !11, i64 11, !11, i64 11, !11, i64 11, !11, i64 12, !11, i64 12, !11, i64 12, !11, i64 12, !11, i64 12, !11, i64 12, !11, i64 12, !11, i64 12, !11, i64 13, !11, i64 13, !11, i64 13, !11, i64 13, !11, i64 13, !11, i64 13, !11, i64 13, !11, i64 13, !11, i64 14, !11, i64 14, !11, i64 14, !11, i64 14, !11, i64 14, !11, i64 14, !11, i64 14, !11, i64 14, !11, i64 15, !11, i64 15, !11, i64 15, !91, i64 15, !92, i64 16, !13, i64 20, !13, i64 24, !13, i64 28, !13, i64 29, !13, i64 29, !13, i64 32, !13, i64 34, !13, i64 35, !13, i64 36, !13, i64 36, !13, i64 38, !13, i64 40, !13, i64 41, !13, i64 42, !93, i64 44, !11, i64 45, !11, i64 46, !11, i64 47, !11, i64 48, !13, i64 52, !11, i64 56, !13, i64 60, !6, i64 64}
!88 = !{!"_ZTSN7glslang17TStorageQualifierE", !7, i64 0}
!89 = !{!"_ZTSN7glslang16TBuiltInVariableE", !7, i64 0}
!90 = !{!"_ZTSN7glslang19TPrecisionQualifierE", !7, i64 0}
!91 = !{!"_ZTSN7glslang13TLayoutMatrixE", !7, i64 0}
!92 = !{!"_ZTSN7glslang14TLayoutPackingE", !7, i64 0}
!93 = !{!"_ZTSN7glslang13TLayoutFormatE", !7, i64 0}
!94 = !{!"_ZTSN7glslang17TPrecisionManagerE", !11, i64 8, !11, i64 9, !11, i64 10, !11, i64 11}
!95 = !{!"_ZTSSt3setIxSt4lessIxESaIxEE", !96, i64 0}
!96 = !{!"_ZTSSt8_Rb_treeIxxSt9_IdentityIxESt4lessIxESaIxEE", !97, i64 0}
!97 = !{!"_ZTSNSt8_Rb_treeIxxSt9_IdentityIxESt4lessIxESaIxEE13_Rb_tree_implIS3_Lb1EEE", !98, i64 0, !23, i64 8}
!98 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIxEE", !99, i64 0}
!99 = !{!"_ZTSSt4lessIxE"}
!100 = !{!"_ZTSN7glslang7TVectorIPNS_12TIntermTypedEEE", !101, i64 0}
!101 = !{!"_ZTSSt6vectorIPN7glslang12TIntermTypedENS0_14pool_allocatorIS2_EEE", !102, i64 0}
!102 = !{!"_ZTSSt12_Vector_baseIPN7glslang12TIntermTypedENS0_14pool_allocatorIS2_EEE", !103, i64 0}
!103 = !{!"_ZTSNSt12_Vector_baseIPN7glslang12TIntermTypedENS0_14pool_allocatorIS2_EEE12_Vector_implE", !104, i64 0, !105, i64 8}
!104 = !{!"_ZTSN7glslang14pool_allocatorIPNS_12TIntermTypedEEE", !6, i64 0}
!105 = !{!"_ZTSNSt12_Vector_baseIPN7glslang12TIntermTypedENS0_14pool_allocatorIS2_EEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!106 = !{!"_ZTSSt3mapIPKN7glslang7TVectorINS0_8TTypeLocEEES_ImS5_St4lessImESaISt4pairIKmS5_EEES6_IS5_ESaIS8_IKS5_SC_EEE", !107, i64 0}
!107 = !{!"_ZTSSt8_Rb_treeIPKN7glslang7TVectorINS0_8TTypeLocEEESt4pairIKS5_St3mapImS5_St4lessImESaIS6_IKmS5_EEEESt10_Select1stISF_ES9_IS5_ESaISF_EE", !108, i64 0}
!108 = !{!"_ZTSNSt8_Rb_treeIPKN7glslang7TVectorINS0_8TTypeLocEEESt4pairIKS5_St3mapImS5_St4lessImESaIS6_IKmS5_EEEESt10_Select1stISF_ES9_IS5_ESaISF_EE13_Rb_tree_implISI_Lb1EEE", !109, i64 0, !23, i64 8}
!109 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIPKN7glslang7TVectorINS1_8TTypeLocEEEEE", !110, i64 0}
!110 = !{!"_ZTSSt4lessIPKN7glslang7TVectorINS0_8TTypeLocEEEE"}
!111 = !{!13, !13, i64 0}
!112 = !{!113, !6, i64 0}
!113 = !{!"_ZTSN7glslang8TTypeLocE", !6, i64 0, !114, i64 8}
!114 = !{!"_ZTSN7glslang10TSourceLocE", !6, i64 0, !13, i64 8, !13, i64 12, !13, i64 16}
!115 = !{!116, !116, i64 0}
!116 = !{!"vtable pointer", !8, i64 0}
!117 = !{!10, !13, i64 32}
!118 = distinct !{!118, !119}
!119 = !{!"llvm.loop.mustprogress"}
!120 = !{!38, !6, i64 200}
!121 = distinct !{!121, !119}
!122 = !{i64 0, i64 8, !5, i64 8, i64 8, !123, i64 16, i64 1, !123, i64 20, i64 4, !111, i64 24, i64 4, !111, i64 28, i64 8, !123, i64 36, i64 8, !123, i64 44, i64 1, !123, i64 45, i64 1, !124, i64 46, i64 1, !124, i64 47, i64 1, !124, i64 48, i64 1, !124, i64 52, i64 4, !111, i64 56, i64 1, !124, i64 60, i64 4, !111, i64 64, i64 8, !5}
!123 = !{!7, !7, i64 0}
!124 = !{!11, !11, i64 0}
!125 = !{!87, !13, i64 24}
!126 = distinct !{!126, !119}
!127 = distinct !{!127, !119}
!128 = distinct !{!128, !119}


; 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.glslang::TQualifier" = type <{ ptr, i64, i8, [3 x i8], i32, i32, i64, i64, i8, i8, i8, i8, i8, [3 x i8], i32, i8, [3 x i8], i32, ptr }>
%"class.glslang::TType" = type { ptr, i32, [4 x i8], %"class.glslang::TQualifier", ptr, %union.anon.179, ptr, ptr, %"struct.glslang::TSampler", ptr, ptr }
%union.anon.179 = type { ptr }
%"struct.glslang::TSampler" = type { i32 }

@.str.2 = external hidden unnamed_addr constant [1 x i8], align 1
@_ZN7glslangL20AEP_shader_io_blocksE = external hidden constant [2 x ptr], align 16
@.str.510 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.511 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.577 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.611 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.615 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.653 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.745 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.831 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.832 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.833 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.834 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.835 = external hidden unnamed_addr constant [86 x i8], align 1
@.str.836 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.837 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.838 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.839 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.840 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.841 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.842 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.843 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.844 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.845 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.846 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.847 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.848 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.849 = external hidden unnamed_addr constant [33 x i8], align 1

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang10TQualifier5clearEv(ptr noundef nonnull align 8 dereferenceable(72)) local_unnamed_addr #0 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang13TParseContext19blockQualifierCheckERKNS_10TSourceLocERKNS_10TQualifierEb(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(72), i1 noundef zeroext) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN7glslang12TSymbolTable4findERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEEPbSA_Pi(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(40), ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZNK7glslang5TType9getStructEv(ptr noundef nonnull align 8 dereferenceable(144)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN7glslang7TSymbolnwEm(i64 noundef) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang5TTypeC2ENS_10TBasicTypeENS_17TStorageQualifierEiiib(ptr noundef nonnull align 8 dereferenceable(144), i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i1 noundef zeroext) unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang9TVariableC2EPKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEERKNS_5TTypeEb(ptr noundef nonnull align 8 dereferenceable(228), ptr noundef, ptr noundef nonnull align 8 dereferenceable(144), i1 noundef zeroext) unnamed_addr #0 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN7glslang7TSymboldlEPv(ptr noundef) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK7glslang5TType11isReferenceEv(ptr noundef nonnull align 8 dereferenceable(144)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK7glslang13TParseContext15isIoResizeArrayERKNS_5TTypeE(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(144)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK7glslang10TQualifier9isPerViewEv(ptr noundef nonnull align 8 dereferenceable(72)) local_unnamed_addr #3 align 2

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

declare void @_ZN7glslang14TParseVersions14requireProfileERKNS_10TSourceLocEiPKc(ptr noundef nonnull align 8 dereferenceable(192), ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, ptr noundef) local_unnamed_addr #4

declare void @_ZN7glslang14TParseVersions15profileRequiresERKNS_10TSourceLocEiiiPKPKcS5_(ptr noundef nonnull align 8 dereferenceable(192), ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

declare void @_ZN7glslang14TParseVersions15profileRequiresERKNS_10TSourceLocEiiPKcS5_(ptr noundef nonnull align 8 dereferenceable(192), ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(72) ptr @_ZN7glslang5TType12getQualifierEv(ptr noundef nonnull align 8 dereferenceable(144)) unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang13TParseContext23inheritMemoryQualifiersERKNS_10TQualifierERS1_(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(72), ptr noundef nonnull align 8 dereferenceable(72)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang13TParseContext14fixIoArraySizeERKNS_10TSourceLocERNS_5TTypeE(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(144)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN7glslang12TSymbolTable14atBuiltInLevelEv(ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang13TParseContext12ioArrayCheckERKNS_10TSourceLocERKNS_5TTypeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEE(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(144), ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZNK7glslang5TType25getStorageQualifierStringEv(ptr noundef nonnull align 8 dereferenceable(144)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang13TParseContext24checkIoArraysConsistencyERKNS_10TSourceLocEb(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(24), i1 noundef zeroext) local_unnamed_addr #0 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN7glslang12TSymbolTable6insertERNS_7TSymbolE(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(33)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang13TParseContext18reservedErrorCheckERKNS_10TSourceLocERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEE(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN7glslang13TParseContext11builtInNameERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEE(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK7glslang10TQualifier11hasLocationEv(ptr noundef nonnull align 8 dereferenceable(72)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang13TParseContext23globalQualifierFixCheckERKNS_10TSourceLocERNS_10TQualifierEb(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(72), i1 noundef zeroext) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK7glslang10TQualifier18hasBufferReferenceEv(ptr noundef nonnull align 8 dereferenceable(72)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK7glslang10TQualifier15isInterpolationEv(ptr noundef nonnull align 8 dereferenceable(72)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK7glslang10TQualifier12isTaskMemoryEv(ptr noundef nonnull align 8 dereferenceable(72)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK7glslang10TQualifier11isAuxiliaryEv(ptr noundef nonnull align 8 dereferenceable(72)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang13TParseContext15mergeQualifiersERKNS_10TSourceLocERNS_10TQualifierERKS4_b(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(72), ptr noundef nonnull align 8 dereferenceable(72), i1 noundef zeroext) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang13TParseContext27mergeObjectLayoutQualifiersERNS_10TQualifierERKS1_b(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(72), ptr noundef nonnull align 8 dereferenceable(72), i1 noundef zeroext) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK7glslang10TQualifier16hasSprivDecorateEv(ptr noundef nonnull align 8 dereferenceable(72)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(168) ptr @_ZN7glslang10TQualifier16getSpirvDecorateEv(ptr noundef nonnull align 8 dereferenceable(72)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang13TParseContext15arraySizesCheckERKNS_10TSourceLocERKNS_10TQualifierEPNS_11TArraySizesEPKNS_12TIntermTypedEb(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(72), ptr noundef, ptr noundef, i1 noundef zeroext) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang13TParseContext24arrayOfArrayVersionCheckERKNS_10TSourceLocEPKNS_11TArraySizesE(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang13TParseContext25checkAndResizeMeshViewDimERKNS_10TSourceLocERNS_5TTypeEb(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(144), i1 noundef zeroext) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang13TParseContext21redeclareBuiltinBlockERKNS_10TSourceLocERNS_7TVectorINS_8TTypeLocEEERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEEPSF_PNS_11TArraySizesE(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(40), ptr noundef, ptr noundef) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK7glslang10TQualifier12hasXfbBufferEv(ptr noundef nonnull align 8 dereferenceable(72)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK7glslang10TQualifier9hasStreamEv(ptr noundef nonnull align 8 dereferenceable(72)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang13TParseContext13fixXfbOffsetsERNS_10TQualifierERNS_7TVectorINS_8TTypeLocEEE(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(72), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang13TParseContext15layoutTypeCheckERKNS_10TSourceLocERKNS_5TTypeE(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(144)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang13TParseContext17layoutObjectCheckERKNS_10TSourceLocERKNS_7TSymbolE(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(33)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK7glslang10TQualifier10hasPackingEv(ptr noundef nonnull align 8 dereferenceable(72)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK7glslang10TQualifier8hasAlignEv(ptr noundef nonnull align 8 dereferenceable(72)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK7glslang10TQualifier9hasOffsetEv(ptr noundef nonnull align 8 dereferenceable(72)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK7glslang10TQualifier12hasXfbOffsetEv(ptr noundef nonnull align 8 dereferenceable(72)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK7glslang10TQualifier14isPushConstantEv(ptr noundef nonnull align 8 dereferenceable(72)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK7glslang10TQualifier14isShaderRecordEv(ptr noundef nonnull align 8 dereferenceable(72)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang13TParseContext30layoutMemberLocationArrayCheckERKNS_10TSourceLocEbPNS_11TArraySizesE(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(24), i1 noundef zeroext, ptr noundef) local_unnamed_addr #0 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK7glslang5TType15containsCoopMatEv(ptr noundef nonnull align 8 dereferenceable(144)) local_unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZN7glslang14NewPoolTStringB5cxx11EPKc(ptr noundef) local_unnamed_addr #6

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN7glslang13TParseContext12declareBlockERKNS_10TSourceLocERNS_7TVectorINS_8TTypeLocEEEPKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEEPNS_11TArraySizesE(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(32) %2, ptr noundef %3, ptr noundef %4) local_unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %6 = alloca %"class.glslang::TQualifier", align 8
  %7 = alloca %"class.glslang::TQualifier", align 8
  %8 = alloca %"class.glslang::TType", align 8
  %9 = alloca %"class.glslang::TType", align 8
  %10 = alloca %"class.glslang::TType", align 8
  %11 = alloca ptr, align 8
  %12 = getelementptr inbounds i8, ptr %0, i64 32
  %13 = getelementptr inbounds i8, ptr %0, i64 40
  %14 = load i32, ptr %13, align 8, !tbaa !5
  %15 = icmp sgt i32 %14, 0
  br i1 %15, label %16, label %24

16:                                               ; preds = %5
  %17 = getelementptr inbounds i8, ptr %0, i64 48
  %18 = load i8, ptr %17, align 8, !tbaa !32, !range !33, !noundef !34
  %19 = trunc nuw i8 %18 to i1
  br i1 %19, label %20, label %24

20:                                               ; preds = %16
  %21 = getelementptr inbounds i8, ptr %0, i64 1184
  %22 = load ptr, ptr %21, align 8, !tbaa !35
  %23 = getelementptr inbounds i8, ptr %0, i64 1192
  tail call void @_ZN7glslang13TParseContext17blockStorageRemapERKNS_10TSourceLocEPKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEERNS_10TQualifierE(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef %22, ptr noundef nonnull align 8 dereferenceable(72) %23)
  br label %24

24:                                               ; preds = %20, %16, %5
  %25 = getelementptr inbounds i8, ptr %0, i64 1192
  tail call void @_ZN7glslang13TParseContext17blockStageIoCheckERKNS_10TSourceLocERKNS_10TQualifierE(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(72) %25)
  %26 = icmp ne ptr %3, null
  tail call void @_ZN7glslang13TParseContext19blockQualifierCheckERKNS_10TSourceLocERKNS_10TQualifierEb(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(72) %25, i1 noundef zeroext %26)
  %.not = icmp eq ptr %4, null
  br i1 %.not, label %31, label %27

27:                                               ; preds = %24
  tail call void @_ZN7glslang13TParseContext15arraySizesCheckERKNS_10TSourceLocERKNS_10TQualifierEPNS_11TArraySizesEPKNS_12TIntermTypedEb(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(72) %25, ptr noundef nonnull %4, ptr noundef null, i1 noundef zeroext false)
  tail call void @_ZN7glslang13TParseContext24arrayOfArrayVersionCheckERKNS_10TSourceLocEPKNS_11TArraySizesE(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull %4)
  %28 = tail call noundef i32 @_ZNK7glslang11TArraySizes10getNumDimsEv(ptr noundef nonnull align 8 dereferenceable(21) %4)
  %29 = icmp sgt i32 %28, 1
  br i1 %29, label %30, label %31

30:                                               ; preds = %27
  tail call void @_ZN7glslang14TParseVersions14requireProfileERKNS_10TSourceLocEiPKc(ptr noundef nonnull align 8 dereferenceable(192) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef -9, ptr noundef nonnull @.str.831)
  br label %31

31:                                               ; preds = %27, %30, %24
  %32 = tail call noundef i64 @_ZNKSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %2) #7
  %.not262 = icmp eq i64 %32, 0
  br i1 %.not262, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %31
  %33 = getelementptr inbounds i8, ptr %0, i64 1200
  br label %37

._crit_edge:                                      ; preds = %174, %31
  %34 = getelementptr inbounds i8, ptr %0, i64 200
  %35 = load ptr, ptr %34, align 8, !tbaa !110
  %36 = tail call noundef zeroext i1 @_ZN7glslang12TSymbolTable14atBuiltInLevelEv(ptr noundef nonnull align 8 dereferenceable(40) %35)
  br i1 %36, label %185, label %179

37:                                               ; preds = %.lr.ph, %174
  %38 = phi i64 [ 0, %.lr.ph ], [ %176, %174 ]
  %.0175242 = phi i32 [ 0, %.lr.ph ], [ %175, %174 ]
  %39 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %2, i64 noundef %38) #7
  %40 = load ptr, ptr %39, align 8, !tbaa !111
  %41 = load ptr, ptr %40, align 8, !tbaa !114
  %42 = getelementptr inbounds i8, ptr %41, i64 80
  %43 = load ptr, ptr %42, align 8
  %44 = tail call noundef nonnull align 8 dereferenceable(72) ptr %43(ptr noundef nonnull align 8 dereferenceable(144) %40)
  %45 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %2, i64 noundef %38) #7
  %46 = getelementptr inbounds i8, ptr %45, i64 8
  %47 = getelementptr inbounds i8, ptr %44, i64 8
  %48 = load i64, ptr %47, align 8
  %49 = trunc i64 %48 to i32
  %50 = and i32 %49, 63
  %switch239 = icmp ult i32 %50, 2
  %.pre267 = load i64, ptr %33, align 8
  %51 = trunc i64 %.pre267 to i32
  %52 = and i32 %51, 63
  %.not231 = icmp eq i32 %50, %52
  %or.cond275 = select i1 %switch239, i1 true, i1 %.not231
  br i1 %or.cond275, label %62, label %53

53:                                               ; preds = %37
  %54 = load ptr, ptr %40, align 8, !tbaa !114
  %55 = getelementptr inbounds i8, ptr %54, i64 48
  %56 = load ptr, ptr %55, align 8
  %57 = tail call noundef nonnull align 8 dereferenceable(40) ptr %56(ptr noundef nonnull align 8 dereferenceable(144) %40)
  %58 = tail call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %57) #7
  %59 = load ptr, ptr %0, align 8, !tbaa !114
  %60 = getelementptr inbounds i8, ptr %59, i64 336
  %61 = load ptr, ptr %60, align 8
  tail call void (ptr, ptr, ptr, ptr, ptr, ...) %61(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %46, ptr noundef nonnull @.str.832, ptr noundef %58, ptr noundef nonnull @.str.2)
  %.pre = load i64, ptr %33, align 8
  %.pre268 = load i64, ptr %47, align 8
  br label %62

62:                                               ; preds = %37, %53
  %63 = phi i64 [ %48, %37 ], [ %.pre268, %53 ]
  %64 = phi i64 [ %.pre267, %37 ], [ %.pre, %53 ]
  %65 = and i64 %64, 63
  %66 = and i64 %63, -64
  %67 = or disjoint i64 %66, %65
  store i64 %67, ptr %47, align 8
  tail call void @_ZN7glslang13TParseContext23globalQualifierFixCheckERKNS_10TSourceLocERNS_10TQualifierEb(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(24) %46, ptr noundef nonnull align 8 dereferenceable(72) %44, i1 noundef zeroext false)
  tail call void @_ZN7glslang13TParseContext23inheritMemoryQualifiersERKNS_10TQualifierERS1_(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(72) %25, ptr noundef nonnull align 8 dereferenceable(72) %44)
  %68 = load i64, ptr %33, align 8
  %69 = and i64 %68, 1099511627776
  %.not232 = icmp eq i64 %69, 0
  %.pre271.pre.pre = load i64, ptr %47, align 8
  br i1 %.not232, label %72, label %70

70:                                               ; preds = %62
  %71 = or i64 %.pre271.pre.pre, 1099511627776
  store i64 %71, ptr %47, align 8
  %.pre269 = load i64, ptr %33, align 8
  br label %72

72:                                               ; preds = %70, %62
  %.pre271.pre = phi i64 [ %71, %70 ], [ %.pre271.pre.pre, %62 ]
  %73 = phi i64 [ %.pre269, %70 ], [ %68, %62 ]
  %74 = and i64 %73, 2199023255552
  %.not233 = icmp eq i64 %74, 0
  br i1 %.not233, label %77, label %75

75:                                               ; preds = %72
  %76 = or i64 %.pre271.pre, 2199023255552
  store i64 %76, ptr %47, align 8
  %.pre270 = load i64, ptr %33, align 8
  br label %77

77:                                               ; preds = %75, %72
  %.pre271 = phi i64 [ %76, %75 ], [ %.pre271.pre, %72 ]
  %78 = phi i64 [ %.pre270, %75 ], [ %73, %72 ]
  %79 = and i64 %78, 4398046511104
  %.not234 = icmp eq i64 %79, 0
  br i1 %.not234, label %82, label %80

80:                                               ; preds = %77
  %81 = or i64 %.pre271, 4398046511104
  store i64 %81, ptr %47, align 8
  br label %82

82:                                               ; preds = %80, %77
  %83 = phi i64 [ %81, %80 ], [ %.pre271, %77 ]
  %84 = and i64 %83, 63
  %85 = icmp eq i64 %84, 8
  br i1 %85, label %86, label %95

86:                                               ; preds = %82
  %87 = load ptr, ptr %40, align 8, !tbaa !114
  %88 = getelementptr inbounds i8, ptr %87, i64 48
  %89 = load ptr, ptr %88, align 8
  %90 = tail call noundef nonnull align 8 dereferenceable(40) ptr %89(ptr noundef nonnull align 8 dereferenceable(144) %40)
  %91 = tail call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %90) #7
  %92 = load ptr, ptr %0, align 8, !tbaa !114
  %93 = getelementptr inbounds i8, ptr %92, i64 336
  %94 = load ptr, ptr %93, align 8
  tail call void (ptr, ptr, ptr, ptr, ptr, ...) %94(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %46, ptr noundef nonnull @.str.833, ptr noundef %91, ptr noundef nonnull @.str.2)
  br label %95

95:                                               ; preds = %86, %82
  %96 = tail call noundef zeroext i1 @_ZNK7glslang10TQualifier16hasSprivDecorateEv(ptr noundef nonnull align 8 dereferenceable(72) %44)
  br i1 %96, label %97, label %110

97:                                               ; preds = %95
  %98 = tail call noundef nonnull align 8 dereferenceable(168) ptr @_ZN7glslang10TQualifier16getSpirvDecorateEv(ptr noundef nonnull align 8 dereferenceable(72) %44)
  %99 = getelementptr inbounds i8, ptr %98, i64 56
  %100 = tail call noundef zeroext i1 @_ZNKSt3mapIiN7glslang7TVectorIPKNS0_12TIntermTypedEEESt4lessIiENS0_14pool_allocatorISt4pairIKiS5_EEEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(56) %99) #7
  br i1 %100, label %110, label %101

101:                                              ; preds = %97
  %102 = load ptr, ptr %40, align 8, !tbaa !114
  %103 = getelementptr inbounds i8, ptr %102, i64 48
  %104 = load ptr, ptr %103, align 8
  %105 = tail call noundef nonnull align 8 dereferenceable(40) ptr %104(ptr noundef nonnull align 8 dereferenceable(144) %40)
  %106 = tail call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %105) #7
  %107 = load ptr, ptr %0, align 8, !tbaa !114
  %108 = getelementptr inbounds i8, ptr %107, i64 336
  %109 = load ptr, ptr %108, align 8
  tail call void (ptr, ptr, ptr, ptr, ptr, ...) %109(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %46, ptr noundef nonnull @.str.834, ptr noundef %106, ptr noundef nonnull @.str.2)
  br label %110

110:                                              ; preds = %101, %97, %95
  %111 = load i64, ptr %33, align 8
  %112 = trunc i64 %111 to i32
  %113 = and i32 %112, 63
  %.off240 = add nsw i32 %113, -5
  %switch241 = icmp ult i32 %.off240, 2
  br i1 %switch241, label %114, label %127

114:                                              ; preds = %110
  %115 = tail call noundef zeroext i1 @_ZNK7glslang10TQualifier15isInterpolationEv(ptr noundef nonnull align 8 dereferenceable(72) %44)
  br i1 %115, label %118, label %116

116:                                              ; preds = %114
  %117 = tail call noundef zeroext i1 @_ZNK7glslang10TQualifier11isAuxiliaryEv(ptr noundef nonnull align 8 dereferenceable(72) %44)
  br i1 %117, label %118, label %127

118:                                              ; preds = %116, %114
  %119 = load ptr, ptr %40, align 8, !tbaa !114
  %120 = getelementptr inbounds i8, ptr %119, i64 48
  %121 = load ptr, ptr %120, align 8
  %122 = tail call noundef nonnull align 8 dereferenceable(40) ptr %121(ptr noundef nonnull align 8 dereferenceable(144) %40)
  %123 = tail call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %122) #7
  %124 = load ptr, ptr %0, align 8, !tbaa !114
  %125 = getelementptr inbounds i8, ptr %124, i64 336
  %126 = load ptr, ptr %125, align 8
  tail call void (ptr, ptr, ptr, ptr, ptr, ...) %126(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %46, ptr noundef nonnull @.str.835, ptr noundef %123, ptr noundef nonnull @.str.2)
  br label %127

127:                                              ; preds = %110, %118, %116
  %128 = load ptr, ptr %40, align 8, !tbaa !114
  %129 = getelementptr inbounds i8, ptr %128, i64 232
  %130 = load ptr, ptr %129, align 8
  %131 = tail call noundef zeroext i1 %130(ptr noundef nonnull align 8 dereferenceable(144) %40)
  br i1 %131, label %132, label %140

132:                                              ; preds = %127
  %133 = load ptr, ptr %40, align 8, !tbaa !114
  %134 = getelementptr inbounds i8, ptr %133, i64 160
  %135 = load ptr, ptr %134, align 8
  %136 = tail call noundef ptr %135(ptr noundef nonnull align 8 dereferenceable(144) %40)
  %137 = tail call noundef i64 @_ZNKSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %2) #7
  %138 = add i64 %137, -1
  %139 = icmp eq i64 %138, %38
  tail call void @_ZN7glslang13TParseContext15arraySizesCheckERKNS_10TSourceLocERKNS_10TQualifierEPNS_11TArraySizesEPKNS_12TIntermTypedEb(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(24) %46, ptr noundef nonnull align 8 dereferenceable(72) %25, ptr noundef %136, ptr noundef null, i1 noundef zeroext %139)
  br label %140

140:                                              ; preds = %132, %127
  %141 = tail call noundef zeroext i1 @_ZNK7glslang10TQualifier9hasOffsetEv(ptr noundef nonnull align 8 dereferenceable(72) %44)
  %142 = load i32, ptr %12, align 8
  %143 = icmp eq i32 %142, 0
  %or.cond = select i1 %141, i1 %143, i1 false
  br i1 %or.cond, label %144, label %145

144:                                              ; preds = %140
  tail call void @_ZN7glslang14TParseVersions15profileRequiresERKNS_10TSourceLocEiiPKcS5_(ptr noundef nonnull align 8 dereferenceable(192) %0, ptr noundef nonnull align 8 dereferenceable(24) %46, i32 noundef -9, i32 noundef 440, ptr noundef nonnull @.str.611, ptr noundef nonnull @.str.836)
  tail call void @_ZN7glslang14TParseVersions15profileRequiresERKNS_10TSourceLocEiiPKcS5_(ptr noundef nonnull align 8 dereferenceable(192) %0, ptr noundef nonnull align 8 dereferenceable(24) %46, i32 noundef 8, i32 noundef 300, ptr noundef nonnull @.str.611, ptr noundef nonnull @.str.836)
  br label %145

145:                                              ; preds = %144, %140
  %146 = load ptr, ptr %40, align 8, !tbaa !114
  %147 = getelementptr inbounds i8, ptr %146, i64 392
  %148 = load ptr, ptr %147, align 8
  %149 = tail call noundef zeroext i1 %148(ptr noundef nonnull align 8 dereferenceable(144) %40)
  br i1 %149, label %150, label %161

150:                                              ; preds = %145
  %151 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %2, i64 noundef %38) #7
  %152 = load ptr, ptr %151, align 8, !tbaa !111
  %153 = load ptr, ptr %152, align 8, !tbaa !114
  %154 = getelementptr inbounds i8, ptr %153, i64 48
  %155 = load ptr, ptr %154, align 8
  %156 = tail call noundef nonnull align 8 dereferenceable(40) ptr %155(ptr noundef nonnull align 8 dereferenceable(144) %152)
  %157 = tail call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %156) #7
  %158 = load ptr, ptr %0, align 8, !tbaa !114
  %159 = getelementptr inbounds i8, ptr %158, i64 336
  %160 = load ptr, ptr %159, align 8
  tail call void (ptr, ptr, ptr, ptr, ptr, ...) %160(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %46, ptr noundef nonnull @.str.837, ptr noundef %157, ptr noundef nonnull @.str.2)
  br label %161

161:                                              ; preds = %150, %145
  %162 = tail call noundef zeroext i1 @_ZNK7glslang5TType15containsCoopMatEv(ptr noundef nonnull align 8 dereferenceable(144) %40)
  br i1 %162, label %163, label %174

163:                                              ; preds = %161
  %164 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %2, i64 noundef %38) #7
  %165 = load ptr, ptr %164, align 8, !tbaa !111
  %166 = load ptr, ptr %165, align 8, !tbaa !114
  %167 = getelementptr inbounds i8, ptr %166, i64 48
  %168 = load ptr, ptr %167, align 8
  %169 = tail call noundef nonnull align 8 dereferenceable(40) ptr %168(ptr noundef nonnull align 8 dereferenceable(144) %165)
  %170 = tail call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %169) #7
  %171 = load ptr, ptr %0, align 8, !tbaa !114
  %172 = getelementptr inbounds i8, ptr %171, i64 336
  %173 = load ptr, ptr %172, align 8
  tail call void (ptr, ptr, ptr, ptr, ptr, ...) %173(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %46, ptr noundef nonnull @.str.838, ptr noundef %170, ptr noundef nonnull @.str.2)
  br label %174

174:                                              ; preds = %163, %161
  %175 = add i32 %.0175242, 1
  %176 = zext i32 %175 to i64
  %177 = tail call noundef i64 @_ZNKSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %2) #7
  %178 = icmp ugt i64 %177, %176
  br i1 %178, label %37, label %._crit_edge, !llvm.loop !116

179:                                              ; preds = %._crit_edge
  %180 = getelementptr inbounds i8, ptr %0, i64 1184
  %181 = load ptr, ptr %180, align 8, !tbaa !35
  %182 = tail call noundef zeroext i1 @_ZN7glslang13TParseContext11builtInNameERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEE(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(40) %181)
  br i1 %182, label %183, label %185

183:                                              ; preds = %179
  %184 = load ptr, ptr %180, align 8, !tbaa !35
  tail call void @_ZN7glslang13TParseContext21redeclareBuiltinBlockERKNS_10TSourceLocERNS_7TVectorINS_8TTypeLocEEERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEEPSF_PNS_11TArraySizesE(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(32) %2, ptr noundef nonnull align 8 dereferenceable(40) %184, ptr noundef %3, ptr noundef %4)
  br label %600

185:                                              ; preds = %179, %._crit_edge
  %186 = getelementptr inbounds i8, ptr %0, i64 1184
  %187 = load ptr, ptr %186, align 8, !tbaa !35
  tail call void @_ZN7glslang13TParseContext18reservedErrorCheckERKNS_10TSourceLocERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEE(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(40) %187)
  br i1 %26, label %188, label %189

188:                                              ; preds = %185
  tail call void @_ZN7glslang13TParseContext18reservedErrorCheckERKNS_10TSourceLocERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEE(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(40) %3)
  br label %189

189:                                              ; preds = %188, %185
  %190 = tail call noundef i64 @_ZNKSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %2) #7
  %.not263 = icmp eq i64 %190, 0
  br i1 %.not263, label %._crit_edge246, label %.lr.ph245

._crit_edge246:                                   ; preds = %.lr.ph245, %189
  call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %6) #7
  %191 = getelementptr inbounds i8, ptr %0, i64 1200
  %192 = load i64, ptr %191, align 8
  %193 = trunc i64 %192 to i32
  %194 = and i32 %193, 63
  switch i32 %194, label %218 [
    i32 5, label %208
    i32 6, label %210
    i32 3, label %212
    i32 4, label %214
    i32 7, label %216
  ]

.lr.ph245:                                        ; preds = %189, %.lr.ph245
  %195 = phi i64 [ %205, %.lr.ph245 ], [ 0, %189 ]
  %.0176243 = phi i32 [ %204, %.lr.ph245 ], [ 0, %189 ]
  %196 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %2, i64 noundef %195) #7
  %197 = getelementptr inbounds i8, ptr %196, i64 8
  %198 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %2, i64 noundef %195) #7
  %199 = load ptr, ptr %198, align 8, !tbaa !111
  %200 = load ptr, ptr %199, align 8, !tbaa !114
  %201 = getelementptr inbounds i8, ptr %200, i64 48
  %202 = load ptr, ptr %201, align 8
  %203 = tail call noundef nonnull align 8 dereferenceable(40) ptr %202(ptr noundef nonnull align 8 dereferenceable(144) %199)
  tail call void @_ZN7glslang13TParseContext18reservedErrorCheckERKNS_10TSourceLocERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEE(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(24) %197, ptr noundef nonnull align 8 dereferenceable(40) %203)
  %204 = add i32 %.0176243, 1
  %205 = zext i32 %204 to i64
  %206 = tail call noundef i64 @_ZNKSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %2) #7
  %207 = icmp ugt i64 %206, %205
  br i1 %207, label %.lr.ph245, label %._crit_edge246, !llvm.loop !118

208:                                              ; preds = %._crit_edge246
  %209 = getelementptr inbounds i8, ptr %0, i64 24360
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %6, ptr noundef nonnull align 8 dereferenceable(72) %209, i64 72, i1 false), !tbaa.struct !119
  br label %219

210:                                              ; preds = %._crit_edge246
  %211 = getelementptr inbounds i8, ptr %0, i64 24288
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %6, ptr noundef nonnull align 8 dereferenceable(72) %211, i64 72, i1 false), !tbaa.struct !119
  br label %219

212:                                              ; preds = %._crit_edge246
  %213 = getelementptr inbounds i8, ptr %0, i64 24432
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %6, ptr noundef nonnull align 8 dereferenceable(72) %213, i64 72, i1 false), !tbaa.struct !119
  br label %219

214:                                              ; preds = %._crit_edge246
  %215 = getelementptr inbounds i8, ptr %0, i64 24504
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %6, ptr noundef nonnull align 8 dereferenceable(72) %215, i64 72, i1 false), !tbaa.struct !119
  br label %219

216:                                              ; preds = %._crit_edge246
  %217 = getelementptr inbounds i8, ptr %0, i64 24576
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %6, ptr noundef nonnull align 8 dereferenceable(72) %217, i64 72, i1 false), !tbaa.struct !119
  br label %219

218:                                              ; preds = %._crit_edge246
  call void @_ZN7glslang10TQualifier5clearEv(ptr noundef nonnull align 8 dereferenceable(72) %6)
  br label %219

219:                                              ; preds = %218, %216, %214, %212, %210, %208
  %220 = call noundef zeroext i1 @_ZNK7glslang10TQualifier14isPushConstantEv(ptr noundef nonnull align 8 dereferenceable(72) %25)
  br i1 %220, label %221, label %223

221:                                              ; preds = %219
  %222 = call noundef zeroext i1 @_ZNK7glslang10TQualifier10hasPackingEv(ptr noundef nonnull align 8 dereferenceable(72) %25)
  br i1 %222, label %223, label %227

223:                                              ; preds = %221, %219
  %224 = call noundef zeroext i1 @_ZNK7glslang10TQualifier14isShaderRecordEv(ptr noundef nonnull align 8 dereferenceable(72) %25)
  br i1 %224, label %225, label %232

225:                                              ; preds = %223
  %226 = call noundef zeroext i1 @_ZNK7glslang10TQualifier10hasPackingEv(ptr noundef nonnull align 8 dereferenceable(72) %25)
  br i1 %226, label %232, label %227

227:                                              ; preds = %225, %221
  %228 = getelementptr inbounds i8, ptr %0, i64 1208
  %229 = load i8, ptr %228, align 8
  %230 = and i8 %229, -16
  %231 = or disjoint i8 %230, 3
  store i8 %231, ptr %228, align 8
  br label %232

232:                                              ; preds = %227, %225, %223
  %233 = call noundef zeroext i1 @_ZNK7glslang10TQualifier12isTaskMemoryEv(ptr noundef nonnull align 8 dereferenceable(72) %25)
  br i1 %233, label %234, label %241

234:                                              ; preds = %232
  %235 = call noundef zeroext i1 @_ZNK7glslang10TQualifier10hasPackingEv(ptr noundef nonnull align 8 dereferenceable(72) %25)
  br i1 %235, label %241, label %236

236:                                              ; preds = %234
  %237 = getelementptr inbounds i8, ptr %0, i64 1208
  %238 = load i8, ptr %237, align 8
  %239 = and i8 %238, -16
  %240 = or disjoint i8 %239, 3
  store i8 %240, ptr %237, align 8
  br label %241

241:                                              ; preds = %236, %234, %232
  call void @_ZN7glslang13TParseContext27mergeObjectLayoutQualifiersERNS_10TQualifierERKS1_b(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(72) %6, ptr noundef nonnull align 8 dereferenceable(72) %25, i1 noundef zeroext true)
  %242 = call noundef zeroext i1 @_ZNK7glslang10TQualifier8hasAlignEv(ptr noundef nonnull align 8 dereferenceable(72) %25)
  br i1 %242, label %243, label %252

243:                                              ; preds = %241
  %244 = getelementptr inbounds i8, ptr %6, i64 16
  %245 = load i8, ptr %244, align 8
  %246 = and i8 %245, 15
  switch i8 %246, label %247 [
    i8 2, label %252
    i8 3, label %252
    i8 5, label %252
  ]

247:                                              ; preds = %243
  %248 = load ptr, ptr %0, align 8, !tbaa !114
  %249 = getelementptr inbounds i8, ptr %248, i64 336
  %250 = load ptr, ptr %249, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %250(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.839, ptr noundef nonnull @.str.615, ptr noundef nonnull @.str.2)
  %251 = getelementptr inbounds i8, ptr %6, i64 24
  store i32 -1, ptr %251, align 8, !tbaa !124
  br label %252

252:                                              ; preds = %243, %243, %243, %247, %241
  %253 = call noundef i64 @_ZNKSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %2) #7
  %.not264 = icmp eq i64 %253, 0
  br i1 %.not264, label %._crit_edge253, label %.lr.ph252

.lr.ph252:                                        ; preds = %252
  %254 = getelementptr inbounds i8, ptr %6, i64 28
  %255 = getelementptr inbounds i8, ptr %6, i64 36
  %256 = getelementptr inbounds i8, ptr %6, i64 16
  br label %260

._crit_edge253:                                   ; preds = %326, %252
  %.0194.lcssa = phi i1 [ false, %252 ], [ %spec.select, %326 ]
  %.0181.lcssa = phi i1 [ false, %252 ], [ %.1182, %326 ]
  %.0178.lcssa = phi i1 [ false, %252 ], [ %.2180, %326 ]
  call void @_ZN7glslang13TParseContext30layoutMemberLocationArrayCheckERKNS_10TSourceLocEbPNS_11TArraySizesE(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, i1 noundef zeroext %.0178.lcssa, ptr noundef %4)
  %257 = load i64, ptr %191, align 8
  %258 = and i64 %257, 63
  %259 = icmp eq i64 %258, 4
  br i1 %259, label %332, label %347

260:                                              ; preds = %.lr.ph252, %326
  %261 = phi i64 [ 0, %.lr.ph252 ], [ %329, %326 ]
  %.0178250 = phi i1 [ false, %.lr.ph252 ], [ %.2180, %326 ]
  %.0181249 = phi i1 [ false, %.lr.ph252 ], [ %.1182, %326 ]
  %.0194248 = phi i1 [ false, %.lr.ph252 ], [ %spec.select, %326 ]
  %.0196247 = phi i32 [ 0, %.lr.ph252 ], [ %328, %326 ]
  %262 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %2, i64 noundef %261) #7
  %263 = load ptr, ptr %262, align 8, !tbaa !111
  %264 = load ptr, ptr %263, align 8, !tbaa !114
  %265 = getelementptr inbounds i8, ptr %264, i64 80
  %266 = load ptr, ptr %265, align 8
  %267 = call noundef nonnull align 8 dereferenceable(72) ptr %266(ptr noundef nonnull align 8 dereferenceable(144) %263)
  %268 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %2, i64 noundef %261) #7
  %269 = getelementptr inbounds i8, ptr %268, i64 8
  %270 = call noundef zeroext i1 @_ZNK7glslang10TQualifier9hasStreamEv(ptr noundef nonnull align 8 dereferenceable(72) %267)
  br i1 %270, label %271, label %279

271:                                              ; preds = %260
  %272 = load i64, ptr %254, align 4
  %273 = getelementptr inbounds i8, ptr %267, i64 28
  %274 = load i64, ptr %273, align 4
  %.not224.unshifted = xor i64 %274, %272
  %.not224 = icmp ult i64 %.not224.unshifted, 72057594037927936
  br i1 %.not224, label %279, label %275

275:                                              ; preds = %271
  %276 = load ptr, ptr %0, align 8, !tbaa !114
  %277 = getelementptr inbounds i8, ptr %276, i64 336
  %278 = load ptr, ptr %277, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %278(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %269, ptr noundef nonnull @.str.840, ptr noundef nonnull @.str.653, ptr noundef nonnull @.str.2)
  br label %279

279:                                              ; preds = %271, %275, %260
  %280 = call noundef zeroext i1 @_ZNK7glslang10TQualifier12hasXfbBufferEv(ptr noundef nonnull align 8 dereferenceable(72) %267)
  br i1 %280, label %281, label %291

281:                                              ; preds = %279
  %282 = load i64, ptr %255, align 4
  %283 = getelementptr inbounds i8, ptr %267, i64 36
  %284 = load i64, ptr %283, align 4
  %285 = xor i64 %284, %282
  %286 = and i64 %285, 15
  %.not225 = icmp eq i64 %286, 0
  br i1 %.not225, label %291, label %287

287:                                              ; preds = %281
  %288 = load ptr, ptr %0, align 8, !tbaa !114
  %289 = getelementptr inbounds i8, ptr %288, i64 336
  %290 = load ptr, ptr %289, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %290(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %269, ptr noundef nonnull @.str.510, ptr noundef nonnull @.str.511, ptr noundef nonnull @.str.2)
  br label %291

291:                                              ; preds = %281, %287, %279
  %292 = call noundef zeroext i1 @_ZNK7glslang10TQualifier10hasPackingEv(ptr noundef nonnull align 8 dereferenceable(72) %267)
  br i1 %292, label %293, label %304

293:                                              ; preds = %291
  %294 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %2, i64 noundef %261) #7
  %295 = load ptr, ptr %294, align 8, !tbaa !111
  %296 = load ptr, ptr %295, align 8, !tbaa !114
  %297 = getelementptr inbounds i8, ptr %296, i64 48
  %298 = load ptr, ptr %297, align 8
  %299 = call noundef nonnull align 8 dereferenceable(40) ptr %298(ptr noundef nonnull align 8 dereferenceable(144) %295)
  %300 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %299) #7
  %301 = load ptr, ptr %0, align 8, !tbaa !114
  %302 = getelementptr inbounds i8, ptr %301, i64 336
  %303 = load ptr, ptr %302, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %303(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %269, ptr noundef nonnull @.str.841, ptr noundef %300, ptr noundef nonnull @.str.2)
  br label %304

304:                                              ; preds = %293, %291
  %305 = call noundef zeroext i1 @_ZNK7glslang10TQualifier11hasLocationEv(ptr noundef nonnull align 8 dereferenceable(72) %267)
  br i1 %305, label %306, label %315

306:                                              ; preds = %304
  %307 = load i64, ptr %191, align 8
  %308 = trunc i64 %307 to i32
  %309 = and i32 %308, 63
  %.off = add nsw i32 %309, -3
  %switch = icmp ult i32 %.off, 2
  br i1 %switch, label %310, label %311

310:                                              ; preds = %306
  call void @_ZN7glslang14TParseVersions14requireProfileERKNS_10TSourceLocEiPKc(ptr noundef nonnull align 8 dereferenceable(192) %0, ptr noundef nonnull align 8 dereferenceable(24) %269, i32 noundef 14, ptr noundef nonnull @.str.842)
  call void @_ZN7glslang14TParseVersions15profileRequiresERKNS_10TSourceLocEiiPKcS5_(ptr noundef nonnull align 8 dereferenceable(192) %0, ptr noundef nonnull align 8 dereferenceable(24) %269, i32 noundef 6, i32 noundef 440, ptr noundef nonnull @.str.611, ptr noundef nonnull @.str.842)
  call void @_ZN7glslang14TParseVersions15profileRequiresERKNS_10TSourceLocEiiiPKPKcS5_(ptr noundef nonnull align 8 dereferenceable(192) %0, ptr noundef nonnull align 8 dereferenceable(24) %269, i32 noundef 8, i32 noundef 320, i32 noundef 2, ptr noundef nonnull @_ZN7glslangL20AEP_shader_io_blocksE, ptr noundef nonnull @.str.842)
  br label %315

311:                                              ; preds = %306
  %312 = load ptr, ptr %0, align 8, !tbaa !114
  %313 = getelementptr inbounds i8, ptr %312, i64 336
  %314 = load ptr, ptr %313, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %314(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %269, ptr noundef nonnull @.str.843, ptr noundef nonnull @.str.842, ptr noundef nonnull @.str.2)
  br label %315

315:                                              ; preds = %304, %310, %311
  %.1182 = phi i1 [ %.0181249, %311 ], [ %.0181249, %310 ], [ true, %304 ]
  %.2180 = phi i1 [ %.0178250, %311 ], [ true, %310 ], [ %.0178250, %304 ]
  %316 = call noundef zeroext i1 @_ZNK7glslang10TQualifier8hasAlignEv(ptr noundef nonnull align 8 dereferenceable(72) %267)
  br i1 %316, label %319, label %317

317:                                              ; preds = %315
  %318 = call noundef zeroext i1 @_ZNK7glslang10TQualifier9hasOffsetEv(ptr noundef nonnull align 8 dereferenceable(72) %267)
  br i1 %318, label %319, label %326

319:                                              ; preds = %317, %315
  %320 = load i8, ptr %256, align 8
  %321 = and i8 %320, 15
  switch i8 %321, label %322 [
    i8 2, label %326
    i8 3, label %326
    i8 5, label %326
  ]

322:                                              ; preds = %319
  %323 = load ptr, ptr %0, align 8, !tbaa !114
  %324 = getelementptr inbounds i8, ptr %323, i64 336
  %325 = load ptr, ptr %324, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %325(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %269, ptr noundef nonnull @.str.839, ptr noundef nonnull @.str.844, ptr noundef nonnull @.str.2)
  br label %326

326:                                              ; preds = %319, %319, %319, %322, %317
  %327 = call noundef zeroext i1 @_ZNK7glslang10TQualifier9isPerViewEv(ptr noundef nonnull align 8 dereferenceable(72) %267)
  %spec.select = select i1 %327, i1 true, i1 %.0194248
  call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %7) #7
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %7, ptr noundef nonnull align 8 dereferenceable(72) %6, i64 72, i1 false), !tbaa.struct !119
  call void @_ZN7glslang13TParseContext15mergeQualifiersERKNS_10TSourceLocERNS_10TQualifierERKS4_b(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(24) %269, ptr noundef nonnull align 8 dereferenceable(72) %7, ptr noundef nonnull align 8 dereferenceable(72) %267, i1 noundef zeroext false)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %267, ptr noundef nonnull align 8 dereferenceable(72) %7, i64 72, i1 false), !tbaa.struct !119
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %7) #7
  %328 = add i32 %.0196247, 1
  %329 = zext i32 %328 to i64
  %330 = call noundef i64 @_ZNKSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %2) #7
  %331 = icmp ugt i64 %330, %329
  br i1 %331, label %260, label %._crit_edge253, !llvm.loop !125

332:                                              ; preds = %._crit_edge253
  %333 = getelementptr inbounds i8, ptr %0, i64 24504
  %334 = call noundef zeroext i1 @_ZNK7glslang10TQualifier12hasXfbBufferEv(ptr noundef nonnull align 8 dereferenceable(72) %333)
  br i1 %334, label %335, label %347

335:                                              ; preds = %332
  %336 = call noundef zeroext i1 @_ZNK7glslang10TQualifier12hasXfbBufferEv(ptr noundef nonnull align 8 dereferenceable(72) %25)
  br i1 %336, label %347, label %337

337:                                              ; preds = %335
  %338 = call noundef zeroext i1 @_ZNK7glslang10TQualifier12hasXfbOffsetEv(ptr noundef nonnull align 8 dereferenceable(72) %25)
  br i1 %338, label %339, label %347

339:                                              ; preds = %337
  %340 = getelementptr inbounds i8, ptr %0, i64 24540
  %341 = load i64, ptr %340, align 4
  %342 = and i64 %341, 15
  %343 = getelementptr inbounds i8, ptr %0, i64 1228
  %344 = load i64, ptr %343, align 4
  %345 = and i64 %344, -16
  %346 = or disjoint i64 %345, %342
  store i64 %346, ptr %343, align 4
  br label %347

347:                                              ; preds = %335, %337, %339, %332, %._crit_edge253
  call void @_ZN7glslang13TParseContext17fixBlockLocationsERKNS_10TSourceLocERNS_10TQualifierERNS_7TVectorINS_8TTypeLocEEEbb(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(72) %25, ptr noundef nonnull align 8 dereferenceable(32) %2, i1 noundef zeroext %.0178.lcssa, i1 noundef zeroext %.0181.lcssa)
  call void @_ZN7glslang13TParseContext13fixXfbOffsetsERNS_10TQualifierERNS_7TVectorINS_8TTypeLocEEE(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(72) %25, ptr noundef nonnull align 8 dereferenceable(32) %2)
  call void @_ZN7glslang13TParseContext22fixBlockUniformOffsetsERNS_10TQualifierERNS_7TVectorINS_8TTypeLocEEE(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(72) %25, ptr noundef nonnull align 8 dereferenceable(32) %2)
  call void @_ZN7glslang13TParseContext27fixBlockUniformLayoutMatrixERNS_10TQualifierEPNS_7TVectorINS_8TTypeLocEEES6_(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(72) %25, ptr noundef nonnull %2, ptr noundef null)
  call void @_ZN7glslang13TParseContext28fixBlockUniformLayoutPackingERNS_10TQualifierEPNS_7TVectorINS_8TTypeLocEEES6_(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(72) %25, ptr noundef nonnull %2, ptr noundef null)
  %348 = call noundef i64 @_ZNKSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %2) #7
  %.not265 = icmp eq i64 %348, 0
  br i1 %.not265, label %._crit_edge259, label %.lr.ph258

._crit_edge259:                                   ; preds = %.lr.ph258, %347
  br i1 %.0194.lcssa, label %.preheader, label %.loopexit

.preheader:                                       ; preds = %._crit_edge259
  %349 = call noundef i64 @_ZNKSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %2) #7
  %.not266 = icmp eq i64 %349, 0
  br i1 %.not266, label %.loopexit, label %.lr.ph261

.lr.ph258:                                        ; preds = %347, %.lr.ph258
  %350 = phi i64 [ %356, %.lr.ph258 ], [ 0, %347 ]
  %.0193256 = phi i32 [ %355, %.lr.ph258 ], [ 0, %347 ]
  %351 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %2, i64 noundef %350) #7
  %352 = getelementptr inbounds i8, ptr %351, i64 8
  %353 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %2, i64 noundef %350) #7
  %354 = load ptr, ptr %353, align 8, !tbaa !111
  call void @_ZN7glslang13TParseContext15layoutTypeCheckERKNS_10TSourceLocERKNS_5TTypeE(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(24) %352, ptr noundef nonnull align 8 dereferenceable(144) %354)
  %355 = add i32 %.0193256, 1
  %356 = zext i32 %355 to i64
  %357 = call noundef i64 @_ZNKSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %2) #7
  %358 = icmp ugt i64 %357, %356
  br i1 %358, label %.lr.ph258, label %._crit_edge259, !llvm.loop !126

.lr.ph261:                                        ; preds = %.preheader, %.lr.ph261
  %359 = phi i64 [ %365, %.lr.ph261 ], [ 0, %.preheader ]
  %.0192260 = phi i32 [ %364, %.lr.ph261 ], [ 0, %.preheader ]
  %360 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %2, i64 noundef %359) #7
  %361 = getelementptr inbounds i8, ptr %360, i64 8
  %362 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %2, i64 noundef %359) #7
  %363 = load ptr, ptr %362, align 8, !tbaa !111
  call void @_ZN7glslang13TParseContext25checkAndResizeMeshViewDimERKNS_10TSourceLocERNS_5TTypeEb(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(24) %361, ptr noundef nonnull align 8 dereferenceable(144) %363, i1 noundef zeroext true)
  %364 = add i32 %.0192260, 1
  %365 = zext i32 %364 to i64
  %366 = call noundef i64 @_ZNKSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %2) #7
  %367 = icmp ugt i64 %366, %365
  br i1 %367, label %.lr.ph261, label %.loopexit, !llvm.loop !127

.loopexit:                                        ; preds = %.lr.ph261, %.preheader, %._crit_edge259
  call void @_ZN7glslang13TParseContext27mergeObjectLayoutQualifiersERNS_10TQualifierERKS1_b(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(72) %25, ptr noundef nonnull align 8 dereferenceable(72) %6, i1 noundef zeroext true)
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %8) #7
  %368 = load ptr, ptr %186, align 8, !tbaa !35
  call void @_ZN7glslang5TTypeC2EPNS_7TVectorINS_8TTypeLocEEERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEERKNS_10TQualifierE(ptr noundef nonnull align 8 dereferenceable(144) %8, ptr noundef nonnull %2, ptr noundef nonnull align 8 dereferenceable(40) %368, ptr noundef nonnull align 8 dereferenceable(72) %25)
  br i1 %.not, label %372, label %371

369:                                              ; preds = %554, %380, %372
  %370 = landingpad { ptr, i32 }
          cleanup
  br label %601

371:                                              ; preds = %.loopexit
  call void @_ZN7glslang5TType18transferArraySizesEPNS_11TArraySizesE(ptr noundef nonnull align 8 dereferenceable(144) %8, ptr noundef nonnull %4)
  br label %375

372:                                              ; preds = %.loopexit
  %373 = load ptr, ptr %186, align 8
  %374 = select i1 %26, ptr %3, ptr %373
  invoke void @_ZN7glslang13TParseContext12ioArrayCheckERKNS_10TSourceLocERKNS_5TTypeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEE(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(144) %8, ptr noundef nonnull align 8 dereferenceable(40) %374)
          to label %375 unwind label %369

375:                                              ; preds = %371, %372
  %376 = call noundef zeroext i1 @_ZNK7glslang10TQualifier18hasBufferReferenceEv(ptr noundef nonnull align 8 dereferenceable(72) %25)
  br i1 %376, label %377, label %481

377:                                              ; preds = %375
  %378 = load i64, ptr %191, align 8
  %379 = and i64 %378, 63
  %.not216 = icmp eq i64 %379, 6
  br i1 %.not216, label %384, label %380

380:                                              ; preds = %377
  %381 = load ptr, ptr %0, align 8, !tbaa !114
  %382 = getelementptr inbounds i8, ptr %381, i64 336
  %383 = load ptr, ptr %382, align 8
  invoke void (ptr, ptr, ptr, ptr, ptr, ...) %383(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.745, ptr noundef nonnull @.str.577, ptr noundef nonnull @.str.2)
          to label %384 unwind label %369

384:                                              ; preds = %380, %377
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %9) #7
  %385 = load ptr, ptr %186, align 8, !tbaa !35
  invoke void @_ZN7glslang5TTypeC2ENS_10TBasicTypeERKS0_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEE(ptr noundef nonnull align 8 dereferenceable(144) %9, i32 noundef 18, ptr noundef nonnull align 8 dereferenceable(144) %8, ptr noundef nonnull align 8 dereferenceable(40) %385)
          to label %386 unwind label %464

386:                                              ; preds = %384
  %387 = invoke noundef ptr @_ZN7glslang7TSymbolnwEm(i64 noundef 232)
          to label %388 unwind label %466

388:                                              ; preds = %386
  %389 = load ptr, ptr %186, align 8, !tbaa !35
  invoke void @_ZN7glslang9TVariableC2EPKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEERKNS_5TTypeEb(ptr noundef nonnull align 8 dereferenceable(228) %387, ptr noundef %389, ptr noundef nonnull align 8 dereferenceable(144) %9, i1 noundef zeroext true)
          to label %390 unwind label %468

390:                                              ; preds = %388
  %391 = load ptr, ptr %34, align 8, !tbaa !110
  %392 = invoke noundef zeroext i1 @_ZN7glslang12TSymbolTable6insertERNS_7TSymbolE(ptr noundef nonnull align 8 dereferenceable(40) %391, ptr noundef nonnull align 8 dereferenceable(33) %387)
          to label %393 unwind label %466

393:                                              ; preds = %390
  br i1 %392, label %478, label %394

394:                                              ; preds = %393
  %395 = load ptr, ptr %34, align 8, !tbaa !110
  %396 = load ptr, ptr %186, align 8, !tbaa !35
  %397 = invoke noundef ptr @_ZN7glslang12TSymbolTable4findERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEEPbSA_Pi(ptr noundef nonnull align 8 dereferenceable(40) %395, ptr noundef nonnull align 8 dereferenceable(40) %396, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %398 unwind label %470

398:                                              ; preds = %394
  %399 = load ptr, ptr %397, align 8, !tbaa !114
  %400 = getelementptr inbounds i8, ptr %399, i64 96
  %401 = load ptr, ptr %400, align 8
  %402 = invoke noundef nonnull align 8 dereferenceable(144) ptr %401(ptr noundef nonnull align 8 dereferenceable(33) %397)
          to label %403 unwind label %470

403:                                              ; preds = %398
  %404 = invoke noundef zeroext i1 @_ZNK7glslang5TType11isReferenceEv(ptr noundef nonnull align 8 dereferenceable(144) %402)
          to label %405 unwind label %470

405:                                              ; preds = %403
  br i1 %404, label %406, label %472

406:                                              ; preds = %405
  %407 = load ptr, ptr %397, align 8, !tbaa !114
  %408 = getelementptr inbounds i8, ptr %407, i64 96
  %409 = load ptr, ptr %408, align 8
  %410 = invoke noundef nonnull align 8 dereferenceable(144) ptr %409(ptr noundef nonnull align 8 dereferenceable(33) %397)
          to label %411 unwind label %470

411:                                              ; preds = %406
  %412 = load ptr, ptr %410, align 8, !tbaa !114
  %413 = getelementptr inbounds i8, ptr %412, i64 168
  %414 = load ptr, ptr %413, align 8
  %415 = invoke noundef ptr %414(ptr noundef nonnull align 8 dereferenceable(144) %410)
          to label %416 unwind label %470

416:                                              ; preds = %411
  %417 = invoke noundef ptr @_ZNK7glslang5TType9getStructEv(ptr noundef nonnull align 8 dereferenceable(144) %415)
          to label %418 unwind label %470

418:                                              ; preds = %416
  %.not217 = icmp eq ptr %417, null
  br i1 %.not217, label %472, label %419

419:                                              ; preds = %418
  %420 = load ptr, ptr %397, align 8, !tbaa !114
  %421 = getelementptr inbounds i8, ptr %420, i64 96
  %422 = load ptr, ptr %421, align 8
  %423 = invoke noundef nonnull align 8 dereferenceable(144) ptr %422(ptr noundef nonnull align 8 dereferenceable(33) %397)
          to label %424 unwind label %470

424:                                              ; preds = %419
  %425 = load ptr, ptr %423, align 8, !tbaa !114
  %426 = getelementptr inbounds i8, ptr %425, i64 168
  %427 = load ptr, ptr %426, align 8
  %428 = invoke noundef ptr %427(ptr noundef nonnull align 8 dereferenceable(144) %423)
          to label %429 unwind label %470

429:                                              ; preds = %424
  %430 = invoke noundef ptr @_ZNK7glslang5TType9getStructEv(ptr noundef nonnull align 8 dereferenceable(144) %428)
          to label %431 unwind label %470

431:                                              ; preds = %429
  %432 = call noundef i64 @_ZNKSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %430) #7
  %433 = icmp eq i64 %432, 0
  br i1 %433, label %434, label %472

434:                                              ; preds = %431
  %435 = load ptr, ptr %397, align 8, !tbaa !114
  %436 = getelementptr inbounds i8, ptr %435, i64 96
  %437 = load ptr, ptr %436, align 8
  %438 = invoke noundef nonnull align 8 dereferenceable(144) ptr %437(ptr noundef nonnull align 8 dereferenceable(33) %397)
          to label %439 unwind label %470

439:                                              ; preds = %434
  %440 = load ptr, ptr %438, align 8, !tbaa !114
  %441 = getelementptr inbounds i8, ptr %440, i64 88
  %442 = load ptr, ptr %441, align 8
  %443 = invoke noundef nonnull align 8 dereferenceable(72) ptr %442(ptr noundef nonnull align 8 dereferenceable(144) %438)
          to label %444 unwind label %470

444:                                              ; preds = %439
  %445 = getelementptr inbounds i8, ptr %443, i64 8
  %446 = load i64, ptr %445, align 8
  %447 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZN7glslang5TType12getQualifierEv(ptr noundef nonnull align 8 dereferenceable(144) %8)
  %448 = getelementptr inbounds i8, ptr %447, i64 8
  %449 = load i64, ptr %448, align 8
  %450 = xor i64 %449, %446
  %451 = and i64 %450, 63
  %452 = icmp eq i64 %451, 0
  br i1 %452, label %453, label %472

453:                                              ; preds = %444
  %454 = load ptr, ptr %397, align 8, !tbaa !114
  %455 = getelementptr inbounds i8, ptr %454, i64 96
  %456 = load ptr, ptr %455, align 8
  %457 = invoke noundef nonnull align 8 dereferenceable(144) ptr %456(ptr noundef nonnull align 8 dereferenceable(33) %397)
          to label %458 unwind label %470

458:                                              ; preds = %453
  %459 = load ptr, ptr %457, align 8, !tbaa !114
  %460 = getelementptr inbounds i8, ptr %459, i64 168
  %461 = load ptr, ptr %460, align 8
  %462 = invoke noundef ptr %461(ptr noundef nonnull align 8 dereferenceable(144) %457)
          to label %463 unwind label %470

463:                                              ; preds = %458
  invoke void @_ZN7glslang5TType8deepCopyERKS0_(ptr noundef nonnull align 8 dereferenceable(144) %462, ptr noundef nonnull align 8 dereferenceable(144) %8)
          to label %478 unwind label %470

464:                                              ; preds = %384
  %465 = landingpad { ptr, i32 }
          cleanup
  br label %480

466:                                              ; preds = %390, %386
  %467 = landingpad { ptr, i32 }
          cleanup
  br label %479

468:                                              ; preds = %388
  %469 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7glslang7TSymboldlEPv(ptr noundef %387) #7
  br label %479

470:                                              ; preds = %472, %463, %458, %453, %439, %434, %429, %424, %419, %416, %411, %406, %403, %398, %394
  %471 = landingpad { ptr, i32 }
          cleanup
  br label %479

472:                                              ; preds = %444, %431, %418, %405
  %473 = load ptr, ptr %186, align 8, !tbaa !35
  %474 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %473) #7
  %475 = load ptr, ptr %0, align 8, !tbaa !114
  %476 = getelementptr inbounds i8, ptr %475, i64 336
  %477 = load ptr, ptr %476, align 8
  invoke void (ptr, ptr, ptr, ptr, ptr, ...) %477(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.845, ptr noundef %474, ptr noundef nonnull @.str.2)
          to label %478 unwind label %470

478:                                              ; preds = %393, %472, %463
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %9) #7
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %9) #7
  br i1 %26, label %.critedge238, label %599

479:                                              ; preds = %470, %468, %466
  %.pn218 = phi { ptr, i32 } [ %471, %470 ], [ %467, %466 ], [ %469, %468 ]
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %9) #7
  br label %480

480:                                              ; preds = %479, %464
  %.pn218.pn = phi { ptr, i32 } [ %.pn218, %479 ], [ %465, %464 ]
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %9) #7
  br label %601

481:                                              ; preds = %375
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %10) #7
  %482 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZN7glslang5TType12getQualifierEv(ptr noundef nonnull align 8 dereferenceable(144) %8)
  %483 = getelementptr inbounds i8, ptr %482, i64 8
  %484 = load i64, ptr %483, align 8
  %485 = trunc i64 %484 to i32
  %486 = and i32 %485, 63
  invoke void @_ZN7glslang5TTypeC2ENS_10TBasicTypeENS_17TStorageQualifierEiiib(ptr noundef nonnull align 8 dereferenceable(144) %10, i32 noundef 16, i32 noundef %486, i32 noundef 1, i32 noundef 0, i32 noundef 0, i1 noundef zeroext false)
          to label %487 unwind label %538

487:                                              ; preds = %481
  %488 = invoke noundef ptr @_ZN7glslang7TSymbolnwEm(i64 noundef 232)
          to label %489 unwind label %540

489:                                              ; preds = %487
  %490 = load ptr, ptr %186, align 8, !tbaa !35
  invoke void @_ZN7glslang9TVariableC2EPKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEERKNS_5TTypeEb(ptr noundef nonnull align 8 dereferenceable(228) %488, ptr noundef %490, ptr noundef nonnull align 8 dereferenceable(144) %10, i1 noundef zeroext false)
          to label %491 unwind label %542

491:                                              ; preds = %489
  %492 = load ptr, ptr %34, align 8, !tbaa !110
  %493 = invoke noundef zeroext i1 @_ZN7glslang12TSymbolTable6insertERNS_7TSymbolE(ptr noundef nonnull align 8 dereferenceable(40) %492, ptr noundef nonnull align 8 dereferenceable(33) %488)
          to label %494 unwind label %540

494:                                              ; preds = %491
  br i1 %493, label %.critedge236, label %495

495:                                              ; preds = %494
  %496 = load ptr, ptr %34, align 8, !tbaa !110
  %497 = load ptr, ptr %186, align 8, !tbaa !35
  %498 = invoke noundef ptr @_ZN7glslang12TSymbolTable4findERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEEPbSA_Pi(ptr noundef nonnull align 8 dereferenceable(40) %496, ptr noundef nonnull align 8 dereferenceable(40) %497, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %499 unwind label %544

499:                                              ; preds = %495
  %500 = load ptr, ptr %498, align 8, !tbaa !114
  %501 = getelementptr inbounds i8, ptr %500, i64 96
  %502 = load ptr, ptr %501, align 8
  %503 = invoke noundef nonnull align 8 dereferenceable(144) ptr %502(ptr noundef nonnull align 8 dereferenceable(33) %498)
          to label %504 unwind label %544

504:                                              ; preds = %499
  %505 = load ptr, ptr %503, align 8, !tbaa !114
  %506 = getelementptr inbounds i8, ptr %505, i64 56
  %507 = load ptr, ptr %506, align 8
  %508 = invoke noundef i32 %507(ptr noundef nonnull align 8 dereferenceable(144) %503)
          to label %509 unwind label %544

509:                                              ; preds = %504
  %510 = icmp eq i32 %508, 16
  br i1 %510, label %511, label %546

511:                                              ; preds = %509
  %512 = load ptr, ptr %498, align 8, !tbaa !114
  %513 = getelementptr inbounds i8, ptr %512, i64 96
  %514 = load ptr, ptr %513, align 8
  %515 = invoke noundef nonnull align 8 dereferenceable(144) ptr %514(ptr noundef nonnull align 8 dereferenceable(33) %498)
          to label %516 unwind label %544

516:                                              ; preds = %511
  %517 = load ptr, ptr %515, align 8, !tbaa !114
  %518 = getelementptr inbounds i8, ptr %517, i64 88
  %519 = load ptr, ptr %518, align 8
  %520 = invoke noundef nonnull align 8 dereferenceable(72) ptr %519(ptr noundef nonnull align 8 dereferenceable(144) %515)
          to label %521 unwind label %544

521:                                              ; preds = %516
  %522 = getelementptr inbounds i8, ptr %520, i64 8
  %523 = load i64, ptr %522, align 8
  %524 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZN7glslang5TType12getQualifierEv(ptr noundef nonnull align 8 dereferenceable(144) %8)
  %525 = getelementptr inbounds i8, ptr %524, i64 8
  %526 = load i64, ptr %525, align 8
  %527 = xor i64 %526, %523
  %528 = and i64 %527, 63
  %529 = icmp eq i64 %528, 0
  br i1 %529, label %530, label %.critedge236

530:                                              ; preds = %521
  %531 = load ptr, ptr %186, align 8, !tbaa !35
  %532 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %531) #7
  %533 = invoke noundef ptr @_ZNK7glslang5TType25getStorageQualifierStringEv(ptr noundef nonnull align 8 dereferenceable(144) %8)
          to label %534 unwind label %544

534:                                              ; preds = %530
  %535 = load ptr, ptr %0, align 8, !tbaa !114
  %536 = getelementptr inbounds i8, ptr %535, i64 336
  %537 = load ptr, ptr %536, align 8
  invoke void (ptr, ptr, ptr, ptr, ptr, ...) %537(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.846, ptr noundef %532, ptr noundef %533)
          to label %.critedge unwind label %544

538:                                              ; preds = %481
  %539 = landingpad { ptr, i32 }
          cleanup
  br label %553

540:                                              ; preds = %491, %487
  %541 = landingpad { ptr, i32 }
          cleanup
  br label %552

542:                                              ; preds = %489
  %543 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7glslang7TSymboldlEPv(ptr noundef %488) #7
  br label %552

544:                                              ; preds = %546, %534, %530, %516, %511, %504, %499, %495
  %545 = landingpad { ptr, i32 }
          cleanup
  br label %552

546:                                              ; preds = %509
  %547 = load ptr, ptr %186, align 8, !tbaa !35
  %548 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %547) #7
  %549 = load ptr, ptr %0, align 8, !tbaa !114
  %550 = getelementptr inbounds i8, ptr %549, i64 336
  %551 = load ptr, ptr %550, align 8
  invoke void (ptr, ptr, ptr, ptr, ptr, ...) %551(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.847, ptr noundef %548, ptr noundef nonnull @.str.2)
          to label %.critedge unwind label %544

.critedge:                                        ; preds = %534, %546
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %10) #7
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %10) #7
  br label %599

552:                                              ; preds = %544, %542, %540
  %.pn = phi { ptr, i32 } [ %545, %544 ], [ %541, %540 ], [ %543, %542 ]
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %10) #7
  br label %553

553:                                              ; preds = %552, %538
  %.pn.pn = phi { ptr, i32 } [ %.pn, %552 ], [ %539, %538 ]
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %10) #7
  br label %601

.critedge236:                                     ; preds = %494, %521
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %10) #7
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %10) #7
  br i1 %26, label %.critedge238, label %554

554:                                              ; preds = %.critedge236
  %555 = invoke noundef ptr @_ZN7glslang14NewPoolTStringB5cxx11EPKc(ptr noundef nonnull @.str.2)
          to label %.critedge238 unwind label %369

.critedge238:                                     ; preds = %478, %554, %.critedge236
  %.0 = phi ptr [ %3, %.critedge236 ], [ %555, %554 ], [ %3, %478 ]
  %556 = invoke noundef ptr @_ZN7glslang7TSymbolnwEm(i64 noundef 232)
          to label %557 unwind label %566

557:                                              ; preds = %.critedge238
  invoke void @_ZN7glslang9TVariableC2EPKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEERKNS_5TTypeEb(ptr noundef nonnull align 8 dereferenceable(228) %556, ptr noundef %.0, ptr noundef nonnull align 8 dereferenceable(144) %8, i1 noundef zeroext false)
          to label %558 unwind label %568

558:                                              ; preds = %557
  %559 = load ptr, ptr %34, align 8, !tbaa !110
  %560 = invoke noundef zeroext i1 @_ZN7glslang12TSymbolTable6insertERNS_7TSymbolE(ptr noundef nonnull align 8 dereferenceable(40) %559, ptr noundef nonnull align 8 dereferenceable(33) %556)
          to label %561 unwind label %566

561:                                              ; preds = %558
  br i1 %560, label %580, label %562

562:                                              ; preds = %561
  %563 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS7_(ptr noundef nonnull align 8 dereferenceable(40) %.0, ptr noundef nonnull @.str.2)
  br i1 %563, label %564, label %570

564:                                              ; preds = %562
  %565 = load ptr, ptr %186, align 8, !tbaa !35
  br label %.invoke

566:                                              ; preds = %.invoke, %595, %594, %589, %586, %581, %580, %570, %558, %.critedge238
  %567 = landingpad { ptr, i32 }
          cleanup
  br label %601

568:                                              ; preds = %557
  %569 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7glslang7TSymboldlEPv(ptr noundef %556) #7
  br label %601

570:                                              ; preds = %562
  %571 = load ptr, ptr %556, align 8, !tbaa !114
  %572 = getelementptr inbounds i8, ptr %571, i64 24
  %573 = load ptr, ptr %572, align 8
  %574 = invoke noundef nonnull align 8 dereferenceable(40) ptr %573(ptr noundef nonnull align 8 dereferenceable(33) %556)
          to label %.invoke unwind label %566

.invoke:                                          ; preds = %570, %564
  %.sink = phi ptr [ %565, %564 ], [ %574, %570 ]
  %575 = phi ptr [ @.str.848, %564 ], [ @.str.849, %570 ]
  %576 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %.sink) #7
  %577 = load ptr, ptr %0, align 8, !tbaa !114
  %578 = getelementptr inbounds i8, ptr %577, i64 336
  %579 = load ptr, ptr %578, align 8
  invoke void (ptr, ptr, ptr, ptr, ptr, ...) %579(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull %575, ptr noundef %576, ptr noundef nonnull @.str.2)
          to label %599 unwind label %566

580:                                              ; preds = %561
  invoke void @_ZN7glslang13TParseContext17layoutObjectCheckERKNS_10TSourceLocERKNS_7TSymbolE(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(33) %556)
          to label %581 unwind label %566

581:                                              ; preds = %580
  %582 = invoke noundef zeroext i1 @_ZNK7glslang13TParseContext15isIoResizeArrayERKNS_5TTypeE(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(144) %8)
          to label %583 unwind label %566

583:                                              ; preds = %581
  br i1 %582, label %584, label %589

584:                                              ; preds = %583
  %585 = getelementptr inbounds i8, ptr %0, i64 24880
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #7
  store ptr %556, ptr %11, align 8, !tbaa !120
  invoke void @_ZNSt6vectorIPN7glslang7TSymbolENS0_14pool_allocatorIS2_EEE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(32) %585, ptr noundef nonnull align 8 dereferenceable(8) %11)
          to label %586 unwind label %587

586:                                              ; preds = %584
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #7
  invoke void @_ZN7glslang13TParseContext24checkIoArraysConsistencyERKNS_10TSourceLocEb(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, i1 noundef zeroext true)
          to label %595 unwind label %566

587:                                              ; preds = %584
  %588 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #7
  br label %601

589:                                              ; preds = %583
  %590 = load ptr, ptr %556, align 8, !tbaa !114
  %591 = getelementptr inbounds i8, ptr %590, i64 104
  %592 = load ptr, ptr %591, align 8
  %593 = invoke noundef nonnull align 8 dereferenceable(144) ptr %592(ptr noundef nonnull align 8 dereferenceable(228) %556)
          to label %594 unwind label %566

594:                                              ; preds = %589
  invoke void @_ZN7glslang13TParseContext14fixIoArraySizeERKNS_10TSourceLocERNS_5TTypeE(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(144) %593)
          to label %595 unwind label %566

595:                                              ; preds = %594, %586
  %596 = load ptr, ptr %0, align 8, !tbaa !114
  %597 = getelementptr inbounds i8, ptr %596, i64 592
  %598 = load ptr, ptr %597, align 8
  invoke void %598(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(33) %556)
          to label %599 unwind label %566

599:                                              ; preds = %.invoke, %595, %.critedge, %478
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %8) #7
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %8) #7
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %6) #7
  br label %600

600:                                              ; preds = %599, %183
  ret void

601:                                              ; preds = %566, %568, %587, %553, %480, %369
  %.pn221.pn = phi { ptr, i32 } [ %370, %369 ], [ %.pn218.pn, %480 ], [ %.pn.pn, %553 ], [ %567, %566 ], [ %588, %587 ], [ %569, %568 ]
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %8) #7
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %8) #7
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %6) #7
  resume { ptr, i32 } %.pn221.pn
}

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang13TParseContext17blockStorageRemapERKNS_10TSourceLocEPKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEERNS_10TQualifierE(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef, ptr noundef nonnull align 8 dereferenceable(72)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang13TParseContext17blockStageIoCheckERKNS_10TSourceLocERKNS_10TQualifierE(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(72)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32), i64 noundef) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNKSt3mapIiN7glslang7TVectorIPKNS0_12TIntermTypedEEESt4lessIiENS0_14pool_allocatorISt4pairIKiS5_EEEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(56)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang13TParseContext17fixBlockLocationsERKNS_10TSourceLocERNS_10TQualifierERNS_7TVectorINS_8TTypeLocEEEbb(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(72), ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext, i1 noundef zeroext) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang13TParseContext22fixBlockUniformOffsetsERNS_10TQualifierERNS_7TVectorINS_8TTypeLocEEE(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(72), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang13TParseContext27fixBlockUniformLayoutMatrixERNS_10TQualifierEPNS_7TVectorINS_8TTypeLocEEES6_(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(72), ptr noundef, ptr noundef) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang13TParseContext28fixBlockUniformLayoutPackingERNS_10TQualifierEPNS_7TVectorINS_8TTypeLocEEES6_(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(72), ptr noundef, ptr noundef) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang5TTypeC2EPNS_7TVectorINS_8TTypeLocEEERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEERKNS_10TQualifierE(ptr noundef nonnull align 8 dereferenceable(144), ptr noundef, ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(72)) unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang5TTypeC2ENS_10TBasicTypeERKS0_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEE(ptr noundef nonnull align 8 dereferenceable(144), i32 noundef, ptr noundef nonnull align 8 dereferenceable(144), ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang5TType8deepCopyERKS0_(ptr noundef nonnull align 8 dereferenceable(144), ptr noundef nonnull align 8 dereferenceable(144)) local_unnamed_addr #0 align 2

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

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

!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, !12, i64 40}
!6 = !{!"_ZTSN7glslang14TParseVersionsE", !7, i64 8, !10, i64 12, !11, i64 16, !12, i64 24, !13, i64 28, !14, i64 32, !11, i64 56, !15, i64 64, !26, i64 120, !31, i64 176, !12, i64 180, !11, i64 184}
!7 = !{!"bool", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"_ZTS8EProfile", !8, i64 0}
!11 = !{!"any pointer", !8, i64 0}
!12 = !{!"int", !8, i64 0}
!13 = !{!"_ZTS11EShLanguage", !8, i64 0}
!14 = !{!"_ZTSN7glslang10SpvVersionE", !12, i64 0, !12, i64 4, !12, i64 8, !12, i64 12, !7, i64 16}
!15 = !{!"_ZTSN7glslang4TMapINSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEENS_18TExtensionBehaviorESt4lessIS7_EEE", !16, i64 0}
!16 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEENS4_18TExtensionBehaviorESt4lessIS7_ENS5_ISt4pairIKS7_S8_EEEE", !17, i64 0}
!17 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_NS4_18TExtensionBehaviorEESt10_Select1stISB_ESt4lessIS7_ENS5_ISB_EEE", !18, i64 0}
!18 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_NS4_18TExtensionBehaviorEESt10_Select1stISB_ESt4lessIS7_ENS5_ISB_EEE13_Rb_tree_implISF_Lb1EEE", !19, i64 0, !20, i64 8, !22, i64 16}
!19 = !{!"_ZTSN7glslang14pool_allocatorISt13_Rb_tree_nodeISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_IcEEEENS_18TExtensionBehaviorEEEEE", !11, i64 0}
!20 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEEE", !21, i64 0}
!21 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEE"}
!22 = !{!"_ZTSSt15_Rb_tree_header", !23, i64 0, !25, i64 32}
!23 = !{!"_ZTSSt18_Rb_tree_node_base", !24, i64 0, !11, i64 8, !11, i64 16, !11, i64 24}
!24 = !{!"_ZTSSt14_Rb_tree_color", !8, i64 0}
!25 = !{!"long", !8, i64 0}
!26 = !{!"_ZTSN7glslang4TMapINSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEEjSt4lessIS7_EEE", !27, i64 0}
!27 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEjSt4lessIS7_ENS5_ISt4pairIKS7_jEEEE", !28, i64 0}
!28 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_jESt10_Select1stISA_ESt4lessIS7_ENS5_ISA_EEE", !29, i64 0}
!29 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_jESt10_Select1stISA_ESt4lessIS7_ENS5_ISA_EEE13_Rb_tree_implISE_Lb1EEE", !30, i64 0, !20, i64 8, !22, i64 16}
!30 = !{!"_ZTSN7glslang14pool_allocatorISt13_Rb_tree_nodeISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_IcEEEEjEEEE", !11, i64 0}
!31 = !{!"_ZTS11EShMessages", !8, i64 0}
!32 = !{!6, !7, i64 48}
!33 = !{i8 0, i8 2}
!34 = !{}
!35 = !{!36, !11, i64 1184}
!36 = !{!"_ZTSN7glslang13TParseContextE", !37, i64 0, !7, i64 1176, !11, i64 1184, !86, i64 1192, !8, i64 1264, !63, i64 1352, !11, i64 1736, !8, i64 1744, !93, i64 24272, !86, i64 24288, !86, i64 24360, !86, i64 24432, !86, i64 24504, !86, i64 24576, !65, i64 24648, !11, i64 24688, !7, i64 24696, !94, i64 24704, !99, i64 24752, !105, i64 24784, !105, i64 24832, !57, i64 24880}
!37 = !{!"_ZTSN7glslang17TParseContextBaseE", !6, i64 0, !11, i64 192, !11, i64 200, !12, i64 208, !12, i64 212, !12, i64 216, !12, i64 220, !12, i64 224, !11, i64 232, !7, i64 240, !7, i64 241, !38, i64 248, !45, i64 280, !50, i64 312, !12, i64 376, !12, i64 380, !7, i64 384, !57, i64 392, !11, i64 424, !11, i64 432, !63, i64 440, !11, i64 824, !65, i64 832, !68, i64 872, !70, i64 904, !71, i64 936, !72, i64 968, !73, i64 1000, !11, i64 1032, !12, i64 1040, !12, i64 1044, !12, i64 1048, !74, i64 1056, !12, i64 1112, !81, i64 1120}
!38 = !{!"_ZTSN7glslang5TListIPNS_7TVectorIP11TIntermNodeEEEE", !39, i64 0}
!39 = !{!"_ZTSNSt7__cxx114listIPN7glslang7TVectorIP11TIntermNodeEENS1_14pool_allocatorIS6_EEEE", !40, i64 0}
!40 = !{!"_ZTSNSt7__cxx1110_List_baseIPN7glslang7TVectorIP11TIntermNodeEENS1_14pool_allocatorIS6_EEEE", !41, i64 0}
!41 = !{!"_ZTSNSt7__cxx1110_List_baseIPN7glslang7TVectorIP11TIntermNodeEENS1_14pool_allocatorIS6_EEE10_List_implE", !42, i64 0, !43, i64 8}
!42 = !{!"_ZTSN7glslang14pool_allocatorISt10_List_nodeIPNS_7TVectorIP11TIntermNodeEEEEE", !11, i64 0}
!43 = !{!"_ZTSNSt8__detail17_List_node_headerE", !44, i64 0, !25, i64 16}
!44 = !{!"_ZTSNSt8__detail15_List_node_baseE", !11, i64 0, !11, i64 8}
!45 = !{!"_ZTSN7glslang5TListIiEE", !46, i64 0}
!46 = !{!"_ZTSNSt7__cxx114listIiN7glslang14pool_allocatorIiEEEE", !47, i64 0}
!47 = !{!"_ZTSNSt7__cxx1110_List_baseIiN7glslang14pool_allocatorIiEEEE", !48, i64 0}
!48 = !{!"_ZTSNSt7__cxx1110_List_baseIiN7glslang14pool_allocatorIiEEE10_List_implE", !49, i64 0, !43, i64 8}
!49 = !{!"_ZTSN7glslang14pool_allocatorISt10_List_nodeIiEEE", !11, i64 0}
!50 = !{!"_ZTSN7glslang7TPragmaE", !7, i64 0, !7, i64 1, !51, i64 8}
!51 = !{!"_ZTSN7glslang12TPragmaTableE", !52, i64 0}
!52 = !{!"_ZTSN7glslang4TMapINSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEES7_St4lessIS7_EEE", !53, i64 0}
!53 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEES7_St4lessIS7_ENS5_ISt4pairIKS7_S7_EEEE", !54, i64 0}
!54 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_S7_ESt10_Select1stISA_ESt4lessIS7_ENS5_ISA_EEE", !55, i64 0}
!55 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_S7_ESt10_Select1stISA_ESt4lessIS7_ENS5_ISA_EEE13_Rb_tree_implISE_Lb1EEE", !56, i64 0, !20, i64 8, !22, i64 16}
!56 = !{!"_ZTSN7glslang14pool_allocatorISt13_Rb_tree_nodeISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_IcEEEES8_EEEE", !11, i64 0}
!57 = !{!"_ZTSN7glslang7TVectorIPNS_7TSymbolEEE", !58, i64 0}
!58 = !{!"_ZTSSt6vectorIPN7glslang7TSymbolENS0_14pool_allocatorIS2_EEE", !59, i64 0}
!59 = !{!"_ZTSSt12_Vector_baseIPN7glslang7TSymbolENS0_14pool_allocatorIS2_EEE", !60, i64 0}
!60 = !{!"_ZTSNSt12_Vector_baseIPN7glslang7TSymbolENS0_14pool_allocatorIS2_EEE12_Vector_implE", !61, i64 0, !62, i64 8}
!61 = !{!"_ZTSN7glslang14pool_allocatorIPNS_7TSymbolEEE", !11, i64 0}
!62 = !{!"_ZTSNSt12_Vector_baseIPN7glslang7TSymbolENS0_14pool_allocatorIS2_EEE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!63 = !{!"_ZTS16TBuiltInResource", !12, i64 0, !12, i64 4, !12, i64 8, !12, i64 12, !12, i64 16, !12, i64 20, !12, i64 24, !12, i64 28, !12, i64 32, !12, i64 36, !12, i64 40, !12, i64 44, !12, i64 48, !12, i64 52, !12, i64 56, !12, i64 60, !12, i64 64, !12, i64 68, !12, i64 72, !12, i64 76, !12, i64 80, !12, i64 84, !12, i64 88, !12, i64 92, !12, i64 96, !12, i64 100, !12, i64 104, !12, i64 108, !12, i64 112, !12, i64 116, !12, i64 120, !12, i64 124, !12, i64 128, !12, i64 132, !12, i64 136, !12, i64 140, !12, i64 144, !12, i64 148, !12, i64 152, !12, i64 156, !12, i64 160, !12, i64 164, !12, i64 168, !12, i64 172, !12, i64 176, !12, i64 180, !12, i64 184, !12, i64 188, !12, i64 192, !12, i64 196, !12, i64 200, !12, i64 204, !12, i64 208, !12, i64 212, !12, i64 216, !12, i64 220, !12, i64 224, !12, i64 228, !12, i64 232, !12, i64 236, !12, i64 240, !12, i64 244, !12, i64 248, !12, i64 252, !12, i64 256, !12, i64 260, !12, i64 264, !12, i64 268, !12, i64 272, !12, i64 276, !12, i64 280, !12, i64 284, !12, i64 288, !12, i64 292, !12, i64 296, !12, i64 300, !12, i64 304, !12, i64 308, !12, i64 312, !12, i64 316, !12, i64 320, !12, i64 324, !12, i64 328, !12, i64 332, !12, i64 336, !12, i64 340, !12, i64 344, !12, i64 348, !12, i64 352, !12, i64 356, !12, i64 360, !12, i64 364, !12, i64 368, !64, i64 372}
!64 = !{!"_ZTS7TLimits", !7, i64 0, !7, i64 1, !7, i64 2, !7, i64 3, !7, i64 4, !7, i64 5, !7, i64 6, !7, i64 7, !7, i64 8}
!65 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEE", !66, i64 0, !25, i64 16, !8, i64 24}
!66 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE12_Alloc_hiderE", !67, i64 0, !11, i64 8}
!67 = !{!"_ZTSN7glslang14pool_allocatorIcEE", !11, i64 0}
!68 = !{!"_ZTSSt8functionIFviibiPKcEE", !69, i64 0, !11, i64 24}
!69 = !{!"_ZTSSt14_Function_base", !8, i64 0, !11, i64 16}
!70 = !{!"_ZTSSt8functionIFviRKN7glslang7TVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_14pool_allocatorIcEEEEEEEE", !69, i64 0, !11, i64 24}
!71 = !{!"_ZTSSt8functionIFviiPKcEE", !69, i64 0, !11, i64 24}
!72 = !{!"_ZTSSt8functionIFviPKcS1_EE", !69, i64 0, !11, i64 24}
!73 = !{!"_ZTSSt8functionIFviPKcEE", !69, i64 0, !11, i64 24}
!74 = !{!"_ZTSN7glslang4TMapIiPNS_9TVariableESt4lessIiEEE", !75, i64 0}
!75 = !{!"_ZTSSt3mapIiPN7glslang9TVariableESt4lessIiENS0_14pool_allocatorISt4pairIKiS2_EEEE", !76, i64 0}
!76 = !{!"_ZTSSt8_Rb_treeIiSt4pairIKiPN7glslang9TVariableEESt10_Select1stIS5_ESt4lessIiENS2_14pool_allocatorIS5_EEE", !77, i64 0}
!77 = !{!"_ZTSNSt8_Rb_treeIiSt4pairIKiPN7glslang9TVariableEESt10_Select1stIS5_ESt4lessIiENS2_14pool_allocatorIS5_EEE13_Rb_tree_implIS9_Lb1EEE", !78, i64 0, !79, i64 8, !22, i64 16}
!78 = !{!"_ZTSN7glslang14pool_allocatorISt13_Rb_tree_nodeISt4pairIKiPNS_9TVariableEEEEE", !11, i64 0}
!79 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIiEE", !80, i64 0}
!80 = !{!"_ZTSSt4lessIiE"}
!81 = !{!"_ZTSN7glslang4TMapIiiSt4lessIiEEE", !82, i64 0}
!82 = !{!"_ZTSSt3mapIiiSt4lessIiEN7glslang14pool_allocatorISt4pairIKiiEEEE", !83, i64 0}
!83 = !{!"_ZTSSt8_Rb_treeIiSt4pairIKiiESt10_Select1stIS2_ESt4lessIiEN7glslang14pool_allocatorIS2_EEE", !84, i64 0}
!84 = !{!"_ZTSNSt8_Rb_treeIiSt4pairIKiiESt10_Select1stIS2_ESt4lessIiEN7glslang14pool_allocatorIS2_EEE13_Rb_tree_implIS6_Lb1EEE", !85, i64 0, !79, i64 8, !22, i64 16}
!85 = !{!"_ZTSN7glslang14pool_allocatorISt13_Rb_tree_nodeISt4pairIKiiEEEE", !11, i64 0}
!86 = !{!"_ZTSN7glslang10TQualifierE", !11, i64 0, !87, i64 8, !88, i64 8, !88, i64 9, !89, i64 11, !7, i64 11, !7, i64 11, !7, i64 11, !7, i64 11, !7, i64 11, !7, i64 12, !7, i64 12, !7, i64 12, !7, i64 12, !7, i64 12, !7, i64 12, !7, i64 12, !7, i64 12, !7, i64 13, !7, i64 13, !7, i64 13, !7, i64 13, !7, i64 13, !7, i64 13, !7, i64 13, !7, i64 13, !7, i64 14, !7, i64 14, !7, i64 14, !7, i64 14, !7, i64 14, !7, i64 14, !7, i64 14, !7, i64 14, !7, i64 15, !7, i64 15, !7, i64 15, !90, i64 15, !91, i64 16, !12, i64 20, !12, i64 24, !12, i64 28, !12, i64 29, !12, i64 29, !12, i64 32, !12, i64 34, !12, i64 35, !12, i64 36, !12, i64 36, !12, i64 38, !12, i64 40, !12, i64 41, !12, i64 42, !92, i64 44, !7, i64 45, !7, i64 46, !7, i64 47, !7, i64 48, !12, i64 52, !7, i64 56, !12, i64 60, !11, i64 64}
!87 = !{!"_ZTSN7glslang17TStorageQualifierE", !8, i64 0}
!88 = !{!"_ZTSN7glslang16TBuiltInVariableE", !8, i64 0}
!89 = !{!"_ZTSN7glslang19TPrecisionQualifierE", !8, i64 0}
!90 = !{!"_ZTSN7glslang13TLayoutMatrixE", !8, i64 0}
!91 = !{!"_ZTSN7glslang14TLayoutPackingE", !8, i64 0}
!92 = !{!"_ZTSN7glslang13TLayoutFormatE", !8, i64 0}
!93 = !{!"_ZTSN7glslang17TPrecisionManagerE", !7, i64 8, !7, i64 9, !7, i64 10, !7, i64 11}
!94 = !{!"_ZTSSt3setIxSt4lessIxESaIxEE", !95, i64 0}
!95 = !{!"_ZTSSt8_Rb_treeIxxSt9_IdentityIxESt4lessIxESaIxEE", !96, i64 0}
!96 = !{!"_ZTSNSt8_Rb_treeIxxSt9_IdentityIxESt4lessIxESaIxEE13_Rb_tree_implIS3_Lb1EEE", !97, i64 0, !22, i64 8}
!97 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIxEE", !98, i64 0}
!98 = !{!"_ZTSSt4lessIxE"}
!99 = !{!"_ZTSN7glslang7TVectorIPNS_12TIntermTypedEEE", !100, i64 0}
!100 = !{!"_ZTSSt6vectorIPN7glslang12TIntermTypedENS0_14pool_allocatorIS2_EEE", !101, i64 0}
!101 = !{!"_ZTSSt12_Vector_baseIPN7glslang12TIntermTypedENS0_14pool_allocatorIS2_EEE", !102, i64 0}
!102 = !{!"_ZTSNSt12_Vector_baseIPN7glslang12TIntermTypedENS0_14pool_allocatorIS2_EEE12_Vector_implE", !103, i64 0, !104, i64 8}
!103 = !{!"_ZTSN7glslang14pool_allocatorIPNS_12TIntermTypedEEE", !11, i64 0}
!104 = !{!"_ZTSNSt12_Vector_baseIPN7glslang12TIntermTypedENS0_14pool_allocatorIS2_EEE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!105 = !{!"_ZTSSt3mapIPKN7glslang7TVectorINS0_8TTypeLocEEES_ImS5_St4lessImESaISt4pairIKmS5_EEES6_IS5_ESaIS8_IKS5_SC_EEE", !106, i64 0}
!106 = !{!"_ZTSSt8_Rb_treeIPKN7glslang7TVectorINS0_8TTypeLocEEESt4pairIKS5_St3mapImS5_St4lessImESaIS6_IKmS5_EEEESt10_Select1stISF_ES9_IS5_ESaISF_EE", !107, i64 0}
!107 = !{!"_ZTSNSt8_Rb_treeIPKN7glslang7TVectorINS0_8TTypeLocEEESt4pairIKS5_St3mapImS5_St4lessImESaIS6_IKmS5_EEEESt10_Select1stISF_ES9_IS5_ESaISF_EE13_Rb_tree_implISI_Lb1EEE", !108, i64 0, !22, i64 8}
!108 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIPKN7glslang7TVectorINS1_8TTypeLocEEEEE", !109, i64 0}
!109 = !{!"_ZTSSt4lessIPKN7glslang7TVectorINS0_8TTypeLocEEEE"}
!110 = !{!37, !11, i64 200}
!111 = !{!112, !11, i64 0}
!112 = !{!"_ZTSN7glslang8TTypeLocE", !11, i64 0, !113, i64 8}
!113 = !{!"_ZTSN7glslang10TSourceLocE", !11, i64 0, !12, i64 8, !12, i64 12, !12, i64 16}
!114 = !{!115, !115, i64 0}
!115 = !{!"vtable pointer", !9, i64 0}
!116 = distinct !{!116, !117}
!117 = !{!"llvm.loop.mustprogress"}
!118 = distinct !{!118, !117}
!119 = !{i64 0, i64 8, !120, i64 8, i64 8, !121, i64 16, i64 1, !121, i64 20, i64 4, !122, i64 24, i64 4, !122, i64 28, i64 8, !121, i64 36, i64 8, !121, i64 44, i64 1, !121, i64 45, i64 1, !123, i64 46, i64 1, !123, i64 47, i64 1, !123, i64 48, i64 1, !123, i64 52, i64 4, !122, i64 56, i64 1, !123, i64 60, i64 4, !122, i64 64, i64 8, !120}
!120 = !{!11, !11, i64 0}
!121 = !{!8, !8, i64 0}
!122 = !{!12, !12, i64 0}
!123 = !{!7, !7, i64 0}
!124 = !{!86, !12, i64 24}
!125 = distinct !{!125, !117}
!126 = distinct !{!126, !117}
!127 = distinct !{!127, !117}


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