; 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 }
%"struct.glslang::TSourceLoc" = type { ptr, i32, i32, 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 }
%"struct.glslang::TParameter" = type { ptr, ptr, 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 }
%"class.glslang::TParseContext" = type { %"class.glslang::TParseContextBase", i8, ptr, %"class.glslang::TQualifier", [22 x i32], %struct.TBuiltInResource, ptr, [5632 x i32], %"class.glslang::TPrecisionManager", %"class.glslang::TQualifier", %"class.glslang::TQualifier", %"class.glslang::TQualifier", %"class.glslang::TQualifier", %"class.glslang::TQualifier", %"class.std::__cxx11::basic_string", ptr, i8, %"class.std::set", %"class.glslang::TVector.35", %"class.std::map.39", %"class.std::map.39", %"class.glslang::TVector" }
%"class.glslang::TPrecisionManager" = type <{ ptr, i8, i8, i8, i8, [4 x i8] }>
%"class.std::set" = type { %"class.std::_Rb_tree.33" }
%"class.std::_Rb_tree.33" = type { %"struct.std::_Rb_tree<long long, long long, std::_Identity<long long>, std::less<long long>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<long long, long long, std::_Identity<long long>, std::less<long long>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.glslang::TVector.35" = type { %"class.std::vector.36" }
%"class.std::vector.36" = type { %"struct.std::_Vector_base.37" }
%"struct.std::_Vector_base.37" = type { %"struct.std::_Vector_base<glslang::TIntermTyped *, glslang::pool_allocator<glslang::TIntermTyped *>>::_Vector_impl" }
%"struct.std::_Vector_base<glslang::TIntermTyped *, glslang::pool_allocator<glslang::TIntermTyped *>>::_Vector_impl" = type { %"class.glslang::pool_allocator.38", %"struct.std::_Vector_base<glslang::TIntermTyped *, glslang::pool_allocator<glslang::TIntermTyped *>>::_Vector_impl_data" }
%"class.glslang::pool_allocator.38" = type { ptr }
%"struct.std::_Vector_base<glslang::TIntermTyped *, glslang::pool_allocator<glslang::TIntermTyped *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::map.39" = type { %"class.std::_Rb_tree.40" }
%"class.std::_Rb_tree.40" = type { %"struct.std::_Rb_tree<const glslang::TVector<glslang::TTypeLoc> *, std::pair<const glslang::TVector<glslang::TTypeLoc> *const, std::map<unsigned long, const glslang::TVector<glslang::TTypeLoc> *>>, std::_Select1st<std::pair<const glslang::TVector<glslang::TTypeLoc> *const, std::map<unsigned long, const glslang::TVector<glslang::TTypeLoc> *>>>, std::less<const glslang::TVector<glslang::TTypeLoc> *>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<const glslang::TVector<glslang::TTypeLoc> *, std::pair<const glslang::TVector<glslang::TTypeLoc> *const, std::map<unsigned long, const glslang::TVector<glslang::TTypeLoc> *>>, std::_Select1st<std::pair<const glslang::TVector<glslang::TTypeLoc> *const, std::map<unsigned long, const glslang::TVector<glslang::TTypeLoc> *>>>, std::less<const glslang::TVector<glslang::TTypeLoc> *>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }

@.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.123 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.124 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.125 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.126 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.127 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.128 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.129 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.130 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.131 = external hidden unnamed_addr constant [84 x i8], align 1
@.str.132 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.133 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.134 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.135 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.136 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.137 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.138 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.139 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.140 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.141 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.142 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.143 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.144 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.145 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.146 = external hidden unnamed_addr constant [58 x i8], align 1
@__PRETTY_FUNCTION__._ZN7glslang13TParseContext18handleFunctionCallERKNS_10TSourceLocEPNS_9TFunctionEP11TIntermNode = external hidden unnamed_addr constant [105 x i8], align 1

declare i32 @__gxx_personality_v0(...)

; 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: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2

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

; 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 #3 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 uwtable
declare dso_local noundef zeroext i1 @_ZNK7glslang5TType11isReferenceEv(ptr noundef nonnull align 8 dereferenceable(144)) #3 align 2

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

declare noundef ptr @_ZNK7glslang13TIntermediate16addConstantUnionEdNS_10TBasicTypeERKNS_10TSourceLocEb(ptr noundef nonnull align 8 dereferenceable(1784), double noundef, i32 noundef, ptr noundef nonnull align 8 dereferenceable(24), i1 noundef zeroext) #4

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN7glslang13TParseContext14addConstructorERKNS_10TSourceLocEP11TIntermNodeRKNS_5TTypeE(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef, ptr noundef nonnull align 8 dereferenceable(144)) #3 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 nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK7glslang10TQualifier14isSpirvLiteralEv(ptr noundef nonnull align 8 dereferenceable(72)) #0 align 2

declare noundef ptr @_ZN7glslang13TIntermediate20setAggregateOperatorEP11TIntermNodeNS_9TOperatorERKNS_5TTypeERKNS_10TSourceLocE(ptr noundef nonnull align 8 dereferenceable(1784), ptr noundef, i32 noundef, ptr noundef nonnull align 8 dereferenceable(144), ptr noundef nonnull align 8 dereferenceable(24)) #4

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

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

47:                                               ; preds = %42
  %48 = load ptr, ptr %7, align 8, !tbaa !5
  %49 = load ptr, ptr %8, align 8, !tbaa !5
  %50 = load ptr, ptr %9, align 8, !tbaa !5
  %51 = call noundef ptr @_ZN7glslang13TParseContext26vkRelaxedRemapFunctionCallERKNS_10TSourceLocEPNS_9TFunctionEP11TIntermNode(ptr noundef nonnull align 8 dereferenceable(24912) %37, ptr noundef nonnull align 8 dereferenceable(24) %48, ptr noundef %49, ptr noundef %50)
  store ptr %51, ptr %10, align 8, !tbaa !5
  %52 = load ptr, ptr %10, align 8, !tbaa !5
  %53 = icmp ne ptr %52, null
  br i1 %53, label %54, label %56

54:                                               ; preds = %47
  %55 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %55, ptr %5, align 8
  store i32 1, ptr %11, align 4
  br label %964

56:                                               ; preds = %47
  br label %57

57:                                               ; preds = %56, %42, %4
  %58 = load ptr, ptr %8, align 8, !tbaa !5
  %59 = load ptr, ptr %58, align 8, !tbaa !36
  %60 = getelementptr inbounds ptr, ptr %59, i64 27
  %61 = load ptr, ptr %60, align 8
  %62 = call noundef i32 %61(ptr noundef nonnull align 8 dereferenceable(328) %58)
  %63 = icmp eq i32 %62, 590
  br i1 %63, label %64, label %69

64:                                               ; preds = %57
  %65 = load ptr, ptr %7, align 8, !tbaa !5
  %66 = load ptr, ptr %8, align 8, !tbaa !5
  %67 = load ptr, ptr %9, align 8, !tbaa !5
  %68 = call noundef ptr @_ZN7glslang13TParseContext18handleLengthMethodERKNS_10TSourceLocEPNS_9TFunctionEP11TIntermNode(ptr noundef nonnull align 8 dereferenceable(24912) %37, ptr noundef nonnull align 8 dereferenceable(24) %65, ptr noundef %66, ptr noundef %67)
  store ptr %68, ptr %10, align 8, !tbaa !5
  br label %954

69:                                               ; preds = %57
  %70 = load ptr, ptr %8, align 8, !tbaa !5
  %71 = load ptr, ptr %70, align 8, !tbaa !36
  %72 = getelementptr inbounds ptr, ptr %71, i64 27
  %73 = load ptr, ptr %72, align 8
  %74 = call noundef i32 %73(ptr noundef nonnull align 8 dereferenceable(328) %70)
  %75 = icmp ne i32 %74, 0
  br i1 %75, label %76, label %142

76:                                               ; preds = %69
  call void @llvm.lifetime.start.p0(i64 144, ptr %12) #6
  call void @_ZN7glslang5TTypeC2ENS_10TBasicTypeENS_17TStorageQualifierEiiib(ptr noundef nonnull align 8 dereferenceable(144) %12, i32 noundef 0, i32 noundef 0, i32 noundef 1, i32 noundef 0, i32 noundef 0, i1 noundef zeroext false)
  %77 = load ptr, ptr %7, align 8, !tbaa !5
  %78 = load ptr, ptr %9, align 8, !tbaa !5
  %79 = load ptr, ptr %8, align 8, !tbaa !5
  %80 = load ptr, ptr %8, align 8, !tbaa !5
  %81 = load ptr, ptr %80, align 8, !tbaa !36
  %82 = getelementptr inbounds ptr, ptr %81, i64 27
  %83 = load ptr, ptr %82, align 8
  %84 = invoke noundef i32 %83(ptr noundef nonnull align 8 dereferenceable(328) %80)
          to label %85 unwind label %111

85:                                               ; preds = %76
  %86 = invoke noundef zeroext i1 @_ZN7glslang13TParseContext16constructorErrorERKNS_10TSourceLocEP11TIntermNodeRNS_9TFunctionENS_9TOperatorERNS_5TTypeE(ptr noundef nonnull align 8 dereferenceable(24912) %37, ptr noundef nonnull align 8 dereferenceable(24) %77, ptr noundef %78, ptr noundef nonnull align 8 dereferenceable(328) %79, i32 noundef %84, ptr noundef nonnull align 8 dereferenceable(144) %12)
          to label %87 unwind label %111

87:                                               ; preds = %85
  br i1 %86, label %140, label %88

88:                                               ; preds = %87
  %89 = load ptr, ptr %7, align 8, !tbaa !5
  %90 = load ptr, ptr %9, align 8, !tbaa !5
  %91 = invoke noundef ptr @_ZN7glslang13TParseContext14addConstructorERKNS_10TSourceLocEP11TIntermNodeRKNS_5TTypeE(ptr noundef nonnull align 8 dereferenceable(24912) %37, ptr noundef nonnull align 8 dereferenceable(24) %89, ptr noundef %90, ptr noundef nonnull align 8 dereferenceable(144) %12)
          to label %92 unwind label %111

92:                                               ; preds = %88
  store ptr %91, ptr %10, align 8, !tbaa !5
  %93 = load ptr, ptr %10, align 8, !tbaa !5
  %94 = icmp eq ptr %93, null
  br i1 %94, label %95, label %139

95:                                               ; preds = %92
  %96 = load ptr, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 40, ptr %15) #6
  %97 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %37, i32 0, i32 7
  %98 = load ptr, ptr %97, align 8, !tbaa !38
  %99 = invoke noundef zeroext i1 @_ZNK7glslang13TIntermediate15getEnhancedMsgsEv(ptr noundef nonnull align 8 dereferenceable(1784) %98)
          to label %100 unwind label %115

100:                                              ; preds = %95
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #6
  invoke void @_ZN7glslang14pool_allocatorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %17)
          to label %101 unwind label %119

101:                                              ; preds = %100
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(40) %16, ptr noundef @.str.2, ptr noundef nonnull align 8 dereferenceable(8) %17)
          to label %102 unwind label %119

102:                                              ; preds = %101
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #6
  invoke void @_ZN7glslang14pool_allocatorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %19)
          to label %103 unwind label %123

103:                                              ; preds = %102
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(40) %18, ptr noundef @.str.2, ptr noundef nonnull align 8 dereferenceable(8) %19)
          to label %104 unwind label %123

104:                                              ; preds = %103
  invoke void @_ZNK7glslang5TType17getCompleteStringEbbbbNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEES7_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %15, ptr noundef nonnull align 8 dereferenceable(144) %12, i1 noundef zeroext %99, i1 noundef zeroext true, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef %16, ptr noundef %18)
          to label %105 unwind label %127

105:                                              ; preds = %104
  %106 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %15) #6
  %107 = load ptr, ptr %37, align 8, !tbaa !36
  %108 = getelementptr inbounds ptr, ptr %107, i64 42
  %109 = load ptr, ptr %108, align 8
  invoke void (ptr, ptr, ptr, ptr, ptr, ...) %109(ptr noundef nonnull align 8 dereferenceable(1176) %37, ptr noundef nonnull align 8 dereferenceable(24) %96, ptr noundef @.str.123, ptr noundef %106, ptr noundef @.str.2)
          to label %110 unwind label %131

110:                                              ; preds = %105
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %15) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %18) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %16) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr %15) #6
  br label %139

111:                                              ; preds = %88, %85, %76
  %112 = landingpad { ptr, i32 }
          cleanup
  %113 = extractvalue { ptr, i32 } %112, 0
  store ptr %113, ptr %13, align 8
  %114 = extractvalue { ptr, i32 } %112, 1
  store i32 %114, ptr %14, align 4
  br label %141

115:                                              ; preds = %95
  %116 = landingpad { ptr, i32 }
          cleanup
  %117 = extractvalue { ptr, i32 } %116, 0
  store ptr %117, ptr %13, align 8
  %118 = extractvalue { ptr, i32 } %116, 1
  store i32 %118, ptr %14, align 4
  br label %138

119:                                              ; preds = %101, %100
  %120 = landingpad { ptr, i32 }
          cleanup
  %121 = extractvalue { ptr, i32 } %120, 0
  store ptr %121, ptr %13, align 8
  %122 = extractvalue { ptr, i32 } %120, 1
  store i32 %122, ptr %14, align 4
  br label %137

123:                                              ; preds = %103, %102
  %124 = landingpad { ptr, i32 }
          cleanup
  %125 = extractvalue { ptr, i32 } %124, 0
  store ptr %125, ptr %13, align 8
  %126 = extractvalue { ptr, i32 } %124, 1
  store i32 %126, ptr %14, align 4
  br label %136

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

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

135:                                              ; preds = %131, %127
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %18) #6
  br label %136

136:                                              ; preds = %135, %123
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %16) #6
  br label %137

137:                                              ; preds = %136, %119
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #6
  br label %138

138:                                              ; preds = %137, %115
  call void @llvm.lifetime.end.p0(i64 40, ptr %15) #6
  br label %141

139:                                              ; preds = %110, %92
  br label %140

140:                                              ; preds = %139, %87
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %12) #6
  call void @llvm.lifetime.end.p0(i64 144, ptr %12) #6
  br label %953

141:                                              ; preds = %138, %111
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %12) #6
  call void @llvm.lifetime.end.p0(i64 144, ptr %12) #6
  br label %966

142:                                              ; preds = %69
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #6
  store i8 0, ptr %21, align 1, !tbaa !39
  %143 = load ptr, ptr %7, align 8, !tbaa !5
  %144 = load ptr, ptr %8, align 8, !tbaa !5
  %145 = call noundef ptr @_ZN7glslang13TParseContext12findFunctionERKNS_10TSourceLocERKNS_9TFunctionERb(ptr noundef nonnull align 8 dereferenceable(24912) %37, ptr noundef nonnull align 8 dereferenceable(24) %143, ptr noundef nonnull align 8 dereferenceable(328) %144, ptr noundef nonnull align 1 dereferenceable(1) %21)
  store ptr %145, ptr %20, align 8, !tbaa !5
  %146 = load ptr, ptr %20, align 8, !tbaa !5
  %147 = icmp ne ptr %146, null
  br i1 %147, label %148, label %952

148:                                              ; preds = %142
  %149 = load i8, ptr %21, align 1, !tbaa !39, !range !34, !noundef !35
  %150 = trunc i8 %149 to i1
  br i1 %150, label %151, label %179

151:                                              ; preds = %148
  %152 = load ptr, ptr %20, align 8, !tbaa !5
  %153 = load ptr, ptr %152, align 8, !tbaa !36
  %154 = getelementptr inbounds ptr, ptr %153, i64 17
  %155 = load ptr, ptr %154, align 8
  %156 = call noundef i32 %155(ptr noundef nonnull align 8 dereferenceable(33) %152)
  %157 = icmp ne i32 %156, 0
  br i1 %157, label %158, label %179

158:                                              ; preds = %151
  %159 = load ptr, ptr %7, align 8, !tbaa !5
  %160 = load ptr, ptr %20, align 8, !tbaa !5
  %161 = load ptr, ptr %160, align 8, !tbaa !36
  %162 = getelementptr inbounds ptr, ptr %161, i64 17
  %163 = load ptr, ptr %162, align 8
  %164 = call noundef i32 %163(ptr noundef nonnull align 8 dereferenceable(33) %160)
  %165 = load ptr, ptr %20, align 8, !tbaa !5
  %166 = load ptr, ptr %165, align 8, !tbaa !36
  %167 = getelementptr inbounds ptr, ptr %166, i64 18
  %168 = load ptr, ptr %167, align 8
  %169 = call noundef ptr %168(ptr noundef nonnull align 8 dereferenceable(33) %165)
  %170 = load ptr, ptr %20, align 8, !tbaa !5
  %171 = load ptr, ptr %170, align 8, !tbaa !36
  %172 = getelementptr inbounds ptr, ptr %171, i64 3
  %173 = load ptr, ptr %172, align 8
  %174 = call noundef nonnull align 8 dereferenceable(40) ptr %173(ptr noundef nonnull align 8 dereferenceable(33) %170)
  %175 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %174) #6
  %176 = load ptr, ptr %37, align 8, !tbaa !36
  %177 = getelementptr inbounds ptr, ptr %176, i64 5
  %178 = load ptr, ptr %177, align 8
  call void %178(ptr noundef nonnull align 8 dereferenceable(192) %37, ptr noundef nonnull align 8 dereferenceable(24) %159, i32 noundef %164, ptr noundef %169, ptr noundef %175)
  br label %179

179:                                              ; preds = %158, %151, %148
  %180 = load i8, ptr %21, align 1, !tbaa !39, !range !34, !noundef !35
  %181 = trunc i8 %180 to i1
  br i1 %181, label %182, label %194

182:                                              ; preds = %179
  %183 = load ptr, ptr %20, align 8, !tbaa !5
  %184 = load ptr, ptr %183, align 8, !tbaa !36
  %185 = getelementptr inbounds ptr, ptr %184, i64 12
  %186 = load ptr, ptr %185, align 8
  %187 = call noundef nonnull align 8 dereferenceable(144) ptr %186(ptr noundef nonnull align 8 dereferenceable(328) %183)
  %188 = call noundef zeroext i1 @_ZNK7glslang5TType18contains16BitFloatEv(ptr noundef nonnull align 8 dereferenceable(144) %187)
  br i1 %188, label %189, label %194

189:                                              ; preds = %182
  %190 = load ptr, ptr %7, align 8, !tbaa !5
  %191 = load ptr, ptr %37, align 8, !tbaa !36
  %192 = getelementptr inbounds ptr, ptr %191, i64 21
  %193 = load ptr, ptr %192, align 8
  call void %193(ptr noundef nonnull align 8 dereferenceable(192) %37, ptr noundef nonnull align 8 dereferenceable(24) %190, ptr noundef @.str.124, ptr noundef @.str.125)
  br label %194

194:                                              ; preds = %189, %182, %179
  %195 = load i8, ptr %21, align 1, !tbaa !39, !range !34, !noundef !35
  %196 = trunc i8 %195 to i1
  br i1 %196, label %197, label %209

197:                                              ; preds = %194
  %198 = load ptr, ptr %20, align 8, !tbaa !5
  %199 = load ptr, ptr %198, align 8, !tbaa !36
  %200 = getelementptr inbounds ptr, ptr %199, i64 12
  %201 = load ptr, ptr %200, align 8
  %202 = call noundef nonnull align 8 dereferenceable(144) ptr %201(ptr noundef nonnull align 8 dereferenceable(328) %198)
  %203 = call noundef zeroext i1 @_ZNK7glslang5TType16contains16BitIntEv(ptr noundef nonnull align 8 dereferenceable(144) %202)
  br i1 %203, label %204, label %209

204:                                              ; preds = %197
  %205 = load ptr, ptr %7, align 8, !tbaa !5
  %206 = load ptr, ptr %37, align 8, !tbaa !36
  %207 = getelementptr inbounds ptr, ptr %206, i64 24
  %208 = load ptr, ptr %207, align 8
  call void %208(ptr noundef nonnull align 8 dereferenceable(192) %37, ptr noundef nonnull align 8 dereferenceable(24) %205, ptr noundef @.str.124, ptr noundef @.str.126)
  br label %209

209:                                              ; preds = %204, %197, %194
  %210 = load i8, ptr %21, align 1, !tbaa !39, !range !34, !noundef !35
  %211 = trunc i8 %210 to i1
  br i1 %211, label %212, label %224

212:                                              ; preds = %209
  %213 = load ptr, ptr %20, align 8, !tbaa !5
  %214 = load ptr, ptr %213, align 8, !tbaa !36
  %215 = getelementptr inbounds ptr, ptr %214, i64 12
  %216 = load ptr, ptr %215, align 8
  %217 = call noundef nonnull align 8 dereferenceable(144) ptr %216(ptr noundef nonnull align 8 dereferenceable(328) %213)
  %218 = call noundef zeroext i1 @_ZNK7glslang5TType15contains8BitIntEv(ptr noundef nonnull align 8 dereferenceable(144) %217)
  br i1 %218, label %219, label %224

219:                                              ; preds = %212
  %220 = load ptr, ptr %7, align 8, !tbaa !5
  %221 = load ptr, ptr %37, align 8, !tbaa !36
  %222 = getelementptr inbounds ptr, ptr %221, i64 27
  %223 = load ptr, ptr %222, align 8
  call void %223(ptr noundef nonnull align 8 dereferenceable(192) %37, ptr noundef nonnull align 8 dereferenceable(24) %220, ptr noundef @.str.124, ptr noundef @.str.127)
  br label %224

224:                                              ; preds = %219, %212, %209
  %225 = load ptr, ptr %9, align 8, !tbaa !5
  %226 = icmp ne ptr %225, null
  br i1 %226, label %227, label %734

227:                                              ; preds = %224
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #6
  %228 = load ptr, ptr %9, align 8, !tbaa !5
  %229 = load ptr, ptr %228, align 8, !tbaa !36
  %230 = getelementptr inbounds ptr, ptr %229, i64 6
  %231 = load ptr, ptr %230, align 8
  %232 = call noundef ptr %231(ptr noundef nonnull align 8 dereferenceable(32) %228)
  store ptr %232, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #6
  store i32 0, ptr %23, align 4, !tbaa !40
  br label %233

233:                                              ; preds = %729, %227
  %234 = load i32, ptr %23, align 4, !tbaa !40
  %235 = load ptr, ptr %20, align 8, !tbaa !5
  %236 = load ptr, ptr %235, align 8, !tbaa !36
  %237 = getelementptr inbounds ptr, ptr %236, i64 36
  %238 = load ptr, ptr %237, align 8
  %239 = call noundef i32 %238(ptr noundef nonnull align 8 dereferenceable(328) %235)
  %240 = icmp slt i32 %234, %239
  br i1 %240, label %242, label %241

241:                                              ; preds = %233
  store i32 2, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #6
  br label %732

242:                                              ; preds = %233
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #6
  %243 = load ptr, ptr %20, align 8, !tbaa !5
  %244 = load ptr, ptr %243, align 8, !tbaa !36
  %245 = getelementptr inbounds ptr, ptr %244, i64 36
  %246 = load ptr, ptr %245, align 8
  %247 = call noundef i32 %246(ptr noundef nonnull align 8 dereferenceable(328) %243)
  %248 = icmp eq i32 %247, 1
  br i1 %248, label %249, label %251

249:                                              ; preds = %242
  %250 = load ptr, ptr %9, align 8, !tbaa !5
  br label %268

251:                                              ; preds = %242
  %252 = load ptr, ptr %22, align 8, !tbaa !5
  %253 = icmp ne ptr %252, null
  br i1 %253, label %254, label %264

254:                                              ; preds = %251
  %255 = load ptr, ptr %22, align 8, !tbaa !5
  %256 = load ptr, ptr %255, align 8, !tbaa !36
  %257 = getelementptr inbounds ptr, ptr %256, i64 50
  %258 = load ptr, ptr %257, align 8
  %259 = call noundef nonnull align 8 dereferenceable(32) ptr %258(ptr noundef nonnull align 8 dereferenceable(352) %255)
  %260 = load i32, ptr %23, align 4, !tbaa !40
  %261 = sext i32 %260 to i64
  %262 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %259, i64 noundef %261) #6
  %263 = load ptr, ptr %262, align 8, !tbaa !5
  br label %266

264:                                              ; preds = %251
  %265 = load ptr, ptr %9, align 8, !tbaa !5
  br label %266

266:                                              ; preds = %264, %254
  %267 = phi ptr [ %263, %254 ], [ %265, %264 ]
  br label %268

268:                                              ; preds = %266, %249
  %269 = phi ptr [ %250, %249 ], [ %267, %266 ]
  store ptr %269, ptr %24, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #6
  %270 = load ptr, ptr %20, align 8, !tbaa !5
  %271 = load i32, ptr %23, align 4, !tbaa !40
  %272 = load ptr, ptr %270, align 8, !tbaa !36
  %273 = getelementptr inbounds ptr, ptr %272, i64 40
  %274 = load ptr, ptr %273, align 8
  %275 = call noundef nonnull align 8 dereferenceable(24) ptr %274(ptr noundef nonnull align 8 dereferenceable(328) %270, i32 noundef %271)
  %276 = getelementptr inbounds %"struct.glslang::TParameter", ptr %275, i32 0, i32 1
  %277 = load ptr, ptr %276, align 8, !tbaa !41
  %278 = load ptr, ptr %277, align 8, !tbaa !36
  %279 = getelementptr inbounds ptr, ptr %278, i64 10
  %280 = load ptr, ptr %279, align 8
  %281 = call noundef nonnull align 8 dereferenceable(72) ptr %280(ptr noundef nonnull align 8 dereferenceable(144) %277)
  store ptr %281, ptr %25, align 8, !tbaa !5
  %282 = load ptr, ptr %25, align 8, !tbaa !5
  %283 = call noundef zeroext i1 @_ZNK7glslang10TQualifier13isParamOutputEv(ptr noundef nonnull align 8 dereferenceable(72) %282)
  br i1 %283, label %284, label %309

284:                                              ; preds = %268
  %285 = load ptr, ptr %9, align 8, !tbaa !5
  %286 = load ptr, ptr %285, align 8, !tbaa !36
  %287 = getelementptr inbounds ptr, ptr %286, i64 0
  %288 = load ptr, ptr %287, align 8
  %289 = call noundef nonnull align 8 dereferenceable(24) ptr %288(ptr noundef nonnull align 8 dereferenceable(32) %285)
  %290 = load ptr, ptr %24, align 8, !tbaa !5
  %291 = load ptr, ptr %290, align 8, !tbaa !36
  %292 = getelementptr inbounds ptr, ptr %291, i64 3
  %293 = load ptr, ptr %292, align 8
  %294 = call noundef ptr %293(ptr noundef nonnull align 8 dereferenceable(32) %290)
  %295 = load ptr, ptr %37, align 8, !tbaa !36
  %296 = getelementptr inbounds ptr, ptr %295, i64 63
  %297 = load ptr, ptr %296, align 8
  %298 = call noundef zeroext i1 %297(ptr noundef nonnull align 8 dereferenceable(24912) %37, ptr noundef nonnull align 8 dereferenceable(24) %289, ptr noundef @.str.128, ptr noundef %294)
  br i1 %298, label %299, label %308

299:                                              ; preds = %284
  %300 = load ptr, ptr %9, align 8, !tbaa !5
  %301 = load ptr, ptr %300, align 8, !tbaa !36
  %302 = getelementptr inbounds ptr, ptr %301, i64 0
  %303 = load ptr, ptr %302, align 8
  %304 = call noundef nonnull align 8 dereferenceable(24) ptr %303(ptr noundef nonnull align 8 dereferenceable(32) %300)
  %305 = load ptr, ptr %37, align 8, !tbaa !36
  %306 = getelementptr inbounds ptr, ptr %305, i64 42
  %307 = load ptr, ptr %306, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %307(ptr noundef nonnull align 8 dereferenceable(1176) %37, ptr noundef nonnull align 8 dereferenceable(24) %304, ptr noundef @.str.129, ptr noundef @.str.130, ptr noundef @.str.2)
  br label %308

308:                                              ; preds = %299, %284
  br label %309

309:                                              ; preds = %308, %268
  %310 = load ptr, ptr %25, align 8, !tbaa !5
  %311 = call noundef zeroext i1 @_ZNK7glslang10TQualifier14isSpirvLiteralEv(ptr noundef nonnull align 8 dereferenceable(72) %310)
  br i1 %311, label %312, label %333

312:                                              ; preds = %309
  %313 = load ptr, ptr %24, align 8, !tbaa !5
  %314 = load ptr, ptr %313, align 8, !tbaa !36
  %315 = getelementptr inbounds ptr, ptr %314, i64 3
  %316 = load ptr, ptr %315, align 8
  %317 = call noundef ptr %316(ptr noundef nonnull align 8 dereferenceable(32) %313)
  %318 = load ptr, ptr %317, align 8, !tbaa !36
  %319 = getelementptr inbounds ptr, ptr %318, i64 33
  %320 = load ptr, ptr %319, align 8
  %321 = call noundef nonnull align 8 dereferenceable(72) ptr %320(ptr noundef nonnull align 8 dereferenceable(176) %317)
  %322 = call noundef zeroext i1 @_ZNK7glslang10TQualifier18isFrontEndConstantEv(ptr noundef nonnull align 8 dereferenceable(72) %321)
  br i1 %322, label %332, label %323

323:                                              ; preds = %312
  %324 = load ptr, ptr %9, align 8, !tbaa !5
  %325 = load ptr, ptr %324, align 8, !tbaa !36
  %326 = getelementptr inbounds ptr, ptr %325, i64 0
  %327 = load ptr, ptr %326, align 8
  %328 = call noundef nonnull align 8 dereferenceable(24) ptr %327(ptr noundef nonnull align 8 dereferenceable(32) %324)
  %329 = load ptr, ptr %37, align 8, !tbaa !36
  %330 = getelementptr inbounds ptr, ptr %329, i64 42
  %331 = load ptr, ptr %330, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %331(ptr noundef nonnull align 8 dereferenceable(1176) %37, ptr noundef nonnull align 8 dereferenceable(24) %328, ptr noundef @.str.131, ptr noundef @.str.132, ptr noundef @.str.2)
  br label %332

332:                                              ; preds = %323, %312
  br label %333

333:                                              ; preds = %332, %309
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #6
  %334 = load ptr, ptr %24, align 8, !tbaa !5
  %335 = load ptr, ptr %334, align 8, !tbaa !36
  %336 = getelementptr inbounds ptr, ptr %335, i64 3
  %337 = load ptr, ptr %336, align 8
  %338 = call noundef ptr %337(ptr noundef nonnull align 8 dereferenceable(32) %334)
  %339 = load ptr, ptr %338, align 8, !tbaa !36
  %340 = getelementptr inbounds ptr, ptr %339, i64 30
  %341 = load ptr, ptr %340, align 8
  %342 = call noundef nonnull align 8 dereferenceable(144) ptr %341(ptr noundef nonnull align 8 dereferenceable(176) %338)
  store ptr %342, ptr %26, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #6
  %343 = load ptr, ptr %26, align 8, !tbaa !5
  %344 = load ptr, ptr %343, align 8, !tbaa !36
  %345 = getelementptr inbounds ptr, ptr %344, i64 11
  %346 = load ptr, ptr %345, align 8
  %347 = call noundef nonnull align 8 dereferenceable(72) ptr %346(ptr noundef nonnull align 8 dereferenceable(144) %343)
  store ptr %347, ptr %27, align 8, !tbaa !5
  %348 = load ptr, ptr %27, align 8, !tbaa !5
  %349 = call noundef zeroext i1 @_ZNK7glslang10TQualifier8isMemoryEv(ptr noundef nonnull align 8 dereferenceable(72) %348)
  br i1 %349, label %350, label %629

350:                                              ; preds = %333
  %351 = load ptr, ptr %26, align 8, !tbaa !5
  %352 = load ptr, ptr %351, align 8, !tbaa !36
  %353 = getelementptr inbounds ptr, ptr %352, i64 49
  %354 = load ptr, ptr %353, align 8
  %355 = call noundef zeroext i1 %354(ptr noundef nonnull align 8 dereferenceable(144) %351)
  br i1 %355, label %359, label %356

356:                                              ; preds = %350
  %357 = load ptr, ptr %26, align 8, !tbaa !5
  %358 = call noundef zeroext i1 @_ZNK7glslang5TType11isReferenceEv(ptr noundef nonnull align 8 dereferenceable(144) %357)
  br i1 %358, label %359, label %629

359:                                              ; preds = %356, %350
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #6
  store ptr @.str.133, ptr %28, align 8, !tbaa !5
  %360 = load ptr, ptr %27, align 8, !tbaa !5
  %361 = getelementptr inbounds %"class.glslang::TQualifier", ptr %360, i32 0, i32 1
  %362 = load i64, ptr %361, align 8
  %363 = lshr i64 %362, 49
  %364 = and i64 %363, 1
  %365 = trunc i64 %364 to i1
  br i1 %365, label %366, label %383

366:                                              ; preds = %359
  %367 = load ptr, ptr %25, align 8, !tbaa !5
  %368 = getelementptr inbounds %"class.glslang::TQualifier", ptr %367, i32 0, i32 1
  %369 = load i64, ptr %368, align 8
  %370 = lshr i64 %369, 49
  %371 = and i64 %370, 1
  %372 = trunc i64 %371 to i1
  br i1 %372, label %383, label %373

373:                                              ; preds = %366
  %374 = load ptr, ptr %9, align 8, !tbaa !5
  %375 = load ptr, ptr %374, align 8, !tbaa !36
  %376 = getelementptr inbounds ptr, ptr %375, i64 0
  %377 = load ptr, ptr %376, align 8
  %378 = call noundef nonnull align 8 dereferenceable(24) ptr %377(ptr noundef nonnull align 8 dereferenceable(32) %374)
  %379 = load ptr, ptr %28, align 8, !tbaa !5
  %380 = load ptr, ptr %37, align 8, !tbaa !36
  %381 = getelementptr inbounds ptr, ptr %380, i64 42
  %382 = load ptr, ptr %381, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %382(ptr noundef nonnull align 8 dereferenceable(1176) %37, ptr noundef nonnull align 8 dereferenceable(24) %378, ptr noundef %379, ptr noundef @.str.134, ptr noundef @.str.2)
  br label %383

383:                                              ; preds = %373, %366, %359
  %384 = load ptr, ptr %27, align 8, !tbaa !5
  %385 = getelementptr inbounds %"class.glslang::TQualifier", ptr %384, i32 0, i32 1
  %386 = load i64, ptr %385, align 8
  %387 = lshr i64 %386, 48
  %388 = and i64 %387, 1
  %389 = trunc i64 %388 to i1
  br i1 %389, label %390, label %414

390:                                              ; preds = %383
  %391 = load ptr, ptr %25, align 8, !tbaa !5
  %392 = getelementptr inbounds %"class.glslang::TQualifier", ptr %391, i32 0, i32 1
  %393 = load i64, ptr %392, align 8
  %394 = lshr i64 %393, 50
  %395 = and i64 %394, 1
  %396 = trunc i64 %395 to i1
  br i1 %396, label %414, label %397

397:                                              ; preds = %390
  %398 = load ptr, ptr %25, align 8, !tbaa !5
  %399 = getelementptr inbounds %"class.glslang::TQualifier", ptr %398, i32 0, i32 1
  %400 = load i64, ptr %399, align 8
  %401 = lshr i64 %400, 48
  %402 = and i64 %401, 1
  %403 = trunc i64 %402 to i1
  br i1 %403, label %414, label %404

404:                                              ; preds = %397
  %405 = load ptr, ptr %9, align 8, !tbaa !5
  %406 = load ptr, ptr %405, align 8, !tbaa !36
  %407 = getelementptr inbounds ptr, ptr %406, i64 0
  %408 = load ptr, ptr %407, align 8
  %409 = call noundef nonnull align 8 dereferenceable(24) ptr %408(ptr noundef nonnull align 8 dereferenceable(32) %405)
  %410 = load ptr, ptr %28, align 8, !tbaa !5
  %411 = load ptr, ptr %37, align 8, !tbaa !36
  %412 = getelementptr inbounds ptr, ptr %411, i64 42
  %413 = load ptr, ptr %412, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %413(ptr noundef nonnull align 8 dereferenceable(1176) %37, ptr noundef nonnull align 8 dereferenceable(24) %409, ptr noundef %410, ptr noundef @.str.135, ptr noundef @.str.2)
  br label %414

414:                                              ; preds = %404, %397, %390, %383
  %415 = load ptr, ptr %27, align 8, !tbaa !5
  %416 = getelementptr inbounds %"class.glslang::TQualifier", ptr %415, i32 0, i32 1
  %417 = load i64, ptr %416, align 8
  %418 = lshr i64 %417, 50
  %419 = and i64 %418, 1
  %420 = trunc i64 %419 to i1
  br i1 %420, label %421, label %445

421:                                              ; preds = %414
  %422 = load ptr, ptr %25, align 8, !tbaa !5
  %423 = getelementptr inbounds %"class.glslang::TQualifier", ptr %422, i32 0, i32 1
  %424 = load i64, ptr %423, align 8
  %425 = lshr i64 %424, 50
  %426 = and i64 %425, 1
  %427 = trunc i64 %426 to i1
  br i1 %427, label %445, label %428

428:                                              ; preds = %421
  %429 = load ptr, ptr %25, align 8, !tbaa !5
  %430 = getelementptr inbounds %"class.glslang::TQualifier", ptr %429, i32 0, i32 1
  %431 = load i64, ptr %430, align 8
  %432 = lshr i64 %431, 48
  %433 = and i64 %432, 1
  %434 = trunc i64 %433 to i1
  br i1 %434, label %445, label %435

435:                                              ; preds = %428
  %436 = load ptr, ptr %9, align 8, !tbaa !5
  %437 = load ptr, ptr %436, align 8, !tbaa !36
  %438 = getelementptr inbounds ptr, ptr %437, i64 0
  %439 = load ptr, ptr %438, align 8
  %440 = call noundef nonnull align 8 dereferenceable(24) ptr %439(ptr noundef nonnull align 8 dereferenceable(32) %436)
  %441 = load ptr, ptr %28, align 8, !tbaa !5
  %442 = load ptr, ptr %37, align 8, !tbaa !36
  %443 = getelementptr inbounds ptr, ptr %442, i64 42
  %444 = load ptr, ptr %443, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %444(ptr noundef nonnull align 8 dereferenceable(1176) %37, ptr noundef nonnull align 8 dereferenceable(24) %440, ptr noundef %441, ptr noundef @.str.136, ptr noundef @.str.2)
  br label %445

445:                                              ; preds = %435, %428, %421, %414
  %446 = load ptr, ptr %27, align 8, !tbaa !5
  %447 = getelementptr inbounds %"class.glslang::TQualifier", ptr %446, i32 0, i32 1
  %448 = load i64, ptr %447, align 8
  %449 = lshr i64 %448, 51
  %450 = and i64 %449, 1
  %451 = trunc i64 %450 to i1
  br i1 %451, label %452, label %483

452:                                              ; preds = %445
  %453 = load ptr, ptr %25, align 8, !tbaa !5
  %454 = getelementptr inbounds %"class.glslang::TQualifier", ptr %453, i32 0, i32 1
  %455 = load i64, ptr %454, align 8
  %456 = lshr i64 %455, 51
  %457 = and i64 %456, 1
  %458 = trunc i64 %457 to i1
  br i1 %458, label %483, label %459

459:                                              ; preds = %452
  %460 = load ptr, ptr %25, align 8, !tbaa !5
  %461 = getelementptr inbounds %"class.glslang::TQualifier", ptr %460, i32 0, i32 1
  %462 = load i64, ptr %461, align 8
  %463 = lshr i64 %462, 50
  %464 = and i64 %463, 1
  %465 = trunc i64 %464 to i1
  br i1 %465, label %483, label %466

466:                                              ; preds = %459
  %467 = load ptr, ptr %25, align 8, !tbaa !5
  %468 = getelementptr inbounds %"class.glslang::TQualifier", ptr %467, i32 0, i32 1
  %469 = load i64, ptr %468, align 8
  %470 = lshr i64 %469, 48
  %471 = and i64 %470, 1
  %472 = trunc i64 %471 to i1
  br i1 %472, label %483, label %473

473:                                              ; preds = %466
  %474 = load ptr, ptr %9, align 8, !tbaa !5
  %475 = load ptr, ptr %474, align 8, !tbaa !36
  %476 = getelementptr inbounds ptr, ptr %475, i64 0
  %477 = load ptr, ptr %476, align 8
  %478 = call noundef nonnull align 8 dereferenceable(24) ptr %477(ptr noundef nonnull align 8 dereferenceable(32) %474)
  %479 = load ptr, ptr %28, align 8, !tbaa !5
  %480 = load ptr, ptr %37, align 8, !tbaa !36
  %481 = getelementptr inbounds ptr, ptr %480, i64 42
  %482 = load ptr, ptr %481, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %482(ptr noundef nonnull align 8 dereferenceable(1176) %37, ptr noundef nonnull align 8 dereferenceable(24) %478, ptr noundef %479, ptr noundef @.str.137, ptr noundef @.str.2)
  br label %483

483:                                              ; preds = %473, %466, %459, %452, %445
  %484 = load ptr, ptr %27, align 8, !tbaa !5
  %485 = getelementptr inbounds %"class.glslang::TQualifier", ptr %484, i32 0, i32 1
  %486 = load i64, ptr %485, align 8
  %487 = lshr i64 %486, 52
  %488 = and i64 %487, 1
  %489 = trunc i64 %488 to i1
  br i1 %489, label %490, label %528

490:                                              ; preds = %483
  %491 = load ptr, ptr %25, align 8, !tbaa !5
  %492 = getelementptr inbounds %"class.glslang::TQualifier", ptr %491, i32 0, i32 1
  %493 = load i64, ptr %492, align 8
  %494 = lshr i64 %493, 52
  %495 = and i64 %494, 1
  %496 = trunc i64 %495 to i1
  br i1 %496, label %528, label %497

497:                                              ; preds = %490
  %498 = load ptr, ptr %25, align 8, !tbaa !5
  %499 = getelementptr inbounds %"class.glslang::TQualifier", ptr %498, i32 0, i32 1
  %500 = load i64, ptr %499, align 8
  %501 = lshr i64 %500, 51
  %502 = and i64 %501, 1
  %503 = trunc i64 %502 to i1
  br i1 %503, label %528, label %504

504:                                              ; preds = %497
  %505 = load ptr, ptr %25, align 8, !tbaa !5
  %506 = getelementptr inbounds %"class.glslang::TQualifier", ptr %505, i32 0, i32 1
  %507 = load i64, ptr %506, align 8
  %508 = lshr i64 %507, 50
  %509 = and i64 %508, 1
  %510 = trunc i64 %509 to i1
  br i1 %510, label %528, label %511

511:                                              ; preds = %504
  %512 = load ptr, ptr %25, align 8, !tbaa !5
  %513 = getelementptr inbounds %"class.glslang::TQualifier", ptr %512, i32 0, i32 1
  %514 = load i64, ptr %513, align 8
  %515 = lshr i64 %514, 48
  %516 = and i64 %515, 1
  %517 = trunc i64 %516 to i1
  br i1 %517, label %528, label %518

518:                                              ; preds = %511
  %519 = load ptr, ptr %9, align 8, !tbaa !5
  %520 = load ptr, ptr %519, align 8, !tbaa !36
  %521 = getelementptr inbounds ptr, ptr %520, i64 0
  %522 = load ptr, ptr %521, align 8
  %523 = call noundef nonnull align 8 dereferenceable(24) ptr %522(ptr noundef nonnull align 8 dereferenceable(32) %519)
  %524 = load ptr, ptr %28, align 8, !tbaa !5
  %525 = load ptr, ptr %37, align 8, !tbaa !36
  %526 = getelementptr inbounds ptr, ptr %525, i64 42
  %527 = load ptr, ptr %526, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %527(ptr noundef nonnull align 8 dereferenceable(1176) %37, ptr noundef nonnull align 8 dereferenceable(24) %523, ptr noundef %524, ptr noundef @.str.138, ptr noundef @.str.2)
  br label %528

528:                                              ; preds = %518, %511, %504, %497, %490, %483
  %529 = load ptr, ptr %27, align 8, !tbaa !5
  %530 = getelementptr inbounds %"class.glslang::TQualifier", ptr %529, i32 0, i32 1
  %531 = load i64, ptr %530, align 8
  %532 = lshr i64 %531, 53
  %533 = and i64 %532, 1
  %534 = trunc i64 %533 to i1
  br i1 %534, label %535, label %580

535:                                              ; preds = %528
  %536 = load ptr, ptr %25, align 8, !tbaa !5
  %537 = getelementptr inbounds %"class.glslang::TQualifier", ptr %536, i32 0, i32 1
  %538 = load i64, ptr %537, align 8
  %539 = lshr i64 %538, 53
  %540 = and i64 %539, 1
  %541 = trunc i64 %540 to i1
  br i1 %541, label %580, label %542

542:                                              ; preds = %535
  %543 = load ptr, ptr %25, align 8, !tbaa !5
  %544 = getelementptr inbounds %"class.glslang::TQualifier", ptr %543, i32 0, i32 1
  %545 = load i64, ptr %544, align 8
  %546 = lshr i64 %545, 52
  %547 = and i64 %546, 1
  %548 = trunc i64 %547 to i1
  br i1 %548, label %580, label %549

549:                                              ; preds = %542
  %550 = load ptr, ptr %25, align 8, !tbaa !5
  %551 = getelementptr inbounds %"class.glslang::TQualifier", ptr %550, i32 0, i32 1
  %552 = load i64, ptr %551, align 8
  %553 = lshr i64 %552, 51
  %554 = and i64 %553, 1
  %555 = trunc i64 %554 to i1
  br i1 %555, label %580, label %556

556:                                              ; preds = %549
  %557 = load ptr, ptr %25, align 8, !tbaa !5
  %558 = getelementptr inbounds %"class.glslang::TQualifier", ptr %557, i32 0, i32 1
  %559 = load i64, ptr %558, align 8
  %560 = lshr i64 %559, 50
  %561 = and i64 %560, 1
  %562 = trunc i64 %561 to i1
  br i1 %562, label %580, label %563

563:                                              ; preds = %556
  %564 = load ptr, ptr %25, align 8, !tbaa !5
  %565 = getelementptr inbounds %"class.glslang::TQualifier", ptr %564, i32 0, i32 1
  %566 = load i64, ptr %565, align 8
  %567 = lshr i64 %566, 48
  %568 = and i64 %567, 1
  %569 = trunc i64 %568 to i1
  br i1 %569, label %580, label %570

570:                                              ; preds = %563
  %571 = load ptr, ptr %9, align 8, !tbaa !5
  %572 = load ptr, ptr %571, align 8, !tbaa !36
  %573 = getelementptr inbounds ptr, ptr %572, i64 0
  %574 = load ptr, ptr %573, align 8
  %575 = call noundef nonnull align 8 dereferenceable(24) ptr %574(ptr noundef nonnull align 8 dereferenceable(32) %571)
  %576 = load ptr, ptr %28, align 8, !tbaa !5
  %577 = load ptr, ptr %37, align 8, !tbaa !36
  %578 = getelementptr inbounds ptr, ptr %577, i64 42
  %579 = load ptr, ptr %578, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %579(ptr noundef nonnull align 8 dereferenceable(1176) %37, ptr noundef nonnull align 8 dereferenceable(24) %575, ptr noundef %576, ptr noundef @.str.139, ptr noundef @.str.2)
  br label %580

580:                                              ; preds = %570, %563, %556, %549, %542, %535, %528
  %581 = load ptr, ptr %27, align 8, !tbaa !5
  %582 = getelementptr inbounds %"class.glslang::TQualifier", ptr %581, i32 0, i32 1
  %583 = load i64, ptr %582, align 8
  %584 = lshr i64 %583, 46
  %585 = and i64 %584, 1
  %586 = trunc i64 %585 to i1
  br i1 %586, label %587, label %604

587:                                              ; preds = %580
  %588 = load ptr, ptr %25, align 8, !tbaa !5
  %589 = getelementptr inbounds %"class.glslang::TQualifier", ptr %588, i32 0, i32 1
  %590 = load i64, ptr %589, align 8
  %591 = lshr i64 %590, 46
  %592 = and i64 %591, 1
  %593 = trunc i64 %592 to i1
  br i1 %593, label %604, label %594

594:                                              ; preds = %587
  %595 = load ptr, ptr %9, align 8, !tbaa !5
  %596 = load ptr, ptr %595, align 8, !tbaa !36
  %597 = getelementptr inbounds ptr, ptr %596, i64 0
  %598 = load ptr, ptr %597, align 8
  %599 = call noundef nonnull align 8 dereferenceable(24) ptr %598(ptr noundef nonnull align 8 dereferenceable(32) %595)
  %600 = load ptr, ptr %28, align 8, !tbaa !5
  %601 = load ptr, ptr %37, align 8, !tbaa !36
  %602 = getelementptr inbounds ptr, ptr %601, i64 42
  %603 = load ptr, ptr %602, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %603(ptr noundef nonnull align 8 dereferenceable(1176) %37, ptr noundef nonnull align 8 dereferenceable(24) %599, ptr noundef %600, ptr noundef @.str.140, ptr noundef @.str.2)
  br label %604

604:                                              ; preds = %594, %587, %580
  %605 = load ptr, ptr %27, align 8, !tbaa !5
  %606 = getelementptr inbounds %"class.glslang::TQualifier", ptr %605, i32 0, i32 1
  %607 = load i64, ptr %606, align 8
  %608 = lshr i64 %607, 47
  %609 = and i64 %608, 1
  %610 = trunc i64 %609 to i1
  br i1 %610, label %611, label %628

611:                                              ; preds = %604
  %612 = load ptr, ptr %25, align 8, !tbaa !5
  %613 = getelementptr inbounds %"class.glslang::TQualifier", ptr %612, i32 0, i32 1
  %614 = load i64, ptr %613, align 8
  %615 = lshr i64 %614, 47
  %616 = and i64 %615, 1
  %617 = trunc i64 %616 to i1
  br i1 %617, label %628, label %618

618:                                              ; preds = %611
  %619 = load ptr, ptr %9, align 8, !tbaa !5
  %620 = load ptr, ptr %619, align 8, !tbaa !36
  %621 = getelementptr inbounds ptr, ptr %620, i64 0
  %622 = load ptr, ptr %621, align 8
  %623 = call noundef nonnull align 8 dereferenceable(24) ptr %622(ptr noundef nonnull align 8 dereferenceable(32) %619)
  %624 = load ptr, ptr %28, align 8, !tbaa !5
  %625 = load ptr, ptr %37, align 8, !tbaa !36
  %626 = getelementptr inbounds ptr, ptr %625, i64 42
  %627 = load ptr, ptr %626, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %627(ptr noundef nonnull align 8 dereferenceable(1176) %37, ptr noundef nonnull align 8 dereferenceable(24) %623, ptr noundef %624, ptr noundef @.str.141, ptr noundef @.str.2)
  br label %628

628:                                              ; preds = %618, %611, %604
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #6
  br label %629

629:                                              ; preds = %628, %356, %333
  %630 = load i8, ptr %21, align 1, !tbaa !39, !range !34, !noundef !35
  %631 = trunc i8 %630 to i1
  br i1 %631, label %659, label %632

632:                                              ; preds = %629
  %633 = load ptr, ptr %27, align 8, !tbaa !5
  %634 = call noundef i32 @_ZNK7glslang10TQualifier9getFormatEv(ptr noundef nonnull align 8 dereferenceable(72) %633)
  %635 = load ptr, ptr %25, align 8, !tbaa !5
  %636 = call noundef i32 @_ZNK7glslang10TQualifier9getFormatEv(ptr noundef nonnull align 8 dereferenceable(72) %635)
  %637 = icmp ne i32 %634, %636
  br i1 %637, label %638, label %659

638:                                              ; preds = %632
  %639 = load ptr, ptr %25, align 8, !tbaa !5
  %640 = call noundef zeroext i1 @_ZNK7glslang10TQualifier11isWriteOnlyEv(ptr noundef nonnull align 8 dereferenceable(72) %639)
  br i1 %640, label %641, label %649

641:                                              ; preds = %638
  %642 = load ptr, ptr %25, align 8, !tbaa !5
  %643 = call noundef i32 @_ZNK7glslang10TQualifier9getFormatEv(ptr noundef nonnull align 8 dereferenceable(72) %642)
  %644 = icmp ne i32 %643, 0
  br i1 %644, label %645, label %658

645:                                              ; preds = %641
  %646 = load ptr, ptr %27, align 8, !tbaa !5
  %647 = call noundef i32 @_ZNK7glslang10TQualifier9getFormatEv(ptr noundef nonnull align 8 dereferenceable(72) %646)
  %648 = icmp ne i32 %647, 0
  br i1 %648, label %649, label %658

649:                                              ; preds = %645, %638
  %650 = load ptr, ptr %9, align 8, !tbaa !5
  %651 = load ptr, ptr %650, align 8, !tbaa !36
  %652 = getelementptr inbounds ptr, ptr %651, i64 0
  %653 = load ptr, ptr %652, align 8
  %654 = call noundef nonnull align 8 dereferenceable(24) ptr %653(ptr noundef nonnull align 8 dereferenceable(32) %650)
  %655 = load ptr, ptr %37, align 8, !tbaa !36
  %656 = getelementptr inbounds ptr, ptr %655, i64 42
  %657 = load ptr, ptr %656, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %657(ptr noundef nonnull align 8 dereferenceable(1176) %37, ptr noundef nonnull align 8 dereferenceable(24) %654, ptr noundef @.str.142, ptr noundef @.str.143, ptr noundef @.str.2)
  br label %658

658:                                              ; preds = %649, %645, %641
  br label %659

659:                                              ; preds = %658, %632, %629
  %660 = load i8, ptr %21, align 1, !tbaa !39, !range !34, !noundef !35
  %661 = trunc i8 %660 to i1
  br i1 %661, label %662, label %682

662:                                              ; preds = %659
  %663 = load ptr, ptr %24, align 8, !tbaa !5
  %664 = load ptr, ptr %663, align 8, !tbaa !36
  %665 = getelementptr inbounds ptr, ptr %664, i64 3
  %666 = load ptr, ptr %665, align 8
  %667 = call noundef ptr %666(ptr noundef nonnull align 8 dereferenceable(32) %663)
  %668 = load ptr, ptr %667, align 8, !tbaa !36
  %669 = getelementptr inbounds ptr, ptr %668, i64 30
  %670 = load ptr, ptr %669, align 8
  %671 = call noundef nonnull align 8 dereferenceable(144) ptr %670(ptr noundef nonnull align 8 dereferenceable(176) %667)
  %672 = call noundef zeroext i1 @_ZNK7glslang5TType18contains16BitFloatEv(ptr noundef nonnull align 8 dereferenceable(144) %671)
  br i1 %672, label %673, label %682

673:                                              ; preds = %662
  %674 = load ptr, ptr %9, align 8, !tbaa !5
  %675 = load ptr, ptr %674, align 8, !tbaa !36
  %676 = getelementptr inbounds ptr, ptr %675, i64 0
  %677 = load ptr, ptr %676, align 8
  %678 = call noundef nonnull align 8 dereferenceable(24) ptr %677(ptr noundef nonnull align 8 dereferenceable(32) %674)
  %679 = load ptr, ptr %37, align 8, !tbaa !36
  %680 = getelementptr inbounds ptr, ptr %679, i64 21
  %681 = load ptr, ptr %680, align 8
  call void %681(ptr noundef nonnull align 8 dereferenceable(192) %37, ptr noundef nonnull align 8 dereferenceable(24) %678, ptr noundef @.str.124, ptr noundef @.str.125)
  br label %682

682:                                              ; preds = %673, %662, %659
  %683 = load i8, ptr %21, align 1, !tbaa !39, !range !34, !noundef !35
  %684 = trunc i8 %683 to i1
  br i1 %684, label %685, label %705

685:                                              ; preds = %682
  %686 = load ptr, ptr %24, align 8, !tbaa !5
  %687 = load ptr, ptr %686, align 8, !tbaa !36
  %688 = getelementptr inbounds ptr, ptr %687, i64 3
  %689 = load ptr, ptr %688, align 8
  %690 = call noundef ptr %689(ptr noundef nonnull align 8 dereferenceable(32) %686)
  %691 = load ptr, ptr %690, align 8, !tbaa !36
  %692 = getelementptr inbounds ptr, ptr %691, i64 30
  %693 = load ptr, ptr %692, align 8
  %694 = call noundef nonnull align 8 dereferenceable(144) ptr %693(ptr noundef nonnull align 8 dereferenceable(176) %690)
  %695 = call noundef zeroext i1 @_ZNK7glslang5TType16contains16BitIntEv(ptr noundef nonnull align 8 dereferenceable(144) %694)
  br i1 %695, label %696, label %705

696:                                              ; preds = %685
  %697 = load ptr, ptr %9, align 8, !tbaa !5
  %698 = load ptr, ptr %697, align 8, !tbaa !36
  %699 = getelementptr inbounds ptr, ptr %698, i64 0
  %700 = load ptr, ptr %699, align 8
  %701 = call noundef nonnull align 8 dereferenceable(24) ptr %700(ptr noundef nonnull align 8 dereferenceable(32) %697)
  %702 = load ptr, ptr %37, align 8, !tbaa !36
  %703 = getelementptr inbounds ptr, ptr %702, i64 24
  %704 = load ptr, ptr %703, align 8
  call void %704(ptr noundef nonnull align 8 dereferenceable(192) %37, ptr noundef nonnull align 8 dereferenceable(24) %701, ptr noundef @.str.124, ptr noundef @.str.126)
  br label %705

705:                                              ; preds = %696, %685, %682
  %706 = load i8, ptr %21, align 1, !tbaa !39, !range !34, !noundef !35
  %707 = trunc i8 %706 to i1
  br i1 %707, label %708, label %728

708:                                              ; preds = %705
  %709 = load ptr, ptr %24, align 8, !tbaa !5
  %710 = load ptr, ptr %709, align 8, !tbaa !36
  %711 = getelementptr inbounds ptr, ptr %710, i64 3
  %712 = load ptr, ptr %711, align 8
  %713 = call noundef ptr %712(ptr noundef nonnull align 8 dereferenceable(32) %709)
  %714 = load ptr, ptr %713, align 8, !tbaa !36
  %715 = getelementptr inbounds ptr, ptr %714, i64 30
  %716 = load ptr, ptr %715, align 8
  %717 = call noundef nonnull align 8 dereferenceable(144) ptr %716(ptr noundef nonnull align 8 dereferenceable(176) %713)
  %718 = call noundef zeroext i1 @_ZNK7glslang5TType15contains8BitIntEv(ptr noundef nonnull align 8 dereferenceable(144) %717)
  br i1 %718, label %719, label %728

719:                                              ; preds = %708
  %720 = load ptr, ptr %9, align 8, !tbaa !5
  %721 = load ptr, ptr %720, align 8, !tbaa !36
  %722 = getelementptr inbounds ptr, ptr %721, i64 0
  %723 = load ptr, ptr %722, align 8
  %724 = call noundef nonnull align 8 dereferenceable(24) ptr %723(ptr noundef nonnull align 8 dereferenceable(32) %720)
  %725 = load ptr, ptr %37, align 8, !tbaa !36
  %726 = getelementptr inbounds ptr, ptr %725, i64 27
  %727 = load ptr, ptr %726, align 8
  call void %727(ptr noundef nonnull align 8 dereferenceable(192) %37, ptr noundef nonnull align 8 dereferenceable(24) %724, ptr noundef @.str.124, ptr noundef @.str.127)
  br label %728

728:                                              ; preds = %719, %708, %705
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #6
  br label %729

729:                                              ; preds = %728
  %730 = load i32, ptr %23, align 4, !tbaa !40
  %731 = add nsw i32 %730, 1
  store i32 %731, ptr %23, align 4, !tbaa !40
  br label %233, !llvm.loop !43

732:                                              ; preds = %241
  %733 = load ptr, ptr %20, align 8, !tbaa !5
  call void @_ZNK7glslang13TParseContext27addInputArgumentConversionsERKNS_9TFunctionERP11TIntermNode(ptr noundef nonnull align 8 dereferenceable(24912) %37, ptr noundef nonnull align 8 dereferenceable(328) %733, ptr noundef nonnull align 8 dereferenceable(8) %9)
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #6
  br label %734

734:                                              ; preds = %732, %224
  %735 = load i8, ptr %21, align 1, !tbaa !39, !range !34, !noundef !35
  %736 = trunc i8 %735 to i1
  br i1 %736, label %737, label %749

737:                                              ; preds = %734
  %738 = load ptr, ptr %20, align 8, !tbaa !5
  %739 = load ptr, ptr %738, align 8, !tbaa !36
  %740 = getelementptr inbounds ptr, ptr %739, i64 27
  %741 = load ptr, ptr %740, align 8
  %742 = call noundef i32 %741(ptr noundef nonnull align 8 dereferenceable(328) %738)
  %743 = icmp ne i32 %742, 0
  br i1 %743, label %744, label %749

744:                                              ; preds = %737
  %745 = load ptr, ptr %7, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %29, ptr align 8 %745, i64 24, i1 false), !tbaa.struct !45
  %746 = load ptr, ptr %9, align 8, !tbaa !5
  %747 = load ptr, ptr %20, align 8, !tbaa !5
  %748 = call noundef ptr @_ZN7glslang13TParseContext25handleBuiltInFunctionCallENS_10TSourceLocEP11TIntermNodeRKNS_9TFunctionE(ptr noundef nonnull align 8 dereferenceable(24912) %37, ptr noundef byval(%"struct.glslang::TSourceLoc") align 8 %29, ptr noundef %746, ptr noundef nonnull align 8 dereferenceable(328) %747)
  store ptr %748, ptr %10, align 8, !tbaa !5
  br label %837

749:                                              ; preds = %737, %734
  %750 = load ptr, ptr %20, align 8, !tbaa !5
  %751 = load ptr, ptr %750, align 8, !tbaa !36
  %752 = getelementptr inbounds ptr, ptr %751, i64 27
  %753 = load ptr, ptr %752, align 8
  %754 = call noundef i32 %753(ptr noundef nonnull align 8 dereferenceable(328) %750)
  %755 = icmp eq i32 %754, 6
  br i1 %755, label %756, label %761

756:                                              ; preds = %749
  %757 = load ptr, ptr %7, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %30, ptr align 8 %757, i64 24, i1 false), !tbaa.struct !45
  %758 = load ptr, ptr %9, align 8, !tbaa !5
  %759 = load ptr, ptr %20, align 8, !tbaa !5
  %760 = call noundef ptr @_ZN7glslang13TParseContext25handleBuiltInFunctionCallENS_10TSourceLocEP11TIntermNodeRKNS_9TFunctionE(ptr noundef nonnull align 8 dereferenceable(24912) %37, ptr noundef byval(%"struct.glslang::TSourceLoc") align 8 %30, ptr noundef %758, ptr noundef nonnull align 8 dereferenceable(328) %759)
  store ptr %760, ptr %10, align 8, !tbaa !5
  br label %836

761:                                              ; preds = %749
  %762 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %37, i32 0, i32 7
  %763 = load ptr, ptr %762, align 8, !tbaa !38
  %764 = load ptr, ptr %9, align 8, !tbaa !5
  %765 = load ptr, ptr %20, align 8, !tbaa !5
  %766 = load ptr, ptr %765, align 8, !tbaa !36
  %767 = getelementptr inbounds ptr, ptr %766, i64 12
  %768 = load ptr, ptr %767, align 8
  %769 = call noundef nonnull align 8 dereferenceable(144) ptr %768(ptr noundef nonnull align 8 dereferenceable(328) %765)
  %770 = load ptr, ptr %7, align 8, !tbaa !5
  %771 = call noundef ptr @_ZN7glslang13TIntermediate20setAggregateOperatorEP11TIntermNodeNS_9TOperatorERKNS_5TTypeERKNS_10TSourceLocE(ptr noundef nonnull align 8 dereferenceable(1784) %763, ptr noundef %764, i32 noundef 3, ptr noundef nonnull align 8 dereferenceable(144) %769, ptr noundef nonnull align 8 dereferenceable(24) %770)
  store ptr %771, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #6
  %772 = load ptr, ptr %10, align 8, !tbaa !5
  %773 = load ptr, ptr %772, align 8, !tbaa !36
  %774 = getelementptr inbounds ptr, ptr %773, i64 6
  %775 = load ptr, ptr %774, align 8
  %776 = call noundef ptr %775(ptr noundef nonnull align 8 dereferenceable(32) %772)
  store ptr %776, ptr %31, align 8, !tbaa !5
  %777 = load ptr, ptr %31, align 8, !tbaa !5
  %778 = load ptr, ptr %20, align 8, !tbaa !5
  %779 = load ptr, ptr %778, align 8, !tbaa !36
  %780 = getelementptr inbounds ptr, ptr %779, i64 6
  %781 = load ptr, ptr %780, align 8
  %782 = call noundef nonnull align 8 dereferenceable(40) ptr %781(ptr noundef nonnull align 8 dereferenceable(328) %778)
  %783 = load ptr, ptr %777, align 8, !tbaa !36
  %784 = getelementptr inbounds ptr, ptr %783, i64 52
  %785 = load ptr, ptr %784, align 8
  call void %785(ptr noundef nonnull align 8 dereferenceable(352) %777, ptr noundef nonnull align 8 dereferenceable(40) %782)
  %786 = load i8, ptr %21, align 1, !tbaa !39, !range !34, !noundef !35
  %787 = trunc i8 %786 to i1
  br i1 %787, label %825, label %788

788:                                              ; preds = %761
  %789 = load ptr, ptr %31, align 8, !tbaa !5
  %790 = load ptr, ptr %789, align 8, !tbaa !36
  %791 = getelementptr inbounds ptr, ptr %790, i64 54
  %792 = load ptr, ptr %791, align 8
  call void %792(ptr noundef nonnull align 8 dereferenceable(352) %789)
  %793 = getelementptr inbounds %"class.glslang::TParseContextBase", ptr %37, i32 0, i32 2
  %794 = load ptr, ptr %793, align 8, !tbaa !46
  %795 = call noundef zeroext i1 @_ZN7glslang12TSymbolTable13atGlobalLevelEv(ptr noundef nonnull align 8 dereferenceable(40) %794)
  br i1 %795, label %796, label %813

796:                                              ; preds = %788
  %797 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN7glslang14TParseVersions14requireProfileERKNS_10TSourceLocEiPKc(ptr noundef nonnull align 8 dereferenceable(192) %37, ptr noundef nonnull align 8 dereferenceable(24) %797, i32 noundef -9, ptr noundef @.str.144)
  %798 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %37, i32 0, i32 7
  %799 = load ptr, ptr %798, align 8, !tbaa !38
  %800 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %37, i32 0, i32 3
  %801 = load ptr, ptr %800, align 8, !tbaa !96
  call void @llvm.lifetime.start.p0(i64 40, ptr %32) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #6
  call void @_ZN7glslang14pool_allocatorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %33)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(40) %32, ptr noundef @.str.145, ptr noundef nonnull align 8 dereferenceable(8) %33)
  %802 = load ptr, ptr %20, align 8, !tbaa !5
  %803 = load ptr, ptr %802, align 8, !tbaa !36
  %804 = getelementptr inbounds ptr, ptr %803, i64 6
  %805 = load ptr, ptr %804, align 8
  %806 = invoke noundef nonnull align 8 dereferenceable(40) ptr %805(ptr noundef nonnull align 8 dereferenceable(328) %802)
          to label %807 unwind label %809

807:                                              ; preds = %796
  invoke void @_ZN7glslang13TIntermediate14addToCallGraphER9TInfoSinkRKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEESB_(ptr noundef nonnull align 8 dereferenceable(1784) %799, ptr noundef nonnull align 8 dereferenceable(80) %801, ptr noundef nonnull align 8 dereferenceable(40) %32, ptr noundef nonnull align 8 dereferenceable(40) %806)
          to label %808 unwind label %809

808:                                              ; preds = %807
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %32) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr %32) #6
  br label %824

809:                                              ; preds = %807, %796
  %810 = landingpad { ptr, i32 }
          cleanup
  %811 = extractvalue { ptr, i32 } %810, 0
  store ptr %811, ptr %13, align 8
  %812 = extractvalue { ptr, i32 } %810, 1
  store i32 %812, ptr %14, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %32) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #6
  br label %966

813:                                              ; preds = %788
  %814 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %37, i32 0, i32 7
  %815 = load ptr, ptr %814, align 8, !tbaa !38
  %816 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %37, i32 0, i32 3
  %817 = load ptr, ptr %816, align 8, !tbaa !96
  %818 = getelementptr inbounds %"class.glslang::TParseContext", ptr %37, i32 0, i32 14
  %819 = load ptr, ptr %20, align 8, !tbaa !5
  %820 = load ptr, ptr %819, align 8, !tbaa !36
  %821 = getelementptr inbounds ptr, ptr %820, i64 6
  %822 = load ptr, ptr %821, align 8
  %823 = call noundef nonnull align 8 dereferenceable(40) ptr %822(ptr noundef nonnull align 8 dereferenceable(328) %819)
  call void @_ZN7glslang13TIntermediate14addToCallGraphER9TInfoSinkRKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEESB_(ptr noundef nonnull align 8 dereferenceable(1784) %815, ptr noundef nonnull align 8 dereferenceable(80) %817, ptr noundef nonnull align 8 dereferenceable(40) %818, ptr noundef nonnull align 8 dereferenceable(40) %823)
  br label %824

824:                                              ; preds = %813, %808
  br label %825

825:                                              ; preds = %824, %761
  %826 = load i8, ptr %21, align 1, !tbaa !39, !range !34, !noundef !35
  %827 = trunc i8 %826 to i1
  br i1 %827, label %828, label %832

828:                                              ; preds = %825
  %829 = load ptr, ptr %7, align 8, !tbaa !5
  %830 = load ptr, ptr %20, align 8, !tbaa !5
  %831 = load ptr, ptr %31, align 8, !tbaa !5
  call void @_ZN7glslang13TParseContext17nonOpBuiltInCheckERKNS_10TSourceLocERKNS_9TFunctionERNS_16TIntermAggregateE(ptr noundef nonnull align 8 dereferenceable(24912) %37, ptr noundef nonnull align 8 dereferenceable(24) %829, ptr noundef nonnull align 8 dereferenceable(328) %830, ptr noundef nonnull align 8 dereferenceable(352) %831)
  br label %835

832:                                              ; preds = %825
  %833 = load ptr, ptr %7, align 8, !tbaa !5
  %834 = load ptr, ptr %31, align 8, !tbaa !5
  call void @_ZN7glslang13TParseContext21userFunctionCallCheckERKNS_10TSourceLocERNS_16TIntermAggregateE(ptr noundef nonnull align 8 dereferenceable(24912) %37, ptr noundef nonnull align 8 dereferenceable(24) %833, ptr noundef nonnull align 8 dereferenceable(352) %834)
  br label %835

835:                                              ; preds = %832, %828
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #6
  br label %836

836:                                              ; preds = %835, %756
  br label %837

837:                                              ; preds = %836, %744
  %838 = load ptr, ptr %10, align 8, !tbaa !5
  %839 = load ptr, ptr %838, align 8, !tbaa !36
  %840 = getelementptr inbounds ptr, ptr %839, i64 6
  %841 = load ptr, ptr %840, align 8
  %842 = call noundef ptr %841(ptr noundef nonnull align 8 dereferenceable(32) %838)
  %843 = icmp ne ptr %842, null
  br i1 %843, label %844, label %892

844:                                              ; preds = %837
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #6
  %845 = load ptr, ptr %10, align 8, !tbaa !5
  %846 = load ptr, ptr %845, align 8, !tbaa !36
  %847 = getelementptr inbounds ptr, ptr %846, i64 6
  %848 = load ptr, ptr %847, align 8
  %849 = call noundef ptr %848(ptr noundef nonnull align 8 dereferenceable(32) %845)
  %850 = load ptr, ptr %849, align 8, !tbaa !36
  %851 = getelementptr inbounds ptr, ptr %850, i64 56
  %852 = load ptr, ptr %851, align 8
  %853 = call noundef nonnull align 8 dereferenceable(32) ptr %852(ptr noundef nonnull align 8 dereferenceable(352) %849)
  store ptr %853, ptr %34, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #6
  store i32 0, ptr %35, align 4, !tbaa !40
  br label %854

854:                                              ; preds = %881, %844
  %855 = load i32, ptr %35, align 4, !tbaa !40
  %856 = load ptr, ptr %20, align 8, !tbaa !5
  %857 = load ptr, ptr %856, align 8, !tbaa !36
  %858 = getelementptr inbounds ptr, ptr %857, i64 36
  %859 = load ptr, ptr %858, align 8
  %860 = call noundef i32 %859(ptr noundef nonnull align 8 dereferenceable(328) %856)
  %861 = icmp slt i32 %855, %860
  br i1 %861, label %863, label %862

862:                                              ; preds = %854
  store i32 5, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #6
  br label %884

863:                                              ; preds = %854
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #6
  %864 = load ptr, ptr %20, align 8, !tbaa !5
  %865 = load i32, ptr %35, align 4, !tbaa !40
  %866 = load ptr, ptr %864, align 8, !tbaa !36
  %867 = getelementptr inbounds ptr, ptr %866, i64 40
  %868 = load ptr, ptr %867, align 8
  %869 = call noundef nonnull align 8 dereferenceable(24) ptr %868(ptr noundef nonnull align 8 dereferenceable(328) %864, i32 noundef %865)
  %870 = getelementptr inbounds %"struct.glslang::TParameter", ptr %869, i32 0, i32 1
  %871 = load ptr, ptr %870, align 8, !tbaa !41
  %872 = load ptr, ptr %871, align 8, !tbaa !36
  %873 = getelementptr inbounds ptr, ptr %872, i64 10
  %874 = load ptr, ptr %873, align 8
  %875 = call noundef nonnull align 8 dereferenceable(72) ptr %874(ptr noundef nonnull align 8 dereferenceable(144) %871)
  %876 = getelementptr inbounds %"class.glslang::TQualifier", ptr %875, i32 0, i32 1
  %877 = load i64, ptr %876, align 8
  %878 = and i64 %877, 63
  %879 = trunc i64 %878 to i32
  store i32 %879, ptr %36, align 4, !tbaa !97
  %880 = load ptr, ptr %34, align 8, !tbaa !5
  call void @_ZNSt6vectorIN7glslang17TStorageQualifierENS0_14pool_allocatorIS1_EEE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(32) %880, ptr noundef nonnull align 4 dereferenceable(4) %36)
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #6
  br label %881

881:                                              ; preds = %863
  %882 = load i32, ptr %35, align 4, !tbaa !40
  %883 = add nsw i32 %882, 1
  store i32 %883, ptr %35, align 4, !tbaa !40
  br label %854, !llvm.loop !99

884:                                              ; preds = %862
  %885 = load ptr, ptr %20, align 8, !tbaa !5
  %886 = load ptr, ptr %10, align 8, !tbaa !5
  %887 = load ptr, ptr %886, align 8, !tbaa !36
  %888 = getelementptr inbounds ptr, ptr %887, i64 6
  %889 = load ptr, ptr %888, align 8
  %890 = call noundef ptr %889(ptr noundef nonnull align 8 dereferenceable(32) %886)
  %891 = call noundef ptr @_ZNK7glslang13TParseContext28addOutputArgumentConversionsERKNS_9TFunctionERNS_16TIntermAggregateE(ptr noundef nonnull align 8 dereferenceable(24912) %37, ptr noundef nonnull align 8 dereferenceable(328) %885, ptr noundef nonnull align 8 dereferenceable(352) %890)
  store ptr %891, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #6
  br label %892

892:                                              ; preds = %884, %837
  %893 = load ptr, ptr %10, align 8, !tbaa !5
  %894 = load ptr, ptr %893, align 8, !tbaa !36
  %895 = getelementptr inbounds ptr, ptr %894, i64 3
  %896 = load ptr, ptr %895, align 8
  %897 = call noundef ptr %896(ptr noundef nonnull align 8 dereferenceable(176) %893)
  %898 = load ptr, ptr %897, align 8, !tbaa !36
  %899 = getelementptr inbounds ptr, ptr %898, i64 30
  %900 = load ptr, ptr %899, align 8
  %901 = call noundef nonnull align 8 dereferenceable(144) ptr %900(ptr noundef nonnull align 8 dereferenceable(176) %897)
  %902 = call noundef zeroext i1 @_ZNK7glslang5TType9isCoopMatEv(ptr noundef nonnull align 8 dereferenceable(144) %901)
  br i1 %902, label %903, label %951

903:                                              ; preds = %892
  %904 = load ptr, ptr %10, align 8, !tbaa !5
  %905 = load ptr, ptr %904, align 8, !tbaa !36
  %906 = getelementptr inbounds ptr, ptr %905, i64 3
  %907 = load ptr, ptr %906, align 8
  %908 = call noundef ptr %907(ptr noundef nonnull align 8 dereferenceable(176) %904)
  %909 = load ptr, ptr %908, align 8, !tbaa !36
  %910 = getelementptr inbounds ptr, ptr %909, i64 30
  %911 = load ptr, ptr %910, align 8
  %912 = call noundef nonnull align 8 dereferenceable(144) ptr %911(ptr noundef nonnull align 8 dereferenceable(176) %908)
  %913 = load ptr, ptr %912, align 8, !tbaa !36
  %914 = getelementptr inbounds ptr, ptr %913, i64 44
  %915 = load ptr, ptr %914, align 8
  %916 = call noundef zeroext i1 %915(ptr noundef nonnull align 8 dereferenceable(144) %912)
  br i1 %916, label %951, label %917

917:                                              ; preds = %903
  %918 = load ptr, ptr %20, align 8, !tbaa !5
  %919 = load ptr, ptr %918, align 8, !tbaa !36
  %920 = getelementptr inbounds ptr, ptr %919, i64 27
  %921 = load ptr, ptr %920, align 8
  %922 = call noundef i32 %921(ptr noundef nonnull align 8 dereferenceable(328) %918)
  %923 = icmp eq i32 %922, 450
  br i1 %923, label %924, label %925

924:                                              ; preds = %917
  br label %927

925:                                              ; preds = %917
  call void @__assert_fail(ptr noundef @.str.146, ptr noundef @.str.68, i32 noundef 1475, ptr noundef @__PRETTY_FUNCTION__._ZN7glslang13TParseContext18handleFunctionCallERKNS_10TSourceLocEPNS_9TFunctionEP11TIntermNode) #7
  unreachable

926:                                              ; No predecessors!
  br label %927

927:                                              ; preds = %926, %924
  %928 = load ptr, ptr %10, align 8, !tbaa !5
  %929 = load ptr, ptr %10, align 8, !tbaa !5
  %930 = load ptr, ptr %929, align 8, !tbaa !36
  %931 = getelementptr inbounds ptr, ptr %930, i64 6
  %932 = load ptr, ptr %931, align 8
  %933 = call noundef ptr %932(ptr noundef nonnull align 8 dereferenceable(32) %929)
  %934 = load ptr, ptr %933, align 8, !tbaa !36
  %935 = getelementptr inbounds ptr, ptr %934, i64 50
  %936 = load ptr, ptr %935, align 8
  %937 = call noundef nonnull align 8 dereferenceable(32) ptr %936(ptr noundef nonnull align 8 dereferenceable(352) %933)
  %938 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %937, i64 noundef 2) #6
  %939 = load ptr, ptr %938, align 8, !tbaa !5
  %940 = load ptr, ptr %939, align 8, !tbaa !36
  %941 = getelementptr inbounds ptr, ptr %940, i64 3
  %942 = load ptr, ptr %941, align 8
  %943 = call noundef ptr %942(ptr noundef nonnull align 8 dereferenceable(32) %939)
  %944 = load ptr, ptr %943, align 8, !tbaa !36
  %945 = getelementptr inbounds ptr, ptr %944, i64 30
  %946 = load ptr, ptr %945, align 8
  %947 = call noundef nonnull align 8 dereferenceable(144) ptr %946(ptr noundef nonnull align 8 dereferenceable(176) %943)
  %948 = load ptr, ptr %928, align 8, !tbaa !36
  %949 = getelementptr inbounds ptr, ptr %948, i64 29
  %950 = load ptr, ptr %949, align 8
  call void %950(ptr noundef nonnull align 8 dereferenceable(176) %928, ptr noundef nonnull align 8 dereferenceable(144) %947)
  br label %951

951:                                              ; preds = %927, %903, %892
  br label %952

952:                                              ; preds = %951, %142
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #6
  br label %953

953:                                              ; preds = %952, %140
  br label %954

954:                                              ; preds = %953, %64
  %955 = load ptr, ptr %10, align 8, !tbaa !5
  %956 = icmp eq ptr %955, null
  br i1 %956, label %957, label %962

957:                                              ; preds = %954
  %958 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %37, i32 0, i32 7
  %959 = load ptr, ptr %958, align 8, !tbaa !38
  %960 = load ptr, ptr %7, align 8, !tbaa !5
  %961 = call noundef ptr @_ZNK7glslang13TIntermediate16addConstantUnionEdNS_10TBasicTypeERKNS_10TSourceLocEb(ptr noundef nonnull align 8 dereferenceable(1784) %959, double noundef 0.000000e+00, i32 noundef 1, ptr noundef nonnull align 8 dereferenceable(24) %960, i1 noundef zeroext false)
  store ptr %961, ptr %10, align 8, !tbaa !5
  br label %962

962:                                              ; preds = %957, %954
  %963 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %963, ptr %5, align 8
  store i32 1, ptr %11, align 4
  br label %964

964:                                              ; preds = %962, %54
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #6
  %965 = load ptr, ptr %5, align 8
  ret ptr %965

966:                                              ; preds = %809, %141
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #6
  br label %967

967:                                              ; preds = %966
  %968 = load ptr, ptr %13, align 8
  %969 = load i32, ptr %14, align 4
  %970 = insertvalue { ptr, i32 } poison, ptr %968, 0
  %971 = insertvalue { ptr, i32 } %970, i32 %969, 1
  resume { ptr, i32 } %971
}

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN7glslang13TParseContext16constructorErrorERKNS_10TSourceLocEP11TIntermNodeRNS_9TFunctionENS_9TOperatorERNS_5TTypeE(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef, ptr noundef nonnull align 8 dereferenceable(328), i32 noundef, ptr noundef nonnull align 8 dereferenceable(144)) #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN7glslang13TParseContext12findFunctionERKNS_10TSourceLocERKNS_9TFunctionERb(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(328), ptr noundef nonnull align 1 dereferenceable(1)) #3 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN7glslang13TParseContext25handleBuiltInFunctionCallENS_10TSourceLocEP11TIntermNodeRKNS_9TFunctionE(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef byval(%"struct.glslang::TSourceLoc") align 8, ptr noundef, ptr noundef nonnull align 8 dereferenceable(328)) #3 align 2

declare void @_ZN7glslang13TIntermediate14addToCallGraphER9TInfoSinkRKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEESB_(ptr noundef nonnull align 8 dereferenceable(1784), ptr noundef nonnull align 8 dereferenceable(80), ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(40)) #4

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

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

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

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


; 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 }
%"struct.glslang::TSourceLoc" = type { ptr, i32, i32, 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.123 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.124 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.125 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.126 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.127 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.128 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.129 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.130 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.131 = external hidden unnamed_addr constant [84 x i8], align 1
@.str.132 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.133 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.134 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.135 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.136 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.137 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.138 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.139 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.140 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.141 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.142 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.143 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.144 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.145 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.146 = external hidden unnamed_addr constant [58 x i8], align 1
@__PRETTY_FUNCTION__._ZN7glslang13TParseContext18handleFunctionCallERKNS_10TSourceLocEPNS_9TFunctionEP11TIntermNode = external hidden unnamed_addr constant [105 x i8], align 1

declare i32 @__gxx_personality_v0(...)

; 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 ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang5TTypeC2ENS_10TBasicTypeENS_17TStorageQualifierEiiib(ptr noundef nonnull align 8 dereferenceable(144), i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i1 noundef zeroext) unnamed_addr #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 uwtable
declare dso_local noundef zeroext i1 @_ZNK7glslang5TType11isReferenceEv(ptr noundef nonnull align 8 dereferenceable(144)) local_unnamed_addr #2 align 2

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

declare noundef ptr @_ZNK7glslang13TIntermediate16addConstantUnionEdNS_10TBasicTypeERKNS_10TSourceLocEb(ptr noundef nonnull align 8 dereferenceable(1784), double noundef, i32 noundef, ptr noundef nonnull align 8 dereferenceable(24), i1 noundef zeroext) local_unnamed_addr #3

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

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

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

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

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

; 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 @_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 uwtable
declare dso_local noundef ptr @_ZN7glslang13TParseContext14addConstructorERKNS_10TSourceLocEP11TIntermNodeRKNS_5TTypeE(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef, ptr noundef nonnull align 8 dereferenceable(144)) 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 nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK7glslang10TQualifier14isSpirvLiteralEv(ptr noundef nonnull align 8 dereferenceable(72)) local_unnamed_addr #0 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local noundef ptr @_ZN7glslang13TParseContext18handleFunctionCallERKNS_10TSourceLocEPNS_9TFunctionEP11TIntermNode(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 ptr, align 8
  %6 = alloca %"class.glslang::TType", align 8
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca %"class.glslang::pool_allocator.14", align 8
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.glslang::pool_allocator.14", align 8
  %12 = alloca i8, align 1
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca %"class.glslang::pool_allocator.14", align 8
  %15 = alloca i32, align 4
  store ptr %3, ptr %5, align 8, !tbaa !5
  %16 = getelementptr inbounds i8, ptr %0, i64 40
  %17 = load i32, ptr %16, align 8, !tbaa !9
  %.not = icmp eq i32 %17, 0
  br i1 %.not, label %24, label %18

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

22:                                               ; preds = %18
  %23 = tail call noundef ptr @_ZN7glslang13TParseContext26vkRelaxedRemapFunctionCallERKNS_10TSourceLocEPNS_9TFunctionEP11TIntermNode(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef %2, ptr noundef %3)
  %.not153 = icmp eq ptr %23, null
  br i1 %.not153, label %24, label %639

24:                                               ; preds = %22, %18, %4
  %25 = load ptr, ptr %2, align 8, !tbaa !36
  %26 = getelementptr inbounds i8, ptr %25, i64 216
  %27 = load ptr, ptr %26, align 8
  %28 = tail call noundef i32 %27(ptr noundef nonnull align 8 dereferenceable(328) %2)
  %29 = icmp eq i32 %28, 590
  br i1 %29, label %30, label %32

30:                                               ; preds = %24
  %31 = tail call noundef ptr @_ZN7glslang13TParseContext18handleLengthMethodERKNS_10TSourceLocEPNS_9TFunctionEP11TIntermNode(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull %2, ptr noundef %3)
  br label %633

32:                                               ; preds = %24
  %33 = load ptr, ptr %2, align 8, !tbaa !36
  %34 = getelementptr inbounds i8, ptr %33, i64 216
  %35 = load ptr, ptr %34, align 8
  %36 = tail call noundef i32 %35(ptr noundef nonnull align 8 dereferenceable(328) %2)
  %.not154 = icmp eq i32 %36, 0
  br i1 %.not154, label %84, label %37

37:                                               ; preds = %32
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %6) #5
  call void @_ZN7glslang5TTypeC2ENS_10TBasicTypeENS_17TStorageQualifierEiiib(ptr noundef nonnull align 8 dereferenceable(144) %6, i32 noundef 0, i32 noundef 0, i32 noundef 1, i32 noundef 0, i32 noundef 0, i1 noundef zeroext false)
  %38 = load ptr, ptr %5, align 8, !tbaa !5
  %39 = load ptr, ptr %2, align 8, !tbaa !36
  %40 = getelementptr inbounds i8, ptr %39, i64 216
  %41 = load ptr, ptr %40, align 8
  %42 = invoke noundef i32 %41(ptr noundef nonnull align 8 dereferenceable(328) %2)
          to label %43 unwind label %66

43:                                               ; preds = %37
  %44 = invoke noundef zeroext i1 @_ZN7glslang13TParseContext16constructorErrorERKNS_10TSourceLocEP11TIntermNodeRNS_9TFunctionENS_9TOperatorERNS_5TTypeE(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef %38, ptr noundef nonnull align 8 dereferenceable(328) %2, i32 noundef %42, ptr noundef nonnull align 8 dereferenceable(144) %6)
          to label %45 unwind label %66

45:                                               ; preds = %43
  br i1 %44, label %82, label %46

46:                                               ; preds = %45
  %47 = load ptr, ptr %5, align 8, !tbaa !5
  %48 = invoke noundef ptr @_ZN7glslang13TParseContext14addConstructorERKNS_10TSourceLocEP11TIntermNodeRKNS_5TTypeE(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef %47, ptr noundef nonnull align 8 dereferenceable(144) %6)
          to label %49 unwind label %66

49:                                               ; preds = %46
  %50 = icmp eq ptr %48, null
  br i1 %50, label %51, label %82

51:                                               ; preds = %49
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %7) #5
  %52 = getelementptr inbounds i8, ptr %0, i64 56
  %53 = load ptr, ptr %52, align 8, !tbaa !38
  %54 = invoke noundef zeroext i1 @_ZNK7glslang13TIntermediate15getEnhancedMsgsEv(ptr noundef nonnull align 8 dereferenceable(1784) %53)
          to label %55 unwind label %68

55:                                               ; preds = %51
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #5
  invoke void @_ZN7glslang14pool_allocatorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %9)
          to label %56 unwind label %70

56:                                               ; preds = %55
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(40) %8, ptr noundef nonnull @.str.2, ptr noundef nonnull align 8 dereferenceable(8) %9)
          to label %57 unwind label %70

57:                                               ; preds = %56
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #5
  invoke void @_ZN7glslang14pool_allocatorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %11)
          to label %58 unwind label %72

58:                                               ; preds = %57
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(40) %10, ptr noundef nonnull @.str.2, ptr noundef nonnull align 8 dereferenceable(8) %11)
          to label %59 unwind label %72

59:                                               ; preds = %58
  invoke void @_ZNK7glslang5TType17getCompleteStringEbbbbNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEES7_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %7, ptr noundef nonnull align 8 dereferenceable(144) %6, i1 noundef zeroext %54, i1 noundef zeroext true, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef nonnull %8, ptr noundef nonnull %10)
          to label %60 unwind label %74

60:                                               ; preds = %59
  %61 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %7) #5
  %62 = load ptr, ptr %0, align 8, !tbaa !36
  %63 = getelementptr inbounds i8, ptr %62, i64 336
  %64 = load ptr, ptr %63, align 8
  invoke 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.123, ptr noundef %61, ptr noundef nonnull @.str.2)
          to label %65 unwind label %76

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

66:                                               ; preds = %46, %43, %37
  %67 = landingpad { ptr, i32 }
          cleanup
  br label %83

68:                                               ; preds = %51
  %69 = landingpad { ptr, i32 }
          cleanup
  br label %81

70:                                               ; preds = %56, %55
  %71 = landingpad { ptr, i32 }
          cleanup
  br label %80

72:                                               ; preds = %58, %57
  %73 = landingpad { ptr, i32 }
          cleanup
  br label %79

74:                                               ; preds = %59
  %75 = landingpad { ptr, i32 }
          cleanup
  br label %78

76:                                               ; preds = %60
  %77 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %7) #5
  br label %78

78:                                               ; preds = %76, %74
  %.pn = phi { ptr, i32 } [ %77, %76 ], [ %75, %74 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %10) #5
  br label %79

79:                                               ; preds = %78, %72
  %.pn.pn = phi { ptr, i32 } [ %.pn, %78 ], [ %73, %72 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %8) #5
  br label %80

80:                                               ; preds = %79, %70
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %79 ], [ %71, %70 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #5
  br label %81

81:                                               ; preds = %80, %68
  %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn, %80 ], [ %69, %68 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %7) #5
  br label %83

82:                                               ; preds = %49, %65, %45
  %.1 = phi ptr [ null, %45 ], [ null, %65 ], [ %48, %49 ]
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %6) #5
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %6) #5
  br label %633

83:                                               ; preds = %81, %66
  %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn, %81 ], [ %67, %66 ]
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %6) #5
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %6) #5
  br label %640

84:                                               ; preds = %32
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %12) #5
  store i8 0, ptr %12, align 1, !tbaa !39
  %85 = call noundef ptr @_ZN7glslang13TParseContext12findFunctionERKNS_10TSourceLocERKNS_9TFunctionERb(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(328) %2, ptr noundef nonnull align 1 dereferenceable(1) %12)
  %.not155 = icmp eq ptr %85, null
  br i1 %.not155, label %632, label %86

86:                                               ; preds = %84
  %87 = load i8, ptr %12, align 1, !tbaa !39, !range !34, !noundef !35
  %88 = trunc nuw i8 %87 to i1
  br i1 %88, label %89, label %111

89:                                               ; preds = %86
  %90 = load ptr, ptr %85, align 8, !tbaa !36
  %91 = getelementptr inbounds i8, ptr %90, i64 136
  %92 = load ptr, ptr %91, align 8
  %93 = call noundef i32 %92(ptr noundef nonnull align 8 dereferenceable(33) %85)
  %.not156 = icmp eq i32 %93, 0
  br i1 %.not156, label %111, label %94

94:                                               ; preds = %89
  %95 = load ptr, ptr %85, align 8, !tbaa !36
  %96 = getelementptr inbounds i8, ptr %95, i64 136
  %97 = load ptr, ptr %96, align 8
  %98 = call noundef i32 %97(ptr noundef nonnull align 8 dereferenceable(33) %85)
  %99 = load ptr, ptr %85, align 8, !tbaa !36
  %100 = getelementptr inbounds i8, ptr %99, i64 144
  %101 = load ptr, ptr %100, align 8
  %102 = call noundef ptr %101(ptr noundef nonnull align 8 dereferenceable(33) %85)
  %103 = load ptr, ptr %85, align 8, !tbaa !36
  %104 = getelementptr inbounds i8, ptr %103, i64 24
  %105 = load ptr, ptr %104, align 8
  %106 = call noundef nonnull align 8 dereferenceable(40) ptr %105(ptr noundef nonnull align 8 dereferenceable(33) %85)
  %107 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %106) #5
  %108 = load ptr, ptr %0, align 8, !tbaa !36
  %109 = getelementptr inbounds i8, ptr %108, i64 40
  %110 = load ptr, ptr %109, align 8
  call void %110(ptr noundef nonnull align 8 dereferenceable(192) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef %98, ptr noundef %102, ptr noundef %107)
  br label %111

111:                                              ; preds = %94, %89, %86
  %112 = load i8, ptr %12, align 1, !tbaa !39, !range !34, !noundef !35
  %113 = trunc nuw i8 %112 to i1
  br i1 %113, label %114, label %124

114:                                              ; preds = %111
  %115 = load ptr, ptr %85, align 8, !tbaa !36
  %116 = getelementptr inbounds i8, ptr %115, i64 96
  %117 = load ptr, ptr %116, align 8
  %118 = call noundef nonnull align 8 dereferenceable(144) ptr %117(ptr noundef nonnull align 8 dereferenceable(328) %85)
  %119 = call noundef zeroext i1 @_ZNK7glslang5TType18contains16BitFloatEv(ptr noundef nonnull align 8 dereferenceable(144) %118)
  br i1 %119, label %120, label %124

120:                                              ; preds = %114
  %121 = load ptr, ptr %0, align 8, !tbaa !36
  %122 = getelementptr inbounds i8, ptr %121, i64 168
  %123 = load ptr, ptr %122, align 8
  call void %123(ptr noundef nonnull align 8 dereferenceable(192) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.124, ptr noundef nonnull @.str.125)
  br label %124

124:                                              ; preds = %120, %114, %111
  %125 = load i8, ptr %12, align 1, !tbaa !39, !range !34, !noundef !35
  %126 = trunc nuw i8 %125 to i1
  br i1 %126, label %127, label %137

127:                                              ; preds = %124
  %128 = load ptr, ptr %85, align 8, !tbaa !36
  %129 = getelementptr inbounds i8, ptr %128, i64 96
  %130 = load ptr, ptr %129, align 8
  %131 = call noundef nonnull align 8 dereferenceable(144) ptr %130(ptr noundef nonnull align 8 dereferenceable(328) %85)
  %132 = call noundef zeroext i1 @_ZNK7glslang5TType16contains16BitIntEv(ptr noundef nonnull align 8 dereferenceable(144) %131)
  br i1 %132, label %133, label %137

133:                                              ; preds = %127
  %134 = load ptr, ptr %0, align 8, !tbaa !36
  %135 = getelementptr inbounds i8, ptr %134, i64 192
  %136 = load ptr, ptr %135, align 8
  call void %136(ptr noundef nonnull align 8 dereferenceable(192) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.124, ptr noundef nonnull @.str.126)
  br label %137

137:                                              ; preds = %133, %127, %124
  %138 = load i8, ptr %12, align 1, !tbaa !39, !range !34, !noundef !35
  %139 = trunc nuw i8 %138 to i1
  br i1 %139, label %140, label %150

140:                                              ; preds = %137
  %141 = load ptr, ptr %85, align 8, !tbaa !36
  %142 = getelementptr inbounds i8, ptr %141, i64 96
  %143 = load ptr, ptr %142, align 8
  %144 = call noundef nonnull align 8 dereferenceable(144) ptr %143(ptr noundef nonnull align 8 dereferenceable(328) %85)
  %145 = call noundef zeroext i1 @_ZNK7glslang5TType15contains8BitIntEv(ptr noundef nonnull align 8 dereferenceable(144) %144)
  br i1 %145, label %146, label %150

146:                                              ; preds = %140
  %147 = load ptr, ptr %0, align 8, !tbaa !36
  %148 = getelementptr inbounds i8, ptr %147, i64 216
  %149 = load ptr, ptr %148, align 8
  call void %149(ptr noundef nonnull align 8 dereferenceable(192) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.124, ptr noundef nonnull @.str.127)
  br label %150

150:                                              ; preds = %146, %140, %137
  %151 = load ptr, ptr %5, align 8, !tbaa !5
  %.not157 = icmp eq ptr %151, null
  br i1 %.not157, label %461, label %152

152:                                              ; preds = %150
  %153 = load ptr, ptr %151, align 8, !tbaa !36
  %154 = getelementptr inbounds i8, ptr %153, i64 48
  %155 = load ptr, ptr %154, align 8
  %156 = call noundef ptr %155(ptr noundef nonnull align 8 dereferenceable(32) %151)
  %157 = load ptr, ptr %85, align 8, !tbaa !36
  %158 = getelementptr inbounds i8, ptr %157, i64 288
  %159 = load ptr, ptr %158, align 8
  %160 = call noundef i32 %159(ptr noundef nonnull align 8 dereferenceable(328) %85)
  %161 = icmp sgt i32 %160, 0
  br i1 %161, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %152
  %.not160 = icmp eq ptr %156, null
  br label %162

._crit_edge:                                      ; preds = %454, %152
  call void @_ZNK7glslang13TParseContext27addInputArgumentConversionsERKNS_9TFunctionERP11TIntermNode(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(328) %85, ptr noundef nonnull align 8 dereferenceable(8) %5)
  br label %461

162:                                              ; preds = %.lr.ph, %454
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %454 ]
  %163 = load ptr, ptr %85, align 8, !tbaa !36
  %164 = getelementptr inbounds i8, ptr %163, i64 288
  %165 = load ptr, ptr %164, align 8
  %166 = call noundef i32 %165(ptr noundef nonnull align 8 dereferenceable(328) %85)
  %167 = icmp eq i32 %166, 1
  %or.cond207 = or i1 %.not160, %167
  br i1 %or.cond207, label %174, label %168

168:                                              ; preds = %162
  %169 = load ptr, ptr %156, align 8, !tbaa !36
  %170 = getelementptr inbounds i8, ptr %169, i64 400
  %171 = load ptr, ptr %170, align 8
  %172 = call noundef nonnull align 8 dereferenceable(32) ptr %171(ptr noundef nonnull align 8 dereferenceable(352) %156)
  %173 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %172, i64 noundef %indvars.iv) #5
  br label %174

174:                                              ; preds = %162, %168
  %.in = phi ptr [ %173, %168 ], [ %5, %162 ]
  %175 = load ptr, ptr %.in, align 8, !tbaa !5
  %176 = load ptr, ptr %85, align 8, !tbaa !36
  %177 = getelementptr inbounds i8, ptr %176, i64 320
  %178 = load ptr, ptr %177, align 8
  %179 = trunc nuw nsw i64 %indvars.iv to i32
  %180 = call noundef nonnull align 8 dereferenceable(24) ptr %178(ptr noundef nonnull align 8 dereferenceable(328) %85, i32 noundef %179)
  %181 = getelementptr inbounds i8, ptr %180, i64 8
  %182 = load ptr, ptr %181, align 8, !tbaa !40
  %183 = load ptr, ptr %182, align 8, !tbaa !36
  %184 = getelementptr inbounds i8, ptr %183, i64 80
  %185 = load ptr, ptr %184, align 8
  %186 = call noundef nonnull align 8 dereferenceable(72) ptr %185(ptr noundef nonnull align 8 dereferenceable(144) %182)
  %187 = call noundef zeroext i1 @_ZNK7glslang10TQualifier13isParamOutputEv(ptr noundef nonnull align 8 dereferenceable(72) %186)
  br i1 %187, label %188, label %209

188:                                              ; preds = %174
  %189 = load ptr, ptr %5, align 8, !tbaa !5
  %190 = load ptr, ptr %189, align 8, !tbaa !36
  %191 = load ptr, ptr %190, align 8
  %192 = call noundef nonnull align 8 dereferenceable(24) ptr %191(ptr noundef nonnull align 8 dereferenceable(32) %189)
  %193 = load ptr, ptr %175, align 8, !tbaa !36
  %194 = getelementptr inbounds i8, ptr %193, i64 24
  %195 = load ptr, ptr %194, align 8
  %196 = call noundef ptr %195(ptr noundef nonnull align 8 dereferenceable(32) %175)
  %197 = load ptr, ptr %0, align 8, !tbaa !36
  %198 = getelementptr inbounds i8, ptr %197, i64 504
  %199 = load ptr, ptr %198, align 8
  %200 = call noundef zeroext i1 %199(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(24) %192, ptr noundef nonnull @.str.128, ptr noundef %196)
  br i1 %200, label %201, label %209

201:                                              ; preds = %188
  %202 = load ptr, ptr %5, align 8, !tbaa !5
  %203 = load ptr, ptr %202, align 8, !tbaa !36
  %204 = load ptr, ptr %203, align 8
  %205 = call noundef nonnull align 8 dereferenceable(24) ptr %204(ptr noundef nonnull align 8 dereferenceable(32) %202)
  %206 = load ptr, ptr %0, align 8, !tbaa !36
  %207 = getelementptr inbounds i8, ptr %206, i64 336
  %208 = load ptr, ptr %207, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %208(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %205, ptr noundef nonnull @.str.129, ptr noundef nonnull @.str.130, ptr noundef nonnull @.str.2)
  br label %209

209:                                              ; preds = %188, %201, %174
  %210 = call noundef zeroext i1 @_ZNK7glslang10TQualifier14isSpirvLiteralEv(ptr noundef nonnull align 8 dereferenceable(72) %186)
  br i1 %210, label %211, label %229

211:                                              ; preds = %209
  %212 = load ptr, ptr %175, align 8, !tbaa !36
  %213 = getelementptr inbounds i8, ptr %212, i64 24
  %214 = load ptr, ptr %213, align 8
  %215 = call noundef ptr %214(ptr noundef nonnull align 8 dereferenceable(32) %175)
  %216 = load ptr, ptr %215, align 8, !tbaa !36
  %217 = getelementptr inbounds i8, ptr %216, i64 264
  %218 = load ptr, ptr %217, align 8
  %219 = call noundef nonnull align 8 dereferenceable(72) ptr %218(ptr noundef nonnull align 8 dereferenceable(176) %215)
  %220 = call noundef zeroext i1 @_ZNK7glslang10TQualifier18isFrontEndConstantEv(ptr noundef nonnull align 8 dereferenceable(72) %219)
  br i1 %220, label %229, label %221

221:                                              ; preds = %211
  %222 = load ptr, ptr %5, align 8, !tbaa !5
  %223 = load ptr, ptr %222, align 8, !tbaa !36
  %224 = load ptr, ptr %223, align 8
  %225 = call noundef nonnull align 8 dereferenceable(24) ptr %224(ptr noundef nonnull align 8 dereferenceable(32) %222)
  %226 = load ptr, ptr %0, align 8, !tbaa !36
  %227 = getelementptr inbounds i8, ptr %226, i64 336
  %228 = load ptr, ptr %227, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %228(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %225, ptr noundef nonnull @.str.131, ptr noundef nonnull @.str.132, ptr noundef nonnull @.str.2)
  br label %229

229:                                              ; preds = %211, %221, %209
  %230 = load ptr, ptr %175, align 8, !tbaa !36
  %231 = getelementptr inbounds i8, ptr %230, i64 24
  %232 = load ptr, ptr %231, align 8
  %233 = call noundef ptr %232(ptr noundef nonnull align 8 dereferenceable(32) %175)
  %234 = load ptr, ptr %233, align 8, !tbaa !36
  %235 = getelementptr inbounds i8, ptr %234, i64 240
  %236 = load ptr, ptr %235, align 8
  %237 = call noundef nonnull align 8 dereferenceable(144) ptr %236(ptr noundef nonnull align 8 dereferenceable(176) %233)
  %238 = load ptr, ptr %237, align 8, !tbaa !36
  %239 = getelementptr inbounds i8, ptr %238, i64 88
  %240 = load ptr, ptr %239, align 8
  %241 = call noundef nonnull align 8 dereferenceable(72) ptr %240(ptr noundef nonnull align 8 dereferenceable(144) %237)
  %242 = call noundef zeroext i1 @_ZNK7glslang10TQualifier8isMemoryEv(ptr noundef nonnull align 8 dereferenceable(72) %241)
  br i1 %242, label %243, label %371

243:                                              ; preds = %229
  %244 = load ptr, ptr %237, align 8, !tbaa !36
  %245 = getelementptr inbounds i8, ptr %244, i64 392
  %246 = load ptr, ptr %245, align 8
  %247 = call noundef zeroext i1 %246(ptr noundef nonnull align 8 dereferenceable(144) %237)
  br i1 %247, label %250, label %248

248:                                              ; preds = %243
  %249 = call noundef zeroext i1 @_ZNK7glslang5TType11isReferenceEv(ptr noundef nonnull align 8 dereferenceable(144) %237)
  br i1 %249, label %250, label %371

250:                                              ; preds = %248, %243
  %251 = getelementptr inbounds i8, ptr %241, i64 8
  %252 = load i64, ptr %251, align 8
  %253 = and i64 %252, 562949953421312
  %.not161 = icmp eq i64 %253, 0
  br i1 %.not161, label %266, label %254

254:                                              ; preds = %250
  %255 = getelementptr inbounds i8, ptr %186, i64 8
  %256 = load i64, ptr %255, align 8
  %257 = and i64 %256, 562949953421312
  %.not162 = icmp eq i64 %257, 0
  br i1 %.not162, label %258, label %266

258:                                              ; preds = %254
  %259 = load ptr, ptr %5, align 8, !tbaa !5
  %260 = load ptr, ptr %259, align 8, !tbaa !36
  %261 = load ptr, ptr %260, align 8
  %262 = call noundef nonnull align 8 dereferenceable(24) ptr %261(ptr noundef nonnull align 8 dereferenceable(32) %259)
  %263 = load ptr, ptr %0, align 8, !tbaa !36
  %264 = getelementptr inbounds i8, ptr %263, i64 336
  %265 = load ptr, ptr %264, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %265(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %262, ptr noundef nonnull @.str.133, ptr noundef nonnull @.str.134, ptr noundef nonnull @.str.2)
  %.pre = load i64, ptr %251, align 8
  br label %266

266:                                              ; preds = %258, %254, %250
  %267 = phi i64 [ %.pre, %258 ], [ %252, %254 ], [ %252, %250 ]
  %268 = and i64 %267, 281474976710656
  %.not163 = icmp eq i64 %268, 0
  br i1 %.not163, label %281, label %269

269:                                              ; preds = %266
  %270 = getelementptr inbounds i8, ptr %186, i64 8
  %271 = load i64, ptr %270, align 8
  %272 = and i64 %271, 1407374883553280
  %or.cond = icmp eq i64 %272, 0
  br i1 %or.cond, label %273, label %281

273:                                              ; preds = %269
  %274 = load ptr, ptr %5, align 8, !tbaa !5
  %275 = load ptr, ptr %274, align 8, !tbaa !36
  %276 = load ptr, ptr %275, align 8
  %277 = call noundef nonnull align 8 dereferenceable(24) ptr %276(ptr noundef nonnull align 8 dereferenceable(32) %274)
  %278 = load ptr, ptr %0, align 8, !tbaa !36
  %279 = getelementptr inbounds i8, ptr %278, i64 336
  %280 = load ptr, ptr %279, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %280(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %277, ptr noundef nonnull @.str.133, ptr noundef nonnull @.str.135, ptr noundef nonnull @.str.2)
  %.pre214 = load i64, ptr %251, align 8
  br label %281

281:                                              ; preds = %273, %269, %266
  %282 = phi i64 [ %.pre214, %273 ], [ %267, %269 ], [ %267, %266 ]
  %283 = and i64 %282, 1125899906842624
  %.not166 = icmp eq i64 %283, 0
  br i1 %.not166, label %296, label %284

284:                                              ; preds = %281
  %285 = getelementptr inbounds i8, ptr %186, i64 8
  %286 = load i64, ptr %285, align 8
  %287 = and i64 %286, 1407374883553280
  %or.cond197 = icmp eq i64 %287, 0
  br i1 %or.cond197, label %288, label %296

288:                                              ; preds = %284
  %289 = load ptr, ptr %5, align 8, !tbaa !5
  %290 = load ptr, ptr %289, align 8, !tbaa !36
  %291 = load ptr, ptr %290, align 8
  %292 = call noundef nonnull align 8 dereferenceable(24) ptr %291(ptr noundef nonnull align 8 dereferenceable(32) %289)
  %293 = load ptr, ptr %0, align 8, !tbaa !36
  %294 = getelementptr inbounds i8, ptr %293, i64 336
  %295 = load ptr, ptr %294, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %295(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %292, ptr noundef nonnull @.str.133, ptr noundef nonnull @.str.136, ptr noundef nonnull @.str.2)
  %.pre215 = load i64, ptr %251, align 8
  br label %296

296:                                              ; preds = %288, %284, %281
  %297 = phi i64 [ %.pre215, %288 ], [ %282, %284 ], [ %282, %281 ]
  %298 = and i64 %297, 2251799813685248
  %.not169 = icmp eq i64 %298, 0
  br i1 %.not169, label %311, label %299

299:                                              ; preds = %296
  %300 = getelementptr inbounds i8, ptr %186, i64 8
  %301 = load i64, ptr %300, align 8
  %302 = and i64 %301, 3659174697238528
  %or.cond199 = icmp eq i64 %302, 0
  br i1 %or.cond199, label %303, label %311

303:                                              ; preds = %299
  %304 = load ptr, ptr %5, align 8, !tbaa !5
  %305 = load ptr, ptr %304, align 8, !tbaa !36
  %306 = load ptr, ptr %305, align 8
  %307 = call noundef nonnull align 8 dereferenceable(24) ptr %306(ptr noundef nonnull align 8 dereferenceable(32) %304)
  %308 = load ptr, ptr %0, align 8, !tbaa !36
  %309 = getelementptr inbounds i8, ptr %308, i64 336
  %310 = load ptr, ptr %309, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %310(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %307, ptr noundef nonnull @.str.133, ptr noundef nonnull @.str.137, ptr noundef nonnull @.str.2)
  %.pre216 = load i64, ptr %251, align 8
  br label %311

311:                                              ; preds = %303, %299, %296
  %312 = phi i64 [ %.pre216, %303 ], [ %297, %299 ], [ %297, %296 ]
  %313 = and i64 %312, 4503599627370496
  %.not173 = icmp eq i64 %313, 0
  br i1 %.not173, label %326, label %314

314:                                              ; preds = %311
  %315 = getelementptr inbounds i8, ptr %186, i64 8
  %316 = load i64, ptr %315, align 8
  %317 = and i64 %316, 8162774324609024
  %or.cond202 = icmp eq i64 %317, 0
  br i1 %or.cond202, label %318, label %326

318:                                              ; preds = %314
  %319 = load ptr, ptr %5, align 8, !tbaa !5
  %320 = load ptr, ptr %319, align 8, !tbaa !36
  %321 = load ptr, ptr %320, align 8
  %322 = call noundef nonnull align 8 dereferenceable(24) ptr %321(ptr noundef nonnull align 8 dereferenceable(32) %319)
  %323 = load ptr, ptr %0, align 8, !tbaa !36
  %324 = getelementptr inbounds i8, ptr %323, i64 336
  %325 = load ptr, ptr %324, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %325(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %322, ptr noundef nonnull @.str.133, ptr noundef nonnull @.str.138, ptr noundef nonnull @.str.2)
  %.pre217 = load i64, ptr %251, align 8
  br label %326

326:                                              ; preds = %318, %314, %311
  %327 = phi i64 [ %.pre217, %318 ], [ %312, %314 ], [ %312, %311 ]
  %328 = and i64 %327, 9007199254740992
  %.not178 = icmp eq i64 %328, 0
  br i1 %.not178, label %341, label %329

329:                                              ; preds = %326
  %330 = getelementptr inbounds i8, ptr %186, i64 8
  %331 = load i64, ptr %330, align 8
  %332 = and i64 %331, 17169973579350016
  %or.cond206 = icmp eq i64 %332, 0
  br i1 %or.cond206, label %333, label %341

333:                                              ; preds = %329
  %334 = load ptr, ptr %5, align 8, !tbaa !5
  %335 = load ptr, ptr %334, align 8, !tbaa !36
  %336 = load ptr, ptr %335, align 8
  %337 = call noundef nonnull align 8 dereferenceable(24) ptr %336(ptr noundef nonnull align 8 dereferenceable(32) %334)
  %338 = load ptr, ptr %0, align 8, !tbaa !36
  %339 = getelementptr inbounds i8, ptr %338, i64 336
  %340 = load ptr, ptr %339, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %340(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %337, ptr noundef nonnull @.str.133, ptr noundef nonnull @.str.139, ptr noundef nonnull @.str.2)
  %.pre218 = load i64, ptr %251, align 8
  br label %341

341:                                              ; preds = %333, %329, %326
  %342 = phi i64 [ %.pre218, %333 ], [ %327, %329 ], [ %327, %326 ]
  %343 = and i64 %342, 70368744177664
  %.not184 = icmp eq i64 %343, 0
  br i1 %.not184, label %356, label %344

344:                                              ; preds = %341
  %345 = getelementptr inbounds i8, ptr %186, i64 8
  %346 = load i64, ptr %345, align 8
  %347 = and i64 %346, 70368744177664
  %.not185 = icmp eq i64 %347, 0
  br i1 %.not185, label %348, label %356

348:                                              ; preds = %344
  %349 = load ptr, ptr %5, align 8, !tbaa !5
  %350 = load ptr, ptr %349, align 8, !tbaa !36
  %351 = load ptr, ptr %350, align 8
  %352 = call noundef nonnull align 8 dereferenceable(24) ptr %351(ptr noundef nonnull align 8 dereferenceable(32) %349)
  %353 = load ptr, ptr %0, align 8, !tbaa !36
  %354 = getelementptr inbounds i8, ptr %353, i64 336
  %355 = load ptr, ptr %354, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %355(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %352, ptr noundef nonnull @.str.133, ptr noundef nonnull @.str.140, ptr noundef nonnull @.str.2)
  %.pre219 = load i64, ptr %251, align 8
  br label %356

356:                                              ; preds = %348, %344, %341
  %357 = phi i64 [ %.pre219, %348 ], [ %342, %344 ], [ %342, %341 ]
  %358 = and i64 %357, 140737488355328
  %.not186 = icmp eq i64 %358, 0
  br i1 %.not186, label %371, label %359

359:                                              ; preds = %356
  %360 = getelementptr inbounds i8, ptr %186, i64 8
  %361 = load i64, ptr %360, align 8
  %362 = and i64 %361, 140737488355328
  %.not187 = icmp eq i64 %362, 0
  br i1 %.not187, label %363, label %371

363:                                              ; preds = %359
  %364 = load ptr, ptr %5, align 8, !tbaa !5
  %365 = load ptr, ptr %364, align 8, !tbaa !36
  %366 = load ptr, ptr %365, align 8
  %367 = call noundef nonnull align 8 dereferenceable(24) ptr %366(ptr noundef nonnull align 8 dereferenceable(32) %364)
  %368 = load ptr, ptr %0, align 8, !tbaa !36
  %369 = getelementptr inbounds i8, ptr %368, i64 336
  %370 = load ptr, ptr %369, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %370(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %367, ptr noundef nonnull @.str.133, ptr noundef nonnull @.str.141, ptr noundef nonnull @.str.2)
  br label %371

371:                                              ; preds = %356, %359, %363, %248, %229
  %372 = load i8, ptr %12, align 1, !tbaa !39, !range !34, !noundef !35
  %373 = trunc nuw i8 %372 to i1
  br i1 %373, label %391, label %374

374:                                              ; preds = %371
  %375 = call noundef i32 @_ZNK7glslang10TQualifier9getFormatEv(ptr noundef nonnull align 8 dereferenceable(72) %241)
  %376 = call noundef i32 @_ZNK7glslang10TQualifier9getFormatEv(ptr noundef nonnull align 8 dereferenceable(72) %186)
  %.not188 = icmp eq i32 %375, %376
  br i1 %.not188, label %391, label %377

377:                                              ; preds = %374
  %378 = call noundef zeroext i1 @_ZNK7glslang10TQualifier11isWriteOnlyEv(ptr noundef nonnull align 8 dereferenceable(72) %186)
  br i1 %378, label %379, label %383

379:                                              ; preds = %377
  %380 = call noundef i32 @_ZNK7glslang10TQualifier9getFormatEv(ptr noundef nonnull align 8 dereferenceable(72) %186)
  %.not189 = icmp eq i32 %380, 0
  br i1 %.not189, label %391, label %381

381:                                              ; preds = %379
  %382 = call noundef i32 @_ZNK7glslang10TQualifier9getFormatEv(ptr noundef nonnull align 8 dereferenceable(72) %241)
  %.not190 = icmp eq i32 %382, 0
  br i1 %.not190, label %391, label %383

383:                                              ; preds = %381, %377
  %384 = load ptr, ptr %5, align 8, !tbaa !5
  %385 = load ptr, ptr %384, align 8, !tbaa !36
  %386 = load ptr, ptr %385, align 8
  %387 = call noundef nonnull align 8 dereferenceable(24) ptr %386(ptr noundef nonnull align 8 dereferenceable(32) %384)
  %388 = load ptr, ptr %0, align 8, !tbaa !36
  %389 = getelementptr inbounds i8, ptr %388, i64 336
  %390 = load ptr, ptr %389, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %390(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %387, ptr noundef nonnull @.str.142, ptr noundef nonnull @.str.143, ptr noundef nonnull @.str.2)
  br label %391

391:                                              ; preds = %379, %381, %383, %374, %371
  %392 = load i8, ptr %12, align 1, !tbaa !39, !range !34, !noundef !35
  %393 = trunc nuw i8 %392 to i1
  br i1 %393, label %394, label %412

394:                                              ; preds = %391
  %395 = load ptr, ptr %175, align 8, !tbaa !36
  %396 = getelementptr inbounds i8, ptr %395, i64 24
  %397 = load ptr, ptr %396, align 8
  %398 = call noundef ptr %397(ptr noundef nonnull align 8 dereferenceable(32) %175)
  %399 = load ptr, ptr %398, align 8, !tbaa !36
  %400 = getelementptr inbounds i8, ptr %399, i64 240
  %401 = load ptr, ptr %400, align 8
  %402 = call noundef nonnull align 8 dereferenceable(144) ptr %401(ptr noundef nonnull align 8 dereferenceable(176) %398)
  %403 = call noundef zeroext i1 @_ZNK7glslang5TType18contains16BitFloatEv(ptr noundef nonnull align 8 dereferenceable(144) %402)
  br i1 %403, label %404, label %412

404:                                              ; preds = %394
  %405 = load ptr, ptr %5, align 8, !tbaa !5
  %406 = load ptr, ptr %405, align 8, !tbaa !36
  %407 = load ptr, ptr %406, align 8
  %408 = call noundef nonnull align 8 dereferenceable(24) ptr %407(ptr noundef nonnull align 8 dereferenceable(32) %405)
  %409 = load ptr, ptr %0, align 8, !tbaa !36
  %410 = getelementptr inbounds i8, ptr %409, i64 168
  %411 = load ptr, ptr %410, align 8
  call void %411(ptr noundef nonnull align 8 dereferenceable(192) %0, ptr noundef nonnull align 8 dereferenceable(24) %408, ptr noundef nonnull @.str.124, ptr noundef nonnull @.str.125)
  br label %412

412:                                              ; preds = %404, %394, %391
  %413 = load i8, ptr %12, align 1, !tbaa !39, !range !34, !noundef !35
  %414 = trunc nuw i8 %413 to i1
  br i1 %414, label %415, label %433

415:                                              ; preds = %412
  %416 = load ptr, ptr %175, align 8, !tbaa !36
  %417 = getelementptr inbounds i8, ptr %416, i64 24
  %418 = load ptr, ptr %417, align 8
  %419 = call noundef ptr %418(ptr noundef nonnull align 8 dereferenceable(32) %175)
  %420 = load ptr, ptr %419, align 8, !tbaa !36
  %421 = getelementptr inbounds i8, ptr %420, i64 240
  %422 = load ptr, ptr %421, align 8
  %423 = call noundef nonnull align 8 dereferenceable(144) ptr %422(ptr noundef nonnull align 8 dereferenceable(176) %419)
  %424 = call noundef zeroext i1 @_ZNK7glslang5TType16contains16BitIntEv(ptr noundef nonnull align 8 dereferenceable(144) %423)
  br i1 %424, label %425, label %433

425:                                              ; preds = %415
  %426 = load ptr, ptr %5, align 8, !tbaa !5
  %427 = load ptr, ptr %426, align 8, !tbaa !36
  %428 = load ptr, ptr %427, align 8
  %429 = call noundef nonnull align 8 dereferenceable(24) ptr %428(ptr noundef nonnull align 8 dereferenceable(32) %426)
  %430 = load ptr, ptr %0, align 8, !tbaa !36
  %431 = getelementptr inbounds i8, ptr %430, i64 192
  %432 = load ptr, ptr %431, align 8
  call void %432(ptr noundef nonnull align 8 dereferenceable(192) %0, ptr noundef nonnull align 8 dereferenceable(24) %429, ptr noundef nonnull @.str.124, ptr noundef nonnull @.str.126)
  br label %433

433:                                              ; preds = %425, %415, %412
  %434 = load i8, ptr %12, align 1, !tbaa !39, !range !34, !noundef !35
  %435 = trunc nuw i8 %434 to i1
  br i1 %435, label %436, label %454

436:                                              ; preds = %433
  %437 = load ptr, ptr %175, align 8, !tbaa !36
  %438 = getelementptr inbounds i8, ptr %437, i64 24
  %439 = load ptr, ptr %438, align 8
  %440 = call noundef ptr %439(ptr noundef nonnull align 8 dereferenceable(32) %175)
  %441 = load ptr, ptr %440, align 8, !tbaa !36
  %442 = getelementptr inbounds i8, ptr %441, i64 240
  %443 = load ptr, ptr %442, align 8
  %444 = call noundef nonnull align 8 dereferenceable(144) ptr %443(ptr noundef nonnull align 8 dereferenceable(176) %440)
  %445 = call noundef zeroext i1 @_ZNK7glslang5TType15contains8BitIntEv(ptr noundef nonnull align 8 dereferenceable(144) %444)
  br i1 %445, label %446, label %454

446:                                              ; preds = %436
  %447 = load ptr, ptr %5, align 8, !tbaa !5
  %448 = load ptr, ptr %447, align 8, !tbaa !36
  %449 = load ptr, ptr %448, align 8
  %450 = call noundef nonnull align 8 dereferenceable(24) ptr %449(ptr noundef nonnull align 8 dereferenceable(32) %447)
  %451 = load ptr, ptr %0, align 8, !tbaa !36
  %452 = getelementptr inbounds i8, ptr %451, i64 216
  %453 = load ptr, ptr %452, align 8
  call void %453(ptr noundef nonnull align 8 dereferenceable(192) %0, ptr noundef nonnull align 8 dereferenceable(24) %450, ptr noundef nonnull @.str.124, ptr noundef nonnull @.str.127)
  br label %454

454:                                              ; preds = %446, %436, %433
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %455 = load ptr, ptr %85, align 8, !tbaa !36
  %456 = getelementptr inbounds i8, ptr %455, i64 288
  %457 = load ptr, ptr %456, align 8
  %458 = call noundef i32 %457(ptr noundef nonnull align 8 dereferenceable(328) %85)
  %459 = sext i32 %458 to i64
  %460 = icmp slt i64 %indvars.iv.next, %459
  br i1 %460, label %162, label %._crit_edge, !llvm.loop !42

461:                                              ; preds = %._crit_edge, %150
  %462 = load i8, ptr %12, align 1, !tbaa !39, !range !34, !noundef !35
  %463 = trunc nuw i8 %462 to i1
  br i1 %463, label %464, label %472

464:                                              ; preds = %461
  %465 = load ptr, ptr %85, align 8, !tbaa !36
  %466 = getelementptr inbounds i8, ptr %465, i64 216
  %467 = load ptr, ptr %466, align 8
  %468 = call noundef i32 %467(ptr noundef nonnull align 8 dereferenceable(328) %85)
  %.not158 = icmp eq i32 %468, 0
  br i1 %.not158, label %472, label %469

469:                                              ; preds = %464
  %470 = load ptr, ptr %5, align 8, !tbaa !5
  %471 = call noundef ptr @_ZN7glslang13TParseContext25handleBuiltInFunctionCallENS_10TSourceLocEP11TIntermNodeRKNS_9TFunctionE(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull byval(%"struct.glslang::TSourceLoc") align 8 %1, ptr noundef %470, ptr noundef nonnull align 8 dereferenceable(328) %85)
  br label %536

472:                                              ; preds = %464, %461
  %473 = load ptr, ptr %85, align 8, !tbaa !36
  %474 = getelementptr inbounds i8, ptr %473, i64 216
  %475 = load ptr, ptr %474, align 8
  %476 = call noundef i32 %475(ptr noundef nonnull align 8 dereferenceable(328) %85)
  %477 = icmp eq i32 %476, 6
  br i1 %477, label %478, label %481

478:                                              ; preds = %472
  %479 = load ptr, ptr %5, align 8, !tbaa !5
  %480 = call noundef ptr @_ZN7glslang13TParseContext25handleBuiltInFunctionCallENS_10TSourceLocEP11TIntermNodeRKNS_9TFunctionE(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull byval(%"struct.glslang::TSourceLoc") align 8 %1, ptr noundef %479, ptr noundef nonnull align 8 dereferenceable(328) %85)
  br label %536

481:                                              ; preds = %472
  %482 = getelementptr inbounds i8, ptr %0, i64 56
  %483 = load ptr, ptr %482, align 8, !tbaa !38
  %484 = load ptr, ptr %5, align 8, !tbaa !5
  %485 = load ptr, ptr %85, align 8, !tbaa !36
  %486 = getelementptr inbounds i8, ptr %485, i64 96
  %487 = load ptr, ptr %486, align 8
  %488 = call noundef nonnull align 8 dereferenceable(144) ptr %487(ptr noundef nonnull align 8 dereferenceable(328) %85)
  %489 = call noundef ptr @_ZN7glslang13TIntermediate20setAggregateOperatorEP11TIntermNodeNS_9TOperatorERKNS_5TTypeERKNS_10TSourceLocE(ptr noundef nonnull align 8 dereferenceable(1784) %483, ptr noundef %484, i32 noundef 3, ptr noundef nonnull align 8 dereferenceable(144) %488, ptr noundef nonnull align 8 dereferenceable(24) %1)
  %490 = load ptr, ptr %489, align 8, !tbaa !36
  %491 = getelementptr inbounds i8, ptr %490, i64 48
  %492 = load ptr, ptr %491, align 8
  %493 = call noundef ptr %492(ptr noundef nonnull align 8 dereferenceable(32) %489)
  %494 = load ptr, ptr %85, align 8, !tbaa !36
  %495 = getelementptr inbounds i8, ptr %494, i64 48
  %496 = load ptr, ptr %495, align 8
  %497 = call noundef nonnull align 8 dereferenceable(40) ptr %496(ptr noundef nonnull align 8 dereferenceable(328) %85)
  %498 = load ptr, ptr %493, align 8, !tbaa !36
  %499 = getelementptr inbounds i8, ptr %498, i64 416
  %500 = load ptr, ptr %499, align 8
  call void %500(ptr noundef nonnull align 8 dereferenceable(352) %493, ptr noundef nonnull align 8 dereferenceable(40) %497)
  %501 = load i8, ptr %12, align 1, !tbaa !39, !range !34, !noundef !35
  %502 = trunc nuw i8 %501 to i1
  br i1 %502, label %531, label %503

503:                                              ; preds = %481
  %504 = load ptr, ptr %493, align 8, !tbaa !36
  %505 = getelementptr inbounds i8, ptr %504, i64 432
  %506 = load ptr, ptr %505, align 8
  call void %506(ptr noundef nonnull align 8 dereferenceable(352) %493)
  %507 = getelementptr inbounds i8, ptr %0, i64 200
  %508 = load ptr, ptr %507, align 8, !tbaa !44
  %509 = call noundef zeroext i1 @_ZN7glslang12TSymbolTable13atGlobalLevelEv(ptr noundef nonnull align 8 dereferenceable(40) %508)
  br i1 %509, label %510, label %522

510:                                              ; preds = %503
  call void @_ZN7glslang14TParseVersions14requireProfileERKNS_10TSourceLocEiPKc(ptr noundef nonnull align 8 dereferenceable(192) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef -9, ptr noundef nonnull @.str.144)
  %511 = load ptr, ptr %482, align 8, !tbaa !38
  %512 = getelementptr inbounds i8, ptr %0, i64 16
  %513 = load ptr, ptr %512, align 8, !tbaa !94
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %13) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #5
  call void @_ZN7glslang14pool_allocatorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %14)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(40) %13, ptr noundef nonnull @.str.145, ptr noundef nonnull align 8 dereferenceable(8) %14)
  %514 = load ptr, ptr %85, align 8, !tbaa !36
  %515 = getelementptr inbounds i8, ptr %514, i64 48
  %516 = load ptr, ptr %515, align 8
  %517 = invoke noundef nonnull align 8 dereferenceable(40) ptr %516(ptr noundef nonnull align 8 dereferenceable(328) %85)
          to label %518 unwind label %520

518:                                              ; preds = %510
  invoke void @_ZN7glslang13TIntermediate14addToCallGraphER9TInfoSinkRKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEESB_(ptr noundef nonnull align 8 dereferenceable(1784) %511, ptr noundef nonnull align 8 dereferenceable(80) %513, ptr noundef nonnull align 8 dereferenceable(40) %13, ptr noundef nonnull align 8 dereferenceable(40) %517)
          to label %519 unwind label %520

519:                                              ; preds = %518
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %13) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #5
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %13) #5
  br label %531

520:                                              ; preds = %518, %510
  %521 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %13) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #5
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %13) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #5
  br label %640

522:                                              ; preds = %503
  %523 = load ptr, ptr %482, align 8, !tbaa !38
  %524 = getelementptr inbounds i8, ptr %0, i64 16
  %525 = load ptr, ptr %524, align 8, !tbaa !94
  %526 = getelementptr inbounds i8, ptr %0, i64 24648
  %527 = load ptr, ptr %85, align 8, !tbaa !36
  %528 = getelementptr inbounds i8, ptr %527, i64 48
  %529 = load ptr, ptr %528, align 8
  %530 = call noundef nonnull align 8 dereferenceable(40) ptr %529(ptr noundef nonnull align 8 dereferenceable(328) %85)
  call void @_ZN7glslang13TIntermediate14addToCallGraphER9TInfoSinkRKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEESB_(ptr noundef nonnull align 8 dereferenceable(1784) %523, ptr noundef nonnull align 8 dereferenceable(80) %525, ptr noundef nonnull align 8 dereferenceable(40) %526, ptr noundef nonnull align 8 dereferenceable(40) %530)
  br label %531

531:                                              ; preds = %519, %522, %481
  %532 = load i8, ptr %12, align 1, !tbaa !39, !range !34, !noundef !35
  %533 = trunc nuw i8 %532 to i1
  br i1 %533, label %534, label %535

534:                                              ; preds = %531
  call void @_ZN7glslang13TParseContext17nonOpBuiltInCheckERKNS_10TSourceLocERKNS_9TFunctionERNS_16TIntermAggregateE(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(328) %85, ptr noundef nonnull align 8 dereferenceable(352) %493)
  br label %536

535:                                              ; preds = %531
  call void @_ZN7glslang13TParseContext21userFunctionCallCheckERKNS_10TSourceLocERNS_16TIntermAggregateE(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(352) %493)
  br label %536

536:                                              ; preds = %534, %535, %478, %469
  %.2 = phi ptr [ %471, %469 ], [ %480, %478 ], [ %489, %535 ], [ %489, %534 ]
  %537 = load ptr, ptr %.2, align 8, !tbaa !36
  %538 = getelementptr inbounds i8, ptr %537, i64 48
  %539 = load ptr, ptr %538, align 8
  %540 = call noundef ptr %539(ptr noundef nonnull align 8 dereferenceable(32) %.2)
  %.not159 = icmp eq ptr %540, null
  br i1 %.not159, label %580, label %541

541:                                              ; preds = %536
  %542 = load ptr, ptr %.2, align 8, !tbaa !36
  %543 = getelementptr inbounds i8, ptr %542, i64 48
  %544 = load ptr, ptr %543, align 8
  %545 = call noundef ptr %544(ptr noundef nonnull align 8 dereferenceable(32) %.2)
  %546 = load ptr, ptr %545, align 8, !tbaa !36
  %547 = getelementptr inbounds i8, ptr %546, i64 448
  %548 = load ptr, ptr %547, align 8
  %549 = call noundef nonnull align 8 dereferenceable(32) ptr %548(ptr noundef nonnull align 8 dereferenceable(352) %545)
  %550 = load ptr, ptr %85, align 8, !tbaa !36
  %551 = getelementptr inbounds i8, ptr %550, i64 288
  %552 = load ptr, ptr %551, align 8
  %553 = call noundef i32 %552(ptr noundef nonnull align 8 dereferenceable(328) %85)
  %554 = icmp sgt i32 %553, 0
  br i1 %554, label %.lr.ph211, label %._crit_edge212

._crit_edge212:                                   ; preds = %.lr.ph211, %541
  %555 = load ptr, ptr %.2, align 8, !tbaa !36
  %556 = getelementptr inbounds i8, ptr %555, i64 48
  %557 = load ptr, ptr %556, align 8
  %558 = call noundef ptr %557(ptr noundef nonnull align 8 dereferenceable(32) %.2)
  %559 = call noundef ptr @_ZNK7glslang13TParseContext28addOutputArgumentConversionsERKNS_9TFunctionERNS_16TIntermAggregateE(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(328) %85, ptr noundef nonnull align 8 dereferenceable(352) %558)
  br label %580

.lr.ph211:                                        ; preds = %541, %.lr.ph211
  %.0209 = phi i32 [ %574, %.lr.ph211 ], [ 0, %541 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #5
  %560 = load ptr, ptr %85, align 8, !tbaa !36
  %561 = getelementptr inbounds i8, ptr %560, i64 320
  %562 = load ptr, ptr %561, align 8
  %563 = call noundef nonnull align 8 dereferenceable(24) ptr %562(ptr noundef nonnull align 8 dereferenceable(328) %85, i32 noundef %.0209)
  %564 = getelementptr inbounds i8, ptr %563, i64 8
  %565 = load ptr, ptr %564, align 8, !tbaa !40
  %566 = load ptr, ptr %565, align 8, !tbaa !36
  %567 = getelementptr inbounds i8, ptr %566, i64 80
  %568 = load ptr, ptr %567, align 8
  %569 = call noundef nonnull align 8 dereferenceable(72) ptr %568(ptr noundef nonnull align 8 dereferenceable(144) %565)
  %570 = getelementptr inbounds i8, ptr %569, i64 8
  %571 = load i64, ptr %570, align 8
  %572 = trunc i64 %571 to i32
  %573 = and i32 %572, 63
  store i32 %573, ptr %15, align 4, !tbaa !95
  call void @_ZNSt6vectorIN7glslang17TStorageQualifierENS0_14pool_allocatorIS1_EEE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(32) %549, ptr noundef nonnull align 4 dereferenceable(4) %15)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #5
  %574 = add nuw nsw i32 %.0209, 1
  %575 = load ptr, ptr %85, align 8, !tbaa !36
  %576 = getelementptr inbounds i8, ptr %575, i64 288
  %577 = load ptr, ptr %576, align 8
  %578 = call noundef i32 %577(ptr noundef nonnull align 8 dereferenceable(328) %85)
  %579 = icmp slt i32 %574, %578
  br i1 %579, label %.lr.ph211, label %._crit_edge212, !llvm.loop !97

580:                                              ; preds = %._crit_edge212, %536
  %.3 = phi ptr [ %559, %._crit_edge212 ], [ %.2, %536 ]
  %581 = load ptr, ptr %.3, align 8, !tbaa !36
  %582 = getelementptr inbounds i8, ptr %581, i64 24
  %583 = load ptr, ptr %582, align 8
  %584 = call noundef ptr %583(ptr noundef nonnull align 8 dereferenceable(176) %.3)
  %585 = load ptr, ptr %584, align 8, !tbaa !36
  %586 = getelementptr inbounds i8, ptr %585, i64 240
  %587 = load ptr, ptr %586, align 8
  %588 = call noundef nonnull align 8 dereferenceable(144) ptr %587(ptr noundef nonnull align 8 dereferenceable(176) %584)
  %589 = call noundef zeroext i1 @_ZNK7glslang5TType9isCoopMatEv(ptr noundef nonnull align 8 dereferenceable(144) %588)
  br i1 %589, label %590, label %632

590:                                              ; preds = %580
  %591 = load ptr, ptr %.3, align 8, !tbaa !36
  %592 = getelementptr inbounds i8, ptr %591, i64 24
  %593 = load ptr, ptr %592, align 8
  %594 = call noundef ptr %593(ptr noundef nonnull align 8 dereferenceable(176) %.3)
  %595 = load ptr, ptr %594, align 8, !tbaa !36
  %596 = getelementptr inbounds i8, ptr %595, i64 240
  %597 = load ptr, ptr %596, align 8
  %598 = call noundef nonnull align 8 dereferenceable(144) ptr %597(ptr noundef nonnull align 8 dereferenceable(176) %594)
  %599 = load ptr, ptr %598, align 8, !tbaa !36
  %600 = getelementptr inbounds i8, ptr %599, i64 352
  %601 = load ptr, ptr %600, align 8
  %602 = call noundef zeroext i1 %601(ptr noundef nonnull align 8 dereferenceable(144) %598)
  br i1 %602, label %632, label %603

603:                                              ; preds = %590
  %604 = load ptr, ptr %85, align 8, !tbaa !36
  %605 = getelementptr inbounds i8, ptr %604, i64 216
  %606 = load ptr, ptr %605, align 8
  %607 = call noundef i32 %606(ptr noundef nonnull align 8 dereferenceable(328) %85)
  %608 = icmp eq i32 %607, 450
  br i1 %608, label %610, label %609

609:                                              ; preds = %603
  call void @__assert_fail(ptr noundef nonnull @.str.146, ptr noundef nonnull @.str.68, i32 noundef 1475, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN7glslang13TParseContext18handleFunctionCallERKNS_10TSourceLocEPNS_9TFunctionEP11TIntermNode) #6
  unreachable

610:                                              ; preds = %603
  %611 = load ptr, ptr %.3, align 8, !tbaa !36
  %612 = getelementptr inbounds i8, ptr %611, i64 48
  %613 = load ptr, ptr %612, align 8
  %614 = call noundef ptr %613(ptr noundef nonnull align 8 dereferenceable(32) %.3)
  %615 = load ptr, ptr %614, align 8, !tbaa !36
  %616 = getelementptr inbounds i8, ptr %615, i64 400
  %617 = load ptr, ptr %616, align 8
  %618 = call noundef nonnull align 8 dereferenceable(32) ptr %617(ptr noundef nonnull align 8 dereferenceable(352) %614)
  %619 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %618, i64 noundef 2) #5
  %620 = load ptr, ptr %619, align 8, !tbaa !5
  %621 = load ptr, ptr %620, align 8, !tbaa !36
  %622 = getelementptr inbounds i8, ptr %621, i64 24
  %623 = load ptr, ptr %622, align 8
  %624 = call noundef ptr %623(ptr noundef nonnull align 8 dereferenceable(32) %620)
  %625 = load ptr, ptr %624, align 8, !tbaa !36
  %626 = getelementptr inbounds i8, ptr %625, i64 240
  %627 = load ptr, ptr %626, align 8
  %628 = call noundef nonnull align 8 dereferenceable(144) ptr %627(ptr noundef nonnull align 8 dereferenceable(176) %624)
  %629 = load ptr, ptr %.3, align 8, !tbaa !36
  %630 = getelementptr inbounds i8, ptr %629, i64 232
  %631 = load ptr, ptr %630, align 8
  call void %631(ptr noundef nonnull align 8 dereferenceable(176) %.3, ptr noundef nonnull align 8 dereferenceable(144) %628)
  br label %632

632:                                              ; preds = %580, %590, %610, %84
  %.4 = phi ptr [ %.3, %590 ], [ %.3, %610 ], [ %.3, %580 ], [ null, %84 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #5
  br label %633

633:                                              ; preds = %82, %632, %30
  %.5 = phi ptr [ %31, %30 ], [ %.1, %82 ], [ %.4, %632 ]
  %634 = icmp eq ptr %.5, null
  br i1 %634, label %635, label %639

635:                                              ; preds = %633
  %636 = getelementptr inbounds i8, ptr %0, i64 56
  %637 = load ptr, ptr %636, align 8, !tbaa !38
  %638 = call noundef ptr @_ZNK7glslang13TIntermediate16addConstantUnionEdNS_10TBasicTypeERKNS_10TSourceLocEb(ptr noundef nonnull align 8 dereferenceable(1784) %637, double noundef 0.000000e+00, i32 noundef 1, ptr noundef nonnull align 8 dereferenceable(24) %1, i1 noundef zeroext false)
  br label %639

639:                                              ; preds = %633, %635, %22
  %.0131 = phi ptr [ %23, %22 ], [ %638, %635 ], [ %.5, %633 ]
  ret ptr %.0131

640:                                              ; preds = %520, %83
  %.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn, %83 ], [ %521, %520 ]
  resume { ptr, i32 } %.pn.pn.pn.pn.pn.pn
}

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN7glslang13TParseContext25handleBuiltInFunctionCallENS_10TSourceLocEP11TIntermNodeRKNS_9TFunctionE(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef byval(%"struct.glslang::TSourceLoc") align 8, ptr noundef, ptr noundef nonnull align 8 dereferenceable(328)) local_unnamed_addr #2 align 2

declare void @_ZN7glslang13TIntermediate14addToCallGraphER9TInfoSinkRKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEESB_(ptr noundef nonnull align 8 dereferenceable(1784), ptr noundef nonnull align 8 dereferenceable(80), ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #3

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZNK7glslang13TParseContext28addOutputArgumentConversionsERKNS_9TFunctionERNS_16TIntermAggregateE(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(328), ptr noundef nonnull align 8 dereferenceable(352)) 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 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !13, i64 40}
!10 = !{!"_ZTSN7glslang14TParseVersionsE", !11, i64 8, !12, i64 12, !6, i64 16, !13, i64 24, !14, i64 28, !15, i64 32, !6, i64 56, !16, i64 64, !27, i64 120, !32, i64 176, !13, i64 180, !6, i64 184}
!11 = !{!"bool", !7, i64 0}
!12 = !{!"_ZTS8EProfile", !7, i64 0}
!13 = !{!"int", !7, i64 0}
!14 = !{!"_ZTS11EShLanguage", !7, i64 0}
!15 = !{!"_ZTSN7glslang10SpvVersionE", !13, i64 0, !13, i64 4, !13, i64 8, !13, i64 12, !11, i64 16}
!16 = !{!"_ZTSN7glslang4TMapINSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEENS_18TExtensionBehaviorESt4lessIS7_EEE", !17, i64 0}
!17 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEENS4_18TExtensionBehaviorESt4lessIS7_ENS5_ISt4pairIKS7_S8_EEEE", !18, i64 0}
!18 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_NS4_18TExtensionBehaviorEESt10_Select1stISB_ESt4lessIS7_ENS5_ISB_EEE", !19, i64 0}
!19 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_NS4_18TExtensionBehaviorEESt10_Select1stISB_ESt4lessIS7_ENS5_ISB_EEE13_Rb_tree_implISF_Lb1EEE", !20, i64 0, !21, i64 8, !23, i64 16}
!20 = !{!"_ZTSN7glslang14pool_allocatorISt13_Rb_tree_nodeISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_IcEEEENS_18TExtensionBehaviorEEEEE", !6, i64 0}
!21 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEEE", !22, i64 0}
!22 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEE"}
!23 = !{!"_ZTSSt15_Rb_tree_header", !24, i64 0, !26, i64 32}
!24 = !{!"_ZTSSt18_Rb_tree_node_base", !25, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!25 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!26 = !{!"long", !7, i64 0}
!27 = !{!"_ZTSN7glslang4TMapINSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEEjSt4lessIS7_EEE", !28, i64 0}
!28 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEjSt4lessIS7_ENS5_ISt4pairIKS7_jEEEE", !29, i64 0}
!29 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_jESt10_Select1stISA_ESt4lessIS7_ENS5_ISA_EEE", !30, i64 0}
!30 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_jESt10_Select1stISA_ESt4lessIS7_ENS5_ISA_EEE13_Rb_tree_implISE_Lb1EEE", !31, i64 0, !21, i64 8, !23, i64 16}
!31 = !{!"_ZTSN7glslang14pool_allocatorISt13_Rb_tree_nodeISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_IcEEEEjEEEE", !6, i64 0}
!32 = !{!"_ZTS11EShMessages", !7, i64 0}
!33 = !{!10, !11, i64 48}
!34 = !{i8 0, i8 2}
!35 = !{}
!36 = !{!37, !37, i64 0}
!37 = !{!"vtable pointer", !8, i64 0}
!38 = !{!10, !6, i64 56}
!39 = !{!11, !11, i64 0}
!40 = !{!41, !6, i64 8}
!41 = !{!"_ZTSN7glslang10TParameterE", !6, i64 0, !6, i64 8, !6, i64 16}
!42 = distinct !{!42, !43}
!43 = !{!"llvm.loop.mustprogress"}
!44 = !{!45, !6, i64 200}
!45 = !{!"_ZTSN7glslang17TParseContextBaseE", !10, i64 0, !6, i64 192, !6, i64 200, !13, i64 208, !13, i64 212, !13, i64 216, !13, i64 220, !13, i64 224, !6, i64 232, !11, i64 240, !11, i64 241, !46, i64 248, !53, i64 280, !58, i64 312, !13, i64 376, !13, i64 380, !11, 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, !13, i64 1040, !13, i64 1044, !13, i64 1048, !82, i64 1056, !13, 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, !26, 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", !11, i64 0, !11, 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, !21, i64 8, !23, 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", !13, i64 0, !13, i64 4, !13, i64 8, !13, i64 12, !13, i64 16, !13, i64 20, !13, i64 24, !13, i64 28, !13, i64 32, !13, i64 36, !13, i64 40, !13, i64 44, !13, i64 48, !13, i64 52, !13, i64 56, !13, i64 60, !13, i64 64, !13, i64 68, !13, i64 72, !13, i64 76, !13, i64 80, !13, i64 84, !13, i64 88, !13, i64 92, !13, i64 96, !13, i64 100, !13, i64 104, !13, i64 108, !13, i64 112, !13, i64 116, !13, i64 120, !13, i64 124, !13, i64 128, !13, i64 132, !13, i64 136, !13, i64 140, !13, i64 144, !13, i64 148, !13, i64 152, !13, i64 156, !13, i64 160, !13, i64 164, !13, i64 168, !13, i64 172, !13, i64 176, !13, i64 180, !13, i64 184, !13, i64 188, !13, i64 192, !13, i64 196, !13, i64 200, !13, i64 204, !13, i64 208, !13, i64 212, !13, i64 216, !13, i64 220, !13, i64 224, !13, i64 228, !13, i64 232, !13, i64 236, !13, i64 240, !13, i64 244, !13, i64 248, !13, i64 252, !13, i64 256, !13, i64 260, !13, i64 264, !13, i64 268, !13, i64 272, !13, i64 276, !13, i64 280, !13, i64 284, !13, i64 288, !13, i64 292, !13, i64 296, !13, i64 300, !13, i64 304, !13, i64 308, !13, i64 312, !13, i64 316, !13, i64 320, !13, i64 324, !13, i64 328, !13, i64 332, !13, i64 336, !13, i64 340, !13, i64 344, !13, i64 348, !13, i64 352, !13, i64 356, !13, i64 360, !13, i64 364, !13, i64 368, !72, i64 372}
!72 = !{!"_ZTS7TLimits", !11, i64 0, !11, i64 1, !11, i64 2, !11, i64 3, !11, i64 4, !11, i64 5, !11, i64 6, !11, i64 7, !11, i64 8}
!73 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEE", !74, i64 0, !26, 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, !23, 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, !23, i64 16}
!93 = !{!"_ZTSN7glslang14pool_allocatorISt13_Rb_tree_nodeISt4pairIKiiEEEE", !6, i64 0}
!94 = !{!10, !6, i64 16}
!95 = !{!96, !96, i64 0}
!96 = !{!"_ZTSN7glslang17TStorageQualifierE", !7, i64 0}
!97 = distinct !{!97, !43}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,MemCpyOptPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass