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

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

%"class.glslang::TVector.234" = type { %"class.std::vector.235" }
%"class.std::vector.235" = type { %"struct.std::_Vector_base.236" }
%"struct.std::_Vector_base.236" = type { %"struct.std::_Vector_base<const glslang::TFunction *, glslang::pool_allocator<const glslang::TFunction *>>::_Vector_impl" }
%"struct.std::_Vector_base<const glslang::TFunction *, glslang::pool_allocator<const glslang::TFunction *>>::_Vector_impl" = type { %"class.glslang::pool_allocator.237", %"struct.std::_Vector_base<const glslang::TFunction *, glslang::pool_allocator<const glslang::TFunction *>>::_Vector_impl_data" }
%"class.glslang::pool_allocator.237" = type { ptr }
%"struct.std::_Vector_base<const glslang::TFunction *, glslang::pool_allocator<const glslang::TFunction *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.238" = type { ptr }
%"class.glslang::TParseContextBase" = type { %"class.glslang::TParseVersions", ptr, ptr, i32, i32, i32, i32, i32, ptr, i8, i8, %"class.glslang::TList", %"class.glslang::TList.5", %"struct.glslang::TPragma", i32, i32, i8, %"class.glslang::TVector", ptr, ptr, %struct.TBuiltInResource, ptr, %"class.std::__cxx11::basic_string", %"class.std::function", %"class.std::function.15", %"class.std::function.17", %"class.std::function.19", %"class.std::function.21", ptr, i32, i32, i32, %"class.glslang::TMap.24", i32, %"class.glslang::TMap.29" }
%"class.glslang::TParseVersions" = type { ptr, i8, i32, ptr, i32, i32, %"struct.glslang::SpvVersion", ptr, %"class.glslang::TMap", %"class.glslang::TMap.0", i32, i32, ptr }
%"struct.glslang::SpvVersion" = type <{ i32, i32, i32, i32, i8, [3 x i8] }>
%"class.glslang::TMap" = type { %"class.std::map" }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, glslang::TExtensionBehavior>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, glslang::TExtensionBehavior>>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>>, glslang::pool_allocator<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, glslang::TExtensionBehavior>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, glslang::TExtensionBehavior>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, glslang::TExtensionBehavior>>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>>, glslang::pool_allocator<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, glslang::TExtensionBehavior>>>::_Rb_tree_impl" = type { %"class.glslang::pool_allocator", [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.glslang::pool_allocator" = type { ptr }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.glslang::TMap.0" = type { %"class.std::map.1" }
%"class.std::map.1" = type { %"class.std::_Rb_tree.2" }
%"class.std::_Rb_tree.2" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, unsigned int>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, unsigned int>>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>>, glslang::pool_allocator<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, unsigned int>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, unsigned int>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, unsigned int>>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>>, glslang::pool_allocator<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, unsigned int>>>::_Rb_tree_impl" = type { %"class.glslang::pool_allocator.3", [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.glslang::pool_allocator.3" = type { ptr }
%"class.glslang::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::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>::_Alloc_hider" = type { %"class.glslang::pool_allocator.14", ptr }
%"class.glslang::pool_allocator.14" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%"class.std::function.15" = type { %"class.std::_Function_base", ptr }
%"class.std::function.17" = type { %"class.std::_Function_base", ptr }
%"class.std::function.19" = type { %"class.std::_Function_base", ptr }
%"class.std::function.21" = type { %"class.std::_Function_base", ptr }
%"class.glslang::TMap.24" = type { %"class.std::map.25" }
%"class.std::map.25" = type { %"class.std::_Rb_tree.26" }
%"class.std::_Rb_tree.26" = type { %"struct.std::_Rb_tree<int, std::pair<const int, glslang::TVariable *>, std::_Select1st<std::pair<const int, glslang::TVariable *>>, std::less<int>, glslang::pool_allocator<std::pair<const int, glslang::TVariable *>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<int, std::pair<const int, glslang::TVariable *>, std::_Select1st<std::pair<const int, glslang::TVariable *>>, std::less<int>, glslang::pool_allocator<std::pair<const int, glslang::TVariable *>>>::_Rb_tree_impl" = type { %"class.glslang::pool_allocator.27", [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.glslang::pool_allocator.27" = type { ptr }
%"class.glslang::TMap.29" = type { %"class.std::map.30" }
%"class.std::map.30" = type { %"class.std::_Rb_tree.31" }
%"class.std::_Rb_tree.31" = type { %"struct.std::_Rb_tree<int, std::pair<const int, int>, std::_Select1st<std::pair<const int, int>>, std::less<int>, glslang::pool_allocator<std::pair<const int, int>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<int, std::pair<const int, int>, std::_Select1st<std::pair<const int, int>>, std::less<int>, glslang::pool_allocator<std::pair<const int, int>>>::_Rb_tree_impl" = type { %"class.glslang::pool_allocator.32", [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.glslang::pool_allocator.32" = type { ptr }
%"struct.glslang::TParameter" = type { ptr, ptr, ptr }

@.str.2 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.768 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.769 = external hidden unnamed_addr constant [93 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN7glslang12TSymbolTable4findERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEEPbSA_Pi(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(40), ptr noundef, ptr noundef, ptr noundef) #1 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)) #2 align 2

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

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

declare noundef zeroext i1 @_ZNK7glslang13TIntermediate20canImplicitlyPromoteENS_10TBasicTypeES1_NS_9TOperatorE(ptr noundef nonnull align 8 dereferenceable(1784), i32 noundef, i32 noundef, i32 noundef) #3

; Function Attrs: mustprogress uwtable
define dso_local noundef ptr @_ZN7glslang13TParseContext15findFunction120ERKNS_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) %3) #1 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 ptr, align 8
  %13 = alloca %"class.glslang::TVector.234", align 8
  %14 = alloca ptr, align 8
  %15 = alloca i32, align 4
  %16 = alloca %"class.__gnu_cxx::__normal_iterator.238", align 8
  %17 = alloca %"class.__gnu_cxx::__normal_iterator.238", align 8
  %18 = alloca ptr, align 8
  %19 = alloca i8, align 1
  %20 = 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
  %21 = load ptr, ptr %6, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #5
  %22 = getelementptr inbounds %"class.glslang::TParseContextBase", ptr %21, i32 0, i32 2
  %23 = load ptr, ptr %22, align 8, !tbaa !9
  %24 = load ptr, ptr %8, align 8, !tbaa !5
  %25 = load ptr, ptr %24, align 8, !tbaa !82
  %26 = getelementptr inbounds ptr, ptr %25, i64 6
  %27 = load ptr, ptr %26, align 8
  %28 = call noundef nonnull align 8 dereferenceable(40) ptr %27(ptr noundef nonnull align 8 dereferenceable(328) %24)
  %29 = load ptr, ptr %9, align 8, !tbaa !5
  %30 = call noundef ptr @_ZN7glslang12TSymbolTable4findERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEEPbSA_Pi(ptr noundef nonnull align 8 dereferenceable(40) %23, ptr noundef nonnull align 8 dereferenceable(40) %28, ptr noundef %29, ptr noundef null, ptr noundef null)
  store ptr %30, ptr %10, align 8, !tbaa !5
  %31 = load ptr, ptr %10, align 8, !tbaa !5
  %32 = icmp ne ptr %31, null
  br i1 %32, label %33, label %39

33:                                               ; preds = %4
  %34 = load ptr, ptr %10, align 8, !tbaa !5
  %35 = load ptr, ptr %34, align 8, !tbaa !82
  %36 = getelementptr inbounds ptr, ptr %35, i64 7
  %37 = load ptr, ptr %36, align 8
  %38 = call noundef ptr %37(ptr noundef nonnull align 8 dereferenceable(33) %34)
  store ptr %38, ptr %5, align 8
  store i32 1, ptr %11, align 4
  br label %338

39:                                               ; preds = %4
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #5
  store ptr null, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %13) #5
  call void @_ZN7glslang7TVectorIPKNS_9TFunctionEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13)
  %40 = getelementptr inbounds %"class.glslang::TParseContextBase", ptr %21, i32 0, i32 2
  %41 = load ptr, ptr %40, align 8, !tbaa !9
  %42 = load ptr, ptr %8, align 8, !tbaa !5
  %43 = load ptr, ptr %42, align 8, !tbaa !82
  %44 = getelementptr inbounds ptr, ptr %43, i64 6
  %45 = load ptr, ptr %44, align 8
  %46 = invoke noundef nonnull align 8 dereferenceable(40) ptr %45(ptr noundef nonnull align 8 dereferenceable(328) %42)
          to label %47 unwind label %57

47:                                               ; preds = %39
  %48 = load ptr, ptr %9, align 8, !tbaa !5
  invoke void @_ZN7glslang12TSymbolTable20findFunctionNameListERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEERNS_7TVectorIPKNS_9TFunctionEEERb(ptr noundef nonnull align 8 dereferenceable(40) %41, ptr noundef nonnull align 8 dereferenceable(40) %46, ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull align 1 dereferenceable(1) %48)
          to label %49 unwind label %57

49:                                               ; preds = %47
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #5
  %50 = call ptr @_ZNSt6vectorIPKN7glslang9TFunctionENS0_14pool_allocatorIS3_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(32) %13) #5
  %51 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.238", ptr %16, i32 0, i32 0
  store ptr %50, ptr %51, align 8
  br label %52

52:                                               ; preds = %315, %49
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #5
  %53 = call ptr @_ZNSt6vectorIPKN7glslang9TFunctionENS0_14pool_allocatorIS3_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(32) %13) #5
  %54 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.238", ptr %17, i32 0, i32 0
  store ptr %53, ptr %54, align 8
  %55 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPKN7glslang9TFunctionESt6vectorIS4_NS1_14pool_allocatorIS4_EEEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #5
  br i1 %55, label %61, label %56

56:                                               ; preds = %52
  store i32 2, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #5
  br label %319

57:                                               ; preds = %329, %322, %47, %39
  %58 = landingpad { ptr, i32 }
          cleanup
  %59 = extractvalue { ptr, i32 } %58, 0
  store ptr %59, ptr %14, align 8
  %60 = extractvalue { ptr, i32 } %58, 1
  store i32 %60, ptr %15, align 4
  br label %337

61:                                               ; preds = %52
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #5
  %62 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPKN7glslang9TFunctionESt6vectorIS4_NS1_14pool_allocatorIS4_EEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %16) #5
  %63 = load ptr, ptr %62, align 8, !tbaa !5
  store ptr %63, ptr %18, align 8, !tbaa !5
  %64 = load ptr, ptr %8, align 8, !tbaa !5
  %65 = load ptr, ptr %64, align 8, !tbaa !82
  %66 = getelementptr inbounds ptr, ptr %65, i64 36
  %67 = load ptr, ptr %66, align 8
  %68 = invoke noundef i32 %67(ptr noundef nonnull align 8 dereferenceable(328) %64)
          to label %69 unwind label %78

69:                                               ; preds = %61
  %70 = load ptr, ptr %18, align 8, !tbaa !5
  %71 = load ptr, ptr %70, align 8, !tbaa !82
  %72 = getelementptr inbounds ptr, ptr %71, i64 36
  %73 = load ptr, ptr %72, align 8
  %74 = invoke noundef i32 %73(ptr noundef nonnull align 8 dereferenceable(328) %70)
          to label %75 unwind label %78

75:                                               ; preds = %69
  %76 = icmp ne i32 %68, %74
  br i1 %76, label %77, label %82

77:                                               ; preds = %75
  store i32 4, ptr %11, align 4
  br label %312

78:                                               ; preds = %69, %61
  %79 = landingpad { ptr, i32 }
          cleanup
  %80 = extractvalue { ptr, i32 } %79, 0
  store ptr %80, ptr %14, align 8
  %81 = extractvalue { ptr, i32 } %79, 1
  store i32 %81, ptr %15, align 4
  br label %318

82:                                               ; preds = %75
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #5
  store i8 1, ptr %19, align 1, !tbaa !84
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #5
  store i32 0, ptr %20, align 4, !tbaa !85
  br label %83

83:                                               ; preds = %281, %82
  %84 = load i32, ptr %20, align 4, !tbaa !85
  %85 = load ptr, ptr %18, align 8, !tbaa !5
  %86 = load ptr, ptr %85, align 8, !tbaa !82
  %87 = getelementptr inbounds ptr, ptr %86, i64 36
  %88 = load ptr, ptr %87, align 8
  %89 = invoke noundef i32 %88(ptr noundef nonnull align 8 dereferenceable(328) %85)
          to label %90 unwind label %93

90:                                               ; preds = %83
  %91 = icmp slt i32 %84, %89
  br i1 %91, label %97, label %92

92:                                               ; preds = %90
  store i32 5, ptr %11, align 4
  br label %284

93:                                               ; preds = %270, %263, %256, %249, %240, %237, %230, %223, %218, %211, %204, %197, %188, %185, %178, %171, %165, %156, %149, %141, %134, %126, %119, %113, %104, %97, %83
  %94 = landingpad { ptr, i32 }
          cleanup
  %95 = extractvalue { ptr, i32 } %94, 0
  store ptr %95, ptr %14, align 8
  %96 = extractvalue { ptr, i32 } %94, 1
  store i32 %96, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #5
  br label %317

97:                                               ; preds = %90
  %98 = load ptr, ptr %18, align 8, !tbaa !5
  %99 = load i32, ptr %20, align 4, !tbaa !85
  %100 = load ptr, ptr %98, align 8, !tbaa !82
  %101 = getelementptr inbounds ptr, ptr %100, i64 40
  %102 = load ptr, ptr %101, align 8
  %103 = invoke noundef nonnull align 8 dereferenceable(24) ptr %102(ptr noundef nonnull align 8 dereferenceable(328) %98, i32 noundef %99)
          to label %104 unwind label %93

104:                                              ; preds = %97
  %105 = getelementptr inbounds %"struct.glslang::TParameter", ptr %103, i32 0, i32 1
  %106 = load ptr, ptr %105, align 8, !tbaa !86
  %107 = load ptr, ptr %8, align 8, !tbaa !5
  %108 = load i32, ptr %20, align 4, !tbaa !85
  %109 = load ptr, ptr %107, align 8, !tbaa !82
  %110 = getelementptr inbounds ptr, ptr %109, i64 40
  %111 = load ptr, ptr %110, align 8
  %112 = invoke noundef nonnull align 8 dereferenceable(24) ptr %111(ptr noundef nonnull align 8 dereferenceable(328) %107, i32 noundef %108)
          to label %113 unwind label %93

113:                                              ; preds = %104
  %114 = getelementptr inbounds %"struct.glslang::TParameter", ptr %112, i32 0, i32 1
  %115 = load ptr, ptr %114, align 8, !tbaa !86
  %116 = invoke noundef zeroext i1 @_ZNK7glslang5TTypeeqERKS0_(ptr noundef nonnull align 8 dereferenceable(144) %106, ptr noundef nonnull align 8 dereferenceable(144) %115)
          to label %117 unwind label %93

117:                                              ; preds = %113
  br i1 %116, label %118, label %119

118:                                              ; preds = %117
  br label %281

119:                                              ; preds = %117
  %120 = load ptr, ptr %18, align 8, !tbaa !5
  %121 = load i32, ptr %20, align 4, !tbaa !85
  %122 = load ptr, ptr %120, align 8, !tbaa !82
  %123 = getelementptr inbounds ptr, ptr %122, i64 40
  %124 = load ptr, ptr %123, align 8
  %125 = invoke noundef nonnull align 8 dereferenceable(24) ptr %124(ptr noundef nonnull align 8 dereferenceable(328) %120, i32 noundef %121)
          to label %126 unwind label %93

126:                                              ; preds = %119
  %127 = getelementptr inbounds %"struct.glslang::TParameter", ptr %125, i32 0, i32 1
  %128 = load ptr, ptr %127, align 8, !tbaa !86
  %129 = load ptr, ptr %128, align 8, !tbaa !82
  %130 = getelementptr inbounds ptr, ptr %129, i64 29
  %131 = load ptr, ptr %130, align 8
  %132 = invoke noundef zeroext i1 %131(ptr noundef nonnull align 8 dereferenceable(144) %128)
          to label %133 unwind label %93

133:                                              ; preds = %126
  br i1 %132, label %170, label %134

134:                                              ; preds = %133
  %135 = load ptr, ptr %8, align 8, !tbaa !5
  %136 = load i32, ptr %20, align 4, !tbaa !85
  %137 = load ptr, ptr %135, align 8, !tbaa !82
  %138 = getelementptr inbounds ptr, ptr %137, i64 40
  %139 = load ptr, ptr %138, align 8
  %140 = invoke noundef nonnull align 8 dereferenceable(24) ptr %139(ptr noundef nonnull align 8 dereferenceable(328) %135, i32 noundef %136)
          to label %141 unwind label %93

141:                                              ; preds = %134
  %142 = getelementptr inbounds %"struct.glslang::TParameter", ptr %140, i32 0, i32 1
  %143 = load ptr, ptr %142, align 8, !tbaa !86
  %144 = load ptr, ptr %143, align 8, !tbaa !82
  %145 = getelementptr inbounds ptr, ptr %144, i64 29
  %146 = load ptr, ptr %145, align 8
  %147 = invoke noundef zeroext i1 %146(ptr noundef nonnull align 8 dereferenceable(144) %143)
          to label %148 unwind label %93

148:                                              ; preds = %141
  br i1 %147, label %170, label %149

149:                                              ; preds = %148
  %150 = load ptr, ptr %18, align 8, !tbaa !5
  %151 = load i32, ptr %20, align 4, !tbaa !85
  %152 = load ptr, ptr %150, align 8, !tbaa !82
  %153 = getelementptr inbounds ptr, ptr %152, i64 40
  %154 = load ptr, ptr %153, align 8
  %155 = invoke noundef nonnull align 8 dereferenceable(24) ptr %154(ptr noundef nonnull align 8 dereferenceable(328) %150, i32 noundef %151)
          to label %156 unwind label %93

156:                                              ; preds = %149
  %157 = getelementptr inbounds %"struct.glslang::TParameter", ptr %155, i32 0, i32 1
  %158 = load ptr, ptr %157, align 8, !tbaa !86
  %159 = load ptr, ptr %8, align 8, !tbaa !5
  %160 = load i32, ptr %20, align 4, !tbaa !85
  %161 = load ptr, ptr %159, align 8, !tbaa !82
  %162 = getelementptr inbounds ptr, ptr %161, i64 40
  %163 = load ptr, ptr %162, align 8
  %164 = invoke noundef nonnull align 8 dereferenceable(24) ptr %163(ptr noundef nonnull align 8 dereferenceable(328) %159, i32 noundef %160)
          to label %165 unwind label %93

165:                                              ; preds = %156
  %166 = getelementptr inbounds %"struct.glslang::TParameter", ptr %164, i32 0, i32 1
  %167 = load ptr, ptr %166, align 8, !tbaa !86
  %168 = invoke noundef zeroext i1 @_ZNK7glslang5TType16sameElementShapeERKS0_PiS3_(ptr noundef nonnull align 8 dereferenceable(144) %158, ptr noundef nonnull align 8 dereferenceable(144) %167, ptr noundef null, ptr noundef null)
          to label %169 unwind label %93

169:                                              ; preds = %165
  br i1 %168, label %171, label %170

170:                                              ; preds = %169, %148, %133
  store i8 0, ptr %19, align 1, !tbaa !84
  br label %276

171:                                              ; preds = %169
  %172 = load ptr, ptr %18, align 8, !tbaa !5
  %173 = load i32, ptr %20, align 4, !tbaa !85
  %174 = load ptr, ptr %172, align 8, !tbaa !82
  %175 = getelementptr inbounds ptr, ptr %174, i64 40
  %176 = load ptr, ptr %175, align 8
  %177 = invoke noundef nonnull align 8 dereferenceable(24) ptr %176(ptr noundef nonnull align 8 dereferenceable(328) %172, i32 noundef %173)
          to label %178 unwind label %93

178:                                              ; preds = %171
  %179 = getelementptr inbounds %"struct.glslang::TParameter", ptr %177, i32 0, i32 1
  %180 = load ptr, ptr %179, align 8, !tbaa !86
  %181 = load ptr, ptr %180, align 8, !tbaa !82
  %182 = getelementptr inbounds ptr, ptr %181, i64 10
  %183 = load ptr, ptr %182, align 8
  %184 = invoke noundef nonnull align 8 dereferenceable(72) ptr %183(ptr noundef nonnull align 8 dereferenceable(144) %180)
          to label %185 unwind label %93

185:                                              ; preds = %178
  %186 = invoke noundef zeroext i1 @_ZNK7glslang10TQualifier12isParamInputEv(ptr noundef nonnull align 8 dereferenceable(72) %184)
          to label %187 unwind label %93

187:                                              ; preds = %185
  br i1 %186, label %188, label %223

188:                                              ; preds = %187
  %189 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %21, i32 0, i32 7
  %190 = load ptr, ptr %189, align 8, !tbaa !88
  %191 = load ptr, ptr %8, align 8, !tbaa !5
  %192 = load i32, ptr %20, align 4, !tbaa !85
  %193 = load ptr, ptr %191, align 8, !tbaa !82
  %194 = getelementptr inbounds ptr, ptr %193, i64 40
  %195 = load ptr, ptr %194, align 8
  %196 = invoke noundef nonnull align 8 dereferenceable(24) ptr %195(ptr noundef nonnull align 8 dereferenceable(328) %191, i32 noundef %192)
          to label %197 unwind label %93

197:                                              ; preds = %188
  %198 = getelementptr inbounds %"struct.glslang::TParameter", ptr %196, i32 0, i32 1
  %199 = load ptr, ptr %198, align 8, !tbaa !86
  %200 = load ptr, ptr %199, align 8, !tbaa !82
  %201 = getelementptr inbounds ptr, ptr %200, i64 7
  %202 = load ptr, ptr %201, align 8
  %203 = invoke noundef i32 %202(ptr noundef nonnull align 8 dereferenceable(144) %199)
          to label %204 unwind label %93

204:                                              ; preds = %197
  %205 = load ptr, ptr %18, align 8, !tbaa !5
  %206 = load i32, ptr %20, align 4, !tbaa !85
  %207 = load ptr, ptr %205, align 8, !tbaa !82
  %208 = getelementptr inbounds ptr, ptr %207, i64 40
  %209 = load ptr, ptr %208, align 8
  %210 = invoke noundef nonnull align 8 dereferenceable(24) ptr %209(ptr noundef nonnull align 8 dereferenceable(328) %205, i32 noundef %206)
          to label %211 unwind label %93

211:                                              ; preds = %204
  %212 = getelementptr inbounds %"struct.glslang::TParameter", ptr %210, i32 0, i32 1
  %213 = load ptr, ptr %212, align 8, !tbaa !86
  %214 = load ptr, ptr %213, align 8, !tbaa !82
  %215 = getelementptr inbounds ptr, ptr %214, i64 7
  %216 = load ptr, ptr %215, align 8
  %217 = invoke noundef i32 %216(ptr noundef nonnull align 8 dereferenceable(144) %213)
          to label %218 unwind label %93

218:                                              ; preds = %211
  %219 = invoke noundef zeroext i1 @_ZNK7glslang13TIntermediate20canImplicitlyPromoteENS_10TBasicTypeES1_NS_9TOperatorE(ptr noundef nonnull align 8 dereferenceable(1784) %190, i32 noundef %203, i32 noundef %217, i32 noundef 0)
          to label %220 unwind label %93

220:                                              ; preds = %218
  br i1 %219, label %222, label %221

221:                                              ; preds = %220
  store i8 0, ptr %19, align 1, !tbaa !84
  br label %222

222:                                              ; preds = %221, %220
  br label %223

223:                                              ; preds = %222, %187
  %224 = load ptr, ptr %18, align 8, !tbaa !5
  %225 = load i32, ptr %20, align 4, !tbaa !85
  %226 = load ptr, ptr %224, align 8, !tbaa !82
  %227 = getelementptr inbounds ptr, ptr %226, i64 40
  %228 = load ptr, ptr %227, align 8
  %229 = invoke noundef nonnull align 8 dereferenceable(24) ptr %228(ptr noundef nonnull align 8 dereferenceable(328) %224, i32 noundef %225)
          to label %230 unwind label %93

230:                                              ; preds = %223
  %231 = getelementptr inbounds %"struct.glslang::TParameter", ptr %229, i32 0, i32 1
  %232 = load ptr, ptr %231, align 8, !tbaa !86
  %233 = load ptr, ptr %232, align 8, !tbaa !82
  %234 = getelementptr inbounds ptr, ptr %233, i64 10
  %235 = load ptr, ptr %234, align 8
  %236 = invoke noundef nonnull align 8 dereferenceable(72) ptr %235(ptr noundef nonnull align 8 dereferenceable(144) %232)
          to label %237 unwind label %93

237:                                              ; preds = %230
  %238 = invoke noundef zeroext i1 @_ZNK7glslang10TQualifier13isParamOutputEv(ptr noundef nonnull align 8 dereferenceable(72) %236)
          to label %239 unwind label %93

239:                                              ; preds = %237
  br i1 %238, label %240, label %275

240:                                              ; preds = %239
  %241 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %21, i32 0, i32 7
  %242 = load ptr, ptr %241, align 8, !tbaa !88
  %243 = load ptr, ptr %18, align 8, !tbaa !5
  %244 = load i32, ptr %20, align 4, !tbaa !85
  %245 = load ptr, ptr %243, align 8, !tbaa !82
  %246 = getelementptr inbounds ptr, ptr %245, i64 40
  %247 = load ptr, ptr %246, align 8
  %248 = invoke noundef nonnull align 8 dereferenceable(24) ptr %247(ptr noundef nonnull align 8 dereferenceable(328) %243, i32 noundef %244)
          to label %249 unwind label %93

249:                                              ; preds = %240
  %250 = getelementptr inbounds %"struct.glslang::TParameter", ptr %248, i32 0, i32 1
  %251 = load ptr, ptr %250, align 8, !tbaa !86
  %252 = load ptr, ptr %251, align 8, !tbaa !82
  %253 = getelementptr inbounds ptr, ptr %252, i64 7
  %254 = load ptr, ptr %253, align 8
  %255 = invoke noundef i32 %254(ptr noundef nonnull align 8 dereferenceable(144) %251)
          to label %256 unwind label %93

256:                                              ; preds = %249
  %257 = load ptr, ptr %8, align 8, !tbaa !5
  %258 = load i32, ptr %20, align 4, !tbaa !85
  %259 = load ptr, ptr %257, align 8, !tbaa !82
  %260 = getelementptr inbounds ptr, ptr %259, i64 40
  %261 = load ptr, ptr %260, align 8
  %262 = invoke noundef nonnull align 8 dereferenceable(24) ptr %261(ptr noundef nonnull align 8 dereferenceable(328) %257, i32 noundef %258)
          to label %263 unwind label %93

263:                                              ; preds = %256
  %264 = getelementptr inbounds %"struct.glslang::TParameter", ptr %262, i32 0, i32 1
  %265 = load ptr, ptr %264, align 8, !tbaa !86
  %266 = load ptr, ptr %265, align 8, !tbaa !82
  %267 = getelementptr inbounds ptr, ptr %266, i64 7
  %268 = load ptr, ptr %267, align 8
  %269 = invoke noundef i32 %268(ptr noundef nonnull align 8 dereferenceable(144) %265)
          to label %270 unwind label %93

270:                                              ; preds = %263
  %271 = invoke noundef zeroext i1 @_ZNK7glslang13TIntermediate20canImplicitlyPromoteENS_10TBasicTypeES1_NS_9TOperatorE(ptr noundef nonnull align 8 dereferenceable(1784) %242, i32 noundef %255, i32 noundef %269, i32 noundef 0)
          to label %272 unwind label %93

272:                                              ; preds = %270
  br i1 %271, label %274, label %273

273:                                              ; preds = %272
  store i8 0, ptr %19, align 1, !tbaa !84
  br label %274

274:                                              ; preds = %273, %272
  br label %275

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

276:                                              ; preds = %275, %170
  %277 = load i8, ptr %19, align 1, !tbaa !84, !range !89, !noundef !90
  %278 = trunc i8 %277 to i1
  br i1 %278, label %280, label %279

279:                                              ; preds = %276
  store i32 5, ptr %11, align 4
  br label %284

280:                                              ; preds = %276
  br label %281

281:                                              ; preds = %280, %118
  %282 = load i32, ptr %20, align 4, !tbaa !85
  %283 = add nsw i32 %282, 1
  store i32 %283, ptr %20, align 4, !tbaa !85
  br label %83, !llvm.loop !91

284:                                              ; preds = %279, %92
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #5
  br label %285

285:                                              ; preds = %284
  %286 = load i8, ptr %19, align 1, !tbaa !84, !range !89, !noundef !90
  %287 = trunc i8 %286 to i1
  br i1 %287, label %288, label %311

288:                                              ; preds = %285
  %289 = load ptr, ptr %12, align 8, !tbaa !5
  %290 = icmp ne ptr %289, null
  br i1 %290, label %291, label %308

291:                                              ; preds = %288
  %292 = load ptr, ptr %7, align 8, !tbaa !5
  %293 = load ptr, ptr %8, align 8, !tbaa !5
  %294 = load ptr, ptr %293, align 8, !tbaa !82
  %295 = getelementptr inbounds ptr, ptr %294, i64 3
  %296 = load ptr, ptr %295, align 8
  %297 = invoke noundef nonnull align 8 dereferenceable(40) ptr %296(ptr noundef nonnull align 8 dereferenceable(33) %293)
          to label %298 unwind label %304

298:                                              ; preds = %291
  %299 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %297) #5
  %300 = load ptr, ptr %21, align 8, !tbaa !82
  %301 = getelementptr inbounds ptr, ptr %300, i64 42
  %302 = load ptr, ptr %301, align 8
  invoke void (ptr, ptr, ptr, ptr, ptr, ...) %302(ptr noundef nonnull align 8 dereferenceable(1176) %21, ptr noundef nonnull align 8 dereferenceable(24) %292, ptr noundef @.str.769, ptr noundef %299, ptr noundef @.str.2)
          to label %303 unwind label %304

303:                                              ; preds = %298
  br label %310

304:                                              ; preds = %298, %291
  %305 = landingpad { ptr, i32 }
          cleanup
  %306 = extractvalue { ptr, i32 } %305, 0
  store ptr %306, ptr %14, align 8
  %307 = extractvalue { ptr, i32 } %305, 1
  store i32 %307, ptr %15, align 4
  br label %317

308:                                              ; preds = %288
  %309 = load ptr, ptr %18, align 8, !tbaa !5
  store ptr %309, ptr %12, align 8, !tbaa !5
  br label %310

310:                                              ; preds = %308, %303
  br label %311

311:                                              ; preds = %310, %285
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #5
  store i32 0, ptr %11, align 4
  br label %312

312:                                              ; preds = %311, %77
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #5
  %313 = load i32, ptr %11, align 4
  switch i32 %313, label %345 [
    i32 0, label %314
    i32 4, label %315
  ]

314:                                              ; preds = %312
  br label %315

315:                                              ; preds = %314, %312
  %316 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPPKN7glslang9TFunctionESt6vectorIS4_NS1_14pool_allocatorIS4_EEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %16) #5
  br label %52, !llvm.loop !93

317:                                              ; preds = %304, %93
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #5
  br label %318

318:                                              ; preds = %317, %78
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #5
  br label %337

319:                                              ; preds = %56
  %320 = load ptr, ptr %12, align 8, !tbaa !5
  %321 = icmp eq ptr %320, null
  br i1 %321, label %322, label %335

322:                                              ; preds = %319
  %323 = load ptr, ptr %7, align 8, !tbaa !5
  %324 = load ptr, ptr %8, align 8, !tbaa !5
  %325 = load ptr, ptr %324, align 8, !tbaa !82
  %326 = getelementptr inbounds ptr, ptr %325, i64 3
  %327 = load ptr, ptr %326, align 8
  %328 = invoke noundef nonnull align 8 dereferenceable(40) ptr %327(ptr noundef nonnull align 8 dereferenceable(33) %324)
          to label %329 unwind label %57

329:                                              ; preds = %322
  %330 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %328) #5
  %331 = load ptr, ptr %21, align 8, !tbaa !82
  %332 = getelementptr inbounds ptr, ptr %331, i64 42
  %333 = load ptr, ptr %332, align 8
  invoke void (ptr, ptr, ptr, ptr, ptr, ...) %333(ptr noundef nonnull align 8 dereferenceable(1176) %21, ptr noundef nonnull align 8 dereferenceable(24) %323, ptr noundef @.str.768, ptr noundef %330, ptr noundef @.str.2)
          to label %334 unwind label %57

334:                                              ; preds = %329
  br label %335

335:                                              ; preds = %334, %319
  %336 = load ptr, ptr %12, align 8, !tbaa !5
  store ptr %336, ptr %5, align 8
  store i32 1, ptr %11, align 4
  call void @_ZNSt6vectorIPKN7glslang9TFunctionENS0_14pool_allocatorIS3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #5
  br label %338

337:                                              ; preds = %318, %57
  call void @_ZNSt6vectorIPKN7glslang9TFunctionENS0_14pool_allocatorIS3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #5
  br label %340

338:                                              ; preds = %335, %33
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #5
  %339 = load ptr, ptr %5, align 8
  ret ptr %339

340:                                              ; preds = %337
  %341 = load ptr, ptr %14, align 8
  %342 = load i32, ptr %15, align 4
  %343 = insertvalue { ptr, i32 } poison, ptr %341, 0
  %344 = insertvalue { ptr, i32 } %343, i32 %342, 1
  resume { ptr, i32 } %344

345:                                              ; preds = %312
  unreachable
}

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

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

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

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

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

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

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

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

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

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

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


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

%"class.glslang::TVector.234" = type { %"class.std::vector.235" }
%"class.std::vector.235" = type { %"struct.std::_Vector_base.236" }
%"struct.std::_Vector_base.236" = type { %"struct.std::_Vector_base<const glslang::TFunction *, glslang::pool_allocator<const glslang::TFunction *>>::_Vector_impl" }
%"struct.std::_Vector_base<const glslang::TFunction *, glslang::pool_allocator<const glslang::TFunction *>>::_Vector_impl" = type { %"class.glslang::pool_allocator.237", %"struct.std::_Vector_base<const glslang::TFunction *, glslang::pool_allocator<const glslang::TFunction *>>::_Vector_impl_data" }
%"class.glslang::pool_allocator.237" = type { ptr }
%"struct.std::_Vector_base<const glslang::TFunction *, glslang::pool_allocator<const glslang::TFunction *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.238" = type { ptr }

@.str.2 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.768 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.769 = external hidden unnamed_addr constant [93 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN7glslang12TSymbolTable4findERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEEPbSA_Pi(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(40), ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1 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 #2 align 2

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef ptr @_ZN7glslang13TParseContext15findFunction120ERKNS_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) %3) local_unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca %"class.glslang::TVector.234", align 8
  %6 = alloca %"class.__gnu_cxx::__normal_iterator.238", align 8
  %7 = alloca %"class.__gnu_cxx::__normal_iterator.238", align 8
  %8 = getelementptr inbounds i8, ptr %0, i64 200
  %9 = load ptr, ptr %8, align 8, !tbaa !5
  %10 = load ptr, ptr %2, align 8, !tbaa !81
  %11 = getelementptr inbounds i8, ptr %10, i64 48
  %12 = load ptr, ptr %11, align 8
  %13 = tail call noundef nonnull align 8 dereferenceable(40) ptr %12(ptr noundef nonnull align 8 dereferenceable(328) %2)
  %14 = tail call noundef ptr @_ZN7glslang12TSymbolTable4findERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEEPbSA_Pi(ptr noundef nonnull align 8 dereferenceable(40) %9, ptr noundef nonnull align 8 dereferenceable(40) %13, ptr noundef nonnull %3, ptr noundef null, ptr noundef null)
  %.not = icmp eq ptr %14, null
  br i1 %.not, label %20, label %15

15:                                               ; preds = %4
  %16 = load ptr, ptr %14, align 8, !tbaa !81
  %17 = getelementptr inbounds i8, ptr %16, i64 56
  %18 = load ptr, ptr %17, align 8
  %19 = tail call noundef ptr %18(ptr noundef nonnull align 8 dereferenceable(33) %14)
  br label %237

20:                                               ; preds = %4
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #5
  call void @_ZN7glslang7TVectorIPKNS_9TFunctionEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5)
  %21 = load ptr, ptr %8, align 8, !tbaa !5
  %22 = load ptr, ptr %2, align 8, !tbaa !81
  %23 = getelementptr inbounds i8, ptr %22, i64 48
  %24 = load ptr, ptr %23, align 8
  %25 = invoke noundef nonnull align 8 dereferenceable(40) ptr %24(ptr noundef nonnull align 8 dereferenceable(328) %2)
          to label %26 unwind label %33

26:                                               ; preds = %20
  invoke void @_ZN7glslang12TSymbolTable20findFunctionNameListERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEERNS_7TVectorIPKNS_9TFunctionEEERb(ptr noundef nonnull align 8 dereferenceable(40) %21, ptr noundef nonnull align 8 dereferenceable(40) %25, ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 1 dereferenceable(1) %3)
          to label %27 unwind label %33

27:                                               ; preds = %26
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #5
  %28 = call ptr @_ZNSt6vectorIPKN7glslang9TFunctionENS0_14pool_allocatorIS3_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(32) %5) #5
  store ptr %28, ptr %6, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #5
  %29 = call ptr @_ZNSt6vectorIPKN7glslang9TFunctionENS0_14pool_allocatorIS3_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(32) %5) #5
  store ptr %29, ptr %7, align 8
  %30 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPKN7glslang9TFunctionESt6vectorIS4_NS1_14pool_allocatorIS4_EEEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %7) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #5
  br i1 %30, label %.lr.ph, label %._crit_edge.thread

._crit_edge.thread:                               ; preds = %27
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #5
  br label %225

.lr.ph:                                           ; preds = %27
  %31 = getelementptr inbounds i8, ptr %0, i64 56
  br label %35

._crit_edge:                                      ; preds = %.thread67
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #5
  %32 = icmp eq ptr %.258, null
  br i1 %32, label %225, label %235

33:                                               ; preds = %230, %225, %26, %20
  %34 = landingpad { ptr, i32 }
          cleanup
  br label %236

35:                                               ; preds = %.lr.ph, %.thread67
  %.05672 = phi ptr [ null, %.lr.ph ], [ %.258, %.thread67 ]
  %36 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPKN7glslang9TFunctionESt6vectorIS4_NS1_14pool_allocatorIS4_EEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %6) #5
  %37 = load ptr, ptr %36, align 8, !tbaa !83
  %38 = load ptr, ptr %2, align 8, !tbaa !81
  %39 = getelementptr inbounds i8, ptr %38, i64 288
  %40 = load ptr, ptr %39, align 8
  %41 = invoke noundef i32 %40(ptr noundef nonnull align 8 dereferenceable(328) %2)
          to label %42 unwind label %48

42:                                               ; preds = %35
  %43 = load ptr, ptr %37, align 8, !tbaa !81
  %44 = getelementptr inbounds i8, ptr %43, i64 288
  %45 = load ptr, ptr %44, align 8
  %46 = invoke noundef i32 %45(ptr noundef nonnull align 8 dereferenceable(328) %37)
          to label %47 unwind label %48

47:                                               ; preds = %42
  %.not60 = icmp eq i32 %41, %46
  br i1 %.not60, label %.preheader, label %.thread67

48:                                               ; preds = %42, %35
  %49 = landingpad { ptr, i32 }
          cleanup
  br label %224

.preheader:                                       ; preds = %47, %204
  %.048 = phi i8 [ %.3, %204 ], [ 1, %47 ]
  %.0 = phi i32 [ %205, %204 ], [ 0, %47 ]
  %50 = load ptr, ptr %37, align 8, !tbaa !81
  %51 = getelementptr inbounds i8, ptr %50, i64 288
  %52 = load ptr, ptr %51, align 8
  %53 = invoke noundef i32 %52(ptr noundef nonnull align 8 dereferenceable(328) %37)
          to label %54 unwind label %56

54:                                               ; preds = %.preheader
  %55 = icmp slt i32 %.0, %53
  br i1 %55, label %58, label %206

56:                                               ; preds = %199, %192, %187, %180, %174, %165, %160, %157, %150, %145, %138, %132, %123, %118, %113, %106, %101, %93, %88, %80, %75, %70, %63, %58, %.preheader
  %57 = landingpad { ptr, i32 }
          cleanup
  br label %224

58:                                               ; preds = %54
  %59 = load ptr, ptr %37, align 8, !tbaa !81
  %60 = getelementptr inbounds i8, ptr %59, i64 320
  %61 = load ptr, ptr %60, align 8
  %62 = invoke noundef nonnull align 8 dereferenceable(24) ptr %61(ptr noundef nonnull align 8 dereferenceable(328) %37, i32 noundef %.0)
          to label %63 unwind label %56

63:                                               ; preds = %58
  %64 = getelementptr inbounds i8, ptr %62, i64 8
  %65 = load ptr, ptr %64, align 8, !tbaa !84
  %66 = load ptr, ptr %2, align 8, !tbaa !81
  %67 = getelementptr inbounds i8, ptr %66, i64 320
  %68 = load ptr, ptr %67, align 8
  %69 = invoke noundef nonnull align 8 dereferenceable(24) ptr %68(ptr noundef nonnull align 8 dereferenceable(328) %2, i32 noundef %.0)
          to label %70 unwind label %56

70:                                               ; preds = %63
  %71 = getelementptr inbounds i8, ptr %69, i64 8
  %72 = load ptr, ptr %71, align 8, !tbaa !84
  %73 = invoke noundef zeroext i1 @_ZNK7glslang5TTypeeqERKS0_(ptr noundef nonnull align 8 dereferenceable(144) %65, ptr noundef nonnull align 8 dereferenceable(144) %72)
          to label %74 unwind label %56

74:                                               ; preds = %70
  br i1 %73, label %204, label %75

75:                                               ; preds = %74
  %76 = load ptr, ptr %37, align 8, !tbaa !81
  %77 = getelementptr inbounds i8, ptr %76, i64 320
  %78 = load ptr, ptr %77, align 8
  %79 = invoke noundef nonnull align 8 dereferenceable(24) ptr %78(ptr noundef nonnull align 8 dereferenceable(328) %37, i32 noundef %.0)
          to label %80 unwind label %56

80:                                               ; preds = %75
  %81 = getelementptr inbounds i8, ptr %79, i64 8
  %82 = load ptr, ptr %81, align 8, !tbaa !84
  %83 = load ptr, ptr %82, align 8, !tbaa !81
  %84 = getelementptr inbounds i8, ptr %83, i64 232
  %85 = load ptr, ptr %84, align 8
  %86 = invoke noundef zeroext i1 %85(ptr noundef nonnull align 8 dereferenceable(144) %82)
          to label %87 unwind label %56

87:                                               ; preds = %80
  br i1 %86, label %.thread67, label %88

88:                                               ; preds = %87
  %89 = load ptr, ptr %2, align 8, !tbaa !81
  %90 = getelementptr inbounds i8, ptr %89, i64 320
  %91 = load ptr, ptr %90, align 8
  %92 = invoke noundef nonnull align 8 dereferenceable(24) ptr %91(ptr noundef nonnull align 8 dereferenceable(328) %2, i32 noundef %.0)
          to label %93 unwind label %56

93:                                               ; preds = %88
  %94 = getelementptr inbounds i8, ptr %92, i64 8
  %95 = load ptr, ptr %94, align 8, !tbaa !84
  %96 = load ptr, ptr %95, align 8, !tbaa !81
  %97 = getelementptr inbounds i8, ptr %96, i64 232
  %98 = load ptr, ptr %97, align 8
  %99 = invoke noundef zeroext i1 %98(ptr noundef nonnull align 8 dereferenceable(144) %95)
          to label %100 unwind label %56

100:                                              ; preds = %93
  br i1 %99, label %.thread67, label %101

101:                                              ; preds = %100
  %102 = load ptr, ptr %37, align 8, !tbaa !81
  %103 = getelementptr inbounds i8, ptr %102, i64 320
  %104 = load ptr, ptr %103, align 8
  %105 = invoke noundef nonnull align 8 dereferenceable(24) ptr %104(ptr noundef nonnull align 8 dereferenceable(328) %37, i32 noundef %.0)
          to label %106 unwind label %56

106:                                              ; preds = %101
  %107 = getelementptr inbounds i8, ptr %105, i64 8
  %108 = load ptr, ptr %107, align 8, !tbaa !84
  %109 = load ptr, ptr %2, align 8, !tbaa !81
  %110 = getelementptr inbounds i8, ptr %109, i64 320
  %111 = load ptr, ptr %110, align 8
  %112 = invoke noundef nonnull align 8 dereferenceable(24) ptr %111(ptr noundef nonnull align 8 dereferenceable(328) %2, i32 noundef %.0)
          to label %113 unwind label %56

113:                                              ; preds = %106
  %114 = getelementptr inbounds i8, ptr %112, i64 8
  %115 = load ptr, ptr %114, align 8, !tbaa !84
  %116 = invoke noundef zeroext i1 @_ZNK7glslang5TType16sameElementShapeERKS0_PiS3_(ptr noundef nonnull align 8 dereferenceable(144) %108, ptr noundef nonnull align 8 dereferenceable(144) %115, ptr noundef null, ptr noundef null)
          to label %117 unwind label %56

117:                                              ; preds = %113
  br i1 %116, label %118, label %.thread67

118:                                              ; preds = %117
  %119 = load ptr, ptr %37, align 8, !tbaa !81
  %120 = getelementptr inbounds i8, ptr %119, i64 320
  %121 = load ptr, ptr %120, align 8
  %122 = invoke noundef nonnull align 8 dereferenceable(24) ptr %121(ptr noundef nonnull align 8 dereferenceable(328) %37, i32 noundef %.0)
          to label %123 unwind label %56

123:                                              ; preds = %118
  %124 = getelementptr inbounds i8, ptr %122, i64 8
  %125 = load ptr, ptr %124, align 8, !tbaa !84
  %126 = load ptr, ptr %125, align 8, !tbaa !81
  %127 = getelementptr inbounds i8, ptr %126, i64 80
  %128 = load ptr, ptr %127, align 8
  %129 = invoke noundef nonnull align 8 dereferenceable(72) ptr %128(ptr noundef nonnull align 8 dereferenceable(144) %125)
          to label %130 unwind label %56

130:                                              ; preds = %123
  %131 = call noundef zeroext i1 @_ZNK7glslang10TQualifier12isParamInputEv(ptr noundef nonnull align 8 dereferenceable(72) %129)
  br i1 %131, label %132, label %160

132:                                              ; preds = %130
  %133 = load ptr, ptr %31, align 8, !tbaa !86
  %134 = load ptr, ptr %2, align 8, !tbaa !81
  %135 = getelementptr inbounds i8, ptr %134, i64 320
  %136 = load ptr, ptr %135, align 8
  %137 = invoke noundef nonnull align 8 dereferenceable(24) ptr %136(ptr noundef nonnull align 8 dereferenceable(328) %2, i32 noundef %.0)
          to label %138 unwind label %56

138:                                              ; preds = %132
  %139 = getelementptr inbounds i8, ptr %137, i64 8
  %140 = load ptr, ptr %139, align 8, !tbaa !84
  %141 = load ptr, ptr %140, align 8, !tbaa !81
  %142 = getelementptr inbounds i8, ptr %141, i64 56
  %143 = load ptr, ptr %142, align 8
  %144 = invoke noundef i32 %143(ptr noundef nonnull align 8 dereferenceable(144) %140)
          to label %145 unwind label %56

145:                                              ; preds = %138
  %146 = load ptr, ptr %37, align 8, !tbaa !81
  %147 = getelementptr inbounds i8, ptr %146, i64 320
  %148 = load ptr, ptr %147, align 8
  %149 = invoke noundef nonnull align 8 dereferenceable(24) ptr %148(ptr noundef nonnull align 8 dereferenceable(328) %37, i32 noundef %.0)
          to label %150 unwind label %56

150:                                              ; preds = %145
  %151 = getelementptr inbounds i8, ptr %149, i64 8
  %152 = load ptr, ptr %151, align 8, !tbaa !84
  %153 = load ptr, ptr %152, align 8, !tbaa !81
  %154 = getelementptr inbounds i8, ptr %153, i64 56
  %155 = load ptr, ptr %154, align 8
  %156 = invoke noundef i32 %155(ptr noundef nonnull align 8 dereferenceable(144) %152)
          to label %157 unwind label %56

157:                                              ; preds = %150
  %158 = invoke noundef zeroext i1 @_ZNK7glslang13TIntermediate20canImplicitlyPromoteENS_10TBasicTypeES1_NS_9TOperatorE(ptr noundef nonnull align 8 dereferenceable(1784) %133, i32 noundef %144, i32 noundef %156, i32 noundef 0)
          to label %159 unwind label %56

159:                                              ; preds = %157
  %spec.select = select i1 %158, i8 %.048, i8 0
  br label %160

160:                                              ; preds = %159, %130
  %.1 = phi i8 [ %.048, %130 ], [ %spec.select, %159 ]
  %161 = load ptr, ptr %37, align 8, !tbaa !81
  %162 = getelementptr inbounds i8, ptr %161, i64 320
  %163 = load ptr, ptr %162, align 8
  %164 = invoke noundef nonnull align 8 dereferenceable(24) ptr %163(ptr noundef nonnull align 8 dereferenceable(328) %37, i32 noundef %.0)
          to label %165 unwind label %56

165:                                              ; preds = %160
  %166 = getelementptr inbounds i8, ptr %164, i64 8
  %167 = load ptr, ptr %166, align 8, !tbaa !84
  %168 = load ptr, ptr %167, align 8, !tbaa !81
  %169 = getelementptr inbounds i8, ptr %168, i64 80
  %170 = load ptr, ptr %169, align 8
  %171 = invoke noundef nonnull align 8 dereferenceable(72) ptr %170(ptr noundef nonnull align 8 dereferenceable(144) %167)
          to label %172 unwind label %56

172:                                              ; preds = %165
  %173 = call noundef zeroext i1 @_ZNK7glslang10TQualifier13isParamOutputEv(ptr noundef nonnull align 8 dereferenceable(72) %171)
  br i1 %173, label %174, label %202

174:                                              ; preds = %172
  %175 = load ptr, ptr %31, align 8, !tbaa !86
  %176 = load ptr, ptr %37, align 8, !tbaa !81
  %177 = getelementptr inbounds i8, ptr %176, i64 320
  %178 = load ptr, ptr %177, align 8
  %179 = invoke noundef nonnull align 8 dereferenceable(24) ptr %178(ptr noundef nonnull align 8 dereferenceable(328) %37, i32 noundef %.0)
          to label %180 unwind label %56

180:                                              ; preds = %174
  %181 = getelementptr inbounds i8, ptr %179, i64 8
  %182 = load ptr, ptr %181, align 8, !tbaa !84
  %183 = load ptr, ptr %182, align 8, !tbaa !81
  %184 = getelementptr inbounds i8, ptr %183, i64 56
  %185 = load ptr, ptr %184, align 8
  %186 = invoke noundef i32 %185(ptr noundef nonnull align 8 dereferenceable(144) %182)
          to label %187 unwind label %56

187:                                              ; preds = %180
  %188 = load ptr, ptr %2, align 8, !tbaa !81
  %189 = getelementptr inbounds i8, ptr %188, i64 320
  %190 = load ptr, ptr %189, align 8
  %191 = invoke noundef nonnull align 8 dereferenceable(24) ptr %190(ptr noundef nonnull align 8 dereferenceable(328) %2, i32 noundef %.0)
          to label %192 unwind label %56

192:                                              ; preds = %187
  %193 = getelementptr inbounds i8, ptr %191, i64 8
  %194 = load ptr, ptr %193, align 8, !tbaa !84
  %195 = load ptr, ptr %194, align 8, !tbaa !81
  %196 = getelementptr inbounds i8, ptr %195, i64 56
  %197 = load ptr, ptr %196, align 8
  %198 = invoke noundef i32 %197(ptr noundef nonnull align 8 dereferenceable(144) %194)
          to label %199 unwind label %56

199:                                              ; preds = %192
  %200 = invoke noundef zeroext i1 @_ZNK7glslang13TIntermediate20canImplicitlyPromoteENS_10TBasicTypeES1_NS_9TOperatorE(ptr noundef nonnull align 8 dereferenceable(1784) %175, i32 noundef %186, i32 noundef %198, i32 noundef 0)
          to label %201 unwind label %56

201:                                              ; preds = %199
  %spec.select65 = select i1 %200, i8 %.1, i8 0
  br label %202

202:                                              ; preds = %201, %172
  %.2 = phi i8 [ %.1, %172 ], [ %spec.select65, %201 ]
  %203 = trunc nuw i8 %.2 to i1
  br i1 %203, label %204, label %206

204:                                              ; preds = %202, %74
  %.3 = phi i8 [ %.048, %74 ], [ %.2, %202 ]
  %205 = add nuw nsw i32 %.0, 1
  br label %.preheader, !llvm.loop !87

206:                                              ; preds = %202, %54
  %.4 = phi i8 [ %.048, %54 ], [ %.2, %202 ]
  %207 = trunc nuw i8 %.4 to i1
  br i1 %207, label %208, label %.thread67

208:                                              ; preds = %206
  %.not61 = icmp eq ptr %.05672, null
  br i1 %.not61, label %.thread67, label %209

209:                                              ; preds = %208
  %210 = load ptr, ptr %2, align 8, !tbaa !81
  %211 = getelementptr inbounds i8, ptr %210, i64 24
  %212 = load ptr, ptr %211, align 8
  %213 = invoke noundef nonnull align 8 dereferenceable(40) ptr %212(ptr noundef nonnull align 8 dereferenceable(33) %2)
          to label %214 unwind label %219

214:                                              ; preds = %209
  %215 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %213) #5
  %216 = load ptr, ptr %0, align 8, !tbaa !81
  %217 = getelementptr inbounds i8, ptr %216, i64 336
  %218 = load ptr, ptr %217, align 8
  invoke void (ptr, ptr, ptr, ptr, ptr, ...) %218(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.769, ptr noundef %215, ptr noundef nonnull @.str.2)
          to label %.thread67 unwind label %219

219:                                              ; preds = %214, %209
  %220 = landingpad { ptr, i32 }
          cleanup
  br label %224

.thread67:                                        ; preds = %117, %100, %87, %206, %214, %208, %47
  %.258 = phi ptr [ %.05672, %47 ], [ %.05672, %214 ], [ %.05672, %206 ], [ %37, %208 ], [ %.05672, %87 ], [ %.05672, %100 ], [ %.05672, %117 ]
  %221 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPPKN7glslang9TFunctionESt6vectorIS4_NS1_14pool_allocatorIS4_EEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %6) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #5
  %222 = call ptr @_ZNSt6vectorIPKN7glslang9TFunctionENS0_14pool_allocatorIS3_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(32) %5) #5
  store ptr %222, ptr %7, align 8
  %223 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPKN7glslang9TFunctionESt6vectorIS4_NS1_14pool_allocatorIS4_EEEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %7) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #5
  br i1 %223, label %35, label %._crit_edge, !llvm.loop !89

224:                                              ; preds = %56, %219, %48
  %.pn.pn = phi { ptr, i32 } [ %49, %48 ], [ %220, %219 ], [ %57, %56 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #5
  br label %236

225:                                              ; preds = %._crit_edge.thread, %._crit_edge
  %226 = load ptr, ptr %2, align 8, !tbaa !81
  %227 = getelementptr inbounds i8, ptr %226, i64 24
  %228 = load ptr, ptr %227, align 8
  %229 = invoke noundef nonnull align 8 dereferenceable(40) ptr %228(ptr noundef nonnull align 8 dereferenceable(33) %2)
          to label %230 unwind label %33

230:                                              ; preds = %225
  %231 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %229) #5
  %232 = load ptr, ptr %0, align 8, !tbaa !81
  %233 = getelementptr inbounds i8, ptr %232, i64 336
  %234 = load ptr, ptr %233, align 8
  invoke void (ptr, ptr, ptr, ptr, ptr, ...) %234(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.768, ptr noundef %231, ptr noundef nonnull @.str.2)
          to label %235 unwind label %33

235:                                              ; preds = %230, %._crit_edge
  %.056.lcssa74 = phi ptr [ null, %230 ], [ %.258, %._crit_edge ]
  call void @_ZNSt6vectorIPKN7glslang9TFunctionENS0_14pool_allocatorIS3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #5
  br label %237

236:                                              ; preds = %224, %33
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %224 ], [ %34, %33 ]
  call void @_ZNSt6vectorIPKN7glslang9TFunctionENS0_14pool_allocatorIS3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #5
  resume { ptr, i32 } %.pn.pn.pn

237:                                              ; preds = %235, %15
  %.049 = phi ptr [ %19, %15 ], [ %.056.lcssa74, %235 ]
  ret ptr %.049
}

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

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

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !12, i64 200}
!6 = !{!"_ZTSN7glslang17TParseContextBaseE", !7, i64 0, !12, i64 192, !12, i64 200, !13, i64 208, !13, i64 212, !13, i64 216, !13, i64 220, !13, i64 224, !12, i64 232, !8, i64 240, !8, i64 241, !33, i64 248, !40, i64 280, !45, i64 312, !13, i64 376, !13, i64 380, !8, i64 384, !52, i64 392, !12, i64 424, !12, i64 432, !58, i64 440, !12, i64 824, !60, i64 832, !63, i64 872, !65, i64 904, !66, i64 936, !67, i64 968, !68, i64 1000, !12, i64 1032, !13, i64 1040, !13, i64 1044, !13, i64 1048, !69, i64 1056, !13, i64 1112, !76, i64 1120}
!7 = !{!"_ZTSN7glslang14TParseVersionsE", !8, i64 8, !11, i64 12, !12, i64 16, !13, i64 24, !14, i64 28, !15, i64 32, !12, i64 56, !16, i64 64, !27, i64 120, !32, i64 176, !13, i64 180, !12, i64 184}
!8 = !{!"bool", !9, i64 0}
!9 = !{!"omnipotent char", !10, i64 0}
!10 = !{!"Simple C++ TBAA"}
!11 = !{!"_ZTS8EProfile", !9, i64 0}
!12 = !{!"any pointer", !9, i64 0}
!13 = !{!"int", !9, i64 0}
!14 = !{!"_ZTS11EShLanguage", !9, i64 0}
!15 = !{!"_ZTSN7glslang10SpvVersionE", !13, i64 0, !13, i64 4, !13, i64 8, !13, i64 12, !8, 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", !12, 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, !12, i64 8, !12, i64 16, !12, i64 24}
!25 = !{!"_ZTSSt14_Rb_tree_color", !9, i64 0}
!26 = !{!"long", !9, 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", !12, i64 0}
!32 = !{!"_ZTS11EShMessages", !9, i64 0}
!33 = !{!"_ZTSN7glslang5TListIPNS_7TVectorIP11TIntermNodeEEEE", !34, i64 0}
!34 = !{!"_ZTSNSt7__cxx114listIPN7glslang7TVectorIP11TIntermNodeEENS1_14pool_allocatorIS6_EEEE", !35, i64 0}
!35 = !{!"_ZTSNSt7__cxx1110_List_baseIPN7glslang7TVectorIP11TIntermNodeEENS1_14pool_allocatorIS6_EEEE", !36, i64 0}
!36 = !{!"_ZTSNSt7__cxx1110_List_baseIPN7glslang7TVectorIP11TIntermNodeEENS1_14pool_allocatorIS6_EEE10_List_implE", !37, i64 0, !38, i64 8}
!37 = !{!"_ZTSN7glslang14pool_allocatorISt10_List_nodeIPNS_7TVectorIP11TIntermNodeEEEEE", !12, i64 0}
!38 = !{!"_ZTSNSt8__detail17_List_node_headerE", !39, i64 0, !26, i64 16}
!39 = !{!"_ZTSNSt8__detail15_List_node_baseE", !12, i64 0, !12, i64 8}
!40 = !{!"_ZTSN7glslang5TListIiEE", !41, i64 0}
!41 = !{!"_ZTSNSt7__cxx114listIiN7glslang14pool_allocatorIiEEEE", !42, i64 0}
!42 = !{!"_ZTSNSt7__cxx1110_List_baseIiN7glslang14pool_allocatorIiEEEE", !43, i64 0}
!43 = !{!"_ZTSNSt7__cxx1110_List_baseIiN7glslang14pool_allocatorIiEEE10_List_implE", !44, i64 0, !38, i64 8}
!44 = !{!"_ZTSN7glslang14pool_allocatorISt10_List_nodeIiEEE", !12, i64 0}
!45 = !{!"_ZTSN7glslang7TPragmaE", !8, i64 0, !8, i64 1, !46, i64 8}
!46 = !{!"_ZTSN7glslang12TPragmaTableE", !47, i64 0}
!47 = !{!"_ZTSN7glslang4TMapINSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEES7_St4lessIS7_EEE", !48, i64 0}
!48 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEES7_St4lessIS7_ENS5_ISt4pairIKS7_S7_EEEE", !49, i64 0}
!49 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_S7_ESt10_Select1stISA_ESt4lessIS7_ENS5_ISA_EEE", !50, i64 0}
!50 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_S7_ESt10_Select1stISA_ESt4lessIS7_ENS5_ISA_EEE13_Rb_tree_implISE_Lb1EEE", !51, i64 0, !21, i64 8, !23, i64 16}
!51 = !{!"_ZTSN7glslang14pool_allocatorISt13_Rb_tree_nodeISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_IcEEEES8_EEEE", !12, i64 0}
!52 = !{!"_ZTSN7glslang7TVectorIPNS_7TSymbolEEE", !53, i64 0}
!53 = !{!"_ZTSSt6vectorIPN7glslang7TSymbolENS0_14pool_allocatorIS2_EEE", !54, i64 0}
!54 = !{!"_ZTSSt12_Vector_baseIPN7glslang7TSymbolENS0_14pool_allocatorIS2_EEE", !55, i64 0}
!55 = !{!"_ZTSNSt12_Vector_baseIPN7glslang7TSymbolENS0_14pool_allocatorIS2_EEE12_Vector_implE", !56, i64 0, !57, i64 8}
!56 = !{!"_ZTSN7glslang14pool_allocatorIPNS_7TSymbolEEE", !12, i64 0}
!57 = !{!"_ZTSNSt12_Vector_baseIPN7glslang7TSymbolENS0_14pool_allocatorIS2_EEE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!58 = !{!"_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, !59, i64 372}
!59 = !{!"_ZTS7TLimits", !8, i64 0, !8, i64 1, !8, i64 2, !8, i64 3, !8, i64 4, !8, i64 5, !8, i64 6, !8, i64 7, !8, i64 8}
!60 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEE", !61, i64 0, !26, i64 16, !9, i64 24}
!61 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE12_Alloc_hiderE", !62, i64 0, !12, i64 8}
!62 = !{!"_ZTSN7glslang14pool_allocatorIcEE", !12, i64 0}
!63 = !{!"_ZTSSt8functionIFviibiPKcEE", !64, i64 0, !12, i64 24}
!64 = !{!"_ZTSSt14_Function_base", !9, i64 0, !12, i64 16}
!65 = !{!"_ZTSSt8functionIFviRKN7glslang7TVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_14pool_allocatorIcEEEEEEEE", !64, i64 0, !12, i64 24}
!66 = !{!"_ZTSSt8functionIFviiPKcEE", !64, i64 0, !12, i64 24}
!67 = !{!"_ZTSSt8functionIFviPKcS1_EE", !64, i64 0, !12, i64 24}
!68 = !{!"_ZTSSt8functionIFviPKcEE", !64, i64 0, !12, i64 24}
!69 = !{!"_ZTSN7glslang4TMapIiPNS_9TVariableESt4lessIiEEE", !70, i64 0}
!70 = !{!"_ZTSSt3mapIiPN7glslang9TVariableESt4lessIiENS0_14pool_allocatorISt4pairIKiS2_EEEE", !71, i64 0}
!71 = !{!"_ZTSSt8_Rb_treeIiSt4pairIKiPN7glslang9TVariableEESt10_Select1stIS5_ESt4lessIiENS2_14pool_allocatorIS5_EEE", !72, i64 0}
!72 = !{!"_ZTSNSt8_Rb_treeIiSt4pairIKiPN7glslang9TVariableEESt10_Select1stIS5_ESt4lessIiENS2_14pool_allocatorIS5_EEE13_Rb_tree_implIS9_Lb1EEE", !73, i64 0, !74, i64 8, !23, i64 16}
!73 = !{!"_ZTSN7glslang14pool_allocatorISt13_Rb_tree_nodeISt4pairIKiPNS_9TVariableEEEEE", !12, i64 0}
!74 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIiEE", !75, i64 0}
!75 = !{!"_ZTSSt4lessIiE"}
!76 = !{!"_ZTSN7glslang4TMapIiiSt4lessIiEEE", !77, i64 0}
!77 = !{!"_ZTSSt3mapIiiSt4lessIiEN7glslang14pool_allocatorISt4pairIKiiEEEE", !78, i64 0}
!78 = !{!"_ZTSSt8_Rb_treeIiSt4pairIKiiESt10_Select1stIS2_ESt4lessIiEN7glslang14pool_allocatorIS2_EEE", !79, i64 0}
!79 = !{!"_ZTSNSt8_Rb_treeIiSt4pairIKiiESt10_Select1stIS2_ESt4lessIiEN7glslang14pool_allocatorIS2_EEE13_Rb_tree_implIS6_Lb1EEE", !80, i64 0, !74, i64 8, !23, i64 16}
!80 = !{!"_ZTSN7glslang14pool_allocatorISt13_Rb_tree_nodeISt4pairIKiiEEEE", !12, i64 0}
!81 = !{!82, !82, i64 0}
!82 = !{!"vtable pointer", !10, i64 0}
!83 = !{!12, !12, i64 0}
!84 = !{!85, !12, i64 8}
!85 = !{!"_ZTSN7glslang10TParameterE", !12, i64 0, !12, i64 8, !12, i64 16}
!86 = !{!7, !12, i64 56}
!87 = distinct !{!87, !88}
!88 = !{!"llvm.loop.mustprogress"}
!89 = distinct !{!89, !88}


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