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

@.str.2 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [113 x i8], align 1
@.str.94 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.324 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.568 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.785 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.790 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.802 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.803 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.804 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.805 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.806 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.807 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.808 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.809 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.810 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.811 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.812 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.813 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.814 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.815 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.816 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.817 = external hidden unnamed_addr constant [92 x i8], align 1
@__PRETTY_FUNCTION__._ZN7glslang13TParseContext18executeInitializerERKNS_10TSourceLocEPNS_12TIntermTypedEPNS_9TVariableE = external hidden unnamed_addr constant [105 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #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: mustprogress uwtable
declare dso_local void @_ZN7glslang14pool_allocatorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #2 align 2

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

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

declare noundef ptr @_ZN7glslang13TIntermediate9addSymbolERKNS_9TVariableERKNS_10TSourceLocE(ptr noundef nonnull align 8 dereferenceable(1784), ptr noundef nonnull align 8 dereferenceable(228), ptr noundef nonnull align 8 dereferenceable(24)) #3

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK7glslang12TIntermTyped17getCompleteStringB5cxx11Eb(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(176), i1 noundef zeroext) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK7glslang5TType17getCompleteStringEbbbbNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEES7_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(144), i1 noundef zeroext, i1 noundef zeroext, i1 noundef zeroext, i1 noundef zeroext, ptr noundef, ptr noundef) #2 align 2

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK7glslang15TIntermOperator5getOpEv(ptr noundef nonnull align 8 dereferenceable(184)) #0 align 2

declare noundef ptr @_ZN7glslang13TIntermediate13addConversionENS_9TOperatorERKNS_5TTypeEPNS_12TIntermTypedE(ptr noundef nonnull align 8 dereferenceable(1784), i32 noundef, ptr noundef nonnull align 8 dereferenceable(144), ptr noundef) #3

declare noundef ptr @_ZN7glslang13TIntermediate9addAssignENS_9TOperatorEPNS_12TIntermTypedES3_RKNS_10TSourceLocE(ptr noundef nonnull align 8 dereferenceable(1784), i32 noundef, ptr noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(24)) #3

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef ptr @_ZN7glslang13TParseContext18executeInitializerERKNS_10TSourceLocEPNS_12TIntermTypedEPNS_9TVariableE(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef %2, ptr noundef %3) #2 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca i8, align 1
  %11 = alloca i32, align 4
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca %"class.glslang::TType", align 8
  %15 = alloca ptr, align 8
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"class.glslang::pool_allocator.14", align 8
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca %"class.glslang::pool_allocator.14", align 8
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.glslang::pool_allocator.14", align 8
  %26 = alloca %"class.std::__cxx11::basic_string", align 8
  %27 = alloca %"class.glslang::pool_allocator.14", align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca %"class.std::__cxx11::basic_string", align 8
  %33 = alloca %"class.std::__cxx11::basic_string", 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
  %34 = load ptr, ptr %6, align 8
  call void @llvm.lifetime.start.p0(i64 1, ptr %10) #5
  %35 = load ptr, ptr %8, align 8, !tbaa !5
  %36 = load ptr, ptr %35, align 8, !tbaa !9
  %37 = getelementptr inbounds ptr, ptr %36, i64 6
  %38 = load ptr, ptr %37, align 8
  %39 = call noundef ptr %38(ptr noundef nonnull align 8 dereferenceable(32) %35)
  %40 = icmp ne ptr %39, null
  br i1 %40, label %41, label %61

41:                                               ; preds = %4
  %42 = load ptr, ptr %8, align 8, !tbaa !5
  %43 = load ptr, ptr %42, align 8, !tbaa !9
  %44 = getelementptr inbounds ptr, ptr %43, i64 6
  %45 = load ptr, ptr %44, align 8
  %46 = call noundef ptr %45(ptr noundef nonnull align 8 dereferenceable(32) %42)
  %47 = call noundef i32 @_ZNK7glslang15TIntermOperator5getOpEv(ptr noundef nonnull align 8 dereferenceable(184) %46)
  %48 = icmp eq i32 %47, 0
  br i1 %48, label %49, label %61

49:                                               ; preds = %41
  %50 = load ptr, ptr %8, align 8, !tbaa !5
  %51 = load ptr, ptr %50, align 8, !tbaa !9
  %52 = getelementptr inbounds ptr, ptr %51, i64 6
  %53 = load ptr, ptr %52, align 8
  %54 = call noundef ptr %53(ptr noundef nonnull align 8 dereferenceable(32) %50)
  %55 = load ptr, ptr %54, align 8, !tbaa !9
  %56 = getelementptr inbounds ptr, ptr %55, i64 50
  %57 = load ptr, ptr %56, align 8
  %58 = call noundef nonnull align 8 dereferenceable(32) ptr %57(ptr noundef nonnull align 8 dereferenceable(352) %54)
  %59 = call noundef i64 @_ZNKSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %58) #5
  %60 = icmp eq i64 %59, 0
  br label %61

61:                                               ; preds = %49, %41, %4
  %62 = phi i1 [ false, %41 ], [ false, %4 ], [ %60, %49 ]
  %63 = zext i1 %62 to i8
  store i8 %63, ptr %10, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #5
  %64 = load ptr, ptr %9, align 8, !tbaa !5
  %65 = load ptr, ptr %64, align 8, !tbaa !9
  %66 = getelementptr inbounds ptr, ptr %65, i64 12
  %67 = load ptr, ptr %66, align 8
  %68 = call noundef nonnull align 8 dereferenceable(144) ptr %67(ptr noundef nonnull align 8 dereferenceable(228) %64)
  %69 = load ptr, ptr %68, align 8, !tbaa !9
  %70 = getelementptr inbounds ptr, ptr %69, i64 11
  %71 = load ptr, ptr %70, align 8
  %72 = call noundef nonnull align 8 dereferenceable(72) ptr %71(ptr noundef nonnull align 8 dereferenceable(144) %68)
  %73 = getelementptr inbounds %"class.glslang::TQualifier", ptr %72, i32 0, i32 1
  %74 = load i64, ptr %73, align 8
  %75 = and i64 %74, 63
  %76 = trunc i64 %75 to i32
  store i32 %76, ptr %11, align 4, !tbaa !13
  %77 = load i32, ptr %11, align 4, !tbaa !13
  %78 = icmp eq i32 %77, 0
  br i1 %78, label %123, label %79

79:                                               ; preds = %61
  %80 = load i32, ptr %11, align 4, !tbaa !13
  %81 = icmp eq i32 %80, 1
  br i1 %81, label %123, label %82

82:                                               ; preds = %79
  %83 = load i32, ptr %11, align 4, !tbaa !13
  %84 = icmp eq i32 %83, 2
  br i1 %84, label %123, label %85

85:                                               ; preds = %82
  %86 = load i32, ptr %11, align 4, !tbaa !13
  %87 = icmp eq i32 %86, 5
  br i1 %87, label %88, label %94

88:                                               ; preds = %85
  %89 = call noundef zeroext i1 @_ZNK7glslang14TParseVersions11isEsProfileEv(ptr noundef nonnull align 8 dereferenceable(192) %34)
  br i1 %89, label %94, label %90

90:                                               ; preds = %88
  %91 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %34, i32 0, i32 4
  %92 = load i32, ptr %91, align 8, !tbaa !15
  %93 = icmp sge i32 %92, 120
  br i1 %93, label %123, label %94

94:                                               ; preds = %90, %88, %85
  %95 = load i32, ptr %11, align 4, !tbaa !13
  %96 = icmp eq i32 %95, 7
  br i1 %96, label %97, label %111

97:                                               ; preds = %94
  %98 = load i8, ptr %10, align 1, !tbaa !11, !range !38, !noundef !39
  %99 = trunc i8 %98 to i1
  br i1 %99, label %100, label %105

100:                                              ; preds = %97
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #5
  store ptr @.str.802, ptr %12, align 8, !tbaa !5
  %101 = load ptr, ptr %7, align 8, !tbaa !5
  %102 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN7glslang14TParseVersions15profileRequiresERKNS_10TSourceLocEiiPKcS5_(ptr noundef nonnull align 8 dereferenceable(192) %34, ptr noundef nonnull align 8 dereferenceable(24) %101, i32 noundef 8, i32 noundef 0, ptr noundef @.str.803, ptr noundef %102)
  %103 = load ptr, ptr %7, align 8, !tbaa !5
  %104 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN7glslang14TParseVersions15profileRequiresERKNS_10TSourceLocEiiPKcS5_(ptr noundef nonnull align 8 dereferenceable(192) %34, ptr noundef nonnull align 8 dereferenceable(24) %103, i32 noundef -9, i32 noundef 0, ptr noundef @.str.803, ptr noundef %104)
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #5
  br label %110

105:                                              ; preds = %97
  %106 = load ptr, ptr %7, align 8, !tbaa !5
  %107 = load ptr, ptr %34, align 8, !tbaa !9
  %108 = getelementptr inbounds ptr, ptr %107, i64 42
  %109 = load ptr, ptr %108, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %109(ptr noundef nonnull align 8 dereferenceable(1176) %34, ptr noundef nonnull align 8 dereferenceable(24) %106, ptr noundef @.str.804, ptr noundef @.str.568, ptr noundef @.str.2)
  br label %110

110:                                              ; preds = %105, %100
  br label %122

111:                                              ; preds = %94
  %112 = load ptr, ptr %7, align 8, !tbaa !5
  %113 = load ptr, ptr %9, align 8, !tbaa !5
  %114 = load ptr, ptr %113, align 8, !tbaa !9
  %115 = getelementptr inbounds ptr, ptr %114, i64 12
  %116 = load ptr, ptr %115, align 8
  %117 = call noundef nonnull align 8 dereferenceable(144) ptr %116(ptr noundef nonnull align 8 dereferenceable(228) %113)
  %118 = call noundef ptr @_ZNK7glslang5TType25getStorageQualifierStringEv(ptr noundef nonnull align 8 dereferenceable(144) %117)
  %119 = load ptr, ptr %34, align 8, !tbaa !9
  %120 = getelementptr inbounds ptr, ptr %119, i64 42
  %121 = load ptr, ptr %120, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %121(ptr noundef nonnull align 8 dereferenceable(1176) %34, ptr noundef nonnull align 8 dereferenceable(24) %112, ptr noundef @.str.805, ptr noundef %118, ptr noundef @.str.2)
  store ptr null, ptr %5, align 8
  store i32 1, ptr %13, align 4
  br label %825

122:                                              ; preds = %110
  br label %123

123:                                              ; preds = %122, %90, %82, %79, %61
  %124 = load i8, ptr %10, align 1, !tbaa !11, !range !38, !noundef !39
  %125 = trunc i8 %124 to i1
  br i1 %125, label %126, label %166

126:                                              ; preds = %123
  %127 = load ptr, ptr %9, align 8, !tbaa !5
  %128 = load ptr, ptr %127, align 8, !tbaa !9
  %129 = getelementptr inbounds ptr, ptr %128, i64 12
  %130 = load ptr, ptr %129, align 8
  %131 = call noundef nonnull align 8 dereferenceable(144) ptr %130(ptr noundef nonnull align 8 dereferenceable(228) %127)
  %132 = load ptr, ptr %131, align 8, !tbaa !9
  %133 = getelementptr inbounds ptr, ptr %132, i64 48
  %134 = load ptr, ptr %133, align 8
  %135 = call noundef zeroext i1 %134(ptr noundef nonnull align 8 dereferenceable(144) %131)
  br i1 %135, label %136, label %141

136:                                              ; preds = %126
  %137 = load ptr, ptr %7, align 8, !tbaa !5
  %138 = load ptr, ptr %34, align 8, !tbaa !9
  %139 = getelementptr inbounds ptr, ptr %138, i64 42
  %140 = load ptr, ptr %139, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %140(ptr noundef nonnull align 8 dereferenceable(1176) %34, ptr noundef nonnull align 8 dereferenceable(24) %137, ptr noundef @.str.806, ptr noundef @.str.807, ptr noundef @.str.2)
  store ptr null, ptr %5, align 8
  store i32 1, ptr %13, align 4
  br label %825

141:                                              ; preds = %126
  %142 = load ptr, ptr %9, align 8, !tbaa !5
  %143 = load ptr, ptr %142, align 8, !tbaa !9
  %144 = getelementptr inbounds ptr, ptr %143, i64 12
  %145 = load ptr, ptr %144, align 8
  %146 = call noundef nonnull align 8 dereferenceable(144) ptr %145(ptr noundef nonnull align 8 dereferenceable(228) %142)
  %147 = load ptr, ptr %146, align 8, !tbaa !9
  %148 = getelementptr inbounds ptr, ptr %147, i64 49
  %149 = load ptr, ptr %148, align 8
  %150 = call noundef zeroext i1 %149(ptr noundef nonnull align 8 dereferenceable(144) %146)
  br i1 %150, label %151, label %156

151:                                              ; preds = %141
  %152 = load ptr, ptr %7, align 8, !tbaa !5
  %153 = load ptr, ptr %34, align 8, !tbaa !9
  %154 = getelementptr inbounds ptr, ptr %153, i64 42
  %155 = load ptr, ptr %154, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %155(ptr noundef nonnull align 8 dereferenceable(1176) %34, ptr noundef nonnull align 8 dereferenceable(24) %152, ptr noundef @.str.808, ptr noundef @.str.807, ptr noundef @.str.2)
  store ptr null, ptr %5, align 8
  store i32 1, ptr %13, align 4
  br label %825

156:                                              ; preds = %141
  %157 = load ptr, ptr %9, align 8, !tbaa !5
  %158 = load ptr, ptr %157, align 8, !tbaa !9
  %159 = getelementptr inbounds ptr, ptr %158, i64 13
  %160 = load ptr, ptr %159, align 8
  %161 = call noundef nonnull align 8 dereferenceable(144) ptr %160(ptr noundef nonnull align 8 dereferenceable(228) %157)
  %162 = load ptr, ptr %161, align 8, !tbaa !9
  %163 = getelementptr inbounds ptr, ptr %162, i64 10
  %164 = load ptr, ptr %163, align 8
  %165 = call noundef nonnull align 8 dereferenceable(72) ptr %164(ptr noundef nonnull align 8 dereferenceable(144) %161)
  call void @_ZN7glslang10TQualifier11setNullInitEv(ptr noundef nonnull align 8 dereferenceable(72) %165)
  store ptr null, ptr %5, align 8
  store i32 1, ptr %13, align 4
  br label %825

166:                                              ; preds = %123
  %167 = load ptr, ptr %7, align 8, !tbaa !5
  %168 = load ptr, ptr %9, align 8, !tbaa !5
  %169 = load ptr, ptr %168, align 8, !tbaa !9
  %170 = getelementptr inbounds ptr, ptr %169, i64 12
  %171 = load ptr, ptr %170, align 8
  %172 = call noundef nonnull align 8 dereferenceable(144) ptr %171(ptr noundef nonnull align 8 dereferenceable(228) %168)
  call void @_ZN7glslang13TParseContext16arrayObjectCheckERKNS_10TSourceLocERKNS_5TTypeEPKc(ptr noundef nonnull align 8 dereferenceable(24912) %34, ptr noundef nonnull align 8 dereferenceable(24) %167, ptr noundef nonnull align 8 dereferenceable(144) %172, ptr noundef @.str.809)
  call void @llvm.lifetime.start.p0(i64 144, ptr %14) #5
  call void @_ZN7glslang5TTypeC2ENS_10TBasicTypeENS_17TStorageQualifierEiiib(ptr noundef nonnull align 8 dereferenceable(144) %14, i32 noundef 0, i32 noundef 0, i32 noundef 1, i32 noundef 0, i32 noundef 0, i1 noundef zeroext false)
  %173 = load ptr, ptr %9, align 8, !tbaa !5
  %174 = load ptr, ptr %173, align 8, !tbaa !9
  %175 = getelementptr inbounds ptr, ptr %174, i64 12
  %176 = load ptr, ptr %175, align 8
  %177 = invoke noundef nonnull align 8 dereferenceable(144) ptr %176(ptr noundef nonnull align 8 dereferenceable(228) %173)
          to label %178 unwind label %205

178:                                              ; preds = %166
  invoke void @_ZN7glslang5TType11shallowCopyERKS0_(ptr noundef nonnull align 8 dereferenceable(144) %14, ptr noundef nonnull align 8 dereferenceable(144) %177)
          to label %179 unwind label %205

179:                                              ; preds = %178
  %180 = invoke noundef nonnull align 8 dereferenceable(72) ptr @_ZN7glslang5TType12getQualifierEv(ptr noundef nonnull align 8 dereferenceable(144) %14)
          to label %181 unwind label %205

181:                                              ; preds = %179
  invoke void @_ZN7glslang10TQualifier13makeTemporaryEv(ptr noundef nonnull align 8 dereferenceable(72) %180)
          to label %182 unwind label %205

182:                                              ; preds = %181
  %183 = load ptr, ptr %7, align 8, !tbaa !5
  %184 = load ptr, ptr %8, align 8, !tbaa !5
  %185 = invoke noundef ptr @_ZN7glslang13TParseContext22convertInitializerListERKNS_10TSourceLocERKNS_5TTypeEPNS_12TIntermTypedE(ptr noundef nonnull align 8 dereferenceable(24912) %34, ptr noundef nonnull align 8 dereferenceable(24) %183, ptr noundef nonnull align 8 dereferenceable(144) %14, ptr noundef %184)
          to label %186 unwind label %205

186:                                              ; preds = %182
  store ptr %185, ptr %8, align 8, !tbaa !5
  %187 = load ptr, ptr %8, align 8, !tbaa !5
  %188 = icmp ne ptr %187, null
  br i1 %188, label %210, label %189

189:                                              ; preds = %186
  %190 = load i32, ptr %11, align 4, !tbaa !13
  %191 = icmp eq i32 %190, 2
  br i1 %191, label %192, label %209

192:                                              ; preds = %189
  %193 = load ptr, ptr %9, align 8, !tbaa !5
  %194 = load ptr, ptr %193, align 8, !tbaa !9
  %195 = getelementptr inbounds ptr, ptr %194, i64 13
  %196 = load ptr, ptr %195, align 8
  %197 = invoke noundef nonnull align 8 dereferenceable(144) ptr %196(ptr noundef nonnull align 8 dereferenceable(228) %193)
          to label %198 unwind label %205

198:                                              ; preds = %192
  %199 = load ptr, ptr %197, align 8, !tbaa !9
  %200 = getelementptr inbounds ptr, ptr %199, i64 10
  %201 = load ptr, ptr %200, align 8
  %202 = invoke noundef nonnull align 8 dereferenceable(72) ptr %201(ptr noundef nonnull align 8 dereferenceable(144) %197)
          to label %203 unwind label %205

203:                                              ; preds = %198
  invoke void @_ZN7glslang10TQualifier13makeTemporaryEv(ptr noundef nonnull align 8 dereferenceable(72) %202)
          to label %204 unwind label %205

204:                                              ; preds = %203
  br label %209

205:                                              ; preds = %769, %762, %754, %753, %748, %742, %737, %735, %728, %720, %712, %707, %701, %693, %691, %686, %680, %676, %674, %667, %664, %658, %652, %649, %644, %638, %632, %624, %585, %580, %574, %569, %539, %534, %528, %499, %494, %488, %464, %459, %453, %448, %419, %414, %408, %384, %379, %373, %295, %290, %284, %282, %277, %271, %268, %262, %259, %253, %251, %246, %240, %234, %228, %222, %216, %210, %203, %198, %192, %182, %181, %179, %178, %166
  %206 = landingpad { ptr, i32 }
          cleanup
  %207 = extractvalue { ptr, i32 } %206, 0
  store ptr %207, ptr %15, align 8
  %208 = extractvalue { ptr, i32 } %206, 1
  store i32 %208, ptr %16, align 4
  br label %824

209:                                              ; preds = %204, %189
  store ptr null, ptr %5, align 8
  store i32 1, ptr %13, align 4
  br label %823

210:                                              ; preds = %186
  %211 = load ptr, ptr %8, align 8, !tbaa !5
  %212 = load ptr, ptr %211, align 8, !tbaa !9
  %213 = getelementptr inbounds ptr, ptr %212, i64 30
  %214 = load ptr, ptr %213, align 8
  %215 = invoke noundef nonnull align 8 dereferenceable(144) ptr %214(ptr noundef nonnull align 8 dereferenceable(176) %211)
          to label %216 unwind label %205

216:                                              ; preds = %210
  %217 = load ptr, ptr %215, align 8, !tbaa !9
  %218 = getelementptr inbounds ptr, ptr %217, i64 30
  %219 = load ptr, ptr %218, align 8
  %220 = invoke noundef zeroext i1 %219(ptr noundef nonnull align 8 dereferenceable(144) %215)
          to label %221 unwind label %205

221:                                              ; preds = %216
  br i1 %220, label %222, label %253

222:                                              ; preds = %221
  %223 = load ptr, ptr %9, align 8, !tbaa !5
  %224 = load ptr, ptr %223, align 8, !tbaa !9
  %225 = getelementptr inbounds ptr, ptr %224, i64 12
  %226 = load ptr, ptr %225, align 8
  %227 = invoke noundef nonnull align 8 dereferenceable(144) ptr %226(ptr noundef nonnull align 8 dereferenceable(228) %223)
          to label %228 unwind label %205

228:                                              ; preds = %222
  %229 = load ptr, ptr %227, align 8, !tbaa !9
  %230 = getelementptr inbounds ptr, ptr %229, i64 31
  %231 = load ptr, ptr %230, align 8
  %232 = invoke noundef zeroext i1 %231(ptr noundef nonnull align 8 dereferenceable(144) %227)
          to label %233 unwind label %205

233:                                              ; preds = %228
  br i1 %232, label %234, label %253

234:                                              ; preds = %233
  %235 = load ptr, ptr %9, align 8, !tbaa !5
  %236 = load ptr, ptr %235, align 8, !tbaa !9
  %237 = getelementptr inbounds ptr, ptr %236, i64 13
  %238 = load ptr, ptr %237, align 8
  %239 = invoke noundef nonnull align 8 dereferenceable(144) ptr %238(ptr noundef nonnull align 8 dereferenceable(228) %235)
          to label %240 unwind label %205

240:                                              ; preds = %234
  %241 = load ptr, ptr %8, align 8, !tbaa !5
  %242 = load ptr, ptr %241, align 8, !tbaa !9
  %243 = getelementptr inbounds ptr, ptr %242, i64 30
  %244 = load ptr, ptr %243, align 8
  %245 = invoke noundef nonnull align 8 dereferenceable(144) ptr %244(ptr noundef nonnull align 8 dereferenceable(176) %241)
          to label %246 unwind label %205

246:                                              ; preds = %240
  %247 = load ptr, ptr %245, align 8, !tbaa !9
  %248 = getelementptr inbounds ptr, ptr %247, i64 15
  %249 = load ptr, ptr %248, align 8
  %250 = invoke noundef i32 %249(ptr noundef nonnull align 8 dereferenceable(144) %245)
          to label %251 unwind label %205

251:                                              ; preds = %246
  invoke void @_ZN7glslang5TType20changeOuterArraySizeEi(ptr noundef nonnull align 8 dereferenceable(144) %239, i32 noundef %250)
          to label %252 unwind label %205

252:                                              ; preds = %251
  br label %253

253:                                              ; preds = %252, %233, %221
  %254 = load ptr, ptr %8, align 8, !tbaa !5
  %255 = load ptr, ptr %254, align 8, !tbaa !9
  %256 = getelementptr inbounds ptr, ptr %255, i64 30
  %257 = load ptr, ptr %256, align 8
  %258 = invoke noundef nonnull align 8 dereferenceable(144) ptr %257(ptr noundef nonnull align 8 dereferenceable(176) %254)
          to label %259 unwind label %205

259:                                              ; preds = %253
  %260 = invoke noundef zeroext i1 @_ZNK7glslang5TType15isArrayOfArraysEv(ptr noundef nonnull align 8 dereferenceable(144) %258)
          to label %261 unwind label %205

261:                                              ; preds = %259
  br i1 %260, label %262, label %370

262:                                              ; preds = %261
  %263 = load ptr, ptr %9, align 8, !tbaa !5
  %264 = load ptr, ptr %263, align 8, !tbaa !9
  %265 = getelementptr inbounds ptr, ptr %264, i64 12
  %266 = load ptr, ptr %265, align 8
  %267 = invoke noundef nonnull align 8 dereferenceable(144) ptr %266(ptr noundef nonnull align 8 dereferenceable(228) %263)
          to label %268 unwind label %205

268:                                              ; preds = %262
  %269 = invoke noundef zeroext i1 @_ZNK7glslang5TType15isArrayOfArraysEv(ptr noundef nonnull align 8 dereferenceable(144) %267)
          to label %270 unwind label %205

270:                                              ; preds = %268
  br i1 %269, label %271, label %370

271:                                              ; preds = %270
  %272 = load ptr, ptr %8, align 8, !tbaa !5
  %273 = load ptr, ptr %272, align 8, !tbaa !9
  %274 = getelementptr inbounds ptr, ptr %273, i64 30
  %275 = load ptr, ptr %274, align 8
  %276 = invoke noundef nonnull align 8 dereferenceable(144) ptr %275(ptr noundef nonnull align 8 dereferenceable(176) %272)
          to label %277 unwind label %205

277:                                              ; preds = %271
  %278 = load ptr, ptr %276, align 8, !tbaa !9
  %279 = getelementptr inbounds ptr, ptr %278, i64 19
  %280 = load ptr, ptr %279, align 8
  %281 = invoke noundef ptr %280(ptr noundef nonnull align 8 dereferenceable(144) %276)
          to label %282 unwind label %205

282:                                              ; preds = %277
  %283 = invoke noundef i32 @_ZNK7glslang11TArraySizes10getNumDimsEv(ptr noundef nonnull align 8 dereferenceable(21) %281)
          to label %284 unwind label %205

284:                                              ; preds = %282
  %285 = load ptr, ptr %9, align 8, !tbaa !5
  %286 = load ptr, ptr %285, align 8, !tbaa !9
  %287 = getelementptr inbounds ptr, ptr %286, i64 12
  %288 = load ptr, ptr %287, align 8
  %289 = invoke noundef nonnull align 8 dereferenceable(144) ptr %288(ptr noundef nonnull align 8 dereferenceable(228) %285)
          to label %290 unwind label %205

290:                                              ; preds = %284
  %291 = load ptr, ptr %289, align 8, !tbaa !9
  %292 = getelementptr inbounds ptr, ptr %291, i64 19
  %293 = load ptr, ptr %292, align 8
  %294 = invoke noundef ptr %293(ptr noundef nonnull align 8 dereferenceable(144) %289)
          to label %295 unwind label %205

295:                                              ; preds = %290
  %296 = invoke noundef i32 @_ZNK7glslang11TArraySizes10getNumDimsEv(ptr noundef nonnull align 8 dereferenceable(21) %294)
          to label %297 unwind label %205

297:                                              ; preds = %295
  %298 = icmp eq i32 %283, %296
  br i1 %298, label %299, label %370

299:                                              ; preds = %297
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #5
  store i32 1, ptr %17, align 4, !tbaa !40
  br label %300

300:                                              ; preds = %366, %299
  %301 = load i32, ptr %17, align 4, !tbaa !40
  %302 = load ptr, ptr %9, align 8, !tbaa !5
  %303 = load ptr, ptr %302, align 8, !tbaa !9
  %304 = getelementptr inbounds ptr, ptr %303, i64 12
  %305 = load ptr, ptr %304, align 8
  %306 = invoke noundef nonnull align 8 dereferenceable(144) ptr %305(ptr noundef nonnull align 8 dereferenceable(228) %302)
          to label %307 unwind label %317

307:                                              ; preds = %300
  %308 = load ptr, ptr %306, align 8, !tbaa !9
  %309 = getelementptr inbounds ptr, ptr %308, i64 19
  %310 = load ptr, ptr %309, align 8
  %311 = invoke noundef ptr %310(ptr noundef nonnull align 8 dereferenceable(144) %306)
          to label %312 unwind label %317

312:                                              ; preds = %307
  %313 = invoke noundef i32 @_ZNK7glslang11TArraySizes10getNumDimsEv(ptr noundef nonnull align 8 dereferenceable(21) %311)
          to label %314 unwind label %317

314:                                              ; preds = %312
  %315 = icmp slt i32 %301, %313
  br i1 %315, label %321, label %316

316:                                              ; preds = %314
  store i32 2, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #5
  br label %369

317:                                              ; preds = %363, %360, %355, %348, %343, %337, %332, %327, %321, %312, %307, %300
  %318 = landingpad { ptr, i32 }
          cleanup
  %319 = extractvalue { ptr, i32 } %318, 0
  store ptr %319, ptr %15, align 8
  %320 = extractvalue { ptr, i32 } %318, 1
  store i32 %320, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #5
  br label %824

321:                                              ; preds = %314
  %322 = load ptr, ptr %9, align 8, !tbaa !5
  %323 = load ptr, ptr %322, align 8, !tbaa !9
  %324 = getelementptr inbounds ptr, ptr %323, i64 12
  %325 = load ptr, ptr %324, align 8
  %326 = invoke noundef nonnull align 8 dereferenceable(144) ptr %325(ptr noundef nonnull align 8 dereferenceable(228) %322)
          to label %327 unwind label %317

327:                                              ; preds = %321
  %328 = load ptr, ptr %326, align 8, !tbaa !9
  %329 = getelementptr inbounds ptr, ptr %328, i64 19
  %330 = load ptr, ptr %329, align 8
  %331 = invoke noundef ptr %330(ptr noundef nonnull align 8 dereferenceable(144) %326)
          to label %332 unwind label %317

332:                                              ; preds = %327
  %333 = load i32, ptr %17, align 4, !tbaa !40
  %334 = invoke noundef i32 @_ZNK7glslang11TArraySizes10getDimSizeEi(ptr noundef nonnull align 8 dereferenceable(21) %331, i32 noundef %333)
          to label %335 unwind label %317

335:                                              ; preds = %332
  %336 = icmp eq i32 %334, 0
  br i1 %336, label %337, label %365

337:                                              ; preds = %335
  %338 = load ptr, ptr %9, align 8, !tbaa !5
  %339 = load ptr, ptr %338, align 8, !tbaa !9
  %340 = getelementptr inbounds ptr, ptr %339, i64 13
  %341 = load ptr, ptr %340, align 8
  %342 = invoke noundef nonnull align 8 dereferenceable(144) ptr %341(ptr noundef nonnull align 8 dereferenceable(228) %338)
          to label %343 unwind label %317

343:                                              ; preds = %337
  %344 = load ptr, ptr %342, align 8, !tbaa !9
  %345 = getelementptr inbounds ptr, ptr %344, i64 20
  %346 = load ptr, ptr %345, align 8
  %347 = invoke noundef ptr %346(ptr noundef nonnull align 8 dereferenceable(144) %342)
          to label %348 unwind label %317

348:                                              ; preds = %343
  %349 = load i32, ptr %17, align 4, !tbaa !40
  %350 = load ptr, ptr %8, align 8, !tbaa !5
  %351 = load ptr, ptr %350, align 8, !tbaa !9
  %352 = getelementptr inbounds ptr, ptr %351, i64 30
  %353 = load ptr, ptr %352, align 8
  %354 = invoke noundef nonnull align 8 dereferenceable(144) ptr %353(ptr noundef nonnull align 8 dereferenceable(176) %350)
          to label %355 unwind label %317

355:                                              ; preds = %348
  %356 = load ptr, ptr %354, align 8, !tbaa !9
  %357 = getelementptr inbounds ptr, ptr %356, i64 19
  %358 = load ptr, ptr %357, align 8
  %359 = invoke noundef ptr %358(ptr noundef nonnull align 8 dereferenceable(144) %354)
          to label %360 unwind label %317

360:                                              ; preds = %355
  %361 = load i32, ptr %17, align 4, !tbaa !40
  %362 = invoke noundef i32 @_ZNK7glslang11TArraySizes10getDimSizeEi(ptr noundef nonnull align 8 dereferenceable(21) %359, i32 noundef %361)
          to label %363 unwind label %317

363:                                              ; preds = %360
  invoke void @_ZN7glslang11TArraySizes10setDimSizeEii(ptr noundef nonnull align 8 dereferenceable(21) %347, i32 noundef %349, i32 noundef %362)
          to label %364 unwind label %317

364:                                              ; preds = %363
  br label %365

365:                                              ; preds = %364, %335
  br label %366

366:                                              ; preds = %365
  %367 = load i32, ptr %17, align 4, !tbaa !40
  %368 = add nsw i32 %367, 1
  store i32 %368, ptr %17, align 4, !tbaa !40
  br label %300, !llvm.loop !41

369:                                              ; preds = %316
  br label %370

370:                                              ; preds = %369, %297, %270, %261
  %371 = load i32, ptr %11, align 4, !tbaa !13
  %372 = icmp eq i32 %371, 5
  br i1 %372, label %373, label %445

373:                                              ; preds = %370
  %374 = load ptr, ptr %8, align 8, !tbaa !5
  %375 = load ptr, ptr %374, align 8, !tbaa !9
  %376 = getelementptr inbounds ptr, ptr %375, i64 30
  %377 = load ptr, ptr %376, align 8
  %378 = invoke noundef nonnull align 8 dereferenceable(144) ptr %377(ptr noundef nonnull align 8 dereferenceable(176) %374)
          to label %379 unwind label %205

379:                                              ; preds = %373
  %380 = load ptr, ptr %378, align 8, !tbaa !9
  %381 = getelementptr inbounds ptr, ptr %380, i64 11
  %382 = load ptr, ptr %381, align 8
  %383 = invoke noundef nonnull align 8 dereferenceable(72) ptr %382(ptr noundef nonnull align 8 dereferenceable(144) %378)
          to label %384 unwind label %205

384:                                              ; preds = %379
  %385 = invoke noundef zeroext i1 @_ZNK7glslang10TQualifier18isFrontEndConstantEv(ptr noundef nonnull align 8 dereferenceable(72) %383)
          to label %386 unwind label %205

386:                                              ; preds = %384
  br i1 %385, label %445, label %387

387:                                              ; preds = %386
  %388 = load ptr, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 40, ptr %18) #5
  %389 = load ptr, ptr %9, align 8, !tbaa !5
  %390 = load ptr, ptr %389, align 8, !tbaa !9
  %391 = getelementptr inbounds ptr, ptr %390, i64 12
  %392 = load ptr, ptr %391, align 8
  %393 = invoke noundef nonnull align 8 dereferenceable(144) ptr %392(ptr noundef nonnull align 8 dereferenceable(228) %389)
          to label %394 unwind label %421

394:                                              ; preds = %387
  %395 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %34, i32 0, i32 7
  %396 = load ptr, ptr %395, align 8, !tbaa !43
  %397 = invoke noundef zeroext i1 @_ZNK7glslang13TIntermediate15getEnhancedMsgsEv(ptr noundef nonnull align 8 dereferenceable(1784) %396)
          to label %398 unwind label %421

398:                                              ; preds = %394
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #5
  invoke void @_ZN7glslang14pool_allocatorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %20)
          to label %399 unwind label %425

399:                                              ; preds = %398
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(40) %19, ptr noundef @.str.2, ptr noundef nonnull align 8 dereferenceable(8) %20)
          to label %400 unwind label %425

400:                                              ; preds = %399
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #5
  invoke void @_ZN7glslang14pool_allocatorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %22)
          to label %401 unwind label %429

401:                                              ; preds = %400
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(40) %21, ptr noundef @.str.2, ptr noundef nonnull align 8 dereferenceable(8) %22)
          to label %402 unwind label %429

402:                                              ; preds = %401
  invoke void @_ZNK7glslang5TType17getCompleteStringEbbbbNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEES7_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %18, ptr noundef nonnull align 8 dereferenceable(144) %393, i1 noundef zeroext %397, i1 noundef zeroext true, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef %19, ptr noundef %21)
          to label %403 unwind label %433

403:                                              ; preds = %402
  %404 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %18) #5
  %405 = load ptr, ptr %34, align 8, !tbaa !9
  %406 = getelementptr inbounds ptr, ptr %405, i64 42
  %407 = load ptr, ptr %406, align 8
  invoke void (ptr, ptr, ptr, ptr, ptr, ...) %407(ptr noundef nonnull align 8 dereferenceable(1176) %34, ptr noundef nonnull align 8 dereferenceable(24) %388, ptr noundef @.str.810, ptr noundef @.str.785, ptr noundef @.str.811, ptr noundef %404)
          to label %408 unwind label %437

408:                                              ; preds = %403
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %18) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %21) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %19) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 40, ptr %18) #5
  %409 = load ptr, ptr %9, align 8, !tbaa !5
  %410 = load ptr, ptr %409, align 8, !tbaa !9
  %411 = getelementptr inbounds ptr, ptr %410, i64 13
  %412 = load ptr, ptr %411, align 8
  %413 = invoke noundef nonnull align 8 dereferenceable(144) ptr %412(ptr noundef nonnull align 8 dereferenceable(228) %409)
          to label %414 unwind label %205

414:                                              ; preds = %408
  %415 = load ptr, ptr %413, align 8, !tbaa !9
  %416 = getelementptr inbounds ptr, ptr %415, i64 10
  %417 = load ptr, ptr %416, align 8
  %418 = invoke noundef nonnull align 8 dereferenceable(72) ptr %417(ptr noundef nonnull align 8 dereferenceable(144) %413)
          to label %419 unwind label %205

419:                                              ; preds = %414
  invoke void @_ZN7glslang10TQualifier13makeTemporaryEv(ptr noundef nonnull align 8 dereferenceable(72) %418)
          to label %420 unwind label %205

420:                                              ; preds = %419
  store ptr null, ptr %5, align 8
  store i32 1, ptr %13, align 4
  br label %823

421:                                              ; preds = %394, %387
  %422 = landingpad { ptr, i32 }
          cleanup
  %423 = extractvalue { ptr, i32 } %422, 0
  store ptr %423, ptr %15, align 8
  %424 = extractvalue { ptr, i32 } %422, 1
  store i32 %424, ptr %16, align 4
  br label %444

425:                                              ; preds = %399, %398
  %426 = landingpad { ptr, i32 }
          cleanup
  %427 = extractvalue { ptr, i32 } %426, 0
  store ptr %427, ptr %15, align 8
  %428 = extractvalue { ptr, i32 } %426, 1
  store i32 %428, ptr %16, align 4
  br label %443

429:                                              ; preds = %401, %400
  %430 = landingpad { ptr, i32 }
          cleanup
  %431 = extractvalue { ptr, i32 } %430, 0
  store ptr %431, ptr %15, align 8
  %432 = extractvalue { ptr, i32 } %430, 1
  store i32 %432, ptr %16, align 4
  br label %442

433:                                              ; preds = %402
  %434 = landingpad { ptr, i32 }
          cleanup
  %435 = extractvalue { ptr, i32 } %434, 0
  store ptr %435, ptr %15, align 8
  %436 = extractvalue { ptr, i32 } %434, 1
  store i32 %436, ptr %16, align 4
  br label %441

437:                                              ; preds = %403
  %438 = landingpad { ptr, i32 }
          cleanup
  %439 = extractvalue { ptr, i32 } %438, 0
  store ptr %439, ptr %15, align 8
  %440 = extractvalue { ptr, i32 } %438, 1
  store i32 %440, ptr %16, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %18) #5
  br label %441

441:                                              ; preds = %437, %433
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %21) #5
  br label %442

442:                                              ; preds = %441, %429
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %19) #5
  br label %443

443:                                              ; preds = %442, %425
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #5
  br label %444

444:                                              ; preds = %443, %421
  call void @llvm.lifetime.end.p0(i64 40, ptr %18) #5
  br label %824

445:                                              ; preds = %386, %370
  %446 = load i32, ptr %11, align 4, !tbaa !13
  %447 = icmp eq i32 %446, 2
  br i1 %447, label %448, label %525

448:                                              ; preds = %445
  %449 = getelementptr inbounds %"class.glslang::TParseContextBase", ptr %34, i32 0, i32 2
  %450 = load ptr, ptr %449, align 8, !tbaa !44
  %451 = invoke noundef zeroext i1 @_ZN7glslang12TSymbolTable13atGlobalLevelEv(ptr noundef nonnull align 8 dereferenceable(40) %450)
          to label %452 unwind label %205

452:                                              ; preds = %448
  br i1 %451, label %453, label %525

453:                                              ; preds = %452
  %454 = load ptr, ptr %8, align 8, !tbaa !5
  %455 = load ptr, ptr %454, align 8, !tbaa !9
  %456 = getelementptr inbounds ptr, ptr %455, i64 30
  %457 = load ptr, ptr %456, align 8
  %458 = invoke noundef nonnull align 8 dereferenceable(144) ptr %457(ptr noundef nonnull align 8 dereferenceable(176) %454)
          to label %459 unwind label %205

459:                                              ; preds = %453
  %460 = load ptr, ptr %458, align 8, !tbaa !9
  %461 = getelementptr inbounds ptr, ptr %460, i64 11
  %462 = load ptr, ptr %461, align 8
  %463 = invoke noundef nonnull align 8 dereferenceable(72) ptr %462(ptr noundef nonnull align 8 dereferenceable(144) %458)
          to label %464 unwind label %205

464:                                              ; preds = %459
  %465 = invoke noundef zeroext i1 @_ZNK7glslang10TQualifier10isConstantEv(ptr noundef nonnull align 8 dereferenceable(72) %463)
          to label %466 unwind label %205

466:                                              ; preds = %464
  br i1 %465, label %525, label %467

467:                                              ; preds = %466
  %468 = load ptr, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 40, ptr %23) #5
  %469 = load ptr, ptr %9, align 8, !tbaa !5
  %470 = load ptr, ptr %469, align 8, !tbaa !9
  %471 = getelementptr inbounds ptr, ptr %470, i64 12
  %472 = load ptr, ptr %471, align 8
  %473 = invoke noundef nonnull align 8 dereferenceable(144) ptr %472(ptr noundef nonnull align 8 dereferenceable(228) %469)
          to label %474 unwind label %501

474:                                              ; preds = %467
  %475 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %34, i32 0, i32 7
  %476 = load ptr, ptr %475, align 8, !tbaa !43
  %477 = invoke noundef zeroext i1 @_ZNK7glslang13TIntermediate15getEnhancedMsgsEv(ptr noundef nonnull align 8 dereferenceable(1784) %476)
          to label %478 unwind label %501

478:                                              ; preds = %474
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #5
  invoke void @_ZN7glslang14pool_allocatorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %25)
          to label %479 unwind label %505

479:                                              ; preds = %478
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(40) %24, ptr noundef @.str.2, ptr noundef nonnull align 8 dereferenceable(8) %25)
          to label %480 unwind label %505

480:                                              ; preds = %479
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #5
  invoke void @_ZN7glslang14pool_allocatorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %27)
          to label %481 unwind label %509

481:                                              ; preds = %480
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(40) %26, ptr noundef @.str.2, ptr noundef nonnull align 8 dereferenceable(8) %27)
          to label %482 unwind label %509

482:                                              ; preds = %481
  invoke void @_ZNK7glslang5TType17getCompleteStringEbbbbNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEES7_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %23, ptr noundef nonnull align 8 dereferenceable(144) %473, i1 noundef zeroext %477, i1 noundef zeroext true, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef %24, ptr noundef %26)
          to label %483 unwind label %513

483:                                              ; preds = %482
  %484 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %23) #5
  %485 = load ptr, ptr %34, align 8, !tbaa !9
  %486 = getelementptr inbounds ptr, ptr %485, i64 42
  %487 = load ptr, ptr %486, align 8
  invoke void (ptr, ptr, ptr, ptr, ptr, ...) %487(ptr noundef nonnull align 8 dereferenceable(1176) %34, ptr noundef nonnull align 8 dereferenceable(24) %468, ptr noundef @.str.812, ptr noundef @.str.785, ptr noundef @.str.811, ptr noundef %484)
          to label %488 unwind label %517

488:                                              ; preds = %483
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %23) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %24) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 40, ptr %23) #5
  %489 = load ptr, ptr %9, align 8, !tbaa !5
  %490 = load ptr, ptr %489, align 8, !tbaa !9
  %491 = getelementptr inbounds ptr, ptr %490, i64 13
  %492 = load ptr, ptr %491, align 8
  %493 = invoke noundef nonnull align 8 dereferenceable(144) ptr %492(ptr noundef nonnull align 8 dereferenceable(228) %489)
          to label %494 unwind label %205

494:                                              ; preds = %488
  %495 = load ptr, ptr %493, align 8, !tbaa !9
  %496 = getelementptr inbounds ptr, ptr %495, i64 10
  %497 = load ptr, ptr %496, align 8
  %498 = invoke noundef nonnull align 8 dereferenceable(72) ptr %497(ptr noundef nonnull align 8 dereferenceable(144) %493)
          to label %499 unwind label %205

499:                                              ; preds = %494
  invoke void @_ZN7glslang10TQualifier13makeTemporaryEv(ptr noundef nonnull align 8 dereferenceable(72) %498)
          to label %500 unwind label %205

500:                                              ; preds = %499
  store ptr null, ptr %5, align 8
  store i32 1, ptr %13, align 4
  br label %823

501:                                              ; preds = %474, %467
  %502 = landingpad { ptr, i32 }
          cleanup
  %503 = extractvalue { ptr, i32 } %502, 0
  store ptr %503, ptr %15, align 8
  %504 = extractvalue { ptr, i32 } %502, 1
  store i32 %504, ptr %16, align 4
  br label %524

505:                                              ; preds = %479, %478
  %506 = landingpad { ptr, i32 }
          cleanup
  %507 = extractvalue { ptr, i32 } %506, 0
  store ptr %507, ptr %15, align 8
  %508 = extractvalue { ptr, i32 } %506, 1
  store i32 %508, ptr %16, align 4
  br label %523

509:                                              ; preds = %481, %480
  %510 = landingpad { ptr, i32 }
          cleanup
  %511 = extractvalue { ptr, i32 } %510, 0
  store ptr %511, ptr %15, align 8
  %512 = extractvalue { ptr, i32 } %510, 1
  store i32 %512, ptr %16, align 4
  br label %522

513:                                              ; preds = %482
  %514 = landingpad { ptr, i32 }
          cleanup
  %515 = extractvalue { ptr, i32 } %514, 0
  store ptr %515, ptr %15, align 8
  %516 = extractvalue { ptr, i32 } %514, 1
  store i32 %516, ptr %16, align 4
  br label %521

517:                                              ; preds = %483
  %518 = landingpad { ptr, i32 }
          cleanup
  %519 = extractvalue { ptr, i32 } %518, 0
  store ptr %519, ptr %15, align 8
  %520 = extractvalue { ptr, i32 } %518, 1
  store i32 %520, ptr %16, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %23) #5
  br label %521

521:                                              ; preds = %517, %513
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %26) #5
  br label %522

522:                                              ; preds = %521, %509
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %24) #5
  br label %523

523:                                              ; preds = %522, %505
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #5
  br label %524

524:                                              ; preds = %523, %501
  call void @llvm.lifetime.end.p0(i64 40, ptr %23) #5
  br label %824

525:                                              ; preds = %466, %452, %445
  %526 = load i32, ptr %11, align 4, !tbaa !13
  %527 = icmp eq i32 %526, 2
  br i1 %527, label %528, label %569

528:                                              ; preds = %525
  %529 = load ptr, ptr %8, align 8, !tbaa !5
  %530 = load ptr, ptr %529, align 8, !tbaa !9
  %531 = getelementptr inbounds ptr, ptr %530, i64 30
  %532 = load ptr, ptr %531, align 8
  %533 = invoke noundef nonnull align 8 dereferenceable(144) ptr %532(ptr noundef nonnull align 8 dereferenceable(176) %529)
          to label %534 unwind label %205

534:                                              ; preds = %528
  %535 = load ptr, ptr %533, align 8, !tbaa !9
  %536 = getelementptr inbounds ptr, ptr %535, i64 11
  %537 = load ptr, ptr %536, align 8
  %538 = invoke noundef nonnull align 8 dereferenceable(72) ptr %537(ptr noundef nonnull align 8 dereferenceable(144) %533)
          to label %539 unwind label %205

539:                                              ; preds = %534
  %540 = invoke noundef zeroext i1 @_ZNK7glslang10TQualifier10isConstantEv(ptr noundef nonnull align 8 dereferenceable(72) %538)
          to label %541 unwind label %205

541:                                              ; preds = %539
  br i1 %540, label %568, label %542

542:                                              ; preds = %541
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #5
  store ptr @.str.813, ptr %28, align 8, !tbaa !5
  %543 = load ptr, ptr %7, align 8, !tbaa !5
  %544 = load ptr, ptr %28, align 8, !tbaa !5
  invoke void @_ZN7glslang14TParseVersions14requireProfileERKNS_10TSourceLocEiPKc(ptr noundef nonnull align 8 dereferenceable(192) %34, ptr noundef nonnull align 8 dereferenceable(24) %543, i32 noundef -9, ptr noundef %544)
          to label %545 unwind label %564

545:                                              ; preds = %542
  %546 = load ptr, ptr %7, align 8, !tbaa !5
  %547 = load ptr, ptr %28, align 8, !tbaa !5
  invoke void @_ZN7glslang14TParseVersions15profileRequiresERKNS_10TSourceLocEiiPKcS5_(ptr noundef nonnull align 8 dereferenceable(192) %34, ptr noundef nonnull align 8 dereferenceable(24) %546, i32 noundef -9, i32 noundef 420, ptr noundef @.str.94, ptr noundef %547)
          to label %548 unwind label %564

548:                                              ; preds = %545
  %549 = load ptr, ptr %9, align 8, !tbaa !5
  %550 = load ptr, ptr %549, align 8, !tbaa !9
  %551 = getelementptr inbounds ptr, ptr %550, i64 13
  %552 = load ptr, ptr %551, align 8
  %553 = invoke noundef nonnull align 8 dereferenceable(144) ptr %552(ptr noundef nonnull align 8 dereferenceable(228) %549)
          to label %554 unwind label %564

554:                                              ; preds = %548
  %555 = load ptr, ptr %553, align 8, !tbaa !9
  %556 = getelementptr inbounds ptr, ptr %555, i64 10
  %557 = load ptr, ptr %556, align 8
  %558 = invoke noundef nonnull align 8 dereferenceable(72) ptr %557(ptr noundef nonnull align 8 dereferenceable(144) %553)
          to label %559 unwind label %564

559:                                              ; preds = %554
  %560 = getelementptr inbounds %"class.glslang::TQualifier", ptr %558, i32 0, i32 1
  %561 = load i64, ptr %560, align 8
  %562 = and i64 %561, -64
  %563 = or i64 %562, 17
  store i64 %563, ptr %560, align 8
  store i32 17, ptr %11, align 4, !tbaa !13
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #5
  br label %568

564:                                              ; preds = %554, %548, %545, %542
  %565 = landingpad { ptr, i32 }
          cleanup
  %566 = extractvalue { ptr, i32 } %565, 0
  store ptr %566, ptr %15, align 8
  %567 = extractvalue { ptr, i32 } %565, 1
  store i32 %567, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #5
  br label %824

568:                                              ; preds = %559, %541
  br label %618

569:                                              ; preds = %525
  %570 = getelementptr inbounds %"class.glslang::TParseContextBase", ptr %34, i32 0, i32 2
  %571 = load ptr, ptr %570, align 8, !tbaa !44
  %572 = invoke noundef zeroext i1 @_ZN7glslang12TSymbolTable13atGlobalLevelEv(ptr noundef nonnull align 8 dereferenceable(40) %571)
          to label %573 unwind label %205

573:                                              ; preds = %569
  br i1 %572, label %574, label %617

574:                                              ; preds = %573
  %575 = load ptr, ptr %8, align 8, !tbaa !5
  %576 = load ptr, ptr %575, align 8, !tbaa !9
  %577 = getelementptr inbounds ptr, ptr %576, i64 30
  %578 = load ptr, ptr %577, align 8
  %579 = invoke noundef nonnull align 8 dereferenceable(144) ptr %578(ptr noundef nonnull align 8 dereferenceable(176) %575)
          to label %580 unwind label %205

580:                                              ; preds = %574
  %581 = load ptr, ptr %579, align 8, !tbaa !9
  %582 = getelementptr inbounds ptr, ptr %581, i64 11
  %583 = load ptr, ptr %582, align 8
  %584 = invoke noundef nonnull align 8 dereferenceable(72) ptr %583(ptr noundef nonnull align 8 dereferenceable(144) %579)
          to label %585 unwind label %205

585:                                              ; preds = %580
  %586 = invoke noundef zeroext i1 @_ZNK7glslang10TQualifier10isConstantEv(ptr noundef nonnull align 8 dereferenceable(72) %584)
          to label %587 unwind label %205

587:                                              ; preds = %585
  br i1 %586, label %617, label %588

588:                                              ; preds = %587
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #5
  store ptr @.str.814, ptr %29, align 8, !tbaa !5
  %589 = invoke noundef zeroext i1 @_ZNK7glslang14TParseVersions11isEsProfileEv(ptr noundef nonnull align 8 dereferenceable(192) %34)
          to label %590 unwind label %607

590:                                              ; preds = %588
  br i1 %589, label %591, label %616

591:                                              ; preds = %590
  %592 = invoke noundef zeroext i1 @_ZNK7glslang14TParseVersions13relaxedErrorsEv(ptr noundef nonnull align 8 dereferenceable(192) %34)
          to label %593 unwind label %607

593:                                              ; preds = %591
  br i1 %592, label %594, label %611

594:                                              ; preds = %593
  %595 = load ptr, ptr %34, align 8, !tbaa !9
  %596 = getelementptr inbounds ptr, ptr %595, i64 8
  %597 = load ptr, ptr %596, align 8
  %598 = invoke noundef zeroext i1 %597(ptr noundef nonnull align 8 dereferenceable(192) %34, ptr noundef @.str.815)
          to label %599 unwind label %607

599:                                              ; preds = %594
  br i1 %598, label %611, label %600

600:                                              ; preds = %599
  %601 = load ptr, ptr %7, align 8, !tbaa !5
  %602 = load ptr, ptr %29, align 8, !tbaa !5
  %603 = load ptr, ptr %34, align 8, !tbaa !9
  %604 = getelementptr inbounds ptr, ptr %603, i64 43
  %605 = load ptr, ptr %604, align 8
  invoke void (ptr, ptr, ptr, ptr, ptr, ...) %605(ptr noundef nonnull align 8 dereferenceable(1176) %34, ptr noundef nonnull align 8 dereferenceable(24) %601, ptr noundef @.str.324, ptr noundef %602, ptr noundef @.str.2)
          to label %606 unwind label %607

606:                                              ; preds = %600
  br label %615

607:                                              ; preds = %611, %600, %594, %591, %588
  %608 = landingpad { ptr, i32 }
          cleanup
  %609 = extractvalue { ptr, i32 } %608, 0
  store ptr %609, ptr %15, align 8
  %610 = extractvalue { ptr, i32 } %608, 1
  store i32 %610, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #5
  br label %824

611:                                              ; preds = %599, %593
  %612 = load ptr, ptr %7, align 8, !tbaa !5
  %613 = load ptr, ptr %29, align 8, !tbaa !5
  invoke void @_ZN7glslang14TParseVersions15profileRequiresERKNS_10TSourceLocEiiPKcS5_(ptr noundef nonnull align 8 dereferenceable(192) %34, ptr noundef nonnull align 8 dereferenceable(24) %612, i32 noundef 8, i32 noundef 0, ptr noundef @.str.815, ptr noundef %613)
          to label %614 unwind label %607

614:                                              ; preds = %611
  br label %615

615:                                              ; preds = %614, %606
  br label %616

616:                                              ; preds = %615, %590
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #5
  br label %617

617:                                              ; preds = %616, %587, %573
  br label %618

618:                                              ; preds = %617, %568
  %619 = load i32, ptr %11, align 4, !tbaa !13
  %620 = icmp eq i32 %619, 2
  br i1 %620, label %624, label %621

621:                                              ; preds = %618
  %622 = load i32, ptr %11, align 4, !tbaa !13
  %623 = icmp eq i32 %622, 5
  br i1 %623, label %624, label %762

624:                                              ; preds = %621, %618
  %625 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %34, i32 0, i32 7
  %626 = load ptr, ptr %625, align 8, !tbaa !43
  %627 = load ptr, ptr %9, align 8, !tbaa !5
  %628 = load ptr, ptr %627, align 8, !tbaa !9
  %629 = getelementptr inbounds ptr, ptr %628, i64 12
  %630 = load ptr, ptr %629, align 8
  %631 = invoke noundef nonnull align 8 dereferenceable(144) ptr %630(ptr noundef nonnull align 8 dereferenceable(228) %627)
          to label %632 unwind label %205

632:                                              ; preds = %624
  %633 = load ptr, ptr %8, align 8, !tbaa !5
  %634 = invoke noundef ptr @_ZN7glslang13TIntermediate13addConversionENS_9TOperatorERKNS_5TTypeEPNS_12TIntermTypedE(ptr noundef nonnull align 8 dereferenceable(1784) %626, i32 noundef 575, ptr noundef nonnull align 8 dereferenceable(144) %631, ptr noundef %633)
          to label %635 unwind label %205

635:                                              ; preds = %632
  store ptr %634, ptr %8, align 8, !tbaa !5
  %636 = load ptr, ptr %8, align 8, !tbaa !5
  %637 = icmp ne ptr %636, null
  br i1 %637, label %638, label %667

638:                                              ; preds = %635
  %639 = load ptr, ptr %8, align 8, !tbaa !5
  %640 = load ptr, ptr %639, align 8, !tbaa !9
  %641 = getelementptr inbounds ptr, ptr %640, i64 30
  %642 = load ptr, ptr %641, align 8
  %643 = invoke noundef nonnull align 8 dereferenceable(144) ptr %642(ptr noundef nonnull align 8 dereferenceable(176) %639)
          to label %644 unwind label %205

644:                                              ; preds = %638
  %645 = load ptr, ptr %643, align 8, !tbaa !9
  %646 = getelementptr inbounds ptr, ptr %645, i64 11
  %647 = load ptr, ptr %646, align 8
  %648 = invoke noundef nonnull align 8 dereferenceable(72) ptr %647(ptr noundef nonnull align 8 dereferenceable(144) %643)
          to label %649 unwind label %205

649:                                              ; preds = %644
  %650 = invoke noundef zeroext i1 @_ZNK7glslang10TQualifier10isConstantEv(ptr noundef nonnull align 8 dereferenceable(72) %648)
          to label %651 unwind label %205

651:                                              ; preds = %649
  br i1 %650, label %652, label %667

652:                                              ; preds = %651
  %653 = load ptr, ptr %9, align 8, !tbaa !5
  %654 = load ptr, ptr %653, align 8, !tbaa !9
  %655 = getelementptr inbounds ptr, ptr %654, i64 12
  %656 = load ptr, ptr %655, align 8
  %657 = invoke noundef nonnull align 8 dereferenceable(144) ptr %656(ptr noundef nonnull align 8 dereferenceable(228) %653)
          to label %658 unwind label %205

658:                                              ; preds = %652
  %659 = load ptr, ptr %8, align 8, !tbaa !5
  %660 = load ptr, ptr %659, align 8, !tbaa !9
  %661 = getelementptr inbounds ptr, ptr %660, i64 30
  %662 = load ptr, ptr %661, align 8
  %663 = invoke noundef nonnull align 8 dereferenceable(144) ptr %662(ptr noundef nonnull align 8 dereferenceable(176) %659)
          to label %664 unwind label %205

664:                                              ; preds = %658
  %665 = invoke noundef zeroext i1 @_ZNK7glslang5TTypeneERKS0_(ptr noundef nonnull align 8 dereferenceable(144) %657, ptr noundef nonnull align 8 dereferenceable(144) %663)
          to label %666 unwind label %205

666:                                              ; preds = %664
  br i1 %665, label %667, label %693

667:                                              ; preds = %666, %651, %635
  %668 = load ptr, ptr %7, align 8, !tbaa !5
  %669 = load ptr, ptr %9, align 8, !tbaa !5
  %670 = load ptr, ptr %669, align 8, !tbaa !9
  %671 = getelementptr inbounds ptr, ptr %670, i64 12
  %672 = load ptr, ptr %671, align 8
  %673 = invoke noundef nonnull align 8 dereferenceable(144) ptr %672(ptr noundef nonnull align 8 dereferenceable(228) %669)
          to label %674 unwind label %205

674:                                              ; preds = %667
  %675 = invoke noundef ptr @_ZNK7glslang5TType25getStorageQualifierStringEv(ptr noundef nonnull align 8 dereferenceable(144) %673)
          to label %676 unwind label %205

676:                                              ; preds = %674
  %677 = load ptr, ptr %34, align 8, !tbaa !9
  %678 = getelementptr inbounds ptr, ptr %677, i64 42
  %679 = load ptr, ptr %678, align 8
  invoke void (ptr, ptr, ptr, ptr, ptr, ...) %679(ptr noundef nonnull align 8 dereferenceable(1176) %34, ptr noundef nonnull align 8 dereferenceable(24) %668, ptr noundef @.str.816, ptr noundef %675, ptr noundef @.str.2)
          to label %680 unwind label %205

680:                                              ; preds = %676
  %681 = load ptr, ptr %9, align 8, !tbaa !5
  %682 = load ptr, ptr %681, align 8, !tbaa !9
  %683 = getelementptr inbounds ptr, ptr %682, i64 13
  %684 = load ptr, ptr %683, align 8
  %685 = invoke noundef nonnull align 8 dereferenceable(144) ptr %684(ptr noundef nonnull align 8 dereferenceable(228) %681)
          to label %686 unwind label %205

686:                                              ; preds = %680
  %687 = load ptr, ptr %685, align 8, !tbaa !9
  %688 = getelementptr inbounds ptr, ptr %687, i64 10
  %689 = load ptr, ptr %688, align 8
  %690 = invoke noundef nonnull align 8 dereferenceable(72) ptr %689(ptr noundef nonnull align 8 dereferenceable(144) %685)
          to label %691 unwind label %205

691:                                              ; preds = %686
  invoke void @_ZN7glslang10TQualifier13makeTemporaryEv(ptr noundef nonnull align 8 dereferenceable(72) %690)
          to label %692 unwind label %205

692:                                              ; preds = %691
  store ptr null, ptr %5, align 8
  store i32 1, ptr %13, align 4
  br label %823

693:                                              ; preds = %666
  %694 = load ptr, ptr %8, align 8, !tbaa !5
  %695 = load ptr, ptr %694, align 8, !tbaa !9
  %696 = getelementptr inbounds ptr, ptr %695, i64 5
  %697 = load ptr, ptr %696, align 8
  %698 = invoke noundef ptr %697(ptr noundef nonnull align 8 dereferenceable(32) %694)
          to label %699 unwind label %205

699:                                              ; preds = %693
  %700 = icmp ne ptr %698, null
  br i1 %700, label %715, label %701

701:                                              ; preds = %699
  %702 = load ptr, ptr %8, align 8, !tbaa !5
  %703 = load ptr, ptr %702, align 8, !tbaa !9
  %704 = getelementptr inbounds ptr, ptr %703, i64 30
  %705 = load ptr, ptr %704, align 8
  %706 = invoke noundef nonnull align 8 dereferenceable(144) ptr %705(ptr noundef nonnull align 8 dereferenceable(176) %702)
          to label %707 unwind label %205

707:                                              ; preds = %701
  %708 = load ptr, ptr %706, align 8, !tbaa !9
  %709 = getelementptr inbounds ptr, ptr %708, i64 11
  %710 = load ptr, ptr %709, align 8
  %711 = invoke noundef nonnull align 8 dereferenceable(72) ptr %710(ptr noundef nonnull align 8 dereferenceable(144) %706)
          to label %712 unwind label %205

712:                                              ; preds = %707
  %713 = invoke noundef zeroext i1 @_ZNK7glslang10TQualifier14isSpecConstantEv(ptr noundef nonnull align 8 dereferenceable(72) %711)
          to label %714 unwind label %205

714:                                              ; preds = %712
  br label %715

715:                                              ; preds = %714, %699
  %716 = phi i1 [ true, %699 ], [ %713, %714 ]
  br i1 %716, label %717, label %718

717:                                              ; preds = %715
  br label %720

718:                                              ; preds = %715
  call void @__assert_fail(ptr noundef @.str.817, ptr noundef @.str.68, i32 noundef 7522, ptr noundef @__PRETTY_FUNCTION__._ZN7glslang13TParseContext18executeInitializerERKNS_10TSourceLocEPNS_12TIntermTypedEPNS_9TVariableE) #6
  unreachable

719:                                              ; No predecessors!
  br label %720

720:                                              ; preds = %719, %717
  %721 = load ptr, ptr %8, align 8, !tbaa !5
  %722 = load ptr, ptr %721, align 8, !tbaa !9
  %723 = getelementptr inbounds ptr, ptr %722, i64 5
  %724 = load ptr, ptr %723, align 8
  %725 = invoke noundef ptr %724(ptr noundef nonnull align 8 dereferenceable(32) %721)
          to label %726 unwind label %205

726:                                              ; preds = %720
  %727 = icmp ne ptr %725, null
  br i1 %727, label %728, label %742

728:                                              ; preds = %726
  %729 = load ptr, ptr %9, align 8, !tbaa !5
  %730 = load ptr, ptr %8, align 8, !tbaa !5
  %731 = load ptr, ptr %730, align 8, !tbaa !9
  %732 = getelementptr inbounds ptr, ptr %731, i64 5
  %733 = load ptr, ptr %732, align 8
  %734 = invoke noundef ptr %733(ptr noundef nonnull align 8 dereferenceable(32) %730)
          to label %735 unwind label %205

735:                                              ; preds = %728
  %736 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK7glslang20TIntermConstantUnion13getConstArrayEv(ptr noundef nonnull align 8 dereferenceable(193) %734)
          to label %737 unwind label %205

737:                                              ; preds = %735
  %738 = load ptr, ptr %729, align 8, !tbaa !9
  %739 = getelementptr inbounds ptr, ptr %738, i64 25
  %740 = load ptr, ptr %739, align 8
  invoke void %740(ptr noundef nonnull align 8 dereferenceable(228) %729, ptr noundef nonnull align 8 dereferenceable(16) %736)
          to label %741 unwind label %205

741:                                              ; preds = %737
  br label %761

742:                                              ; preds = %726
  %743 = load ptr, ptr %9, align 8, !tbaa !5
  %744 = load ptr, ptr %743, align 8, !tbaa !9
  %745 = getelementptr inbounds ptr, ptr %744, i64 13
  %746 = load ptr, ptr %745, align 8
  %747 = invoke noundef nonnull align 8 dereferenceable(144) ptr %746(ptr noundef nonnull align 8 dereferenceable(228) %743)
          to label %748 unwind label %205

748:                                              ; preds = %742
  %749 = load ptr, ptr %747, align 8, !tbaa !9
  %750 = getelementptr inbounds ptr, ptr %749, i64 10
  %751 = load ptr, ptr %750, align 8
  %752 = invoke noundef nonnull align 8 dereferenceable(72) ptr %751(ptr noundef nonnull align 8 dereferenceable(144) %747)
          to label %753 unwind label %205

753:                                              ; preds = %748
  invoke void @_ZN7glslang10TQualifier16makeSpecConstantEv(ptr noundef nonnull align 8 dereferenceable(72) %752)
          to label %754 unwind label %205

754:                                              ; preds = %753
  %755 = load ptr, ptr %9, align 8, !tbaa !5
  %756 = load ptr, ptr %8, align 8, !tbaa !5
  %757 = load ptr, ptr %755, align 8, !tbaa !9
  %758 = getelementptr inbounds ptr, ptr %757, i64 26
  %759 = load ptr, ptr %758, align 8
  invoke void %759(ptr noundef nonnull align 8 dereferenceable(228) %755, ptr noundef %756)
          to label %760 unwind label %205

760:                                              ; preds = %754
  br label %761

761:                                              ; preds = %760, %741
  br label %822

762:                                              ; preds = %621
  %763 = load ptr, ptr %7, align 8, !tbaa !5
  %764 = load ptr, ptr %8, align 8, !tbaa !5
  %765 = load ptr, ptr %764, align 8, !tbaa !9
  %766 = getelementptr inbounds ptr, ptr %765, i64 30
  %767 = load ptr, ptr %766, align 8
  %768 = invoke noundef nonnull align 8 dereferenceable(144) ptr %767(ptr noundef nonnull align 8 dereferenceable(176) %764)
          to label %769 unwind label %205

769:                                              ; preds = %762
  invoke void @_ZN7glslang13TParseContext19specializationCheckERKNS_10TSourceLocERKNS_5TTypeEPKc(ptr noundef nonnull align 8 dereferenceable(24912) %34, ptr noundef nonnull align 8 dereferenceable(24) %763, ptr noundef nonnull align 8 dereferenceable(144) %768, ptr noundef @.str.790)
          to label %770 unwind label %205

770:                                              ; preds = %769
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #5
  %771 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %34, i32 0, i32 7
  %772 = load ptr, ptr %771, align 8, !tbaa !43
  %773 = load ptr, ptr %9, align 8, !tbaa !5
  %774 = load ptr, ptr %7, align 8, !tbaa !5
  %775 = invoke noundef ptr @_ZN7glslang13TIntermediate9addSymbolERKNS_9TVariableERKNS_10TSourceLocE(ptr noundef nonnull align 8 dereferenceable(1784) %772, ptr noundef nonnull align 8 dereferenceable(228) %773, ptr noundef nonnull align 8 dereferenceable(24) %774)
          to label %776 unwind label %801

776:                                              ; preds = %770
  store ptr %775, ptr %30, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #5
  %777 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %34, i32 0, i32 7
  %778 = load ptr, ptr %777, align 8, !tbaa !43
  %779 = load ptr, ptr %30, align 8, !tbaa !5
  %780 = load ptr, ptr %8, align 8, !tbaa !5
  %781 = load ptr, ptr %7, align 8, !tbaa !5
  %782 = invoke noundef ptr @_ZN7glslang13TIntermediate9addAssignENS_9TOperatorEPNS_12TIntermTypedES3_RKNS_10TSourceLocE(ptr noundef nonnull align 8 dereferenceable(1784) %778, i32 noundef 575, ptr noundef %779, ptr noundef %780, ptr noundef nonnull align 8 dereferenceable(24) %781)
          to label %783 unwind label %805

783:                                              ; preds = %776
  store ptr %782, ptr %31, align 8, !tbaa !5
  %784 = load ptr, ptr %31, align 8, !tbaa !5
  %785 = icmp ne ptr %784, null
  br i1 %785, label %818, label %786

786:                                              ; preds = %783
  %787 = load ptr, ptr %7, align 8, !tbaa !5
  %788 = load ptr, ptr %30, align 8, !tbaa !5
  %789 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %34, i32 0, i32 7
  %790 = load ptr, ptr %789, align 8, !tbaa !43
  %791 = invoke noundef zeroext i1 @_ZNK7glslang13TIntermediate15getEnhancedMsgsEv(ptr noundef nonnull align 8 dereferenceable(1784) %790)
          to label %792 unwind label %805

792:                                              ; preds = %786
  invoke void @_ZNK7glslang12TIntermTyped17getCompleteStringB5cxx11Eb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %32, ptr noundef nonnull align 8 dereferenceable(176) %788, i1 noundef zeroext %791)
          to label %793 unwind label %805

793:                                              ; preds = %792
  %794 = load ptr, ptr %8, align 8, !tbaa !5
  %795 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %34, i32 0, i32 7
  %796 = load ptr, ptr %795, align 8, !tbaa !43
  %797 = invoke noundef zeroext i1 @_ZNK7glslang13TIntermediate15getEnhancedMsgsEv(ptr noundef nonnull align 8 dereferenceable(1784) %796)
          to label %798 unwind label %809

798:                                              ; preds = %793
  invoke void @_ZNK7glslang12TIntermTyped17getCompleteStringB5cxx11Eb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %33, ptr noundef nonnull align 8 dereferenceable(176) %794, i1 noundef zeroext %797)
          to label %799 unwind label %809

799:                                              ; preds = %798
  invoke void @_ZN7glslang13TParseContext11assignErrorERKNS_10TSourceLocEPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEESC_(ptr noundef nonnull align 8 dereferenceable(24912) %34, ptr noundef nonnull align 8 dereferenceable(24) %787, ptr noundef @.str.785, ptr noundef %32, ptr noundef %33)
          to label %800 unwind label %813

800:                                              ; preds = %799
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %33) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %32) #5
  br label %818

801:                                              ; preds = %770
  %802 = landingpad { ptr, i32 }
          cleanup
  %803 = extractvalue { ptr, i32 } %802, 0
  store ptr %803, ptr %15, align 8
  %804 = extractvalue { ptr, i32 } %802, 1
  store i32 %804, ptr %16, align 4
  br label %821

805:                                              ; preds = %792, %786, %776
  %806 = landingpad { ptr, i32 }
          cleanup
  %807 = extractvalue { ptr, i32 } %806, 0
  store ptr %807, ptr %15, align 8
  %808 = extractvalue { ptr, i32 } %806, 1
  store i32 %808, ptr %16, align 4
  br label %820

809:                                              ; preds = %798, %793
  %810 = landingpad { ptr, i32 }
          cleanup
  %811 = extractvalue { ptr, i32 } %810, 0
  store ptr %811, ptr %15, align 8
  %812 = extractvalue { ptr, i32 } %810, 1
  store i32 %812, ptr %16, align 4
  br label %817

813:                                              ; preds = %799
  %814 = landingpad { ptr, i32 }
          cleanup
  %815 = extractvalue { ptr, i32 } %814, 0
  store ptr %815, ptr %15, align 8
  %816 = extractvalue { ptr, i32 } %814, 1
  store i32 %816, ptr %16, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %33) #5
  br label %817

817:                                              ; preds = %813, %809
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %32) #5
  br label %820

818:                                              ; preds = %800, %783
  %819 = load ptr, ptr %31, align 8, !tbaa !5
  store ptr %819, ptr %5, align 8
  store i32 1, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #5
  br label %823

820:                                              ; preds = %817, %805
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #5
  br label %821

821:                                              ; preds = %820, %801
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #5
  br label %824

822:                                              ; preds = %761
  store ptr null, ptr %5, align 8
  store i32 1, ptr %13, align 4
  br label %823

823:                                              ; preds = %822, %818, %692, %500, %420, %209
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %14) #5
  call void @llvm.lifetime.end.p0(i64 144, ptr %14) #5
  br label %825

824:                                              ; preds = %821, %607, %564, %524, %444, %317, %205
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %14) #5
  call void @llvm.lifetime.end.p0(i64 144, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #5
  br label %827

825:                                              ; preds = %823, %156, %151, %136, %111
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #5
  %826 = load ptr, ptr %5, align 8
  ret ptr %826

827:                                              ; preds = %824
  %828 = load ptr, ptr %15, align 8
  %829 = load i32, ptr %16, align 4
  %830 = insertvalue { ptr, i32 } poison, ptr %828, 0
  %831 = insertvalue { ptr, i32 } %830, i32 %829, 1
  resume { ptr, i32 } %831
}

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

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

attributes #0 = { 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 #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { "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 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nounwind }
attributes #6 = { noreturn 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, !10, i64 0}
!10 = !{!"vtable pointer", !8, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"bool", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"_ZTSN7glslang17TStorageQualifierE", !7, i64 0}
!15 = !{!16, !18, i64 24}
!16 = !{!"_ZTSN7glslang14TParseVersionsE", !12, i64 8, !17, i64 12, !6, i64 16, !18, i64 24, !19, i64 28, !20, i64 32, !6, i64 56, !21, i64 64, !32, i64 120, !37, i64 176, !18, i64 180, !6, i64 184}
!17 = !{!"_ZTS8EProfile", !7, i64 0}
!18 = !{!"int", !7, i64 0}
!19 = !{!"_ZTS11EShLanguage", !7, i64 0}
!20 = !{!"_ZTSN7glslang10SpvVersionE", !18, i64 0, !18, i64 4, !18, i64 8, !18, i64 12, !12, i64 16}
!21 = !{!"_ZTSN7glslang4TMapINSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEENS_18TExtensionBehaviorESt4lessIS7_EEE", !22, i64 0}
!22 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEENS4_18TExtensionBehaviorESt4lessIS7_ENS5_ISt4pairIKS7_S8_EEEE", !23, i64 0}
!23 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_NS4_18TExtensionBehaviorEESt10_Select1stISB_ESt4lessIS7_ENS5_ISB_EEE", !24, i64 0}
!24 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_NS4_18TExtensionBehaviorEESt10_Select1stISB_ESt4lessIS7_ENS5_ISB_EEE13_Rb_tree_implISF_Lb1EEE", !25, i64 0, !26, i64 8, !28, i64 16}
!25 = !{!"_ZTSN7glslang14pool_allocatorISt13_Rb_tree_nodeISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_IcEEEENS_18TExtensionBehaviorEEEEE", !6, i64 0}
!26 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEEE", !27, i64 0}
!27 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEE"}
!28 = !{!"_ZTSSt15_Rb_tree_header", !29, i64 0, !31, i64 32}
!29 = !{!"_ZTSSt18_Rb_tree_node_base", !30, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!30 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!31 = !{!"long", !7, i64 0}
!32 = !{!"_ZTSN7glslang4TMapINSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEEjSt4lessIS7_EEE", !33, i64 0}
!33 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEjSt4lessIS7_ENS5_ISt4pairIKS7_jEEEE", !34, i64 0}
!34 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_jESt10_Select1stISA_ESt4lessIS7_ENS5_ISA_EEE", !35, i64 0}
!35 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_jESt10_Select1stISA_ESt4lessIS7_ENS5_ISA_EEE13_Rb_tree_implISE_Lb1EEE", !36, i64 0, !26, i64 8, !28, i64 16}
!36 = !{!"_ZTSN7glslang14pool_allocatorISt13_Rb_tree_nodeISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_IcEEEEjEEEE", !6, i64 0}
!37 = !{!"_ZTS11EShMessages", !7, i64 0}
!38 = !{i8 0, i8 2}
!39 = !{}
!40 = !{!18, !18, i64 0}
!41 = distinct !{!41, !42}
!42 = !{!"llvm.loop.mustprogress"}
!43 = !{!16, !6, i64 56}
!44 = !{!45, !6, i64 200}
!45 = !{!"_ZTSN7glslang17TParseContextBaseE", !16, i64 0, !6, i64 192, !6, i64 200, !18, i64 208, !18, i64 212, !18, i64 216, !18, i64 220, !18, i64 224, !6, i64 232, !12, i64 240, !12, i64 241, !46, i64 248, !53, i64 280, !58, i64 312, !18, i64 376, !18, i64 380, !12, i64 384, !65, i64 392, !6, i64 424, !6, i64 432, !71, i64 440, !6, i64 824, !73, i64 832, !76, i64 872, !78, i64 904, !79, i64 936, !80, i64 968, !81, i64 1000, !6, i64 1032, !18, i64 1040, !18, i64 1044, !18, i64 1048, !82, i64 1056, !18, i64 1112, !89, i64 1120}
!46 = !{!"_ZTSN7glslang5TListIPNS_7TVectorIP11TIntermNodeEEEE", !47, i64 0}
!47 = !{!"_ZTSNSt7__cxx114listIPN7glslang7TVectorIP11TIntermNodeEENS1_14pool_allocatorIS6_EEEE", !48, i64 0}
!48 = !{!"_ZTSNSt7__cxx1110_List_baseIPN7glslang7TVectorIP11TIntermNodeEENS1_14pool_allocatorIS6_EEEE", !49, i64 0}
!49 = !{!"_ZTSNSt7__cxx1110_List_baseIPN7glslang7TVectorIP11TIntermNodeEENS1_14pool_allocatorIS6_EEE10_List_implE", !50, i64 0, !51, i64 8}
!50 = !{!"_ZTSN7glslang14pool_allocatorISt10_List_nodeIPNS_7TVectorIP11TIntermNodeEEEEE", !6, i64 0}
!51 = !{!"_ZTSNSt8__detail17_List_node_headerE", !52, i64 0, !31, i64 16}
!52 = !{!"_ZTSNSt8__detail15_List_node_baseE", !6, i64 0, !6, i64 8}
!53 = !{!"_ZTSN7glslang5TListIiEE", !54, i64 0}
!54 = !{!"_ZTSNSt7__cxx114listIiN7glslang14pool_allocatorIiEEEE", !55, i64 0}
!55 = !{!"_ZTSNSt7__cxx1110_List_baseIiN7glslang14pool_allocatorIiEEEE", !56, i64 0}
!56 = !{!"_ZTSNSt7__cxx1110_List_baseIiN7glslang14pool_allocatorIiEEE10_List_implE", !57, i64 0, !51, i64 8}
!57 = !{!"_ZTSN7glslang14pool_allocatorISt10_List_nodeIiEEE", !6, i64 0}
!58 = !{!"_ZTSN7glslang7TPragmaE", !12, i64 0, !12, i64 1, !59, i64 8}
!59 = !{!"_ZTSN7glslang12TPragmaTableE", !60, i64 0}
!60 = !{!"_ZTSN7glslang4TMapINSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEES7_St4lessIS7_EEE", !61, i64 0}
!61 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEES7_St4lessIS7_ENS5_ISt4pairIKS7_S7_EEEE", !62, i64 0}
!62 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_S7_ESt10_Select1stISA_ESt4lessIS7_ENS5_ISA_EEE", !63, i64 0}
!63 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_S7_ESt10_Select1stISA_ESt4lessIS7_ENS5_ISA_EEE13_Rb_tree_implISE_Lb1EEE", !64, i64 0, !26, i64 8, !28, i64 16}
!64 = !{!"_ZTSN7glslang14pool_allocatorISt13_Rb_tree_nodeISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_IcEEEES8_EEEE", !6, i64 0}
!65 = !{!"_ZTSN7glslang7TVectorIPNS_7TSymbolEEE", !66, i64 0}
!66 = !{!"_ZTSSt6vectorIPN7glslang7TSymbolENS0_14pool_allocatorIS2_EEE", !67, i64 0}
!67 = !{!"_ZTSSt12_Vector_baseIPN7glslang7TSymbolENS0_14pool_allocatorIS2_EEE", !68, i64 0}
!68 = !{!"_ZTSNSt12_Vector_baseIPN7glslang7TSymbolENS0_14pool_allocatorIS2_EEE12_Vector_implE", !69, i64 0, !70, i64 8}
!69 = !{!"_ZTSN7glslang14pool_allocatorIPNS_7TSymbolEEE", !6, i64 0}
!70 = !{!"_ZTSNSt12_Vector_baseIPN7glslang7TSymbolENS0_14pool_allocatorIS2_EEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!71 = !{!"_ZTS16TBuiltInResource", !18, i64 0, !18, i64 4, !18, i64 8, !18, i64 12, !18, i64 16, !18, i64 20, !18, i64 24, !18, i64 28, !18, i64 32, !18, i64 36, !18, i64 40, !18, i64 44, !18, i64 48, !18, i64 52, !18, i64 56, !18, i64 60, !18, i64 64, !18, i64 68, !18, i64 72, !18, i64 76, !18, i64 80, !18, i64 84, !18, i64 88, !18, i64 92, !18, i64 96, !18, i64 100, !18, i64 104, !18, i64 108, !18, i64 112, !18, i64 116, !18, i64 120, !18, i64 124, !18, i64 128, !18, i64 132, !18, i64 136, !18, i64 140, !18, i64 144, !18, i64 148, !18, i64 152, !18, i64 156, !18, i64 160, !18, i64 164, !18, i64 168, !18, i64 172, !18, i64 176, !18, i64 180, !18, i64 184, !18, i64 188, !18, i64 192, !18, i64 196, !18, i64 200, !18, i64 204, !18, i64 208, !18, i64 212, !18, i64 216, !18, i64 220, !18, i64 224, !18, i64 228, !18, i64 232, !18, i64 236, !18, i64 240, !18, i64 244, !18, i64 248, !18, i64 252, !18, i64 256, !18, i64 260, !18, i64 264, !18, i64 268, !18, i64 272, !18, i64 276, !18, i64 280, !18, i64 284, !18, i64 288, !18, i64 292, !18, i64 296, !18, i64 300, !18, i64 304, !18, i64 308, !18, i64 312, !18, i64 316, !18, i64 320, !18, i64 324, !18, i64 328, !18, i64 332, !18, i64 336, !18, i64 340, !18, i64 344, !18, i64 348, !18, i64 352, !18, i64 356, !18, i64 360, !18, i64 364, !18, i64 368, !72, i64 372}
!72 = !{!"_ZTS7TLimits", !12, i64 0, !12, i64 1, !12, i64 2, !12, i64 3, !12, i64 4, !12, i64 5, !12, i64 6, !12, i64 7, !12, i64 8}
!73 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEE", !74, i64 0, !31, i64 16, !7, i64 24}
!74 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE12_Alloc_hiderE", !75, i64 0, !6, i64 8}
!75 = !{!"_ZTSN7glslang14pool_allocatorIcEE", !6, i64 0}
!76 = !{!"_ZTSSt8functionIFviibiPKcEE", !77, i64 0, !6, i64 24}
!77 = !{!"_ZTSSt14_Function_base", !7, i64 0, !6, i64 16}
!78 = !{!"_ZTSSt8functionIFviRKN7glslang7TVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_14pool_allocatorIcEEEEEEEE", !77, i64 0, !6, i64 24}
!79 = !{!"_ZTSSt8functionIFviiPKcEE", !77, i64 0, !6, i64 24}
!80 = !{!"_ZTSSt8functionIFviPKcS1_EE", !77, i64 0, !6, i64 24}
!81 = !{!"_ZTSSt8functionIFviPKcEE", !77, i64 0, !6, i64 24}
!82 = !{!"_ZTSN7glslang4TMapIiPNS_9TVariableESt4lessIiEEE", !83, i64 0}
!83 = !{!"_ZTSSt3mapIiPN7glslang9TVariableESt4lessIiENS0_14pool_allocatorISt4pairIKiS2_EEEE", !84, i64 0}
!84 = !{!"_ZTSSt8_Rb_treeIiSt4pairIKiPN7glslang9TVariableEESt10_Select1stIS5_ESt4lessIiENS2_14pool_allocatorIS5_EEE", !85, i64 0}
!85 = !{!"_ZTSNSt8_Rb_treeIiSt4pairIKiPN7glslang9TVariableEESt10_Select1stIS5_ESt4lessIiENS2_14pool_allocatorIS5_EEE13_Rb_tree_implIS9_Lb1EEE", !86, i64 0, !87, i64 8, !28, i64 16}
!86 = !{!"_ZTSN7glslang14pool_allocatorISt13_Rb_tree_nodeISt4pairIKiPNS_9TVariableEEEEE", !6, i64 0}
!87 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIiEE", !88, i64 0}
!88 = !{!"_ZTSSt4lessIiE"}
!89 = !{!"_ZTSN7glslang4TMapIiiSt4lessIiEEE", !90, i64 0}
!90 = !{!"_ZTSSt3mapIiiSt4lessIiEN7glslang14pool_allocatorISt4pairIKiiEEEE", !91, i64 0}
!91 = !{!"_ZTSSt8_Rb_treeIiSt4pairIKiiESt10_Select1stIS2_ESt4lessIiEN7glslang14pool_allocatorIS2_EEE", !92, i64 0}
!92 = !{!"_ZTSNSt8_Rb_treeIiSt4pairIKiiESt10_Select1stIS2_ESt4lessIiEN7glslang14pool_allocatorIS2_EEE13_Rb_tree_implIS6_Lb1EEE", !93, i64 0, !87, i64 8, !28, i64 16}
!93 = !{!"_ZTSN7glslang14pool_allocatorISt13_Rb_tree_nodeISt4pairIKiiEEEE", !6, i64 0}


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

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

@.str.2 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [113 x i8], align 1
@.str.94 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.324 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.568 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.785 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.790 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.802 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.803 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.804 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.805 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.806 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.807 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.808 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.809 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.810 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.811 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.812 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.813 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.814 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.815 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.816 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.817 = external hidden unnamed_addr constant [92 x i8], align 1
@__PRETTY_FUNCTION__._ZN7glslang13TParseContext18executeInitializerERKNS_10TSourceLocEPNS_12TIntermTypedEPNS_9TVariableE = external hidden unnamed_addr constant [105 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40)) 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 uwtable
declare dso_local void @_ZN7glslang14pool_allocatorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #2 align 2

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

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

declare noundef ptr @_ZN7glslang13TIntermediate9addSymbolERKNS_9TVariableERKNS_10TSourceLocE(ptr noundef nonnull align 8 dereferenceable(1784), ptr noundef nonnull align 8 dereferenceable(228), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK7glslang10TQualifier18isFrontEndConstantEv(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(16) ptr @_ZNK7glslang20TIntermConstantUnion13getConstArrayEv(ptr noundef nonnull align 8 dereferenceable(193)) local_unnamed_addr #0 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK7glslang11TArraySizes10getDimSizeEi(ptr noundef nonnull align 8 dereferenceable(21), i32 noundef) local_unnamed_addr #0 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 #3

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK7glslang12TIntermTyped17getCompleteStringB5cxx11Eb(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(176), i1 noundef zeroext) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK7glslang5TType17getCompleteStringEbbbbNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEES7_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(144), i1 noundef zeroext, i1 noundef zeroext, i1 noundef zeroext, i1 noundef zeroext, ptr noundef, ptr noundef) local_unnamed_addr #2 align 2

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK7glslang15TIntermOperator5getOpEv(ptr noundef nonnull align 8 dereferenceable(184)) local_unnamed_addr #0 align 2

declare noundef ptr @_ZN7glslang13TIntermediate13addConversionENS_9TOperatorERKNS_5TTypeEPNS_12TIntermTypedE(ptr noundef nonnull align 8 dereferenceable(1784), i32 noundef, ptr noundef nonnull align 8 dereferenceable(144), ptr noundef) local_unnamed_addr #3

declare noundef ptr @_ZN7glslang13TIntermediate9addAssignENS_9TOperatorEPNS_12TIntermTypedES3_RKNS_10TSourceLocE(ptr noundef nonnull align 8 dereferenceable(1784), i32 noundef, ptr noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef ptr @_ZN7glslang13TParseContext18executeInitializerERKNS_10TSourceLocEPNS_12TIntermTypedEPNS_9TVariableE(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef %2, ptr noundef %3) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca %"class.glslang::TType", align 8
  %6 = alloca %"class.std::__cxx11::basic_string", align 8
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.glslang::pool_allocator.14", align 8
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca %"class.glslang::pool_allocator.14", align 8
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.glslang::pool_allocator.14", align 8
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %"class.glslang::pool_allocator.14", align 8
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = load ptr, ptr %2, align 8, !tbaa !5
  %19 = getelementptr inbounds i8, ptr %18, i64 48
  %20 = load ptr, ptr %19, align 8
  %21 = tail call noundef ptr %20(ptr noundef nonnull align 8 dereferenceable(32) %2)
  %.not = icmp eq ptr %21, null
  br i1 %.not, label %40, label %22

22:                                               ; preds = %4
  %23 = load ptr, ptr %2, align 8, !tbaa !5
  %24 = getelementptr inbounds i8, ptr %23, i64 48
  %25 = load ptr, ptr %24, align 8
  %26 = tail call noundef ptr %25(ptr noundef nonnull align 8 dereferenceable(32) %2)
  %27 = tail call noundef i32 @_ZNK7glslang15TIntermOperator5getOpEv(ptr noundef nonnull align 8 dereferenceable(184) %26)
  %28 = icmp eq i32 %27, 0
  br i1 %28, label %29, label %40

29:                                               ; preds = %22
  %30 = load ptr, ptr %2, align 8, !tbaa !5
  %31 = getelementptr inbounds i8, ptr %30, i64 48
  %32 = load ptr, ptr %31, align 8
  %33 = tail call noundef ptr %32(ptr noundef nonnull align 8 dereferenceable(32) %2)
  %34 = load ptr, ptr %33, align 8, !tbaa !5
  %35 = getelementptr inbounds i8, ptr %34, i64 400
  %36 = load ptr, ptr %35, align 8
  %37 = tail call noundef nonnull align 8 dereferenceable(32) ptr %36(ptr noundef nonnull align 8 dereferenceable(352) %33)
  %38 = tail call noundef i64 @_ZNKSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %37) #5
  %39 = icmp eq i64 %38, 0
  br label %40

40:                                               ; preds = %29, %22, %4
  %41 = phi i1 [ false, %22 ], [ false, %4 ], [ %39, %29 ]
  %42 = load ptr, ptr %3, align 8, !tbaa !5
  %43 = getelementptr inbounds i8, ptr %42, i64 96
  %44 = load ptr, ptr %43, align 8
  %45 = tail call noundef nonnull align 8 dereferenceable(144) ptr %44(ptr noundef nonnull align 8 dereferenceable(228) %3)
  %46 = load ptr, ptr %45, align 8, !tbaa !5
  %47 = getelementptr inbounds i8, ptr %46, i64 88
  %48 = load ptr, ptr %47, align 8
  %49 = tail call noundef nonnull align 8 dereferenceable(72) ptr %48(ptr noundef nonnull align 8 dereferenceable(144) %45)
  %50 = getelementptr inbounds i8, ptr %49, i64 8
  %51 = load i64, ptr %50, align 8
  %52 = trunc i64 %51 to i32
  %53 = and i32 %52, 63
  %54 = icmp eq i32 %53, 2
  %or.cond3 = icmp ult i32 %53, 3
  br i1 %or.cond3, label %74, label %55

55:                                               ; preds = %40
  switch i32 %53, label %65 [
    i32 5, label %56
    i32 7, label %61
  ]

56:                                               ; preds = %55
  %57 = tail call noundef zeroext i1 @_ZNK7glslang14TParseVersions11isEsProfileEv(ptr noundef nonnull align 8 dereferenceable(192) %0)
  %58 = getelementptr inbounds i8, ptr %0, i64 24
  %59 = load i32, ptr %58, align 8
  %60 = icmp slt i32 %59, 120
  %or.cond.not = select i1 %57, i1 true, i1 %60
  br i1 %or.cond.not, label %65, label %74

61:                                               ; preds = %55
  br i1 %41, label %.thread, label %.thread155

.thread:                                          ; preds = %61
  tail call void @_ZN7glslang14TParseVersions15profileRequiresERKNS_10TSourceLocEiiPKcS5_(ptr noundef nonnull align 8 dereferenceable(192) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef 8, i32 noundef 0, ptr noundef nonnull @.str.803, ptr noundef nonnull @.str.802)
  tail call void @_ZN7glslang14TParseVersions15profileRequiresERKNS_10TSourceLocEiiPKcS5_(ptr noundef nonnull align 8 dereferenceable(192) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef -9, i32 noundef 0, ptr noundef nonnull @.str.803, ptr noundef nonnull @.str.802)
  br label %75

.thread155:                                       ; preds = %61
  %62 = load ptr, ptr %0, align 8, !tbaa !5
  %63 = getelementptr inbounds i8, ptr %62, i64 336
  %64 = load ptr, ptr %63, align 8
  tail call void (ptr, ptr, ptr, ptr, ptr, ...) %64(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.804, ptr noundef nonnull @.str.568, ptr noundef nonnull @.str.2)
  br label %110

65:                                               ; preds = %56, %55
  %66 = load ptr, ptr %3, align 8, !tbaa !5
  %67 = getelementptr inbounds i8, ptr %66, i64 96
  %68 = load ptr, ptr %67, align 8
  %69 = tail call noundef nonnull align 8 dereferenceable(144) ptr %68(ptr noundef nonnull align 8 dereferenceable(228) %3)
  %70 = tail call noundef ptr @_ZNK7glslang5TType25getStorageQualifierStringEv(ptr noundef nonnull align 8 dereferenceable(144) %69)
  %71 = load ptr, ptr %0, align 8, !tbaa !5
  %72 = getelementptr inbounds i8, ptr %71, i64 336
  %73 = load ptr, ptr %72, align 8
  tail call void (ptr, ptr, ptr, ptr, ptr, ...) %73(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.805, ptr noundef %70, ptr noundef nonnull @.str.2)
  br label %556

74:                                               ; preds = %56, %40
  br i1 %41, label %75, label %110

75:                                               ; preds = %.thread, %74
  %76 = load ptr, ptr %3, align 8, !tbaa !5
  %77 = getelementptr inbounds i8, ptr %76, i64 96
  %78 = load ptr, ptr %77, align 8
  %79 = tail call noundef nonnull align 8 dereferenceable(144) ptr %78(ptr noundef nonnull align 8 dereferenceable(228) %3)
  %80 = load ptr, ptr %79, align 8, !tbaa !5
  %81 = getelementptr inbounds i8, ptr %80, i64 384
  %82 = load ptr, ptr %81, align 8
  %83 = tail call noundef zeroext i1 %82(ptr noundef nonnull align 8 dereferenceable(144) %79)
  br i1 %83, label %84, label %88

84:                                               ; preds = %75
  %85 = load ptr, ptr %0, align 8, !tbaa !5
  %86 = getelementptr inbounds i8, ptr %85, i64 336
  %87 = load ptr, ptr %86, align 8
  tail call void (ptr, ptr, ptr, ptr, ptr, ...) %87(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.806, ptr noundef nonnull @.str.807, ptr noundef nonnull @.str.2)
  br label %556

88:                                               ; preds = %75
  %89 = load ptr, ptr %3, align 8, !tbaa !5
  %90 = getelementptr inbounds i8, ptr %89, i64 96
  %91 = load ptr, ptr %90, align 8
  %92 = tail call noundef nonnull align 8 dereferenceable(144) ptr %91(ptr noundef nonnull align 8 dereferenceable(228) %3)
  %93 = load ptr, ptr %92, align 8, !tbaa !5
  %94 = getelementptr inbounds i8, ptr %93, i64 392
  %95 = load ptr, ptr %94, align 8
  %96 = tail call noundef zeroext i1 %95(ptr noundef nonnull align 8 dereferenceable(144) %92)
  br i1 %96, label %97, label %101

97:                                               ; preds = %88
  %98 = load ptr, ptr %0, align 8, !tbaa !5
  %99 = getelementptr inbounds i8, ptr %98, i64 336
  %100 = load ptr, ptr %99, align 8
  tail call void (ptr, ptr, ptr, ptr, ptr, ...) %100(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.808, ptr noundef nonnull @.str.807, ptr noundef nonnull @.str.2)
  br label %556

101:                                              ; preds = %88
  %102 = load ptr, ptr %3, align 8, !tbaa !5
  %103 = getelementptr inbounds i8, ptr %102, i64 104
  %104 = load ptr, ptr %103, align 8
  %105 = tail call noundef nonnull align 8 dereferenceable(144) ptr %104(ptr noundef nonnull align 8 dereferenceable(228) %3)
  %106 = load ptr, ptr %105, align 8, !tbaa !5
  %107 = getelementptr inbounds i8, ptr %106, i64 80
  %108 = load ptr, ptr %107, align 8
  %109 = tail call noundef nonnull align 8 dereferenceable(72) ptr %108(ptr noundef nonnull align 8 dereferenceable(144) %105)
  tail call void @_ZN7glslang10TQualifier11setNullInitEv(ptr noundef nonnull align 8 dereferenceable(72) %109)
  br label %556

110:                                              ; preds = %.thread155, %74
  %111 = load ptr, ptr %3, align 8, !tbaa !5
  %112 = getelementptr inbounds i8, ptr %111, i64 96
  %113 = load ptr, ptr %112, align 8
  %114 = tail call noundef nonnull align 8 dereferenceable(144) ptr %113(ptr noundef nonnull align 8 dereferenceable(228) %3)
  tail call void @_ZN7glslang13TParseContext16arrayObjectCheckERKNS_10TSourceLocERKNS_5TTypeEPKc(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(144) %114, ptr noundef nonnull @.str.809)
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %5) #5
  call void @_ZN7glslang5TTypeC2ENS_10TBasicTypeENS_17TStorageQualifierEiiib(ptr noundef nonnull align 8 dereferenceable(144) %5, i32 noundef 0, i32 noundef 0, i32 noundef 1, i32 noundef 0, i32 noundef 0, i1 noundef zeroext false)
  %115 = load ptr, ptr %3, align 8, !tbaa !5
  %116 = getelementptr inbounds i8, ptr %115, i64 96
  %117 = load ptr, ptr %116, align 8
  %118 = invoke noundef nonnull align 8 dereferenceable(144) ptr %117(ptr noundef nonnull align 8 dereferenceable(228) %3)
          to label %119 unwind label %126

119:                                              ; preds = %110
  invoke void @_ZN7glslang5TType11shallowCopyERKS0_(ptr noundef nonnull align 8 dereferenceable(144) %5, ptr noundef nonnull align 8 dereferenceable(144) %118)
          to label %120 unwind label %126

120:                                              ; preds = %119
  %121 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZN7glslang5TType12getQualifierEv(ptr noundef nonnull align 8 dereferenceable(144) %5)
  invoke void @_ZN7glslang10TQualifier13makeTemporaryEv(ptr noundef nonnull align 8 dereferenceable(72) %121)
          to label %122 unwind label %126

122:                                              ; preds = %120
  %123 = invoke noundef ptr @_ZN7glslang13TParseContext22convertInitializerListERKNS_10TSourceLocERKNS_5TTypeEPNS_12TIntermTypedE(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(144) %5, ptr noundef nonnull %2)
          to label %124 unwind label %126

124:                                              ; preds = %122
  %.not130 = icmp eq ptr %123, null
  br i1 %.not130, label %125, label %128

125:                                              ; preds = %124
  br i1 %54, label %.invoke164, label %554

126:                                              ; preds = %.invoke164, %.invoke162, %.invoke, %526, %521, %517, %512, %507, %502, %497, %.critedge, %484, %479, %473, %461, %459, %454, %451, %446, %441, %438, %433, %428, %425, %.thread159, %398, %393, %388, %364, %359, %354, %317, %312, %307, %261, %256, %196, %190, %185, %180, %173, %166, %165, %160, %155, %150, %144, %139, %133, %128, %122, %120, %119, %110
  %127 = landingpad { ptr, i32 }
          cleanup
  br label %555

128:                                              ; preds = %124
  %129 = load ptr, ptr %123, align 8, !tbaa !5
  %130 = getelementptr inbounds i8, ptr %129, i64 240
  %131 = load ptr, ptr %130, align 8
  %132 = invoke noundef nonnull align 8 dereferenceable(144) ptr %131(ptr noundef nonnull align 8 dereferenceable(176) %123)
          to label %133 unwind label %126

133:                                              ; preds = %128
  %134 = load ptr, ptr %132, align 8, !tbaa !5
  %135 = getelementptr inbounds i8, ptr %134, i64 240
  %136 = load ptr, ptr %135, align 8
  %137 = invoke noundef zeroext i1 %136(ptr noundef nonnull align 8 dereferenceable(144) %132)
          to label %138 unwind label %126

138:                                              ; preds = %133
  br i1 %137, label %139, label %166

139:                                              ; preds = %138
  %140 = load ptr, ptr %3, align 8, !tbaa !5
  %141 = getelementptr inbounds i8, ptr %140, i64 96
  %142 = load ptr, ptr %141, align 8
  %143 = invoke noundef nonnull align 8 dereferenceable(144) ptr %142(ptr noundef nonnull align 8 dereferenceable(228) %3)
          to label %144 unwind label %126

144:                                              ; preds = %139
  %145 = load ptr, ptr %143, align 8, !tbaa !5
  %146 = getelementptr inbounds i8, ptr %145, i64 248
  %147 = load ptr, ptr %146, align 8
  %148 = invoke noundef zeroext i1 %147(ptr noundef nonnull align 8 dereferenceable(144) %143)
          to label %149 unwind label %126

149:                                              ; preds = %144
  br i1 %148, label %150, label %166

150:                                              ; preds = %149
  %151 = load ptr, ptr %3, align 8, !tbaa !5
  %152 = getelementptr inbounds i8, ptr %151, i64 104
  %153 = load ptr, ptr %152, align 8
  %154 = invoke noundef nonnull align 8 dereferenceable(144) ptr %153(ptr noundef nonnull align 8 dereferenceable(228) %3)
          to label %155 unwind label %126

155:                                              ; preds = %150
  %156 = load ptr, ptr %123, align 8, !tbaa !5
  %157 = getelementptr inbounds i8, ptr %156, i64 240
  %158 = load ptr, ptr %157, align 8
  %159 = invoke noundef nonnull align 8 dereferenceable(144) ptr %158(ptr noundef nonnull align 8 dereferenceable(176) %123)
          to label %160 unwind label %126

160:                                              ; preds = %155
  %161 = load ptr, ptr %159, align 8, !tbaa !5
  %162 = getelementptr inbounds i8, ptr %161, i64 120
  %163 = load ptr, ptr %162, align 8
  %164 = invoke noundef i32 %163(ptr noundef nonnull align 8 dereferenceable(144) %159)
          to label %165 unwind label %126

165:                                              ; preds = %160
  invoke void @_ZN7glslang5TType20changeOuterArraySizeEi(ptr noundef nonnull align 8 dereferenceable(144) %154, i32 noundef %164)
          to label %166 unwind label %126

166:                                              ; preds = %165, %149, %138
  %167 = load ptr, ptr %123, align 8, !tbaa !5
  %168 = getelementptr inbounds i8, ptr %167, i64 240
  %169 = load ptr, ptr %168, align 8
  %170 = invoke noundef nonnull align 8 dereferenceable(144) ptr %169(ptr noundef nonnull align 8 dereferenceable(176) %123)
          to label %171 unwind label %126

171:                                              ; preds = %166
  %172 = call noundef zeroext i1 @_ZNK7glslang5TType15isArrayOfArraysEv(ptr noundef nonnull align 8 dereferenceable(144) %170)
  br i1 %172, label %173, label %.loopexit

173:                                              ; preds = %171
  %174 = load ptr, ptr %3, align 8, !tbaa !5
  %175 = getelementptr inbounds i8, ptr %174, i64 96
  %176 = load ptr, ptr %175, align 8
  %177 = invoke noundef nonnull align 8 dereferenceable(144) ptr %176(ptr noundef nonnull align 8 dereferenceable(228) %3)
          to label %178 unwind label %126

178:                                              ; preds = %173
  %179 = call noundef zeroext i1 @_ZNK7glslang5TType15isArrayOfArraysEv(ptr noundef nonnull align 8 dereferenceable(144) %177)
  br i1 %179, label %180, label %.loopexit

180:                                              ; preds = %178
  %181 = load ptr, ptr %123, align 8, !tbaa !5
  %182 = getelementptr inbounds i8, ptr %181, i64 240
  %183 = load ptr, ptr %182, align 8
  %184 = invoke noundef nonnull align 8 dereferenceable(144) ptr %183(ptr noundef nonnull align 8 dereferenceable(176) %123)
          to label %185 unwind label %126

185:                                              ; preds = %180
  %186 = load ptr, ptr %184, align 8, !tbaa !5
  %187 = getelementptr inbounds i8, ptr %186, i64 152
  %188 = load ptr, ptr %187, align 8
  %189 = invoke noundef ptr %188(ptr noundef nonnull align 8 dereferenceable(144) %184)
          to label %190 unwind label %126

190:                                              ; preds = %185
  %191 = call noundef i32 @_ZNK7glslang11TArraySizes10getNumDimsEv(ptr noundef nonnull align 8 dereferenceable(21) %189)
  %192 = load ptr, ptr %3, align 8, !tbaa !5
  %193 = getelementptr inbounds i8, ptr %192, i64 96
  %194 = load ptr, ptr %193, align 8
  %195 = invoke noundef nonnull align 8 dereferenceable(144) ptr %194(ptr noundef nonnull align 8 dereferenceable(228) %3)
          to label %196 unwind label %126

196:                                              ; preds = %190
  %197 = load ptr, ptr %195, align 8, !tbaa !5
  %198 = getelementptr inbounds i8, ptr %197, i64 152
  %199 = load ptr, ptr %198, align 8
  %200 = invoke noundef ptr %199(ptr noundef nonnull align 8 dereferenceable(144) %195)
          to label %201 unwind label %126

201:                                              ; preds = %196
  %202 = call noundef i32 @_ZNK7glslang11TArraySizes10getNumDimsEv(ptr noundef nonnull align 8 dereferenceable(21) %200)
  %203 = icmp eq i32 %191, %202
  br i1 %203, label %.preheader, label %.loopexit

.preheader:                                       ; preds = %201, %253
  %.0110 = phi i32 [ %254, %253 ], [ 1, %201 ]
  %204 = load ptr, ptr %3, align 8, !tbaa !5
  %205 = getelementptr inbounds i8, ptr %204, i64 96
  %206 = load ptr, ptr %205, align 8
  %207 = invoke noundef nonnull align 8 dereferenceable(144) ptr %206(ptr noundef nonnull align 8 dereferenceable(228) %3)
          to label %208 unwind label %216

208:                                              ; preds = %.preheader
  %209 = load ptr, ptr %207, align 8, !tbaa !5
  %210 = getelementptr inbounds i8, ptr %209, i64 152
  %211 = load ptr, ptr %210, align 8
  %212 = invoke noundef ptr %211(ptr noundef nonnull align 8 dereferenceable(144) %207)
          to label %213 unwind label %216

213:                                              ; preds = %208
  %214 = call noundef i32 @_ZNK7glslang11TArraySizes10getNumDimsEv(ptr noundef nonnull align 8 dereferenceable(21) %212)
  %215 = icmp slt i32 %.0110, %214
  br i1 %215, label %218, label %.loopexit

216:                                              ; preds = %251, %246, %241, %236, %231, %223, %218, %208, %.preheader
  %217 = landingpad { ptr, i32 }
          cleanup
  br label %555

218:                                              ; preds = %213
  %219 = load ptr, ptr %3, align 8, !tbaa !5
  %220 = getelementptr inbounds i8, ptr %219, i64 96
  %221 = load ptr, ptr %220, align 8
  %222 = invoke noundef nonnull align 8 dereferenceable(144) ptr %221(ptr noundef nonnull align 8 dereferenceable(228) %3)
          to label %223 unwind label %216

223:                                              ; preds = %218
  %224 = load ptr, ptr %222, align 8, !tbaa !5
  %225 = getelementptr inbounds i8, ptr %224, i64 152
  %226 = load ptr, ptr %225, align 8
  %227 = invoke noundef ptr %226(ptr noundef nonnull align 8 dereferenceable(144) %222)
          to label %228 unwind label %216

228:                                              ; preds = %223
  %229 = call noundef i32 @_ZNK7glslang11TArraySizes10getDimSizeEi(ptr noundef nonnull align 8 dereferenceable(21) %227, i32 noundef %.0110)
  %230 = icmp eq i32 %229, 0
  br i1 %230, label %231, label %253

231:                                              ; preds = %228
  %232 = load ptr, ptr %3, align 8, !tbaa !5
  %233 = getelementptr inbounds i8, ptr %232, i64 104
  %234 = load ptr, ptr %233, align 8
  %235 = invoke noundef nonnull align 8 dereferenceable(144) ptr %234(ptr noundef nonnull align 8 dereferenceable(228) %3)
          to label %236 unwind label %216

236:                                              ; preds = %231
  %237 = load ptr, ptr %235, align 8, !tbaa !5
  %238 = getelementptr inbounds i8, ptr %237, i64 160
  %239 = load ptr, ptr %238, align 8
  %240 = invoke noundef ptr %239(ptr noundef nonnull align 8 dereferenceable(144) %235)
          to label %241 unwind label %216

241:                                              ; preds = %236
  %242 = load ptr, ptr %123, align 8, !tbaa !5
  %243 = getelementptr inbounds i8, ptr %242, i64 240
  %244 = load ptr, ptr %243, align 8
  %245 = invoke noundef nonnull align 8 dereferenceable(144) ptr %244(ptr noundef nonnull align 8 dereferenceable(176) %123)
          to label %246 unwind label %216

246:                                              ; preds = %241
  %247 = load ptr, ptr %245, align 8, !tbaa !5
  %248 = getelementptr inbounds i8, ptr %247, i64 152
  %249 = load ptr, ptr %248, align 8
  %250 = invoke noundef ptr %249(ptr noundef nonnull align 8 dereferenceable(144) %245)
          to label %251 unwind label %216

251:                                              ; preds = %246
  %252 = call noundef i32 @_ZNK7glslang11TArraySizes10getDimSizeEi(ptr noundef nonnull align 8 dereferenceable(21) %250, i32 noundef %.0110)
  invoke void @_ZN7glslang11TArraySizes10setDimSizeEii(ptr noundef nonnull align 8 dereferenceable(21) %240, i32 noundef %.0110, i32 noundef %252)
          to label %253 unwind label %216

253:                                              ; preds = %228, %251
  %254 = add nuw nsw i32 %.0110, 1
  br label %.preheader, !llvm.loop !8

.loopexit:                                        ; preds = %213, %201, %178, %171
  %255 = icmp eq i32 %53, 5
  br i1 %255, label %256, label %302

256:                                              ; preds = %.loopexit
  %257 = load ptr, ptr %123, align 8, !tbaa !5
  %258 = getelementptr inbounds i8, ptr %257, i64 240
  %259 = load ptr, ptr %258, align 8
  %260 = invoke noundef nonnull align 8 dereferenceable(144) ptr %259(ptr noundef nonnull align 8 dereferenceable(176) %123)
          to label %261 unwind label %126

261:                                              ; preds = %256
  %262 = load ptr, ptr %260, align 8, !tbaa !5
  %263 = getelementptr inbounds i8, ptr %262, i64 88
  %264 = load ptr, ptr %263, align 8
  %265 = invoke noundef nonnull align 8 dereferenceable(72) ptr %264(ptr noundef nonnull align 8 dereferenceable(144) %260)
          to label %266 unwind label %126

266:                                              ; preds = %261
  %267 = call noundef zeroext i1 @_ZNK7glslang10TQualifier18isFrontEndConstantEv(ptr noundef nonnull align 8 dereferenceable(72) %265)
  br i1 %267, label %.critedge154, label %268

268:                                              ; preds = %266
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %6) #5
  %269 = load ptr, ptr %3, align 8, !tbaa !5
  %270 = getelementptr inbounds i8, ptr %269, i64 96
  %271 = load ptr, ptr %270, align 8
  %272 = invoke noundef nonnull align 8 dereferenceable(144) ptr %271(ptr noundef nonnull align 8 dereferenceable(228) %3)
          to label %273 unwind label %288

273:                                              ; preds = %268
  %274 = getelementptr inbounds i8, ptr %0, i64 56
  %275 = load ptr, ptr %274, align 8, !tbaa !10
  %276 = invoke noundef zeroext i1 @_ZNK7glslang13TIntermediate15getEnhancedMsgsEv(ptr noundef nonnull align 8 dereferenceable(1784) %275)
          to label %277 unwind label %288

277:                                              ; preds = %273
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #5
  invoke void @_ZN7glslang14pool_allocatorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %8)
          to label %278 unwind label %290

278:                                              ; preds = %277
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(40) %7, ptr noundef nonnull @.str.2, ptr noundef nonnull align 8 dereferenceable(8) %8)
          to label %279 unwind label %290

279:                                              ; preds = %278
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #5
  invoke void @_ZN7glslang14pool_allocatorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10)
          to label %280 unwind label %292

280:                                              ; preds = %279
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(40) %9, ptr noundef nonnull @.str.2, ptr noundef nonnull align 8 dereferenceable(8) %10)
          to label %281 unwind label %292

281:                                              ; preds = %280
  invoke void @_ZNK7glslang5TType17getCompleteStringEbbbbNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEES7_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %6, ptr noundef nonnull align 8 dereferenceable(144) %272, i1 noundef zeroext %276, i1 noundef zeroext true, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef nonnull %7, ptr noundef nonnull %9)
          to label %282 unwind label %294

282:                                              ; preds = %281
  %283 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %6) #5
  %284 = load ptr, ptr %0, align 8, !tbaa !5
  %285 = getelementptr inbounds i8, ptr %284, i64 336
  %286 = load ptr, ptr %285, align 8
  invoke void (ptr, ptr, ptr, ptr, ptr, ...) %286(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.810, ptr noundef nonnull @.str.785, ptr noundef nonnull @.str.811, ptr noundef %283)
          to label %287 unwind label %296

287:                                              ; preds = %282
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %6) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %9) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %7) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #5
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %6) #5
  br label %.invoke164

288:                                              ; preds = %273, %268
  %289 = landingpad { ptr, i32 }
          cleanup
  br label %301

290:                                              ; preds = %278, %277
  %291 = landingpad { ptr, i32 }
          cleanup
  br label %300

292:                                              ; preds = %280, %279
  %293 = landingpad { ptr, i32 }
          cleanup
  br label %299

294:                                              ; preds = %281
  %295 = landingpad { ptr, i32 }
          cleanup
  br label %298

296:                                              ; preds = %282
  %297 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %6) #5
  br label %298

298:                                              ; preds = %296, %294
  %.pn = phi { ptr, i32 } [ %297, %296 ], [ %295, %294 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %9) #5
  br label %299

299:                                              ; preds = %298, %292
  %.pn.pn = phi { ptr, i32 } [ %.pn, %298 ], [ %293, %292 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %7) #5
  br label %300

300:                                              ; preds = %299, %290
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %299 ], [ %291, %290 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #5
  br label %301

301:                                              ; preds = %300, %288
  %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn, %300 ], [ %289, %288 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %6) #5
  br label %555

302:                                              ; preds = %.loopexit
  br i1 %54, label %303, label %.critedge154

303:                                              ; preds = %302
  %304 = getelementptr inbounds i8, ptr %0, i64 200
  %305 = load ptr, ptr %304, align 8, !tbaa !36
  %306 = call noundef zeroext i1 @_ZN7glslang12TSymbolTable13atGlobalLevelEv(ptr noundef nonnull align 8 dereferenceable(40) %305)
  br i1 %306, label %307, label %354

307:                                              ; preds = %303
  %308 = load ptr, ptr %123, align 8, !tbaa !5
  %309 = getelementptr inbounds i8, ptr %308, i64 240
  %310 = load ptr, ptr %309, align 8
  %311 = invoke noundef nonnull align 8 dereferenceable(144) ptr %310(ptr noundef nonnull align 8 dereferenceable(176) %123)
          to label %312 unwind label %126

312:                                              ; preds = %307
  %313 = load ptr, ptr %311, align 8, !tbaa !5
  %314 = getelementptr inbounds i8, ptr %313, i64 88
  %315 = load ptr, ptr %314, align 8
  %316 = invoke noundef nonnull align 8 dereferenceable(72) ptr %315(ptr noundef nonnull align 8 dereferenceable(144) %311)
          to label %317 unwind label %126

317:                                              ; preds = %312
  %318 = invoke noundef zeroext i1 @_ZNK7glslang10TQualifier10isConstantEv(ptr noundef nonnull align 8 dereferenceable(72) %316)
          to label %319 unwind label %126

319:                                              ; preds = %317
  br i1 %318, label %354, label %320

320:                                              ; preds = %319
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %11) #5
  %321 = load ptr, ptr %3, align 8, !tbaa !5
  %322 = getelementptr inbounds i8, ptr %321, i64 96
  %323 = load ptr, ptr %322, align 8
  %324 = invoke noundef nonnull align 8 dereferenceable(144) ptr %323(ptr noundef nonnull align 8 dereferenceable(228) %3)
          to label %325 unwind label %340

325:                                              ; preds = %320
  %326 = getelementptr inbounds i8, ptr %0, i64 56
  %327 = load ptr, ptr %326, align 8, !tbaa !10
  %328 = invoke noundef zeroext i1 @_ZNK7glslang13TIntermediate15getEnhancedMsgsEv(ptr noundef nonnull align 8 dereferenceable(1784) %327)
          to label %329 unwind label %340

329:                                              ; preds = %325
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #5
  invoke void @_ZN7glslang14pool_allocatorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %13)
          to label %330 unwind label %342

330:                                              ; preds = %329
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(40) %12, ptr noundef nonnull @.str.2, ptr noundef nonnull align 8 dereferenceable(8) %13)
          to label %331 unwind label %342

331:                                              ; preds = %330
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #5
  invoke void @_ZN7glslang14pool_allocatorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %15)
          to label %332 unwind label %344

332:                                              ; preds = %331
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(40) %14, ptr noundef nonnull @.str.2, ptr noundef nonnull align 8 dereferenceable(8) %15)
          to label %333 unwind label %344

333:                                              ; preds = %332
  invoke void @_ZNK7glslang5TType17getCompleteStringEbbbbNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEES7_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %11, ptr noundef nonnull align 8 dereferenceable(144) %324, i1 noundef zeroext %328, i1 noundef zeroext true, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef nonnull %12, ptr noundef nonnull %14)
          to label %334 unwind label %346

334:                                              ; preds = %333
  %335 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %11) #5
  %336 = load ptr, ptr %0, align 8, !tbaa !5
  %337 = getelementptr inbounds i8, ptr %336, i64 336
  %338 = load ptr, ptr %337, align 8
  invoke void (ptr, ptr, ptr, ptr, ptr, ...) %338(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.812, ptr noundef nonnull @.str.785, ptr noundef nonnull @.str.811, ptr noundef %335)
          to label %339 unwind label %348

339:                                              ; preds = %334
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %11) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %14) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %12) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #5
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %11) #5
  br label %.invoke164

340:                                              ; preds = %325, %320
  %341 = landingpad { ptr, i32 }
          cleanup
  br label %353

342:                                              ; preds = %330, %329
  %343 = landingpad { ptr, i32 }
          cleanup
  br label %352

344:                                              ; preds = %332, %331
  %345 = landingpad { ptr, i32 }
          cleanup
  br label %351

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

348:                                              ; preds = %334
  %349 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %11) #5
  br label %350

350:                                              ; preds = %348, %346
  %.pn135 = phi { ptr, i32 } [ %349, %348 ], [ %347, %346 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %14) #5
  br label %351

351:                                              ; preds = %350, %344
  %.pn135.pn = phi { ptr, i32 } [ %.pn135, %350 ], [ %345, %344 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %12) #5
  br label %352

352:                                              ; preds = %351, %342
  %.pn135.pn.pn = phi { ptr, i32 } [ %.pn135.pn, %351 ], [ %343, %342 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #5
  br label %353

353:                                              ; preds = %352, %340
  %.pn135.pn.pn.pn = phi { ptr, i32 } [ %.pn135.pn.pn, %352 ], [ %341, %340 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %11) #5
  br label %555

354:                                              ; preds = %303, %319
  %355 = load ptr, ptr %123, align 8, !tbaa !5
  %356 = getelementptr inbounds i8, ptr %355, i64 240
  %357 = load ptr, ptr %356, align 8
  %358 = invoke noundef nonnull align 8 dereferenceable(144) ptr %357(ptr noundef nonnull align 8 dereferenceable(176) %123)
          to label %359 unwind label %126

359:                                              ; preds = %354
  %360 = load ptr, ptr %358, align 8, !tbaa !5
  %361 = getelementptr inbounds i8, ptr %360, i64 88
  %362 = load ptr, ptr %361, align 8
  %363 = invoke noundef nonnull align 8 dereferenceable(72) ptr %362(ptr noundef nonnull align 8 dereferenceable(144) %358)
          to label %364 unwind label %126

364:                                              ; preds = %359
  %365 = invoke noundef zeroext i1 @_ZNK7glslang10TQualifier10isConstantEv(ptr noundef nonnull align 8 dereferenceable(72) %363)
          to label %366 unwind label %126

366:                                              ; preds = %364
  br i1 %365, label %.thread159, label %367

367:                                              ; preds = %366
  invoke 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.813)
          to label %368 unwind label %383

368:                                              ; preds = %367
  invoke void @_ZN7glslang14TParseVersions15profileRequiresERKNS_10TSourceLocEiiPKcS5_(ptr noundef nonnull align 8 dereferenceable(192) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef -9, i32 noundef 420, ptr noundef nonnull @.str.94, ptr noundef nonnull @.str.813)
          to label %369 unwind label %383

369:                                              ; preds = %368
  %370 = load ptr, ptr %3, align 8, !tbaa !5
  %371 = getelementptr inbounds i8, ptr %370, i64 104
  %372 = load ptr, ptr %371, align 8
  %373 = invoke noundef nonnull align 8 dereferenceable(144) ptr %372(ptr noundef nonnull align 8 dereferenceable(228) %3)
          to label %374 unwind label %383

374:                                              ; preds = %369
  %375 = load ptr, ptr %373, align 8, !tbaa !5
  %376 = getelementptr inbounds i8, ptr %375, i64 80
  %377 = load ptr, ptr %376, align 8
  %378 = invoke noundef nonnull align 8 dereferenceable(72) ptr %377(ptr noundef nonnull align 8 dereferenceable(144) %373)
          to label %.thread157 unwind label %383

.thread157:                                       ; preds = %374
  %379 = getelementptr inbounds i8, ptr %378, i64 8
  %380 = load i64, ptr %379, align 8
  %381 = and i64 %380, -64
  %382 = or disjoint i64 %381, 17
  store i64 %382, ptr %379, align 8
  br label %521

383:                                              ; preds = %374, %369, %368, %367
  %384 = landingpad { ptr, i32 }
          cleanup
  br label %555

.critedge154:                                     ; preds = %266, %302
  %385 = getelementptr inbounds i8, ptr %0, i64 200
  %386 = load ptr, ptr %385, align 8, !tbaa !36
  %387 = call noundef zeroext i1 @_ZN7glslang12TSymbolTable13atGlobalLevelEv(ptr noundef nonnull align 8 dereferenceable(40) %386)
  br i1 %387, label %388, label %418

388:                                              ; preds = %.critedge154
  %389 = load ptr, ptr %123, align 8, !tbaa !5
  %390 = getelementptr inbounds i8, ptr %389, i64 240
  %391 = load ptr, ptr %390, align 8
  %392 = invoke noundef nonnull align 8 dereferenceable(144) ptr %391(ptr noundef nonnull align 8 dereferenceable(176) %123)
          to label %393 unwind label %126

393:                                              ; preds = %388
  %394 = load ptr, ptr %392, align 8, !tbaa !5
  %395 = getelementptr inbounds i8, ptr %394, i64 88
  %396 = load ptr, ptr %395, align 8
  %397 = invoke noundef nonnull align 8 dereferenceable(72) ptr %396(ptr noundef nonnull align 8 dereferenceable(144) %392)
          to label %398 unwind label %126

398:                                              ; preds = %393
  %399 = invoke noundef zeroext i1 @_ZNK7glslang10TQualifier10isConstantEv(ptr noundef nonnull align 8 dereferenceable(72) %397)
          to label %400 unwind label %126

400:                                              ; preds = %398
  br i1 %399, label %418, label %401

401:                                              ; preds = %400
  %402 = call noundef zeroext i1 @_ZNK7glslang14TParseVersions11isEsProfileEv(ptr noundef nonnull align 8 dereferenceable(192) %0)
  br i1 %402, label %403, label %418

403:                                              ; preds = %401
  %404 = call noundef zeroext i1 @_ZNK7glslang14TParseVersions13relaxedErrorsEv(ptr noundef nonnull align 8 dereferenceable(192) %0)
  br i1 %404, label %405, label %417

405:                                              ; preds = %403
  %406 = load ptr, ptr %0, align 8, !tbaa !5
  %407 = getelementptr inbounds i8, ptr %406, i64 64
  %408 = load ptr, ptr %407, align 8
  %409 = invoke noundef zeroext i1 %408(ptr noundef nonnull align 8 dereferenceable(192) %0, ptr noundef nonnull @.str.815)
          to label %410 unwind label %415

410:                                              ; preds = %405
  br i1 %409, label %417, label %411

411:                                              ; preds = %410
  %412 = load ptr, ptr %0, align 8, !tbaa !5
  %413 = getelementptr inbounds i8, ptr %412, i64 344
  %414 = load ptr, ptr %413, align 8
  invoke void (ptr, ptr, ptr, ptr, ptr, ...) %414(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.324, ptr noundef nonnull @.str.814, ptr noundef nonnull @.str.2)
          to label %418 unwind label %415

415:                                              ; preds = %417, %411, %405
  %416 = landingpad { ptr, i32 }
          cleanup
  br label %555

417:                                              ; preds = %410, %403
  invoke void @_ZN7glslang14TParseVersions15profileRequiresERKNS_10TSourceLocEiiPKcS5_(ptr noundef nonnull align 8 dereferenceable(192) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef 8, i32 noundef 0, ptr noundef nonnull @.str.815, ptr noundef nonnull @.str.814)
          to label %418 unwind label %415

418:                                              ; preds = %401, %417, %411, %.critedge154, %400
  switch i32 %53, label %521 [
    i32 5, label %.thread159
    i32 2, label %.thread159
  ]

.thread159:                                       ; preds = %366, %418, %418
  %419 = getelementptr inbounds i8, ptr %0, i64 56
  %420 = load ptr, ptr %419, align 8, !tbaa !10
  %421 = load ptr, ptr %3, align 8, !tbaa !5
  %422 = getelementptr inbounds i8, ptr %421, i64 96
  %423 = load ptr, ptr %422, align 8
  %424 = invoke noundef nonnull align 8 dereferenceable(144) ptr %423(ptr noundef nonnull align 8 dereferenceable(228) %3)
          to label %425 unwind label %126

425:                                              ; preds = %.thread159
  %426 = invoke noundef ptr @_ZN7glslang13TIntermediate13addConversionENS_9TOperatorERKNS_5TTypeEPNS_12TIntermTypedE(ptr noundef nonnull align 8 dereferenceable(1784) %420, i32 noundef 575, ptr noundef nonnull align 8 dereferenceable(144) %424, ptr noundef nonnull %123)
          to label %427 unwind label %126

427:                                              ; preds = %425
  %.not145 = icmp eq ptr %426, null
  br i1 %.not145, label %454, label %428

428:                                              ; preds = %427
  %429 = load ptr, ptr %426, align 8, !tbaa !5
  %430 = getelementptr inbounds i8, ptr %429, i64 240
  %431 = load ptr, ptr %430, align 8
  %432 = invoke noundef nonnull align 8 dereferenceable(144) ptr %431(ptr noundef nonnull align 8 dereferenceable(176) %426)
          to label %433 unwind label %126

433:                                              ; preds = %428
  %434 = load ptr, ptr %432, align 8, !tbaa !5
  %435 = getelementptr inbounds i8, ptr %434, i64 88
  %436 = load ptr, ptr %435, align 8
  %437 = invoke noundef nonnull align 8 dereferenceable(72) ptr %436(ptr noundef nonnull align 8 dereferenceable(144) %432)
          to label %438 unwind label %126

438:                                              ; preds = %433
  %439 = invoke noundef zeroext i1 @_ZNK7glslang10TQualifier10isConstantEv(ptr noundef nonnull align 8 dereferenceable(72) %437)
          to label %440 unwind label %126

440:                                              ; preds = %438
  br i1 %439, label %441, label %454

441:                                              ; preds = %440
  %442 = load ptr, ptr %3, align 8, !tbaa !5
  %443 = getelementptr inbounds i8, ptr %442, i64 96
  %444 = load ptr, ptr %443, align 8
  %445 = invoke noundef nonnull align 8 dereferenceable(144) ptr %444(ptr noundef nonnull align 8 dereferenceable(228) %3)
          to label %446 unwind label %126

446:                                              ; preds = %441
  %447 = load ptr, ptr %426, align 8, !tbaa !5
  %448 = getelementptr inbounds i8, ptr %447, i64 240
  %449 = load ptr, ptr %448, align 8
  %450 = invoke noundef nonnull align 8 dereferenceable(144) ptr %449(ptr noundef nonnull align 8 dereferenceable(176) %426)
          to label %451 unwind label %126

451:                                              ; preds = %446
  %452 = invoke noundef zeroext i1 @_ZNK7glslang5TTypeneERKS0_(ptr noundef nonnull align 8 dereferenceable(144) %445, ptr noundef nonnull align 8 dereferenceable(144) %450)
          to label %453 unwind label %126

453:                                              ; preds = %451
  br i1 %452, label %454, label %473

454:                                              ; preds = %453, %440, %427
  %455 = load ptr, ptr %3, align 8, !tbaa !5
  %456 = getelementptr inbounds i8, ptr %455, i64 96
  %457 = load ptr, ptr %456, align 8
  %458 = invoke noundef nonnull align 8 dereferenceable(144) ptr %457(ptr noundef nonnull align 8 dereferenceable(228) %3)
          to label %459 unwind label %126

459:                                              ; preds = %454
  %460 = invoke noundef ptr @_ZNK7glslang5TType25getStorageQualifierStringEv(ptr noundef nonnull align 8 dereferenceable(144) %458)
          to label %461 unwind label %126

461:                                              ; preds = %459
  %462 = load ptr, ptr %0, align 8, !tbaa !5
  %463 = getelementptr inbounds i8, ptr %462, i64 336
  %464 = load ptr, ptr %463, align 8
  invoke void (ptr, ptr, ptr, ptr, ptr, ...) %464(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.816, ptr noundef %460, ptr noundef nonnull @.str.2)
          to label %.invoke164 unwind label %126

.invoke164:                                       ; preds = %461, %125, %287, %339
  %465 = load ptr, ptr %3, align 8, !tbaa !5
  %466 = getelementptr inbounds i8, ptr %465, i64 104
  %467 = load ptr, ptr %466, align 8
  %468 = invoke noundef nonnull align 8 dereferenceable(144) ptr %467(ptr noundef nonnull align 8 dereferenceable(228) %3)
          to label %.invoke162 unwind label %126

.invoke162:                                       ; preds = %.invoke164
  %469 = load ptr, ptr %468, align 8, !tbaa !5
  %470 = getelementptr inbounds i8, ptr %469, i64 80
  %471 = load ptr, ptr %470, align 8
  %472 = invoke noundef nonnull align 8 dereferenceable(72) ptr %471(ptr noundef nonnull align 8 dereferenceable(144) %468)
          to label %.invoke unwind label %126

.invoke:                                          ; preds = %.invoke162
  invoke void @_ZN7glslang10TQualifier13makeTemporaryEv(ptr noundef nonnull align 8 dereferenceable(72) %472)
          to label %554 unwind label %126

473:                                              ; preds = %453
  %474 = load ptr, ptr %426, align 8, !tbaa !5
  %475 = getelementptr inbounds i8, ptr %474, i64 40
  %476 = load ptr, ptr %475, align 8
  %477 = invoke noundef ptr %476(ptr noundef nonnull align 8 dereferenceable(32) %426)
          to label %478 unwind label %126

478:                                              ; preds = %473
  %.not146 = icmp eq ptr %477, null
  br i1 %.not146, label %479, label %.critedge

479:                                              ; preds = %478
  %480 = load ptr, ptr %426, align 8, !tbaa !5
  %481 = getelementptr inbounds i8, ptr %480, i64 240
  %482 = load ptr, ptr %481, align 8
  %483 = invoke noundef nonnull align 8 dereferenceable(144) ptr %482(ptr noundef nonnull align 8 dereferenceable(176) %426)
          to label %484 unwind label %126

484:                                              ; preds = %479
  %485 = load ptr, ptr %483, align 8, !tbaa !5
  %486 = getelementptr inbounds i8, ptr %485, i64 88
  %487 = load ptr, ptr %486, align 8
  %488 = invoke noundef nonnull align 8 dereferenceable(72) ptr %487(ptr noundef nonnull align 8 dereferenceable(144) %483)
          to label %489 unwind label %126

489:                                              ; preds = %484
  %490 = call noundef zeroext i1 @_ZNK7glslang10TQualifier14isSpecConstantEv(ptr noundef nonnull align 8 dereferenceable(72) %488)
  br i1 %490, label %.critedge, label %491

491:                                              ; preds = %489
  call void @__assert_fail(ptr noundef nonnull @.str.817, ptr noundef nonnull @.str.68, i32 noundef 7522, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN7glslang13TParseContext18executeInitializerERKNS_10TSourceLocEPNS_12TIntermTypedEPNS_9TVariableE) #6
  unreachable

.critedge:                                        ; preds = %478, %489
  %492 = load ptr, ptr %426, align 8, !tbaa !5
  %493 = getelementptr inbounds i8, ptr %492, i64 40
  %494 = load ptr, ptr %493, align 8
  %495 = invoke noundef ptr %494(ptr noundef nonnull align 8 dereferenceable(32) %426)
          to label %496 unwind label %126

496:                                              ; preds = %.critedge
  %.not147 = icmp eq ptr %495, null
  br i1 %.not147, label %507, label %497

497:                                              ; preds = %496
  %498 = load ptr, ptr %426, align 8, !tbaa !5
  %499 = getelementptr inbounds i8, ptr %498, i64 40
  %500 = load ptr, ptr %499, align 8
  %501 = invoke noundef ptr %500(ptr noundef nonnull align 8 dereferenceable(32) %426)
          to label %502 unwind label %126

502:                                              ; preds = %497
  %503 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK7glslang20TIntermConstantUnion13getConstArrayEv(ptr noundef nonnull align 8 dereferenceable(193) %501)
  %504 = load ptr, ptr %3, align 8, !tbaa !5
  %505 = getelementptr inbounds i8, ptr %504, i64 200
  %506 = load ptr, ptr %505, align 8
  invoke void %506(ptr noundef nonnull align 8 dereferenceable(228) %3, ptr noundef nonnull align 8 dereferenceable(16) %503)
          to label %554 unwind label %126

507:                                              ; preds = %496
  %508 = load ptr, ptr %3, align 8, !tbaa !5
  %509 = getelementptr inbounds i8, ptr %508, i64 104
  %510 = load ptr, ptr %509, align 8
  %511 = invoke noundef nonnull align 8 dereferenceable(144) ptr %510(ptr noundef nonnull align 8 dereferenceable(228) %3)
          to label %512 unwind label %126

512:                                              ; preds = %507
  %513 = load ptr, ptr %511, align 8, !tbaa !5
  %514 = getelementptr inbounds i8, ptr %513, i64 80
  %515 = load ptr, ptr %514, align 8
  %516 = invoke noundef nonnull align 8 dereferenceable(72) ptr %515(ptr noundef nonnull align 8 dereferenceable(144) %511)
          to label %517 unwind label %126

517:                                              ; preds = %512
  call void @_ZN7glslang10TQualifier16makeSpecConstantEv(ptr noundef nonnull align 8 dereferenceable(72) %516)
  %518 = load ptr, ptr %3, align 8, !tbaa !5
  %519 = getelementptr inbounds i8, ptr %518, i64 208
  %520 = load ptr, ptr %519, align 8
  invoke void %520(ptr noundef nonnull align 8 dereferenceable(228) %3, ptr noundef nonnull %426)
          to label %554 unwind label %126

521:                                              ; preds = %.thread157, %418
  %522 = load ptr, ptr %123, align 8, !tbaa !5
  %523 = getelementptr inbounds i8, ptr %522, i64 240
  %524 = load ptr, ptr %523, align 8
  %525 = invoke noundef nonnull align 8 dereferenceable(144) ptr %524(ptr noundef nonnull align 8 dereferenceable(176) %123)
          to label %526 unwind label %126

526:                                              ; preds = %521
  invoke void @_ZN7glslang13TParseContext19specializationCheckERKNS_10TSourceLocERKNS_5TTypeEPKc(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(144) %525, ptr noundef nonnull @.str.790)
          to label %527 unwind label %126

527:                                              ; preds = %526
  %528 = getelementptr inbounds i8, ptr %0, i64 56
  %529 = load ptr, ptr %528, align 8, !tbaa !10
  %530 = invoke noundef ptr @_ZN7glslang13TIntermediate9addSymbolERKNS_9TVariableERKNS_10TSourceLocE(ptr noundef nonnull align 8 dereferenceable(1784) %529, ptr noundef nonnull align 8 dereferenceable(228) %3, ptr noundef nonnull align 8 dereferenceable(24) %1)
          to label %531 unwind label %545

531:                                              ; preds = %527
  %532 = load ptr, ptr %528, align 8, !tbaa !10
  %533 = invoke noundef ptr @_ZN7glslang13TIntermediate9addAssignENS_9TOperatorEPNS_12TIntermTypedES3_RKNS_10TSourceLocE(ptr noundef nonnull align 8 dereferenceable(1784) %532, i32 noundef 575, ptr noundef %530, ptr noundef nonnull %123, ptr noundef nonnull align 8 dereferenceable(24) %1)
          to label %534 unwind label %547

534:                                              ; preds = %531
  %.not140 = icmp eq ptr %533, null
  br i1 %.not140, label %535, label %554

535:                                              ; preds = %534
  %536 = load ptr, ptr %528, align 8, !tbaa !10
  %537 = invoke noundef zeroext i1 @_ZNK7glslang13TIntermediate15getEnhancedMsgsEv(ptr noundef nonnull align 8 dereferenceable(1784) %536)
          to label %538 unwind label %547

538:                                              ; preds = %535
  invoke void @_ZNK7glslang12TIntermTyped17getCompleteStringB5cxx11Eb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %16, ptr noundef nonnull align 8 dereferenceable(176) %530, i1 noundef zeroext %537)
          to label %539 unwind label %547

539:                                              ; preds = %538
  %540 = load ptr, ptr %528, align 8, !tbaa !10
  %541 = invoke noundef zeroext i1 @_ZNK7glslang13TIntermediate15getEnhancedMsgsEv(ptr noundef nonnull align 8 dereferenceable(1784) %540)
          to label %542 unwind label %549

542:                                              ; preds = %539
  invoke void @_ZNK7glslang12TIntermTyped17getCompleteStringB5cxx11Eb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %17, ptr noundef nonnull align 8 dereferenceable(176) %123, i1 noundef zeroext %541)
          to label %543 unwind label %549

543:                                              ; preds = %542
  invoke void @_ZN7glslang13TParseContext11assignErrorERKNS_10TSourceLocEPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEESC_(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.785, ptr noundef nonnull %16, ptr noundef nonnull %17)
          to label %544 unwind label %551

544:                                              ; preds = %543
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %17) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %16) #5
  br label %554

545:                                              ; preds = %527
  %546 = landingpad { ptr, i32 }
          cleanup
  br label %555

547:                                              ; preds = %538, %535, %531
  %548 = landingpad { ptr, i32 }
          cleanup
  br label %555

549:                                              ; preds = %542, %539
  %550 = landingpad { ptr, i32 }
          cleanup
  br label %553

551:                                              ; preds = %543
  %552 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %17) #5
  br label %553

553:                                              ; preds = %551, %549
  %.pn141 = phi { ptr, i32 } [ %552, %551 ], [ %550, %549 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %16) #5
  br label %555

554:                                              ; preds = %.invoke, %517, %502, %534, %544, %125
  %.0 = phi ptr [ null, %125 ], [ null, %544 ], [ %533, %534 ], [ null, %502 ], [ null, %517 ], [ null, %.invoke ]
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %5) #5
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %5) #5
  br label %556

555:                                              ; preds = %545, %553, %547, %415, %383, %353, %301, %216, %126
  %.pn148 = phi { ptr, i32 } [ %217, %216 ], [ %127, %126 ], [ %384, %383 ], [ %416, %415 ], [ %.pn135.pn.pn.pn, %353 ], [ %.pn.pn.pn.pn, %301 ], [ %546, %545 ], [ %.pn141, %553 ], [ %548, %547 ]
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %5) #5
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %5) #5
  resume { ptr, i32 } %.pn148

556:                                              ; preds = %554, %101, %97, %84, %65
  %.1 = phi ptr [ null, %84 ], [ null, %97 ], [ null, %101 ], [ %.0, %554 ], [ null, %65 ]
  ret ptr %.1
}

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

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

attributes #0 = { 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 #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { "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 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nounwind }
attributes #6 = { noreturn 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 = !{!"vtable pointer", !7, i64 0}
!7 = !{!"Simple C++ TBAA"}
!8 = distinct !{!8, !9}
!9 = !{!"llvm.loop.mustprogress"}
!10 = !{!11, !15, i64 56}
!11 = !{!"_ZTSN7glslang14TParseVersionsE", !12, i64 8, !14, i64 12, !15, i64 16, !16, i64 24, !17, i64 28, !18, i64 32, !15, i64 56, !19, i64 64, !30, i64 120, !35, i64 176, !16, i64 180, !15, i64 184}
!12 = !{!"bool", !13, i64 0}
!13 = !{!"omnipotent char", !7, i64 0}
!14 = !{!"_ZTS8EProfile", !13, i64 0}
!15 = !{!"any pointer", !13, i64 0}
!16 = !{!"int", !13, i64 0}
!17 = !{!"_ZTS11EShLanguage", !13, i64 0}
!18 = !{!"_ZTSN7glslang10SpvVersionE", !16, i64 0, !16, i64 4, !16, i64 8, !16, i64 12, !12, i64 16}
!19 = !{!"_ZTSN7glslang4TMapINSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEENS_18TExtensionBehaviorESt4lessIS7_EEE", !20, i64 0}
!20 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEENS4_18TExtensionBehaviorESt4lessIS7_ENS5_ISt4pairIKS7_S8_EEEE", !21, i64 0}
!21 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_NS4_18TExtensionBehaviorEESt10_Select1stISB_ESt4lessIS7_ENS5_ISB_EEE", !22, i64 0}
!22 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_NS4_18TExtensionBehaviorEESt10_Select1stISB_ESt4lessIS7_ENS5_ISB_EEE13_Rb_tree_implISF_Lb1EEE", !23, i64 0, !24, i64 8, !26, i64 16}
!23 = !{!"_ZTSN7glslang14pool_allocatorISt13_Rb_tree_nodeISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_IcEEEENS_18TExtensionBehaviorEEEEE", !15, i64 0}
!24 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEEE", !25, i64 0}
!25 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEE"}
!26 = !{!"_ZTSSt15_Rb_tree_header", !27, i64 0, !29, i64 32}
!27 = !{!"_ZTSSt18_Rb_tree_node_base", !28, i64 0, !15, i64 8, !15, i64 16, !15, i64 24}
!28 = !{!"_ZTSSt14_Rb_tree_color", !13, i64 0}
!29 = !{!"long", !13, i64 0}
!30 = !{!"_ZTSN7glslang4TMapINSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEEjSt4lessIS7_EEE", !31, i64 0}
!31 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEjSt4lessIS7_ENS5_ISt4pairIKS7_jEEEE", !32, i64 0}
!32 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_jESt10_Select1stISA_ESt4lessIS7_ENS5_ISA_EEE", !33, i64 0}
!33 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_jESt10_Select1stISA_ESt4lessIS7_ENS5_ISA_EEE13_Rb_tree_implISE_Lb1EEE", !34, i64 0, !24, i64 8, !26, i64 16}
!34 = !{!"_ZTSN7glslang14pool_allocatorISt13_Rb_tree_nodeISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_IcEEEEjEEEE", !15, i64 0}
!35 = !{!"_ZTS11EShMessages", !13, i64 0}
!36 = !{!37, !15, i64 200}
!37 = !{!"_ZTSN7glslang17TParseContextBaseE", !11, i64 0, !15, i64 192, !15, i64 200, !16, i64 208, !16, i64 212, !16, i64 216, !16, i64 220, !16, i64 224, !15, i64 232, !12, i64 240, !12, i64 241, !38, i64 248, !45, i64 280, !50, i64 312, !16, i64 376, !16, i64 380, !12, i64 384, !57, i64 392, !15, i64 424, !15, i64 432, !63, i64 440, !15, i64 824, !65, i64 832, !68, i64 872, !70, i64 904, !71, i64 936, !72, i64 968, !73, i64 1000, !15, i64 1032, !16, i64 1040, !16, i64 1044, !16, i64 1048, !74, i64 1056, !16, 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", !15, i64 0}
!43 = !{!"_ZTSNSt8__detail17_List_node_headerE", !44, i64 0, !29, i64 16}
!44 = !{!"_ZTSNSt8__detail15_List_node_baseE", !15, i64 0, !15, 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", !15, i64 0}
!50 = !{!"_ZTSN7glslang7TPragmaE", !12, i64 0, !12, 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, !24, i64 8, !26, i64 16}
!56 = !{!"_ZTSN7glslang14pool_allocatorISt13_Rb_tree_nodeISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_IcEEEES8_EEEE", !15, 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", !15, i64 0}
!62 = !{!"_ZTSNSt12_Vector_baseIPN7glslang7TSymbolENS0_14pool_allocatorIS2_EEE17_Vector_impl_dataE", !15, i64 0, !15, i64 8, !15, i64 16}
!63 = !{!"_ZTS16TBuiltInResource", !16, i64 0, !16, i64 4, !16, i64 8, !16, i64 12, !16, i64 16, !16, i64 20, !16, i64 24, !16, i64 28, !16, i64 32, !16, i64 36, !16, i64 40, !16, i64 44, !16, i64 48, !16, i64 52, !16, i64 56, !16, i64 60, !16, i64 64, !16, i64 68, !16, i64 72, !16, i64 76, !16, i64 80, !16, i64 84, !16, i64 88, !16, i64 92, !16, i64 96, !16, i64 100, !16, i64 104, !16, i64 108, !16, i64 112, !16, i64 116, !16, i64 120, !16, i64 124, !16, i64 128, !16, i64 132, !16, i64 136, !16, i64 140, !16, i64 144, !16, i64 148, !16, i64 152, !16, i64 156, !16, i64 160, !16, i64 164, !16, i64 168, !16, i64 172, !16, i64 176, !16, i64 180, !16, i64 184, !16, i64 188, !16, i64 192, !16, i64 196, !16, i64 200, !16, i64 204, !16, i64 208, !16, i64 212, !16, i64 216, !16, i64 220, !16, i64 224, !16, i64 228, !16, i64 232, !16, i64 236, !16, i64 240, !16, i64 244, !16, i64 248, !16, i64 252, !16, i64 256, !16, i64 260, !16, i64 264, !16, i64 268, !16, i64 272, !16, i64 276, !16, i64 280, !16, i64 284, !16, i64 288, !16, i64 292, !16, i64 296, !16, i64 300, !16, i64 304, !16, i64 308, !16, i64 312, !16, i64 316, !16, i64 320, !16, i64 324, !16, i64 328, !16, i64 332, !16, i64 336, !16, i64 340, !16, i64 344, !16, i64 348, !16, i64 352, !16, i64 356, !16, i64 360, !16, i64 364, !16, i64 368, !64, i64 372}
!64 = !{!"_ZTS7TLimits", !12, i64 0, !12, i64 1, !12, i64 2, !12, i64 3, !12, i64 4, !12, i64 5, !12, i64 6, !12, i64 7, !12, i64 8}
!65 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEE", !66, i64 0, !29, i64 16, !13, i64 24}
!66 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE12_Alloc_hiderE", !67, i64 0, !15, i64 8}
!67 = !{!"_ZTSN7glslang14pool_allocatorIcEE", !15, i64 0}
!68 = !{!"_ZTSSt8functionIFviibiPKcEE", !69, i64 0, !15, i64 24}
!69 = !{!"_ZTSSt14_Function_base", !13, i64 0, !15, i64 16}
!70 = !{!"_ZTSSt8functionIFviRKN7glslang7TVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_14pool_allocatorIcEEEEEEEE", !69, i64 0, !15, i64 24}
!71 = !{!"_ZTSSt8functionIFviiPKcEE", !69, i64 0, !15, i64 24}
!72 = !{!"_ZTSSt8functionIFviPKcS1_EE", !69, i64 0, !15, i64 24}
!73 = !{!"_ZTSSt8functionIFviPKcEE", !69, i64 0, !15, 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, !26, i64 16}
!78 = !{!"_ZTSN7glslang14pool_allocatorISt13_Rb_tree_nodeISt4pairIKiPNS_9TVariableEEEEE", !15, 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, !26, i64 16}
!85 = !{!"_ZTSN7glslang14pool_allocatorISt13_Rb_tree_nodeISt4pairIKiiEEEE", !15, i64 0}


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