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

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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>::_Alloc_hider" = type { %"class.glslang::pool_allocator.14", ptr }
%"class.glslang::pool_allocator.14" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.glslang::TType" = type { ptr, i32, [4 x i8], %"class.glslang::TQualifier", ptr, %union.anon.179, ptr, ptr, %"struct.glslang::TSampler", ptr, ptr }
%"class.glslang::TQualifier" = type <{ ptr, i64, i8, [3 x i8], i32, i32, i64, i64, i8, i8, i8, i8, i8, [3 x i8], i32, i8, [3 x i8], i32, ptr }>
%union.anon.179 = type { ptr }
%"struct.glslang::TSampler" = type { i32 }
%"struct.glslang::TTypeLoc" = type { ptr, %"struct.glslang::TSourceLoc" }
%"struct.glslang::TSourceLoc" = type { ptr, i32, i32, i32 }
%"class.glslang::TParseVersions" = type { ptr, i8, i32, ptr, i32, i32, %"struct.glslang::SpvVersion", ptr, %"class.glslang::TMap", %"class.glslang::TMap.0", i32, i32, ptr }
%"struct.glslang::SpvVersion" = type <{ i32, i32, i32, i32, i8, [3 x i8] }>
%"class.glslang::TMap" = type { %"class.std::map" }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, glslang::TExtensionBehavior>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, glslang::TExtensionBehavior>>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>>, glslang::pool_allocator<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, glslang::TExtensionBehavior>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, glslang::TExtensionBehavior>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, glslang::TExtensionBehavior>>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>>, glslang::pool_allocator<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, glslang::TExtensionBehavior>>>::_Rb_tree_impl" = type { %"class.glslang::pool_allocator", [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.glslang::pool_allocator" = type { ptr }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.glslang::TMap.0" = type { %"class.std::map.1" }
%"class.std::map.1" = type { %"class.std::_Rb_tree.2" }
%"class.std::_Rb_tree.2" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, unsigned int>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, unsigned int>>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>>, glslang::pool_allocator<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, unsigned int>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, unsigned int>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, unsigned int>>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>>, glslang::pool_allocator<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, unsigned int>>>::_Rb_tree_impl" = type { %"class.glslang::pool_allocator.3", [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.glslang::pool_allocator.3" = type { ptr }

@.str.2 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.818 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.819 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.820 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.821 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.822 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.823 = external hidden unnamed_addr constant [34 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef ptr @_ZN7glslang13TParseContext22convertInitializerListERKNS_10TSourceLocERKNS_5TTypeEPNS_12TIntermTypedE(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(144) %2, ptr noundef %3) #2 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca %"class.glslang::TType", align 8
  %13 = alloca ptr, align 8
  %14 = alloca i32, align 4
  %15 = alloca ptr, align 8
  %16 = alloca i32, align 4
  %17 = alloca %"class.glslang::TType", align 8
  %18 = alloca i64, align 8
  %19 = alloca i64, align 8
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca %"class.glslang::pool_allocator.14", align 8
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.glslang::pool_allocator.14", align 8
  %25 = alloca %"class.glslang::TType", align 8
  %26 = alloca i32, align 4
  %27 = alloca %"class.std::__cxx11::basic_string", align 8
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  %29 = alloca %"class.glslang::pool_allocator.14", align 8
  %30 = alloca %"class.std::__cxx11::basic_string", align 8
  %31 = alloca %"class.glslang::pool_allocator.14", align 8
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca %"class.std::__cxx11::basic_string", align 8
  %36 = alloca %"class.std::__cxx11::basic_string", align 8
  %37 = alloca %"class.glslang::pool_allocator.14", align 8
  %38 = alloca %"class.std::__cxx11::basic_string", align 8
  %39 = alloca %"class.glslang::pool_allocator.14", align 8
  %40 = alloca %"class.std::__cxx11::basic_string", align 8
  %41 = alloca %"class.std::__cxx11::basic_string", align 8
  %42 = alloca %"class.glslang::pool_allocator.14", align 8
  %43 = alloca %"class.std::__cxx11::basic_string", align 8
  %44 = alloca %"class.glslang::pool_allocator.14", align 8
  %45 = alloca ptr, align 8
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store ptr %2, ptr %8, align 8, !tbaa !5
  store ptr %3, ptr %9, align 8, !tbaa !5
  %46 = load ptr, ptr %6, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #4
  %47 = load ptr, ptr %9, align 8, !tbaa !5
  %48 = load ptr, ptr %47, align 8, !tbaa !9
  %49 = getelementptr inbounds ptr, ptr %48, i64 6
  %50 = load ptr, ptr %49, align 8
  %51 = call noundef ptr %50(ptr noundef nonnull align 8 dereferenceable(32) %47)
  store ptr %51, ptr %10, align 8, !tbaa !5
  %52 = load ptr, ptr %10, align 8, !tbaa !5
  %53 = icmp ne ptr %52, null
  br i1 %53, label %54, label %58

54:                                               ; preds = %4
  %55 = load ptr, ptr %10, align 8, !tbaa !5
  %56 = call noundef i32 @_ZNK7glslang15TIntermOperator5getOpEv(ptr noundef nonnull align 8 dereferenceable(184) %55)
  %57 = icmp ne i32 %56, 0
  br i1 %57, label %58, label %60

58:                                               ; preds = %54, %4
  %59 = load ptr, ptr %9, align 8, !tbaa !5
  store ptr %59, ptr %5, align 8
  store i32 1, ptr %11, align 4
  br label %637

60:                                               ; preds = %54
  %61 = load ptr, ptr %8, align 8, !tbaa !5
  %62 = load ptr, ptr %61, align 8, !tbaa !9
  %63 = getelementptr inbounds ptr, ptr %62, i64 29
  %64 = load ptr, ptr %63, align 8
  %65 = call noundef zeroext i1 %64(ptr noundef nonnull align 8 dereferenceable(144) %61)
  br i1 %65, label %66, label %263

66:                                               ; preds = %60
  call void @llvm.lifetime.start.p0(i64 144, ptr %12) #4
  call void @_ZN7glslang5TTypeC2ENS_10TBasicTypeENS_17TStorageQualifierEiiib(ptr noundef nonnull align 8 dereferenceable(144) %12, i32 noundef 0, i32 noundef 0, i32 noundef 1, i32 noundef 0, i32 noundef 0, i1 noundef zeroext false)
  %67 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZN7glslang5TType11shallowCopyERKS0_(ptr noundef nonnull align 8 dereferenceable(144) %12, ptr noundef nonnull align 8 dereferenceable(144) %67)
          to label %68 unwind label %141

68:                                               ; preds = %66
  %69 = load ptr, ptr %8, align 8, !tbaa !5
  %70 = load ptr, ptr %69, align 8, !tbaa !9
  %71 = getelementptr inbounds ptr, ptr %70, i64 19
  %72 = load ptr, ptr %71, align 8
  %73 = invoke noundef ptr %72(ptr noundef nonnull align 8 dereferenceable(144) %69)
          to label %74 unwind label %141

74:                                               ; preds = %68
  invoke void @_ZN7glslang5TType14copyArraySizesERKNS_11TArraySizesE(ptr noundef nonnull align 8 dereferenceable(144) %12, ptr noundef nonnull align 8 dereferenceable(21) %73)
          to label %75 unwind label %141

75:                                               ; preds = %74
  %76 = load ptr, ptr %10, align 8, !tbaa !5
  %77 = load ptr, ptr %76, align 8, !tbaa !9
  %78 = getelementptr inbounds ptr, ptr %77, i64 50
  %79 = load ptr, ptr %78, align 8
  %80 = invoke noundef nonnull align 8 dereferenceable(32) ptr %79(ptr noundef nonnull align 8 dereferenceable(352) %76)
          to label %81 unwind label %141

81:                                               ; preds = %75
  %82 = call noundef i64 @_ZNKSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %80) #4
  %83 = trunc i64 %82 to i32
  invoke void @_ZN7glslang5TType20changeOuterArraySizeEi(ptr noundef nonnull align 8 dereferenceable(144) %12, i32 noundef %83)
          to label %84 unwind label %141

84:                                               ; preds = %81
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #4
  %85 = load ptr, ptr %10, align 8, !tbaa !5
  %86 = load ptr, ptr %85, align 8, !tbaa !9
  %87 = getelementptr inbounds ptr, ptr %86, i64 50
  %88 = load ptr, ptr %87, align 8
  %89 = invoke noundef nonnull align 8 dereferenceable(32) ptr %88(ptr noundef nonnull align 8 dereferenceable(352) %85)
          to label %90 unwind label %145

90:                                               ; preds = %84
  %91 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %89, i64 noundef 0) #4
  %92 = load ptr, ptr %91, align 8, !tbaa !5
  %93 = load ptr, ptr %92, align 8, !tbaa !9
  %94 = getelementptr inbounds ptr, ptr %93, i64 3
  %95 = load ptr, ptr %94, align 8
  %96 = invoke noundef ptr %95(ptr noundef nonnull align 8 dereferenceable(32) %92)
          to label %97 unwind label %145

97:                                               ; preds = %90
  store ptr %96, ptr %15, align 8, !tbaa !5
  %98 = invoke noundef zeroext i1 @_ZNK7glslang5TType15isArrayOfArraysEv(ptr noundef nonnull align 8 dereferenceable(144) %12)
          to label %99 unwind label %145

99:                                               ; preds = %97
  br i1 %98, label %100, label %185

100:                                              ; preds = %99
  %101 = load ptr, ptr %15, align 8, !tbaa !5
  %102 = load ptr, ptr %101, align 8, !tbaa !9
  %103 = getelementptr inbounds ptr, ptr %102, i64 30
  %104 = load ptr, ptr %103, align 8
  %105 = invoke noundef nonnull align 8 dereferenceable(144) ptr %104(ptr noundef nonnull align 8 dereferenceable(176) %101)
          to label %106 unwind label %145

106:                                              ; preds = %100
  %107 = load ptr, ptr %105, align 8, !tbaa !9
  %108 = getelementptr inbounds ptr, ptr %107, i64 29
  %109 = load ptr, ptr %108, align 8
  %110 = invoke noundef zeroext i1 %109(ptr noundef nonnull align 8 dereferenceable(144) %105)
          to label %111 unwind label %145

111:                                              ; preds = %106
  br i1 %110, label %112, label %185

112:                                              ; preds = %111
  %113 = invoke noundef ptr @_ZN7glslang5TType13getArraySizesEv(ptr noundef nonnull align 8 dereferenceable(144) %12)
          to label %114 unwind label %145

114:                                              ; preds = %112
  %115 = invoke noundef i32 @_ZNK7glslang11TArraySizes10getNumDimsEv(ptr noundef nonnull align 8 dereferenceable(21) %113)
          to label %116 unwind label %145

116:                                              ; preds = %114
  %117 = load ptr, ptr %15, align 8, !tbaa !5
  %118 = load ptr, ptr %117, align 8, !tbaa !9
  %119 = getelementptr inbounds ptr, ptr %118, i64 30
  %120 = load ptr, ptr %119, align 8
  %121 = invoke noundef nonnull align 8 dereferenceable(144) ptr %120(ptr noundef nonnull align 8 dereferenceable(176) %117)
          to label %122 unwind label %145

122:                                              ; preds = %116
  %123 = load ptr, ptr %121, align 8, !tbaa !9
  %124 = getelementptr inbounds ptr, ptr %123, i64 19
  %125 = load ptr, ptr %124, align 8
  %126 = invoke noundef ptr %125(ptr noundef nonnull align 8 dereferenceable(144) %121)
          to label %127 unwind label %145

127:                                              ; preds = %122
  %128 = invoke noundef i32 @_ZNK7glslang11TArraySizes10getNumDimsEv(ptr noundef nonnull align 8 dereferenceable(21) %126)
          to label %129 unwind label %145

129:                                              ; preds = %127
  %130 = add nsw i32 %128, 1
  %131 = icmp eq i32 %115, %130
  br i1 %131, label %132, label %185

132:                                              ; preds = %129
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #4
  store i32 1, ptr %16, align 4, !tbaa !11
  br label %133

133:                                              ; preds = %181, %132
  %134 = load i32, ptr %16, align 4, !tbaa !11
  %135 = invoke noundef ptr @_ZN7glslang5TType13getArraySizesEv(ptr noundef nonnull align 8 dereferenceable(144) %12)
          to label %136 unwind label %149

136:                                              ; preds = %133
  %137 = invoke noundef i32 @_ZNK7glslang11TArraySizes10getNumDimsEv(ptr noundef nonnull align 8 dereferenceable(21) %135)
          to label %138 unwind label %149

138:                                              ; preds = %136
  %139 = icmp slt i32 %134, %137
  br i1 %139, label %153, label %140

140:                                              ; preds = %138
  store i32 2, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #4
  br label %184

141:                                              ; preds = %81, %75, %74, %68, %66
  %142 = landingpad { ptr, i32 }
          cleanup
  %143 = extractvalue { ptr, i32 } %142, 0
  store ptr %143, ptr %13, align 8
  %144 = extractvalue { ptr, i32 } %142, 1
  store i32 %144, ptr %14, align 4
  br label %262

145:                                              ; preds = %127, %122, %116, %114, %112, %106, %100, %97, %90, %84
  %146 = landingpad { ptr, i32 }
          cleanup
  %147 = extractvalue { ptr, i32 } %146, 0
  store ptr %147, ptr %13, align 8
  %148 = extractvalue { ptr, i32 } %146, 1
  store i32 %148, ptr %14, align 4
  br label %261

149:                                              ; preds = %178, %174, %169, %162, %160, %155, %153, %136, %133
  %150 = landingpad { ptr, i32 }
          cleanup
  %151 = extractvalue { ptr, i32 } %150, 0
  store ptr %151, ptr %13, align 8
  %152 = extractvalue { ptr, i32 } %150, 1
  store i32 %152, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #4
  br label %261

153:                                              ; preds = %138
  %154 = invoke noundef ptr @_ZN7glslang5TType13getArraySizesEv(ptr noundef nonnull align 8 dereferenceable(144) %12)
          to label %155 unwind label %149

155:                                              ; preds = %153
  %156 = load i32, ptr %16, align 4, !tbaa !11
  %157 = invoke noundef i32 @_ZNK7glslang11TArraySizes10getDimSizeEi(ptr noundef nonnull align 8 dereferenceable(21) %154, i32 noundef %156)
          to label %158 unwind label %149

158:                                              ; preds = %155
  %159 = icmp eq i32 %157, 0
  br i1 %159, label %160, label %180

160:                                              ; preds = %158
  %161 = invoke noundef ptr @_ZN7glslang5TType13getArraySizesEv(ptr noundef nonnull align 8 dereferenceable(144) %12)
          to label %162 unwind label %149

162:                                              ; preds = %160
  %163 = load i32, ptr %16, align 4, !tbaa !11
  %164 = load ptr, ptr %15, align 8, !tbaa !5
  %165 = load ptr, ptr %164, align 8, !tbaa !9
  %166 = getelementptr inbounds ptr, ptr %165, i64 30
  %167 = load ptr, ptr %166, align 8
  %168 = invoke noundef nonnull align 8 dereferenceable(144) ptr %167(ptr noundef nonnull align 8 dereferenceable(176) %164)
          to label %169 unwind label %149

169:                                              ; preds = %162
  %170 = load ptr, ptr %168, align 8, !tbaa !9
  %171 = getelementptr inbounds ptr, ptr %170, i64 19
  %172 = load ptr, ptr %171, align 8
  %173 = invoke noundef ptr %172(ptr noundef nonnull align 8 dereferenceable(144) %168)
          to label %174 unwind label %149

174:                                              ; preds = %169
  %175 = load i32, ptr %16, align 4, !tbaa !11
  %176 = sub nsw i32 %175, 1
  %177 = invoke noundef i32 @_ZNK7glslang11TArraySizes10getDimSizeEi(ptr noundef nonnull align 8 dereferenceable(21) %173, i32 noundef %176)
          to label %178 unwind label %149

178:                                              ; preds = %174
  invoke void @_ZN7glslang11TArraySizes10setDimSizeEii(ptr noundef nonnull align 8 dereferenceable(21) %161, i32 noundef %163, i32 noundef %177)
          to label %179 unwind label %149

179:                                              ; preds = %178
  br label %180

180:                                              ; preds = %179, %158
  br label %181

181:                                              ; preds = %180
  %182 = load i32, ptr %16, align 4, !tbaa !11
  %183 = add nsw i32 %182, 1
  store i32 %183, ptr %16, align 4, !tbaa !11
  br label %133, !llvm.loop !13

184:                                              ; preds = %140
  br label %185

185:                                              ; preds = %184, %129, %111, %99
  call void @llvm.lifetime.start.p0(i64 144, ptr %17) #4
  invoke void @_ZN7glslang5TTypeC2ERKS0_ib(ptr noundef nonnull align 8 dereferenceable(144) %17, ptr noundef nonnull align 8 dereferenceable(144) %12, i32 noundef 0, i1 noundef zeroext false)
          to label %186 unwind label %198

186:                                              ; preds = %185
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #4
  store i64 0, ptr %18, align 8, !tbaa !15
  br label %187

187:                                              ; preds = %244, %186
  %188 = load i64, ptr %18, align 8, !tbaa !15
  %189 = load ptr, ptr %10, align 8, !tbaa !5
  %190 = load ptr, ptr %189, align 8, !tbaa !9
  %191 = getelementptr inbounds ptr, ptr %190, i64 50
  %192 = load ptr, ptr %191, align 8
  %193 = invoke noundef nonnull align 8 dereferenceable(32) ptr %192(ptr noundef nonnull align 8 dereferenceable(352) %189)
          to label %194 unwind label %202

194:                                              ; preds = %187
  %195 = call noundef i64 @_ZNKSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %193) #4
  %196 = icmp ult i64 %188, %195
  br i1 %196, label %206, label %197

197:                                              ; preds = %194
  store i32 5, ptr %11, align 4
  br label %247

198:                                              ; preds = %185
  %199 = landingpad { ptr, i32 }
          cleanup
  %200 = extractvalue { ptr, i32 } %199, 0
  store ptr %200, ptr %13, align 8
  %201 = extractvalue { ptr, i32 } %199, 1
  store i32 %201, ptr %14, align 4
  br label %260

202:                                              ; preds = %229, %223, %221, %213, %206, %187
  %203 = landingpad { ptr, i32 }
          cleanup
  %204 = extractvalue { ptr, i32 } %203, 0
  store ptr %204, ptr %13, align 8
  %205 = extractvalue { ptr, i32 } %203, 1
  store i32 %205, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #4
  br label %259

206:                                              ; preds = %194
  %207 = load ptr, ptr %7, align 8, !tbaa !5
  %208 = load ptr, ptr %10, align 8, !tbaa !5
  %209 = load ptr, ptr %208, align 8, !tbaa !9
  %210 = getelementptr inbounds ptr, ptr %209, i64 50
  %211 = load ptr, ptr %210, align 8
  %212 = invoke noundef nonnull align 8 dereferenceable(32) ptr %211(ptr noundef nonnull align 8 dereferenceable(352) %208)
          to label %213 unwind label %202

213:                                              ; preds = %206
  %214 = load i64, ptr %18, align 8, !tbaa !15
  %215 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %212, i64 noundef %214) #4
  %216 = load ptr, ptr %215, align 8, !tbaa !5
  %217 = load ptr, ptr %216, align 8, !tbaa !9
  %218 = getelementptr inbounds ptr, ptr %217, i64 3
  %219 = load ptr, ptr %218, align 8
  %220 = invoke noundef ptr %219(ptr noundef nonnull align 8 dereferenceable(32) %216)
          to label %221 unwind label %202

221:                                              ; preds = %213
  %222 = invoke noundef ptr @_ZN7glslang13TParseContext22convertInitializerListERKNS_10TSourceLocERKNS_5TTypeEPNS_12TIntermTypedE(ptr noundef nonnull align 8 dereferenceable(24912) %46, ptr noundef nonnull align 8 dereferenceable(24) %207, ptr noundef nonnull align 8 dereferenceable(144) %17, ptr noundef %220)
          to label %223 unwind label %202

223:                                              ; preds = %221
  %224 = load ptr, ptr %10, align 8, !tbaa !5
  %225 = load ptr, ptr %224, align 8, !tbaa !9
  %226 = getelementptr inbounds ptr, ptr %225, i64 50
  %227 = load ptr, ptr %226, align 8
  %228 = invoke noundef nonnull align 8 dereferenceable(32) ptr %227(ptr noundef nonnull align 8 dereferenceable(352) %224)
          to label %229 unwind label %202

229:                                              ; preds = %223
  %230 = load i64, ptr %18, align 8, !tbaa !15
  %231 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %228, i64 noundef %230) #4
  store ptr %222, ptr %231, align 8, !tbaa !5
  %232 = load ptr, ptr %10, align 8, !tbaa !5
  %233 = load ptr, ptr %232, align 8, !tbaa !9
  %234 = getelementptr inbounds ptr, ptr %233, i64 50
  %235 = load ptr, ptr %234, align 8
  %236 = invoke noundef nonnull align 8 dereferenceable(32) ptr %235(ptr noundef nonnull align 8 dereferenceable(352) %232)
          to label %237 unwind label %202

237:                                              ; preds = %229
  %238 = load i64, ptr %18, align 8, !tbaa !15
  %239 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %236, i64 noundef %238) #4
  %240 = load ptr, ptr %239, align 8, !tbaa !5
  %241 = icmp eq ptr %240, null
  br i1 %241, label %242, label %243

242:                                              ; preds = %237
  store ptr null, ptr %5, align 8
  store i32 1, ptr %11, align 4
  br label %247

243:                                              ; preds = %237
  br label %244

244:                                              ; preds = %243
  %245 = load i64, ptr %18, align 8, !tbaa !15
  %246 = add i64 %245, 1
  store i64 %246, ptr %18, align 8, !tbaa !15
  br label %187, !llvm.loop !17

247:                                              ; preds = %242, %197
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #4
  %248 = load i32, ptr %11, align 4
  switch i32 %248, label %258 [
    i32 5, label %249
  ]

249:                                              ; preds = %247
  %250 = load ptr, ptr %7, align 8, !tbaa !5
  %251 = load ptr, ptr %10, align 8, !tbaa !5
  %252 = invoke noundef ptr @_ZN7glslang13TParseContext14addConstructorERKNS_10TSourceLocEP11TIntermNodeRKNS_5TTypeE(ptr noundef nonnull align 8 dereferenceable(24912) %46, ptr noundef nonnull align 8 dereferenceable(24) %250, ptr noundef %251, ptr noundef nonnull align 8 dereferenceable(144) %12)
          to label %253 unwind label %254

253:                                              ; preds = %249
  store ptr %252, ptr %5, align 8
  store i32 1, ptr %11, align 4
  br label %258

254:                                              ; preds = %249
  %255 = landingpad { ptr, i32 }
          cleanup
  %256 = extractvalue { ptr, i32 } %255, 0
  store ptr %256, ptr %13, align 8
  %257 = extractvalue { ptr, i32 } %255, 1
  store i32 %257, ptr %14, align 4
  br label %259

258:                                              ; preds = %253, %247
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %17) #4
  call void @llvm.lifetime.end.p0(i64 144, ptr %17) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #4
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %12) #4
  call void @llvm.lifetime.end.p0(i64 144, ptr %12) #4
  br label %637

259:                                              ; preds = %254, %202
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %17) #4
  br label %260

260:                                              ; preds = %259, %198
  call void @llvm.lifetime.end.p0(i64 144, ptr %17) #4
  br label %261

261:                                              ; preds = %260, %149, %145
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #4
  br label %262

262:                                              ; preds = %261, %141
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %12) #4
  call void @llvm.lifetime.end.p0(i64 144, ptr %12) #4
  br label %639

263:                                              ; preds = %60
  %264 = load ptr, ptr %8, align 8, !tbaa !5
  %265 = load ptr, ptr %264, align 8, !tbaa !9
  %266 = getelementptr inbounds ptr, ptr %265, i64 35
  %267 = load ptr, ptr %266, align 8
  %268 = call noundef zeroext i1 %267(ptr noundef nonnull align 8 dereferenceable(144) %264)
  br i1 %268, label %269, label %338

269:                                              ; preds = %263
  %270 = load ptr, ptr %8, align 8, !tbaa !5
  %271 = call noundef ptr @_ZNK7glslang5TType9getStructEv(ptr noundef nonnull align 8 dereferenceable(144) %270)
  %272 = call noundef i64 @_ZNKSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %271) #4
  %273 = load ptr, ptr %10, align 8, !tbaa !5
  %274 = load ptr, ptr %273, align 8, !tbaa !9
  %275 = getelementptr inbounds ptr, ptr %274, i64 50
  %276 = load ptr, ptr %275, align 8
  %277 = call noundef nonnull align 8 dereferenceable(32) ptr %276(ptr noundef nonnull align 8 dereferenceable(352) %273)
  %278 = call noundef i64 @_ZNKSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %277) #4
  %279 = icmp ne i64 %272, %278
  br i1 %279, label %280, label %285

280:                                              ; preds = %269
  %281 = load ptr, ptr %7, align 8, !tbaa !5
  %282 = load ptr, ptr %46, align 8, !tbaa !9
  %283 = getelementptr inbounds ptr, ptr %282, i64 42
  %284 = load ptr, ptr %283, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %284(ptr noundef nonnull align 8 dereferenceable(1176) %46, ptr noundef nonnull align 8 dereferenceable(24) %281, ptr noundef @.str.818, ptr noundef @.str.819, ptr noundef @.str.2)
  store ptr null, ptr %5, align 8
  store i32 1, ptr %11, align 4
  br label %637

285:                                              ; preds = %269
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #4
  store i64 0, ptr %19, align 8, !tbaa !15
  br label %286

286:                                              ; preds = %332, %285
  %287 = load i64, ptr %19, align 8, !tbaa !15
  %288 = load ptr, ptr %8, align 8, !tbaa !5
  %289 = call noundef ptr @_ZNK7glslang5TType9getStructEv(ptr noundef nonnull align 8 dereferenceable(144) %288)
  %290 = call noundef i64 @_ZNKSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %289) #4
  %291 = icmp ult i64 %287, %290
  br i1 %291, label %293, label %292

292:                                              ; preds = %286
  store i32 8, ptr %11, align 4
  br label %335

293:                                              ; preds = %286
  %294 = load ptr, ptr %7, align 8, !tbaa !5
  %295 = load ptr, ptr %8, align 8, !tbaa !5
  %296 = call noundef ptr @_ZNK7glslang5TType9getStructEv(ptr noundef nonnull align 8 dereferenceable(144) %295)
  %297 = load i64, ptr %19, align 8, !tbaa !15
  %298 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %296, i64 noundef %297) #4
  %299 = getelementptr inbounds %"struct.glslang::TTypeLoc", ptr %298, i32 0, i32 0
  %300 = load ptr, ptr %299, align 8, !tbaa !18
  %301 = load ptr, ptr %10, align 8, !tbaa !5
  %302 = load ptr, ptr %301, align 8, !tbaa !9
  %303 = getelementptr inbounds ptr, ptr %302, i64 50
  %304 = load ptr, ptr %303, align 8
  %305 = call noundef nonnull align 8 dereferenceable(32) ptr %304(ptr noundef nonnull align 8 dereferenceable(352) %301)
  %306 = load i64, ptr %19, align 8, !tbaa !15
  %307 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %305, i64 noundef %306) #4
  %308 = load ptr, ptr %307, align 8, !tbaa !5
  %309 = load ptr, ptr %308, align 8, !tbaa !9
  %310 = getelementptr inbounds ptr, ptr %309, i64 3
  %311 = load ptr, ptr %310, align 8
  %312 = call noundef ptr %311(ptr noundef nonnull align 8 dereferenceable(32) %308)
  %313 = call noundef ptr @_ZN7glslang13TParseContext22convertInitializerListERKNS_10TSourceLocERKNS_5TTypeEPNS_12TIntermTypedE(ptr noundef nonnull align 8 dereferenceable(24912) %46, ptr noundef nonnull align 8 dereferenceable(24) %294, ptr noundef nonnull align 8 dereferenceable(144) %300, ptr noundef %312)
  %314 = load ptr, ptr %10, align 8, !tbaa !5
  %315 = load ptr, ptr %314, align 8, !tbaa !9
  %316 = getelementptr inbounds ptr, ptr %315, i64 50
  %317 = load ptr, ptr %316, align 8
  %318 = call noundef nonnull align 8 dereferenceable(32) ptr %317(ptr noundef nonnull align 8 dereferenceable(352) %314)
  %319 = load i64, ptr %19, align 8, !tbaa !15
  %320 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %318, i64 noundef %319) #4
  store ptr %313, ptr %320, align 8, !tbaa !5
  %321 = load ptr, ptr %10, align 8, !tbaa !5
  %322 = load ptr, ptr %321, align 8, !tbaa !9
  %323 = getelementptr inbounds ptr, ptr %322, i64 50
  %324 = load ptr, ptr %323, align 8
  %325 = call noundef nonnull align 8 dereferenceable(32) ptr %324(ptr noundef nonnull align 8 dereferenceable(352) %321)
  %326 = load i64, ptr %19, align 8, !tbaa !15
  %327 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %325, i64 noundef %326) #4
  %328 = load ptr, ptr %327, align 8, !tbaa !5
  %329 = icmp eq ptr %328, null
  br i1 %329, label %330, label %331

330:                                              ; preds = %293
  store ptr null, ptr %5, align 8
  store i32 1, ptr %11, align 4
  br label %335

331:                                              ; preds = %293
  br label %332

332:                                              ; preds = %331
  %333 = load i64, ptr %19, align 8, !tbaa !15
  %334 = add i64 %333, 1
  store i64 %334, ptr %19, align 8, !tbaa !15
  br label %286, !llvm.loop !21

335:                                              ; preds = %330, %292
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #4
  %336 = load i32, ptr %11, align 4
  switch i32 %336, label %637 [
    i32 8, label %337
  ]

337:                                              ; preds = %335
  br label %613

338:                                              ; preds = %263
  %339 = load ptr, ptr %8, align 8, !tbaa !5
  %340 = load ptr, ptr %339, align 8, !tbaa !9
  %341 = getelementptr inbounds ptr, ptr %340, i64 28
  %342 = load ptr, ptr %341, align 8
  %343 = call noundef zeroext i1 %342(ptr noundef nonnull align 8 dereferenceable(144) %339)
  br i1 %343, label %344, label %452

344:                                              ; preds = %338
  %345 = load ptr, ptr %8, align 8, !tbaa !5
  %346 = load ptr, ptr %345, align 8, !tbaa !9
  %347 = getelementptr inbounds ptr, ptr %346, i64 13
  %348 = load ptr, ptr %347, align 8
  %349 = call noundef i32 %348(ptr noundef nonnull align 8 dereferenceable(144) %345)
  %350 = load ptr, ptr %10, align 8, !tbaa !5
  %351 = load ptr, ptr %350, align 8, !tbaa !9
  %352 = getelementptr inbounds ptr, ptr %351, i64 50
  %353 = load ptr, ptr %352, align 8
  %354 = call noundef nonnull align 8 dereferenceable(32) ptr %353(ptr noundef nonnull align 8 dereferenceable(352) %350)
  %355 = call noundef i64 @_ZNKSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %354) #4
  %356 = trunc i64 %355 to i32
  %357 = icmp ne i32 %349, %356
  br i1 %357, label %358, label %386

358:                                              ; preds = %344
  %359 = load ptr, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 40, ptr %20) #4
  %360 = load ptr, ptr %8, align 8, !tbaa !5
  %361 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %46, i32 0, i32 7
  %362 = load ptr, ptr %361, align 8, !tbaa !22
  %363 = call noundef zeroext i1 @_ZNK7glslang13TIntermediate15getEnhancedMsgsEv(ptr noundef nonnull align 8 dereferenceable(1784) %362)
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #4
  call void @_ZN7glslang14pool_allocatorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %22)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(40) %21, ptr noundef @.str.2, ptr noundef nonnull align 8 dereferenceable(8) %22)
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #4
  invoke void @_ZN7glslang14pool_allocatorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %24)
          to label %364 unwind label %372

364:                                              ; preds = %358
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(40) %23, ptr noundef @.str.2, ptr noundef nonnull align 8 dereferenceable(8) %24)
          to label %365 unwind label %372

365:                                              ; preds = %364
  invoke void @_ZNK7glslang5TType17getCompleteStringEbbbbNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEES7_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %20, ptr noundef nonnull align 8 dereferenceable(144) %360, i1 noundef zeroext %363, i1 noundef zeroext true, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef %21, ptr noundef %23)
          to label %366 unwind label %376

366:                                              ; preds = %365
  %367 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %20) #4
  %368 = load ptr, ptr %46, align 8, !tbaa !9
  %369 = getelementptr inbounds ptr, ptr %368, i64 42
  %370 = load ptr, ptr %369, align 8
  invoke void (ptr, ptr, ptr, ptr, ptr, ...) %370(ptr noundef nonnull align 8 dereferenceable(1176) %46, ptr noundef nonnull align 8 dereferenceable(24) %359, ptr noundef @.str.820, ptr noundef @.str.819, ptr noundef %367)
          to label %371 unwind label %380

371:                                              ; preds = %366
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %20) #4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %23) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %21) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #4
  call void @llvm.lifetime.end.p0(i64 40, ptr %20) #4
  store ptr null, ptr %5, align 8
  store i32 1, ptr %11, align 4
  br label %637

372:                                              ; preds = %364, %358
  %373 = landingpad { ptr, i32 }
          cleanup
  %374 = extractvalue { ptr, i32 } %373, 0
  store ptr %374, ptr %13, align 8
  %375 = extractvalue { ptr, i32 } %373, 1
  store i32 %375, ptr %14, align 4
  br label %385

376:                                              ; preds = %365
  %377 = landingpad { ptr, i32 }
          cleanup
  %378 = extractvalue { ptr, i32 } %377, 0
  store ptr %378, ptr %13, align 8
  %379 = extractvalue { ptr, i32 } %377, 1
  store i32 %379, ptr %14, align 4
  br label %384

380:                                              ; preds = %366
  %381 = landingpad { ptr, i32 }
          cleanup
  %382 = extractvalue { ptr, i32 } %381, 0
  store ptr %382, ptr %13, align 8
  %383 = extractvalue { ptr, i32 } %381, 1
  store i32 %383, ptr %14, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %20) #4
  br label %384

384:                                              ; preds = %380, %376
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %23) #4
  br label %385

385:                                              ; preds = %384, %372
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %21) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #4
  call void @llvm.lifetime.end.p0(i64 40, ptr %20) #4
  br label %639

386:                                              ; preds = %344
  call void @llvm.lifetime.start.p0(i64 144, ptr %25) #4
  %387 = load ptr, ptr %8, align 8, !tbaa !5
  call void @_ZN7glslang5TTypeC2ERKS0_ib(ptr noundef nonnull align 8 dereferenceable(144) %25, ptr noundef nonnull align 8 dereferenceable(144) %387, i32 noundef 0, i1 noundef zeroext false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #4
  store i32 0, ptr %26, align 4, !tbaa !11
  br label %388

388:                                              ; preds = %443, %386
  %389 = load i32, ptr %26, align 4, !tbaa !11
  %390 = load ptr, ptr %8, align 8, !tbaa !5
  %391 = load ptr, ptr %390, align 8, !tbaa !9
  %392 = getelementptr inbounds ptr, ptr %391, i64 13
  %393 = load ptr, ptr %392, align 8
  %394 = invoke noundef i32 %393(ptr noundef nonnull align 8 dereferenceable(144) %390)
          to label %395 unwind label %398

395:                                              ; preds = %388
  %396 = icmp slt i32 %389, %394
  br i1 %396, label %402, label %397

397:                                              ; preds = %395
  store i32 11, ptr %11, align 4
  br label %446

398:                                              ; preds = %426, %420, %418, %409, %402, %388
  %399 = landingpad { ptr, i32 }
          cleanup
  %400 = extractvalue { ptr, i32 } %399, 0
  store ptr %400, ptr %13, align 8
  %401 = extractvalue { ptr, i32 } %399, 1
  store i32 %401, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #4
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %25) #4
  call void @llvm.lifetime.end.p0(i64 144, ptr %25) #4
  br label %639

402:                                              ; preds = %395
  %403 = load ptr, ptr %7, align 8, !tbaa !5
  %404 = load ptr, ptr %10, align 8, !tbaa !5
  %405 = load ptr, ptr %404, align 8, !tbaa !9
  %406 = getelementptr inbounds ptr, ptr %405, i64 50
  %407 = load ptr, ptr %406, align 8
  %408 = invoke noundef nonnull align 8 dereferenceable(32) ptr %407(ptr noundef nonnull align 8 dereferenceable(352) %404)
          to label %409 unwind label %398

409:                                              ; preds = %402
  %410 = load i32, ptr %26, align 4, !tbaa !11
  %411 = sext i32 %410 to i64
  %412 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %408, i64 noundef %411) #4
  %413 = load ptr, ptr %412, align 8, !tbaa !5
  %414 = load ptr, ptr %413, align 8, !tbaa !9
  %415 = getelementptr inbounds ptr, ptr %414, i64 3
  %416 = load ptr, ptr %415, align 8
  %417 = invoke noundef ptr %416(ptr noundef nonnull align 8 dereferenceable(32) %413)
          to label %418 unwind label %398

418:                                              ; preds = %409
  %419 = invoke noundef ptr @_ZN7glslang13TParseContext22convertInitializerListERKNS_10TSourceLocERKNS_5TTypeEPNS_12TIntermTypedE(ptr noundef nonnull align 8 dereferenceable(24912) %46, ptr noundef nonnull align 8 dereferenceable(24) %403, ptr noundef nonnull align 8 dereferenceable(144) %25, ptr noundef %417)
          to label %420 unwind label %398

420:                                              ; preds = %418
  %421 = load ptr, ptr %10, align 8, !tbaa !5
  %422 = load ptr, ptr %421, align 8, !tbaa !9
  %423 = getelementptr inbounds ptr, ptr %422, i64 50
  %424 = load ptr, ptr %423, align 8
  %425 = invoke noundef nonnull align 8 dereferenceable(32) ptr %424(ptr noundef nonnull align 8 dereferenceable(352) %421)
          to label %426 unwind label %398

426:                                              ; preds = %420
  %427 = load i32, ptr %26, align 4, !tbaa !11
  %428 = sext i32 %427 to i64
  %429 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %425, i64 noundef %428) #4
  store ptr %419, ptr %429, align 8, !tbaa !5
  %430 = load ptr, ptr %10, align 8, !tbaa !5
  %431 = load ptr, ptr %430, align 8, !tbaa !9
  %432 = getelementptr inbounds ptr, ptr %431, i64 50
  %433 = load ptr, ptr %432, align 8
  %434 = invoke noundef nonnull align 8 dereferenceable(32) ptr %433(ptr noundef nonnull align 8 dereferenceable(352) %430)
          to label %435 unwind label %398

435:                                              ; preds = %426
  %436 = load i32, ptr %26, align 4, !tbaa !11
  %437 = sext i32 %436 to i64
  %438 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %434, i64 noundef %437) #4
  %439 = load ptr, ptr %438, align 8, !tbaa !5
  %440 = icmp eq ptr %439, null
  br i1 %440, label %441, label %442

441:                                              ; preds = %435
  store ptr null, ptr %5, align 8
  store i32 1, ptr %11, align 4
  br label %446

442:                                              ; preds = %435
  br label %443

443:                                              ; preds = %442
  %444 = load i32, ptr %26, align 4, !tbaa !11
  %445 = add nsw i32 %444, 1
  store i32 %445, ptr %26, align 4, !tbaa !11
  br label %388, !llvm.loop !44

446:                                              ; preds = %441, %397
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #4
  %447 = load i32, ptr %11, align 4
  switch i32 %447, label %449 [
    i32 11, label %448
  ]

448:                                              ; preds = %446
  store i32 0, ptr %11, align 4
  br label %449

449:                                              ; preds = %448, %446
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %25) #4
  call void @llvm.lifetime.end.p0(i64 144, ptr %25) #4
  %450 = load i32, ptr %11, align 4
  switch i32 %450, label %637 [
    i32 0, label %451
  ]

451:                                              ; preds = %449
  br label %612

452:                                              ; preds = %338
  %453 = load ptr, ptr %8, align 8, !tbaa !5
  %454 = load ptr, ptr %453, align 8, !tbaa !9
  %455 = getelementptr inbounds ptr, ptr %454, i64 27
  %456 = load ptr, ptr %455, align 8
  %457 = call noundef zeroext i1 %456(ptr noundef nonnull align 8 dereferenceable(144) %453)
  br i1 %457, label %458, label %583

458:                                              ; preds = %452
  %459 = load ptr, ptr %8, align 8, !tbaa !5
  %460 = load ptr, ptr %459, align 8, !tbaa !9
  %461 = getelementptr inbounds ptr, ptr %460, i64 12
  %462 = load ptr, ptr %461, align 8
  %463 = call noundef i32 %462(ptr noundef nonnull align 8 dereferenceable(144) %459)
  %464 = load ptr, ptr %10, align 8, !tbaa !5
  %465 = load ptr, ptr %464, align 8, !tbaa !9
  %466 = getelementptr inbounds ptr, ptr %465, i64 50
  %467 = load ptr, ptr %466, align 8
  %468 = call noundef nonnull align 8 dereferenceable(32) ptr %467(ptr noundef nonnull align 8 dereferenceable(352) %464)
  %469 = call noundef i64 @_ZNKSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %468) #4
  %470 = trunc i64 %469 to i32
  %471 = icmp ne i32 %463, %470
  br i1 %471, label %472, label %500

472:                                              ; preds = %458
  %473 = load ptr, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 40, ptr %27) #4
  %474 = load ptr, ptr %8, align 8, !tbaa !5
  %475 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %46, i32 0, i32 7
  %476 = load ptr, ptr %475, align 8, !tbaa !22
  %477 = call noundef zeroext i1 @_ZNK7glslang13TIntermediate15getEnhancedMsgsEv(ptr noundef nonnull align 8 dereferenceable(1784) %476)
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #4
  call void @_ZN7glslang14pool_allocatorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %29)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(40) %28, ptr noundef @.str.2, ptr noundef nonnull align 8 dereferenceable(8) %29)
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #4
  invoke void @_ZN7glslang14pool_allocatorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %31)
          to label %478 unwind label %486

478:                                              ; preds = %472
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(40) %30, ptr noundef @.str.2, ptr noundef nonnull align 8 dereferenceable(8) %31)
          to label %479 unwind label %486

479:                                              ; preds = %478
  invoke void @_ZNK7glslang5TType17getCompleteStringEbbbbNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEES7_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %27, ptr noundef nonnull align 8 dereferenceable(144) %474, i1 noundef zeroext %477, i1 noundef zeroext true, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef %28, ptr noundef %30)
          to label %480 unwind label %490

480:                                              ; preds = %479
  %481 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %27) #4
  %482 = load ptr, ptr %46, align 8, !tbaa !9
  %483 = getelementptr inbounds ptr, ptr %482, i64 42
  %484 = load ptr, ptr %483, align 8
  invoke void (ptr, ptr, ptr, ptr, ptr, ...) %484(ptr noundef nonnull align 8 dereferenceable(1176) %46, ptr noundef nonnull align 8 dereferenceable(24) %473, ptr noundef @.str.821, ptr noundef @.str.819, ptr noundef %481)
          to label %485 unwind label %494

485:                                              ; preds = %480
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %27) #4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %30) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %28) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 40, ptr %27) #4
  store ptr null, ptr %5, align 8
  store i32 1, ptr %11, align 4
  br label %637

486:                                              ; preds = %478, %472
  %487 = landingpad { ptr, i32 }
          cleanup
  %488 = extractvalue { ptr, i32 } %487, 0
  store ptr %488, ptr %13, align 8
  %489 = extractvalue { ptr, i32 } %487, 1
  store i32 %489, ptr %14, align 4
  br label %499

490:                                              ; preds = %479
  %491 = landingpad { ptr, i32 }
          cleanup
  %492 = extractvalue { ptr, i32 } %491, 0
  store ptr %492, ptr %13, align 8
  %493 = extractvalue { ptr, i32 } %491, 1
  store i32 %493, ptr %14, align 4
  br label %498

494:                                              ; preds = %480
  %495 = landingpad { ptr, i32 }
          cleanup
  %496 = extractvalue { ptr, i32 } %495, 0
  store ptr %496, ptr %13, align 8
  %497 = extractvalue { ptr, i32 } %495, 1
  store i32 %497, ptr %14, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %27) #4
  br label %498

498:                                              ; preds = %494, %490
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %30) #4
  br label %499

499:                                              ; preds = %498, %486
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %28) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 40, ptr %27) #4
  br label %639

500:                                              ; preds = %458
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #4
  %501 = load ptr, ptr %8, align 8, !tbaa !5
  %502 = load ptr, ptr %501, align 8, !tbaa !9
  %503 = getelementptr inbounds ptr, ptr %502, i64 7
  %504 = load ptr, ptr %503, align 8
  %505 = call noundef i32 %504(ptr noundef nonnull align 8 dereferenceable(144) %501)
  store i32 %505, ptr %32, align 4, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #4
  store i32 0, ptr %33, align 4, !tbaa !11
  br label %506

506:                                              ; preds = %574, %500
  %507 = load i32, ptr %33, align 4, !tbaa !11
  %508 = load ptr, ptr %8, align 8, !tbaa !5
  %509 = load ptr, ptr %508, align 8, !tbaa !9
  %510 = getelementptr inbounds ptr, ptr %509, i64 12
  %511 = load ptr, ptr %510, align 8
  %512 = call noundef i32 %511(ptr noundef nonnull align 8 dereferenceable(144) %508)
  %513 = icmp slt i32 %507, %512
  br i1 %513, label %515, label %514

514:                                              ; preds = %506
  store i32 14, ptr %11, align 4
  br label %577

515:                                              ; preds = %506
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #4
  %516 = load ptr, ptr %10, align 8, !tbaa !5
  %517 = load ptr, ptr %516, align 8, !tbaa !9
  %518 = getelementptr inbounds ptr, ptr %517, i64 50
  %519 = load ptr, ptr %518, align 8
  %520 = call noundef nonnull align 8 dereferenceable(32) ptr %519(ptr noundef nonnull align 8 dereferenceable(352) %516)
  %521 = load i32, ptr %33, align 4, !tbaa !11
  %522 = sext i32 %521 to i64
  %523 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %520, i64 noundef %522) #4
  %524 = load ptr, ptr %523, align 8, !tbaa !5
  %525 = load ptr, ptr %524, align 8, !tbaa !9
  %526 = getelementptr inbounds ptr, ptr %525, i64 3
  %527 = load ptr, ptr %526, align 8
  %528 = call noundef ptr %527(ptr noundef nonnull align 8 dereferenceable(32) %524)
  %529 = load ptr, ptr %528, align 8, !tbaa !9
  %530 = getelementptr inbounds ptr, ptr %529, i64 32
  %531 = load ptr, ptr %530, align 8
  %532 = call noundef i32 %531(ptr noundef nonnull align 8 dereferenceable(176) %528)
  store i32 %532, ptr %34, align 4, !tbaa !45
  %533 = load i32, ptr %32, align 4, !tbaa !45
  %534 = load i32, ptr %34, align 4, !tbaa !45
  %535 = icmp ne i32 %533, %534
  br i1 %535, label %536, label %570

536:                                              ; preds = %515
  %537 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %46, i32 0, i32 7
  %538 = load ptr, ptr %537, align 8, !tbaa !22
  %539 = load i32, ptr %34, align 4, !tbaa !45
  %540 = load i32, ptr %32, align 4, !tbaa !45
  %541 = call noundef zeroext i1 @_ZNK7glslang13TIntermediate20canImplicitlyPromoteENS_10TBasicTypeES1_NS_9TOperatorE(ptr noundef nonnull align 8 dereferenceable(1784) %538, i32 noundef %539, i32 noundef %540, i32 noundef 0)
  br i1 %541, label %570, label %542

542:                                              ; preds = %536
  %543 = load ptr, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 40, ptr %35) #4
  %544 = load ptr, ptr %8, align 8, !tbaa !5
  %545 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %46, i32 0, i32 7
  %546 = load ptr, ptr %545, align 8, !tbaa !22
  %547 = call noundef zeroext i1 @_ZNK7glslang13TIntermediate15getEnhancedMsgsEv(ptr noundef nonnull align 8 dereferenceable(1784) %546)
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #4
  call void @_ZN7glslang14pool_allocatorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %37)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(40) %36, ptr noundef @.str.2, ptr noundef nonnull align 8 dereferenceable(8) %37)
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #4
  invoke void @_ZN7glslang14pool_allocatorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %39)
          to label %548 unwind label %556

548:                                              ; preds = %542
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(40) %38, ptr noundef @.str.2, ptr noundef nonnull align 8 dereferenceable(8) %39)
          to label %549 unwind label %556

549:                                              ; preds = %548
  invoke void @_ZNK7glslang5TType17getCompleteStringEbbbbNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEES7_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %35, ptr noundef nonnull align 8 dereferenceable(144) %544, i1 noundef zeroext %547, i1 noundef zeroext true, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef %36, ptr noundef %38)
          to label %550 unwind label %560

550:                                              ; preds = %549
  %551 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %35) #4
  %552 = load ptr, ptr %46, align 8, !tbaa !9
  %553 = getelementptr inbounds ptr, ptr %552, i64 42
  %554 = load ptr, ptr %553, align 8
  invoke void (ptr, ptr, ptr, ptr, ptr, ...) %554(ptr noundef nonnull align 8 dereferenceable(1176) %46, ptr noundef nonnull align 8 dereferenceable(24) %543, ptr noundef @.str.822, ptr noundef @.str.819, ptr noundef %551)
          to label %555 unwind label %564

555:                                              ; preds = %550
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %35) #4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %38) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %36) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 40, ptr %35) #4
  store ptr null, ptr %5, align 8
  store i32 1, ptr %11, align 4
  br label %571

556:                                              ; preds = %548, %542
  %557 = landingpad { ptr, i32 }
          cleanup
  %558 = extractvalue { ptr, i32 } %557, 0
  store ptr %558, ptr %13, align 8
  %559 = extractvalue { ptr, i32 } %557, 1
  store i32 %559, ptr %14, align 4
  br label %569

560:                                              ; preds = %549
  %561 = landingpad { ptr, i32 }
          cleanup
  %562 = extractvalue { ptr, i32 } %561, 0
  store ptr %562, ptr %13, align 8
  %563 = extractvalue { ptr, i32 } %561, 1
  store i32 %563, ptr %14, align 4
  br label %568

564:                                              ; preds = %550
  %565 = landingpad { ptr, i32 }
          cleanup
  %566 = extractvalue { ptr, i32 } %565, 0
  store ptr %566, ptr %13, align 8
  %567 = extractvalue { ptr, i32 } %565, 1
  store i32 %567, ptr %14, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %35) #4
  br label %568

568:                                              ; preds = %564, %560
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %38) #4
  br label %569

569:                                              ; preds = %568, %556
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %36) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 40, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #4
  br label %639

570:                                              ; preds = %536, %515
  store i32 0, ptr %11, align 4
  br label %571

571:                                              ; preds = %570, %555
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #4
  %572 = load i32, ptr %11, align 4
  switch i32 %572, label %577 [
    i32 0, label %573
  ]

573:                                              ; preds = %571
  br label %574

574:                                              ; preds = %573
  %575 = load i32, ptr %33, align 4, !tbaa !11
  %576 = add nsw i32 %575, 1
  store i32 %576, ptr %33, align 4, !tbaa !11
  br label %506, !llvm.loop !47

577:                                              ; preds = %571, %514
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #4
  %578 = load i32, ptr %11, align 4
  switch i32 %578, label %580 [
    i32 14, label %579
  ]

579:                                              ; preds = %577
  store i32 0, ptr %11, align 4
  br label %580

580:                                              ; preds = %579, %577
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #4
  %581 = load i32, ptr %11, align 4
  switch i32 %581, label %637 [
    i32 0, label %582
  ]

582:                                              ; preds = %580
  br label %611

583:                                              ; preds = %452
  %584 = load ptr, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 40, ptr %40) #4
  %585 = load ptr, ptr %8, align 8, !tbaa !5
  %586 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %46, i32 0, i32 7
  %587 = load ptr, ptr %586, align 8, !tbaa !22
  %588 = call noundef zeroext i1 @_ZNK7glslang13TIntermediate15getEnhancedMsgsEv(ptr noundef nonnull align 8 dereferenceable(1784) %587)
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #4
  call void @_ZN7glslang14pool_allocatorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %42)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(40) %41, ptr noundef @.str.2, ptr noundef nonnull align 8 dereferenceable(8) %42)
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #4
  invoke void @_ZN7glslang14pool_allocatorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %44)
          to label %589 unwind label %597

589:                                              ; preds = %583
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(40) %43, ptr noundef @.str.2, ptr noundef nonnull align 8 dereferenceable(8) %44)
          to label %590 unwind label %597

590:                                              ; preds = %589
  invoke void @_ZNK7glslang5TType17getCompleteStringEbbbbNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEES7_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %40, ptr noundef nonnull align 8 dereferenceable(144) %585, i1 noundef zeroext %588, i1 noundef zeroext true, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef %41, ptr noundef %43)
          to label %591 unwind label %601

591:                                              ; preds = %590
  %592 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %40) #4
  %593 = load ptr, ptr %46, align 8, !tbaa !9
  %594 = getelementptr inbounds ptr, ptr %593, i64 42
  %595 = load ptr, ptr %594, align 8
  invoke void (ptr, ptr, ptr, ptr, ptr, ...) %595(ptr noundef nonnull align 8 dereferenceable(1176) %46, ptr noundef nonnull align 8 dereferenceable(24) %584, ptr noundef @.str.823, ptr noundef @.str.819, ptr noundef %592)
          to label %596 unwind label %605

596:                                              ; preds = %591
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %40) #4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %41) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 40, ptr %40) #4
  store ptr null, ptr %5, align 8
  store i32 1, ptr %11, align 4
  br label %637

597:                                              ; preds = %589, %583
  %598 = landingpad { ptr, i32 }
          cleanup
  %599 = extractvalue { ptr, i32 } %598, 0
  store ptr %599, ptr %13, align 8
  %600 = extractvalue { ptr, i32 } %598, 1
  store i32 %600, ptr %14, align 4
  br label %610

601:                                              ; preds = %590
  %602 = landingpad { ptr, i32 }
          cleanup
  %603 = extractvalue { ptr, i32 } %602, 0
  store ptr %603, ptr %13, align 8
  %604 = extractvalue { ptr, i32 } %602, 1
  store i32 %604, ptr %14, align 4
  br label %609

605:                                              ; preds = %591
  %606 = landingpad { ptr, i32 }
          cleanup
  %607 = extractvalue { ptr, i32 } %606, 0
  store ptr %607, ptr %13, align 8
  %608 = extractvalue { ptr, i32 } %606, 1
  store i32 %608, ptr %14, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %40) #4
  br label %609

609:                                              ; preds = %605, %601
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %43) #4
  br label %610

610:                                              ; preds = %609, %597
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %41) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 40, ptr %40) #4
  br label %639

611:                                              ; preds = %582
  br label %612

612:                                              ; preds = %611, %451
  br label %613

613:                                              ; preds = %612, %337
  br label %614

614:                                              ; preds = %613
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #4
  %615 = load ptr, ptr %10, align 8, !tbaa !5
  %616 = load ptr, ptr %615, align 8, !tbaa !9
  %617 = getelementptr inbounds ptr, ptr %616, i64 50
  %618 = load ptr, ptr %617, align 8
  %619 = call noundef nonnull align 8 dereferenceable(32) ptr %618(ptr noundef nonnull align 8 dereferenceable(352) %615)
  %620 = call noundef i64 @_ZNKSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %619) #4
  %621 = icmp eq i64 %620, 1
  br i1 %621, label %622, label %630

622:                                              ; preds = %614
  %623 = load ptr, ptr %10, align 8, !tbaa !5
  %624 = load ptr, ptr %623, align 8, !tbaa !9
  %625 = getelementptr inbounds ptr, ptr %624, i64 50
  %626 = load ptr, ptr %625, align 8
  %627 = call noundef nonnull align 8 dereferenceable(32) ptr %626(ptr noundef nonnull align 8 dereferenceable(352) %623)
  %628 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %627, i64 noundef 0) #4
  %629 = load ptr, ptr %628, align 8, !tbaa !5
  store ptr %629, ptr %45, align 8, !tbaa !5
  br label %632

630:                                              ; preds = %614
  %631 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %631, ptr %45, align 8, !tbaa !5
  br label %632

632:                                              ; preds = %630, %622
  %633 = load ptr, ptr %7, align 8, !tbaa !5
  %634 = load ptr, ptr %45, align 8, !tbaa !5
  %635 = load ptr, ptr %8, align 8, !tbaa !5
  %636 = call noundef ptr @_ZN7glslang13TParseContext14addConstructorERKNS_10TSourceLocEP11TIntermNodeRKNS_5TTypeE(ptr noundef nonnull align 8 dereferenceable(24912) %46, ptr noundef nonnull align 8 dereferenceable(24) %633, ptr noundef %634, ptr noundef nonnull align 8 dereferenceable(144) %635)
  store ptr %636, ptr %5, align 8
  store i32 1, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  br label %637

637:                                              ; preds = %632, %596, %580, %485, %449, %371, %335, %280, %258, %58
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #4
  %638 = load ptr, ptr %5, align 8
  ret ptr %638

639:                                              ; preds = %610, %569, %499, %398, %385, %262
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #4
  br label %640

640:                                              ; preds = %639
  %641 = load ptr, ptr %13, align 8
  %642 = load i32, ptr %14, align 4
  %643 = insertvalue { ptr, i32 } poison, ptr %641, 0
  %644 = insertvalue { ptr, i32 } %643, i32 %642, 1
  resume { ptr, i32 } %644
}

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"vtable pointer", !8, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = !{!16, !16, i64 0}
!16 = !{!"long", !7, i64 0}
!17 = distinct !{!17, !14}
!18 = !{!19, !6, i64 0}
!19 = !{!"_ZTSN7glslang8TTypeLocE", !6, i64 0, !20, i64 8}
!20 = !{!"_ZTSN7glslang10TSourceLocE", !6, i64 0, !12, i64 8, !12, i64 12, !12, i64 16}
!21 = distinct !{!21, !14}
!22 = !{!23, !6, i64 56}
!23 = !{!"_ZTSN7glslang14TParseVersionsE", !24, i64 8, !25, i64 12, !6, i64 16, !12, i64 24, !26, i64 28, !27, i64 32, !6, i64 56, !28, i64 64, !38, i64 120, !43, i64 176, !12, i64 180, !6, i64 184}
!24 = !{!"bool", !7, i64 0}
!25 = !{!"_ZTS8EProfile", !7, i64 0}
!26 = !{!"_ZTS11EShLanguage", !7, i64 0}
!27 = !{!"_ZTSN7glslang10SpvVersionE", !12, i64 0, !12, i64 4, !12, i64 8, !12, i64 12, !24, i64 16}
!28 = !{!"_ZTSN7glslang4TMapINSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEENS_18TExtensionBehaviorESt4lessIS7_EEE", !29, i64 0}
!29 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEENS4_18TExtensionBehaviorESt4lessIS7_ENS5_ISt4pairIKS7_S8_EEEE", !30, i64 0}
!30 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_NS4_18TExtensionBehaviorEESt10_Select1stISB_ESt4lessIS7_ENS5_ISB_EEE", !31, i64 0}
!31 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_NS4_18TExtensionBehaviorEESt10_Select1stISB_ESt4lessIS7_ENS5_ISB_EEE13_Rb_tree_implISF_Lb1EEE", !32, i64 0, !33, i64 8, !35, i64 16}
!32 = !{!"_ZTSN7glslang14pool_allocatorISt13_Rb_tree_nodeISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_IcEEEENS_18TExtensionBehaviorEEEEE", !6, i64 0}
!33 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEEE", !34, i64 0}
!34 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEE"}
!35 = !{!"_ZTSSt15_Rb_tree_header", !36, i64 0, !16, i64 32}
!36 = !{!"_ZTSSt18_Rb_tree_node_base", !37, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!37 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!38 = !{!"_ZTSN7glslang4TMapINSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEEjSt4lessIS7_EEE", !39, i64 0}
!39 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEjSt4lessIS7_ENS5_ISt4pairIKS7_jEEEE", !40, i64 0}
!40 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_jESt10_Select1stISA_ESt4lessIS7_ENS5_ISA_EEE", !41, i64 0}
!41 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_jESt10_Select1stISA_ESt4lessIS7_ENS5_ISA_EEE13_Rb_tree_implISE_Lb1EEE", !42, i64 0, !33, i64 8, !35, i64 16}
!42 = !{!"_ZTSN7glslang14pool_allocatorISt13_Rb_tree_nodeISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_IcEEEEjEEEE", !6, i64 0}
!43 = !{!"_ZTS11EShMessages", !7, i64 0}
!44 = distinct !{!44, !14}
!45 = !{!46, !46, i64 0}
!46 = !{!"_ZTSN7glslang10TBasicTypeE", !7, i64 0}
!47 = distinct !{!47, !14}


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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>::_Alloc_hider" = type { %"class.glslang::pool_allocator.14", ptr }
%"class.glslang::pool_allocator.14" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.glslang::TType" = type { ptr, i32, [4 x i8], %"class.glslang::TQualifier", ptr, %union.anon.179, ptr, ptr, %"struct.glslang::TSampler", ptr, ptr }
%"class.glslang::TQualifier" = type <{ ptr, i64, i8, [3 x i8], i32, i32, i64, i64, i8, i8, i8, i8, i8, [3 x i8], i32, i8, [3 x i8], i32, ptr }>
%union.anon.179 = type { ptr }
%"struct.glslang::TSampler" = type { i32 }

@.str.2 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.818 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.819 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.820 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.821 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.822 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.823 = external hidden unnamed_addr constant [34 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK7glslang5TType15isArrayOfArraysEv(ptr noundef nonnull align 8 dereferenceable(144)) local_unnamed_addr #0 align 2

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

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

32:                                               ; preds = %4
  %33 = tail call noundef i32 @_ZNK7glslang15TIntermOperator5getOpEv(ptr noundef nonnull align 8 dereferenceable(184) %31)
  %.not138 = icmp eq i32 %33, 0
  br i1 %.not138, label %34, label %.loopexit176

34:                                               ; preds = %32
  %35 = load ptr, ptr %2, align 8, !tbaa !5
  %36 = getelementptr inbounds i8, ptr %35, i64 232
  %37 = load ptr, ptr %36, align 8
  %38 = tail call noundef zeroext i1 %37(ptr noundef nonnull align 8 dereferenceable(144) %2)
  br i1 %38, label %39, label %172

39:                                               ; preds = %34
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %5) #4
  call void @_ZN7glslang5TTypeC2ENS_10TBasicTypeENS_17TStorageQualifierEiiib(ptr noundef nonnull align 8 dereferenceable(144) %5, i32 noundef 0, i32 noundef 0, i32 noundef 1, i32 noundef 0, i32 noundef 0, i1 noundef zeroext false)
  invoke void @_ZN7glslang5TType11shallowCopyERKS0_(ptr noundef nonnull align 8 dereferenceable(144) %5, ptr noundef nonnull align 8 dereferenceable(144) %2)
          to label %40 unwind label %98

40:                                               ; preds = %39
  %41 = load ptr, ptr %2, align 8, !tbaa !5
  %42 = getelementptr inbounds i8, ptr %41, i64 152
  %43 = load ptr, ptr %42, align 8
  %44 = invoke noundef ptr %43(ptr noundef nonnull align 8 dereferenceable(144) %2)
          to label %45 unwind label %98

45:                                               ; preds = %40
  invoke void @_ZN7glslang5TType14copyArraySizesERKNS_11TArraySizesE(ptr noundef nonnull align 8 dereferenceable(144) %5, ptr noundef nonnull align 8 dereferenceable(21) %44)
          to label %46 unwind label %98

46:                                               ; preds = %45
  %47 = load ptr, ptr %31, align 8, !tbaa !5
  %48 = getelementptr inbounds i8, ptr %47, i64 400
  %49 = load ptr, ptr %48, align 8
  %50 = invoke noundef nonnull align 8 dereferenceable(32) ptr %49(ptr noundef nonnull align 8 dereferenceable(352) %31)
          to label %51 unwind label %98

51:                                               ; preds = %46
  %52 = call noundef i64 @_ZNKSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %50) #4
  %53 = trunc i64 %52 to i32
  invoke void @_ZN7glslang5TType20changeOuterArraySizeEi(ptr noundef nonnull align 8 dereferenceable(144) %5, i32 noundef %53)
          to label %54 unwind label %98

54:                                               ; preds = %51
  %55 = load ptr, ptr %31, align 8, !tbaa !5
  %56 = getelementptr inbounds i8, ptr %55, i64 400
  %57 = load ptr, ptr %56, align 8
  %58 = invoke noundef nonnull align 8 dereferenceable(32) ptr %57(ptr noundef nonnull align 8 dereferenceable(352) %31)
          to label %59 unwind label %100

59:                                               ; preds = %54
  %60 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %58, i64 noundef 0) #4
  %61 = load ptr, ptr %60, align 8, !tbaa !8
  %62 = load ptr, ptr %61, align 8, !tbaa !5
  %63 = getelementptr inbounds i8, ptr %62, i64 24
  %64 = load ptr, ptr %63, align 8
  %65 = invoke noundef ptr %64(ptr noundef nonnull align 8 dereferenceable(32) %61)
          to label %66 unwind label %100

66:                                               ; preds = %59
  %67 = call noundef zeroext i1 @_ZNK7glslang5TType15isArrayOfArraysEv(ptr noundef nonnull align 8 dereferenceable(144) %5)
  br i1 %67, label %68, label %.loopexit174

68:                                               ; preds = %66
  %69 = load ptr, ptr %65, align 8, !tbaa !5
  %70 = getelementptr inbounds i8, ptr %69, i64 240
  %71 = load ptr, ptr %70, align 8
  %72 = invoke noundef nonnull align 8 dereferenceable(144) ptr %71(ptr noundef nonnull align 8 dereferenceable(176) %65)
          to label %73 unwind label %100

73:                                               ; preds = %68
  %74 = load ptr, ptr %72, align 8, !tbaa !5
  %75 = getelementptr inbounds i8, ptr %74, i64 232
  %76 = load ptr, ptr %75, align 8
  %77 = invoke noundef zeroext i1 %76(ptr noundef nonnull align 8 dereferenceable(144) %72)
          to label %78 unwind label %100

78:                                               ; preds = %73
  br i1 %77, label %79, label %.loopexit174

79:                                               ; preds = %78
  %80 = call noundef ptr @_ZN7glslang5TType13getArraySizesEv(ptr noundef nonnull align 8 dereferenceable(144) %5)
  %81 = call noundef i32 @_ZNK7glslang11TArraySizes10getNumDimsEv(ptr noundef nonnull align 8 dereferenceable(21) %80)
  %82 = load ptr, ptr %65, align 8, !tbaa !5
  %83 = getelementptr inbounds i8, ptr %82, i64 240
  %84 = load ptr, ptr %83, align 8
  %85 = invoke noundef nonnull align 8 dereferenceable(144) ptr %84(ptr noundef nonnull align 8 dereferenceable(176) %65)
          to label %86 unwind label %100

86:                                               ; preds = %79
  %87 = load ptr, ptr %85, align 8, !tbaa !5
  %88 = getelementptr inbounds i8, ptr %87, i64 152
  %89 = load ptr, ptr %88, align 8
  %90 = invoke noundef ptr %89(ptr noundef nonnull align 8 dereferenceable(144) %85)
          to label %91 unwind label %100

91:                                               ; preds = %86
  %92 = call noundef i32 @_ZNK7glslang11TArraySizes10getNumDimsEv(ptr noundef nonnull align 8 dereferenceable(21) %90)
  %93 = add nsw i32 %92, 1
  %94 = icmp eq i32 %81, %93
  br i1 %94, label %.preheader173, label %.loopexit174

.preheader173:                                    ; preds = %91
  %95 = call noundef ptr @_ZN7glslang5TType13getArraySizesEv(ptr noundef nonnull align 8 dereferenceable(144) %5)
  %96 = call noundef i32 @_ZNK7glslang11TArraySizes10getNumDimsEv(ptr noundef nonnull align 8 dereferenceable(21) %95)
  %97 = icmp sgt i32 %96, 1
  br i1 %97, label %.lr.ph184, label %.loopexit174

98:                                               ; preds = %51, %46, %45, %40, %39
  %99 = landingpad { ptr, i32 }
          cleanup
  br label %171

100:                                              ; preds = %86, %79, %73, %68, %59, %54
  %101 = landingpad { ptr, i32 }
          cleanup
  br label %171

102:                                              ; preds = %118, %113, %107
  %103 = landingpad { ptr, i32 }
          cleanup
  br label %171

.lr.ph184:                                        ; preds = %.preheader173, %121
  %.0113183 = phi i32 [ %122, %121 ], [ 1, %.preheader173 ]
  %104 = call noundef ptr @_ZN7glslang5TType13getArraySizesEv(ptr noundef nonnull align 8 dereferenceable(144) %5)
  %105 = call noundef i32 @_ZNK7glslang11TArraySizes10getDimSizeEi(ptr noundef nonnull align 8 dereferenceable(21) %104, i32 noundef %.0113183)
  %106 = icmp eq i32 %105, 0
  br i1 %106, label %107, label %121

107:                                              ; preds = %.lr.ph184
  %108 = call noundef ptr @_ZN7glslang5TType13getArraySizesEv(ptr noundef nonnull align 8 dereferenceable(144) %5)
  %109 = load ptr, ptr %65, align 8, !tbaa !5
  %110 = getelementptr inbounds i8, ptr %109, i64 240
  %111 = load ptr, ptr %110, align 8
  %112 = invoke noundef nonnull align 8 dereferenceable(144) ptr %111(ptr noundef nonnull align 8 dereferenceable(176) %65)
          to label %113 unwind label %102

113:                                              ; preds = %107
  %114 = load ptr, ptr %112, align 8, !tbaa !5
  %115 = getelementptr inbounds i8, ptr %114, i64 152
  %116 = load ptr, ptr %115, align 8
  %117 = invoke noundef ptr %116(ptr noundef nonnull align 8 dereferenceable(144) %112)
          to label %118 unwind label %102

118:                                              ; preds = %113
  %119 = add nsw i32 %.0113183, -1
  %120 = call noundef i32 @_ZNK7glslang11TArraySizes10getDimSizeEi(ptr noundef nonnull align 8 dereferenceable(21) %117, i32 noundef %119)
  invoke void @_ZN7glslang11TArraySizes10setDimSizeEii(ptr noundef nonnull align 8 dereferenceable(21) %108, i32 noundef %.0113183, i32 noundef %120)
          to label %121 unwind label %102

121:                                              ; preds = %.lr.ph184, %118
  %122 = add nuw nsw i32 %.0113183, 1
  %123 = call noundef ptr @_ZN7glslang5TType13getArraySizesEv(ptr noundef nonnull align 8 dereferenceable(144) %5)
  %124 = call noundef i32 @_ZNK7glslang11TArraySizes10getNumDimsEv(ptr noundef nonnull align 8 dereferenceable(21) %123)
  %125 = icmp slt i32 %122, %124
  br i1 %125, label %.lr.ph184, label %.loopexit174, !llvm.loop !11

.loopexit174:                                     ; preds = %121, %.preheader173, %91, %78, %66
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %6) #4
  invoke void @_ZN7glslang5TTypeC2ERKS0_ib(ptr noundef nonnull align 8 dereferenceable(144) %6, ptr noundef nonnull align 8 dereferenceable(144) %5, i32 noundef 0, i1 noundef zeroext false)
          to label %.preheader unwind label %132

.preheader:                                       ; preds = %.loopexit174, %161
  %.0112 = phi i64 [ %165, %161 ], [ 0, %.loopexit174 ]
  %126 = load ptr, ptr %31, align 8, !tbaa !5
  %127 = getelementptr inbounds i8, ptr %126, i64 400
  %128 = load ptr, ptr %127, align 8
  %129 = invoke noundef nonnull align 8 dereferenceable(32) ptr %128(ptr noundef nonnull align 8 dereferenceable(352) %31)
          to label %130 unwind label %134

130:                                              ; preds = %.preheader
  %131 = call noundef i64 @_ZNKSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %129) #4
  %.not157 = icmp ult i64 %.0112, %131
  br i1 %.not157, label %136, label %.critedge

132:                                              ; preds = %.loopexit174
  %133 = landingpad { ptr, i32 }
          cleanup
  br label %170

134:                                              ; preds = %155, %150, %148, %141, %136, %.preheader
  %135 = landingpad { ptr, i32 }
          cleanup
  br label %169

136:                                              ; preds = %130
  %137 = load ptr, ptr %31, align 8, !tbaa !5
  %138 = getelementptr inbounds i8, ptr %137, i64 400
  %139 = load ptr, ptr %138, align 8
  %140 = invoke noundef nonnull align 8 dereferenceable(32) ptr %139(ptr noundef nonnull align 8 dereferenceable(352) %31)
          to label %141 unwind label %134

141:                                              ; preds = %136
  %142 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %140, i64 noundef %.0112) #4
  %143 = load ptr, ptr %142, align 8, !tbaa !8
  %144 = load ptr, ptr %143, align 8, !tbaa !5
  %145 = getelementptr inbounds i8, ptr %144, i64 24
  %146 = load ptr, ptr %145, align 8
  %147 = invoke noundef ptr %146(ptr noundef nonnull align 8 dereferenceable(32) %143)
          to label %148 unwind label %134

148:                                              ; preds = %141
  %149 = invoke noundef ptr @_ZN7glslang13TParseContext22convertInitializerListERKNS_10TSourceLocERKNS_5TTypeEPNS_12TIntermTypedE(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(144) %6, ptr noundef %147)
          to label %150 unwind label %134

150:                                              ; preds = %148
  %151 = load ptr, ptr %31, align 8, !tbaa !5
  %152 = getelementptr inbounds i8, ptr %151, i64 400
  %153 = load ptr, ptr %152, align 8
  %154 = invoke noundef nonnull align 8 dereferenceable(32) ptr %153(ptr noundef nonnull align 8 dereferenceable(352) %31)
          to label %155 unwind label %134

155:                                              ; preds = %150
  %156 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %154, i64 noundef %.0112) #4
  store ptr %149, ptr %156, align 8, !tbaa !8
  %157 = load ptr, ptr %31, align 8, !tbaa !5
  %158 = getelementptr inbounds i8, ptr %157, i64 400
  %159 = load ptr, ptr %158, align 8
  %160 = invoke noundef nonnull align 8 dereferenceable(32) ptr %159(ptr noundef nonnull align 8 dereferenceable(352) %31)
          to label %161 unwind label %134

161:                                              ; preds = %155
  %162 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %160, i64 noundef %.0112) #4
  %163 = load ptr, ptr %162, align 8, !tbaa !8
  %164 = icmp eq ptr %163, null
  %165 = add nuw i64 %.0112, 1
  br i1 %164, label %.loopexit, label %.preheader, !llvm.loop !13

.critedge:                                        ; preds = %130
  %166 = invoke noundef ptr @_ZN7glslang13TParseContext14addConstructorERKNS_10TSourceLocEP11TIntermNodeRKNS_5TTypeE(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull %31, ptr noundef nonnull align 8 dereferenceable(144) %5)
          to label %.loopexit unwind label %167

167:                                              ; preds = %.critedge
  %168 = landingpad { ptr, i32 }
          cleanup
  br label %169

.loopexit:                                        ; preds = %161, %.critedge
  %.1 = phi ptr [ %166, %.critedge ], [ null, %161 ]
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %6) #4
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %6) #4
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %5) #4
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %5) #4
  br label %.loopexit176

169:                                              ; preds = %167, %134
  %.pn158 = phi { ptr, i32 } [ %168, %167 ], [ %135, %134 ]
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %6) #4
  br label %170

170:                                              ; preds = %169, %132
  %.pn158.pn = phi { ptr, i32 } [ %.pn158, %169 ], [ %133, %132 ]
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %6) #4
  br label %171

171:                                              ; preds = %100, %102, %170, %98
  %.pn161.pn = phi { ptr, i32 } [ %99, %98 ], [ %103, %102 ], [ %.pn158.pn, %170 ], [ %101, %100 ]
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %5) #4
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %5) #4
  br label %419

172:                                              ; preds = %34
  %173 = load ptr, ptr %2, align 8, !tbaa !5
  %174 = getelementptr inbounds i8, ptr %173, i64 280
  %175 = load ptr, ptr %174, align 8
  %176 = tail call noundef zeroext i1 %175(ptr noundef nonnull align 8 dereferenceable(144) %2)
  br i1 %176, label %177, label %221

177:                                              ; preds = %172
  %178 = tail call noundef ptr @_ZNK7glslang5TType9getStructEv(ptr noundef nonnull align 8 dereferenceable(144) %2)
  %179 = tail call noundef i64 @_ZNKSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %178) #4
  %180 = load ptr, ptr %31, align 8, !tbaa !5
  %181 = getelementptr inbounds i8, ptr %180, i64 400
  %182 = load ptr, ptr %181, align 8
  %183 = tail call noundef nonnull align 8 dereferenceable(32) ptr %182(ptr noundef nonnull align 8 dereferenceable(352) %31)
  %184 = tail call noundef i64 @_ZNKSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %183) #4
  %.not155 = icmp eq i64 %179, %184
  br i1 %.not155, label %.preheader175, label %187

.preheader175:                                    ; preds = %177
  %185 = tail call noundef ptr @_ZNK7glslang5TType9getStructEv(ptr noundef nonnull align 8 dereferenceable(144) %2)
  %186 = tail call noundef i64 @_ZNKSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %185) #4
  %.not156180.not = icmp eq i64 %186, 0
  br i1 %.not156180.not, label %.critedge166, label %.lr.ph182

187:                                              ; preds = %177
  %188 = load ptr, ptr %0, align 8, !tbaa !5
  %189 = getelementptr inbounds i8, ptr %188, i64 336
  %190 = load ptr, ptr %189, align 8
  tail call void (ptr, ptr, ptr, ptr, ptr, ...) %190(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.818, ptr noundef nonnull @.str.819, ptr noundef nonnull @.str.2)
  br label %.loopexit176

191:                                              ; preds = %.lr.ph182
  %192 = add nuw i64 %.0111181, 1
  %193 = tail call noundef ptr @_ZNK7glslang5TType9getStructEv(ptr noundef nonnull align 8 dereferenceable(144) %2)
  %194 = tail call noundef i64 @_ZNKSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %193) #4
  %.not156 = icmp ult i64 %192, %194
  br i1 %.not156, label %.lr.ph182, label %.critedge166, !llvm.loop !14

.lr.ph182:                                        ; preds = %.preheader175, %191
  %.0111181 = phi i64 [ %192, %191 ], [ 0, %.preheader175 ]
  %195 = tail call noundef ptr @_ZNK7glslang5TType9getStructEv(ptr noundef nonnull align 8 dereferenceable(144) %2)
  %196 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %195, i64 noundef %.0111181) #4
  %197 = load ptr, ptr %196, align 8, !tbaa !15
  %198 = load ptr, ptr %31, align 8, !tbaa !5
  %199 = getelementptr inbounds i8, ptr %198, i64 400
  %200 = load ptr, ptr %199, align 8
  %201 = tail call noundef nonnull align 8 dereferenceable(32) ptr %200(ptr noundef nonnull align 8 dereferenceable(352) %31)
  %202 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %201, i64 noundef %.0111181) #4
  %203 = load ptr, ptr %202, align 8, !tbaa !8
  %204 = load ptr, ptr %203, align 8, !tbaa !5
  %205 = getelementptr inbounds i8, ptr %204, i64 24
  %206 = load ptr, ptr %205, align 8
  %207 = tail call noundef ptr %206(ptr noundef nonnull align 8 dereferenceable(32) %203)
  %208 = tail call noundef ptr @_ZN7glslang13TParseContext22convertInitializerListERKNS_10TSourceLocERKNS_5TTypeEPNS_12TIntermTypedE(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(144) %197, ptr noundef %207)
  %209 = load ptr, ptr %31, align 8, !tbaa !5
  %210 = getelementptr inbounds i8, ptr %209, i64 400
  %211 = load ptr, ptr %210, align 8
  %212 = tail call noundef nonnull align 8 dereferenceable(32) ptr %211(ptr noundef nonnull align 8 dereferenceable(352) %31)
  %213 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %212, i64 noundef %.0111181) #4
  store ptr %208, ptr %213, align 8, !tbaa !8
  %214 = load ptr, ptr %31, align 8, !tbaa !5
  %215 = getelementptr inbounds i8, ptr %214, i64 400
  %216 = load ptr, ptr %215, align 8
  %217 = tail call noundef nonnull align 8 dereferenceable(32) ptr %216(ptr noundef nonnull align 8 dereferenceable(352) %31)
  %218 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %217, i64 noundef %.0111181) #4
  %219 = load ptr, ptr %218, align 8, !tbaa !8
  %220 = icmp eq ptr %219, null
  br i1 %220, label %.loopexit176, label %191

221:                                              ; preds = %172
  %222 = load ptr, ptr %2, align 8, !tbaa !5
  %223 = getelementptr inbounds i8, ptr %222, i64 224
  %224 = load ptr, ptr %223, align 8
  %225 = tail call noundef zeroext i1 %224(ptr noundef nonnull align 8 dereferenceable(144) %2)
  %226 = load ptr, ptr %2, align 8, !tbaa !5
  br i1 %225, label %227, label %297

227:                                              ; preds = %221
  %228 = getelementptr inbounds i8, ptr %226, i64 104
  %229 = load ptr, ptr %228, align 8
  %230 = tail call noundef i32 %229(ptr noundef nonnull align 8 dereferenceable(144) %2)
  %231 = load ptr, ptr %31, align 8, !tbaa !5
  %232 = getelementptr inbounds i8, ptr %231, i64 400
  %233 = load ptr, ptr %232, align 8
  %234 = tail call noundef nonnull align 8 dereferenceable(32) ptr %233(ptr noundef nonnull align 8 dereferenceable(352) %31)
  %235 = tail call noundef i64 @_ZNKSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %234) #4
  %236 = trunc i64 %235 to i32
  %.not150 = icmp eq i32 %230, %236
  br i1 %.not150, label %257, label %237

237:                                              ; preds = %227
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %7) #4
  %238 = getelementptr inbounds i8, ptr %0, i64 56
  %239 = load ptr, ptr %238, align 8, !tbaa !19
  %240 = tail call noundef zeroext i1 @_ZNK7glslang13TIntermediate15getEnhancedMsgsEv(ptr noundef nonnull align 8 dereferenceable(1784) %239)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #4
  call void @_ZN7glslang14pool_allocatorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %9)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(40) %8, ptr noundef nonnull @.str.2, ptr noundef nonnull align 8 dereferenceable(8) %9)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #4
  invoke void @_ZN7glslang14pool_allocatorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %11)
          to label %241 unwind label %249

241:                                              ; preds = %237
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(40) %10, ptr noundef nonnull @.str.2, ptr noundef nonnull align 8 dereferenceable(8) %11)
          to label %242 unwind label %249

242:                                              ; preds = %241
  invoke void @_ZNK7glslang5TType17getCompleteStringEbbbbNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEES7_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %7, ptr noundef nonnull align 8 dereferenceable(144) %2, i1 noundef zeroext %240, i1 noundef zeroext true, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef nonnull %8, ptr noundef nonnull %10)
          to label %243 unwind label %251

243:                                              ; preds = %242
  %244 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %7) #4
  %245 = load ptr, ptr %0, align 8, !tbaa !5
  %246 = getelementptr inbounds i8, ptr %245, i64 336
  %247 = load ptr, ptr %246, align 8
  invoke void (ptr, ptr, ptr, ptr, ptr, ...) %247(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.820, ptr noundef nonnull @.str.819, ptr noundef %244)
          to label %248 unwind label %253

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

249:                                              ; preds = %241, %237
  %250 = landingpad { ptr, i32 }
          cleanup
  br label %256

251:                                              ; preds = %242
  %252 = landingpad { ptr, i32 }
          cleanup
  br label %255

253:                                              ; preds = %243
  %254 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %7) #4
  br label %255

255:                                              ; preds = %253, %251
  %.pn152 = phi { ptr, i32 } [ %254, %253 ], [ %252, %251 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %10) #4
  br label %256

256:                                              ; preds = %255, %249
  %.pn152.pn = phi { ptr, i32 } [ %.pn152, %255 ], [ %250, %249 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %8) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #4
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %7) #4
  br label %419

257:                                              ; preds = %227
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %12) #4
  call void @_ZN7glslang5TTypeC2ERKS0_ib(ptr noundef nonnull align 8 dereferenceable(144) %12, ptr noundef nonnull align 8 dereferenceable(144) %2, i32 noundef 0, i1 noundef zeroext false)
  br label %258

258:                                              ; preds = %292, %257
  %indvars.iv187 = phi i64 [ %indvars.iv.next188, %292 ], [ 0, %257 ]
  %259 = load ptr, ptr %2, align 8, !tbaa !5
  %260 = getelementptr inbounds i8, ptr %259, i64 104
  %261 = load ptr, ptr %260, align 8
  %262 = invoke noundef i32 %261(ptr noundef nonnull align 8 dereferenceable(144) %2)
          to label %263 unwind label %265

263:                                              ; preds = %258
  %264 = sext i32 %262 to i64
  %.not151 = icmp slt i64 %indvars.iv187, %264
  br i1 %.not151, label %267, label %.critedge168

265:                                              ; preds = %286, %281, %279, %272, %267, %258
  %266 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %12) #4
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %12) #4
  br label %419

267:                                              ; preds = %263
  %268 = load ptr, ptr %31, align 8, !tbaa !5
  %269 = getelementptr inbounds i8, ptr %268, i64 400
  %270 = load ptr, ptr %269, align 8
  %271 = invoke noundef nonnull align 8 dereferenceable(32) ptr %270(ptr noundef nonnull align 8 dereferenceable(352) %31)
          to label %272 unwind label %265

272:                                              ; preds = %267
  %273 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %271, i64 noundef %indvars.iv187) #4
  %274 = load ptr, ptr %273, align 8, !tbaa !8
  %275 = load ptr, ptr %274, align 8, !tbaa !5
  %276 = getelementptr inbounds i8, ptr %275, i64 24
  %277 = load ptr, ptr %276, align 8
  %278 = invoke noundef ptr %277(ptr noundef nonnull align 8 dereferenceable(32) %274)
          to label %279 unwind label %265

279:                                              ; preds = %272
  %280 = invoke noundef ptr @_ZN7glslang13TParseContext22convertInitializerListERKNS_10TSourceLocERKNS_5TTypeEPNS_12TIntermTypedE(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(144) %12, ptr noundef %278)
          to label %281 unwind label %265

281:                                              ; preds = %279
  %282 = load ptr, ptr %31, align 8, !tbaa !5
  %283 = getelementptr inbounds i8, ptr %282, i64 400
  %284 = load ptr, ptr %283, align 8
  %285 = invoke noundef nonnull align 8 dereferenceable(32) ptr %284(ptr noundef nonnull align 8 dereferenceable(352) %31)
          to label %286 unwind label %265

286:                                              ; preds = %281
  %287 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %285, i64 noundef %indvars.iv187) #4
  store ptr %280, ptr %287, align 8, !tbaa !8
  %288 = load ptr, ptr %31, align 8, !tbaa !5
  %289 = getelementptr inbounds i8, ptr %288, i64 400
  %290 = load ptr, ptr %289, align 8
  %291 = invoke noundef nonnull align 8 dereferenceable(32) ptr %290(ptr noundef nonnull align 8 dereferenceable(352) %31)
          to label %292 unwind label %265

292:                                              ; preds = %286
  %293 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %291, i64 noundef %indvars.iv187) #4
  %294 = load ptr, ptr %293, align 8, !tbaa !8
  %295 = icmp eq ptr %294, null
  %indvars.iv.next188 = add nuw nsw i64 %indvars.iv187, 1
  br i1 %295, label %296, label %258, !llvm.loop !42

296:                                              ; preds = %292
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %12) #4
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %12) #4
  br label %.loopexit176

297:                                              ; preds = %221
  %298 = getelementptr inbounds i8, ptr %226, i64 216
  %299 = load ptr, ptr %298, align 8
  %300 = tail call noundef zeroext i1 %299(ptr noundef nonnull align 8 dereferenceable(144) %2)
  br i1 %300, label %301, label %384

301:                                              ; preds = %297
  %302 = load ptr, ptr %2, align 8, !tbaa !5
  %303 = getelementptr inbounds i8, ptr %302, i64 96
  %304 = load ptr, ptr %303, align 8
  %305 = tail call noundef i32 %304(ptr noundef nonnull align 8 dereferenceable(144) %2)
  %306 = load ptr, ptr %31, align 8, !tbaa !5
  %307 = getelementptr inbounds i8, ptr %306, i64 400
  %308 = load ptr, ptr %307, align 8
  %309 = tail call noundef nonnull align 8 dereferenceable(32) ptr %308(ptr noundef nonnull align 8 dereferenceable(352) %31)
  %310 = tail call noundef i64 @_ZNKSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %309) #4
  %311 = trunc i64 %310 to i32
  %.not141 = icmp eq i32 %305, %311
  br i1 %.not141, label %332, label %312

312:                                              ; preds = %301
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %13) #4
  %313 = getelementptr inbounds i8, ptr %0, i64 56
  %314 = load ptr, ptr %313, align 8, !tbaa !19
  %315 = tail call noundef zeroext i1 @_ZNK7glslang13TIntermediate15getEnhancedMsgsEv(ptr noundef nonnull align 8 dereferenceable(1784) %314)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #4
  call void @_ZN7glslang14pool_allocatorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %15)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(40) %14, ptr noundef nonnull @.str.2, ptr noundef nonnull align 8 dereferenceable(8) %15)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #4
  invoke void @_ZN7glslang14pool_allocatorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %17)
          to label %316 unwind label %324

316:                                              ; preds = %312
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(40) %16, ptr noundef nonnull @.str.2, ptr noundef nonnull align 8 dereferenceable(8) %17)
          to label %317 unwind label %324

317:                                              ; preds = %316
  invoke void @_ZNK7glslang5TType17getCompleteStringEbbbbNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEES7_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %13, ptr noundef nonnull align 8 dereferenceable(144) %2, i1 noundef zeroext %315, i1 noundef zeroext true, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef nonnull %14, ptr noundef nonnull %16)
          to label %318 unwind label %326

318:                                              ; preds = %317
  %319 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %13) #4
  %320 = load ptr, ptr %0, align 8, !tbaa !5
  %321 = getelementptr inbounds i8, ptr %320, i64 336
  %322 = load ptr, ptr %321, align 8
  invoke void (ptr, ptr, ptr, ptr, ptr, ...) %322(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.821, ptr noundef nonnull @.str.819, ptr noundef %319)
          to label %323 unwind label %328

323:                                              ; preds = %318
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %13) #4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %16) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %14) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #4
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %13) #4
  br label %.loopexit176

324:                                              ; preds = %316, %312
  %325 = landingpad { ptr, i32 }
          cleanup
  br label %331

326:                                              ; preds = %317
  %327 = landingpad { ptr, i32 }
          cleanup
  br label %330

328:                                              ; preds = %318
  %329 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %13) #4
  br label %330

330:                                              ; preds = %328, %326
  %.pn147 = phi { ptr, i32 } [ %329, %328 ], [ %327, %326 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %16) #4
  br label %331

331:                                              ; preds = %330, %324
  %.pn147.pn = phi { ptr, i32 } [ %.pn147, %330 ], [ %325, %324 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %14) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #4
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %13) #4
  br label %419

332:                                              ; preds = %301
  %333 = load ptr, ptr %2, align 8, !tbaa !5
  %334 = getelementptr inbounds i8, ptr %333, i64 56
  %335 = load ptr, ptr %334, align 8
  %336 = tail call noundef i32 %335(ptr noundef nonnull align 8 dereferenceable(144) %2)
  %337 = load ptr, ptr %2, align 8, !tbaa !5
  %338 = getelementptr inbounds i8, ptr %337, i64 96
  %339 = load ptr, ptr %338, align 8
  %340 = tail call noundef i32 %339(ptr noundef nonnull align 8 dereferenceable(144) %2)
  %.not146178 = icmp sgt i32 %340, 0
  br i1 %.not146178, label %.lr.ph, label %.critedge166

.lr.ph:                                           ; preds = %332
  %341 = getelementptr inbounds i8, ptr %0, i64 56
  br label %342

342:                                              ; preds = %.lr.ph, %378
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %378 ]
  %343 = load ptr, ptr %31, align 8, !tbaa !5
  %344 = getelementptr inbounds i8, ptr %343, i64 400
  %345 = load ptr, ptr %344, align 8
  %346 = tail call noundef nonnull align 8 dereferenceable(32) ptr %345(ptr noundef nonnull align 8 dereferenceable(352) %31)
  %347 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %346, i64 noundef %indvars.iv) #4
  %348 = load ptr, ptr %347, align 8, !tbaa !8
  %349 = load ptr, ptr %348, align 8, !tbaa !5
  %350 = getelementptr inbounds i8, ptr %349, i64 24
  %351 = load ptr, ptr %350, align 8
  %352 = tail call noundef ptr %351(ptr noundef nonnull align 8 dereferenceable(32) %348)
  %353 = load ptr, ptr %352, align 8, !tbaa !5
  %354 = getelementptr inbounds i8, ptr %353, i64 256
  %355 = load ptr, ptr %354, align 8
  %356 = tail call noundef i32 %355(ptr noundef nonnull align 8 dereferenceable(176) %352)
  %.not142 = icmp eq i32 %336, %356
  br i1 %.not142, label %378, label %357

357:                                              ; preds = %342
  %358 = load ptr, ptr %341, align 8, !tbaa !19
  %359 = tail call noundef zeroext i1 @_ZNK7glslang13TIntermediate20canImplicitlyPromoteENS_10TBasicTypeES1_NS_9TOperatorE(ptr noundef nonnull align 8 dereferenceable(1784) %358, i32 noundef %356, i32 noundef %336, i32 noundef 0)
  br i1 %359, label %378, label %360

360:                                              ; preds = %357
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %18) #4
  %361 = load ptr, ptr %341, align 8, !tbaa !19
  %362 = tail call noundef zeroext i1 @_ZNK7glslang13TIntermediate15getEnhancedMsgsEv(ptr noundef nonnull align 8 dereferenceable(1784) %361)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #4
  call void @_ZN7glslang14pool_allocatorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %20)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(40) %19, ptr noundef nonnull @.str.2, ptr noundef nonnull align 8 dereferenceable(8) %20)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #4
  invoke void @_ZN7glslang14pool_allocatorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %22)
          to label %363 unwind label %370

363:                                              ; preds = %360
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(40) %21, ptr noundef nonnull @.str.2, ptr noundef nonnull align 8 dereferenceable(8) %22)
          to label %364 unwind label %370

364:                                              ; preds = %363
  invoke void @_ZNK7glslang5TType17getCompleteStringEbbbbNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEES7_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %18, ptr noundef nonnull align 8 dereferenceable(144) %2, i1 noundef zeroext %362, i1 noundef zeroext true, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef nonnull %19, ptr noundef nonnull %21)
          to label %365 unwind label %372

365:                                              ; preds = %364
  %366 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %18) #4
  %367 = load ptr, ptr %0, align 8, !tbaa !5
  %368 = getelementptr inbounds i8, ptr %367, i64 336
  %369 = load ptr, ptr %368, align 8
  invoke void (ptr, ptr, ptr, ptr, ptr, ...) %369(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.822, ptr noundef nonnull @.str.819, ptr noundef %366)
          to label %.critedge170 unwind label %374

.critedge170:                                     ; preds = %365
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %18) #4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %21) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %19) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #4
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %18) #4
  br label %.loopexit176

370:                                              ; preds = %363, %360
  %371 = landingpad { ptr, i32 }
          cleanup
  br label %377

372:                                              ; preds = %364
  %373 = landingpad { ptr, i32 }
          cleanup
  br label %376

374:                                              ; preds = %365
  %375 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %18) #4
  br label %376

376:                                              ; preds = %374, %372
  %.pn143 = phi { ptr, i32 } [ %375, %374 ], [ %373, %372 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %21) #4
  br label %377

377:                                              ; preds = %376, %370
  %.pn143.pn = phi { ptr, i32 } [ %.pn143, %376 ], [ %371, %370 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %19) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #4
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %18) #4
  br label %419

378:                                              ; preds = %357, %342
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %379 = load ptr, ptr %2, align 8, !tbaa !5
  %380 = getelementptr inbounds i8, ptr %379, i64 96
  %381 = load ptr, ptr %380, align 8
  %382 = tail call noundef i32 %381(ptr noundef nonnull align 8 dereferenceable(144) %2)
  %383 = sext i32 %382 to i64
  %.not146 = icmp slt i64 %indvars.iv.next, %383
  br i1 %.not146, label %342, label %.critedge166, !llvm.loop !43

384:                                              ; preds = %297
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %23) #4
  %385 = getelementptr inbounds i8, ptr %0, i64 56
  %386 = load ptr, ptr %385, align 8, !tbaa !19
  %387 = tail call noundef zeroext i1 @_ZNK7glslang13TIntermediate15getEnhancedMsgsEv(ptr noundef nonnull align 8 dereferenceable(1784) %386)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #4
  call void @_ZN7glslang14pool_allocatorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %25)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(40) %24, ptr noundef nonnull @.str.2, ptr noundef nonnull align 8 dereferenceable(8) %25)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #4
  invoke void @_ZN7glslang14pool_allocatorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %27)
          to label %388 unwind label %396

388:                                              ; preds = %384
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(40) %26, ptr noundef nonnull @.str.2, ptr noundef nonnull align 8 dereferenceable(8) %27)
          to label %389 unwind label %396

389:                                              ; preds = %388
  invoke void @_ZNK7glslang5TType17getCompleteStringEbbbbNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEES7_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %23, ptr noundef nonnull align 8 dereferenceable(144) %2, i1 noundef zeroext %387, i1 noundef zeroext true, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef nonnull %24, ptr noundef nonnull %26)
          to label %390 unwind label %398

390:                                              ; preds = %389
  %391 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %23) #4
  %392 = load ptr, ptr %0, align 8, !tbaa !5
  %393 = getelementptr inbounds i8, ptr %392, i64 336
  %394 = load ptr, ptr %393, align 8
  invoke void (ptr, ptr, ptr, ptr, ptr, ...) %394(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.823, ptr noundef nonnull @.str.819, ptr noundef %391)
          to label %395 unwind label %400

395:                                              ; preds = %390
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %23) #4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %26) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %24) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #4
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %23) #4
  br label %.loopexit176

396:                                              ; preds = %388, %384
  %397 = landingpad { ptr, i32 }
          cleanup
  br label %403

398:                                              ; preds = %389
  %399 = landingpad { ptr, i32 }
          cleanup
  br label %402

400:                                              ; preds = %390
  %401 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %23) #4
  br label %402

402:                                              ; preds = %400, %398
  %.pn = phi { ptr, i32 } [ %401, %400 ], [ %399, %398 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %26) #4
  br label %403

403:                                              ; preds = %402, %396
  %.pn.pn = phi { ptr, i32 } [ %.pn, %402 ], [ %397, %396 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %24) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #4
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %23) #4
  br label %419

.critedge168:                                     ; preds = %263
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %12) #4
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %12) #4
  br label %.critedge166

.critedge166:                                     ; preds = %378, %191, %332, %.preheader175, %.critedge168
  %404 = load ptr, ptr %31, align 8, !tbaa !5
  %405 = getelementptr inbounds i8, ptr %404, i64 400
  %406 = load ptr, ptr %405, align 8
  %407 = call noundef nonnull align 8 dereferenceable(32) ptr %406(ptr noundef nonnull align 8 dereferenceable(352) %31)
  %408 = call noundef i64 @_ZNKSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %407) #4
  %409 = icmp eq i64 %408, 1
  br i1 %409, label %410, label %417

410:                                              ; preds = %.critedge166
  %411 = load ptr, ptr %31, align 8, !tbaa !5
  %412 = getelementptr inbounds i8, ptr %411, i64 400
  %413 = load ptr, ptr %412, align 8
  %414 = call noundef nonnull align 8 dereferenceable(32) ptr %413(ptr noundef nonnull align 8 dereferenceable(352) %31)
  %415 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %414, i64 noundef 0) #4
  %416 = load ptr, ptr %415, align 8, !tbaa !8
  br label %417

417:                                              ; preds = %.critedge166, %410
  %.0 = phi ptr [ %416, %410 ], [ %31, %.critedge166 ]
  %418 = call noundef ptr @_ZN7glslang13TParseContext14addConstructorERKNS_10TSourceLocEP11TIntermNodeRKNS_5TTypeE(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef %.0, ptr noundef nonnull align 8 dereferenceable(144) %2)
  br label %.loopexit176

.loopexit176:                                     ; preds = %.lr.ph182, %.critedge170, %296, %4, %32, %417, %395, %323, %248, %187, %.loopexit
  %.7 = phi ptr [ %.1, %.loopexit ], [ null, %187 ], [ %418, %417 ], [ null, %248 ], [ null, %296 ], [ null, %323 ], [ null, %.critedge170 ], [ null, %395 ], [ %3, %32 ], [ %3, %4 ], [ null, %.lr.ph182 ]
  ret ptr %.7

419:                                              ; preds = %403, %377, %331, %265, %256, %171
  %.pn161.pn.pn = phi { ptr, i32 } [ %.pn161.pn, %171 ], [ %.pn152.pn, %256 ], [ %266, %265 ], [ %.pn147.pn, %331 ], [ %.pn143.pn, %377 ], [ %.pn.pn, %403 ]
  resume { ptr, i32 } %.pn161.pn.pn
}

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"vtable pointer", !7, i64 0}
!7 = !{!"Simple C++ TBAA"}
!8 = !{!9, !9, i64 0}
!9 = !{!"any pointer", !10, i64 0}
!10 = !{!"omnipotent char", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = distinct !{!14, !12}
!15 = !{!16, !9, i64 0}
!16 = !{!"_ZTSN7glslang8TTypeLocE", !9, i64 0, !17, i64 8}
!17 = !{!"_ZTSN7glslang10TSourceLocE", !9, i64 0, !18, i64 8, !18, i64 12, !18, i64 16}
!18 = !{!"int", !10, i64 0}
!19 = !{!20, !9, i64 56}
!20 = !{!"_ZTSN7glslang14TParseVersionsE", !21, i64 8, !22, i64 12, !9, i64 16, !18, i64 24, !23, i64 28, !24, i64 32, !9, i64 56, !25, i64 64, !36, i64 120, !41, i64 176, !18, i64 180, !9, i64 184}
!21 = !{!"bool", !10, i64 0}
!22 = !{!"_ZTS8EProfile", !10, i64 0}
!23 = !{!"_ZTS11EShLanguage", !10, i64 0}
!24 = !{!"_ZTSN7glslang10SpvVersionE", !18, i64 0, !18, i64 4, !18, i64 8, !18, i64 12, !21, i64 16}
!25 = !{!"_ZTSN7glslang4TMapINSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEENS_18TExtensionBehaviorESt4lessIS7_EEE", !26, i64 0}
!26 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEENS4_18TExtensionBehaviorESt4lessIS7_ENS5_ISt4pairIKS7_S8_EEEE", !27, i64 0}
!27 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_NS4_18TExtensionBehaviorEESt10_Select1stISB_ESt4lessIS7_ENS5_ISB_EEE", !28, i64 0}
!28 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_NS4_18TExtensionBehaviorEESt10_Select1stISB_ESt4lessIS7_ENS5_ISB_EEE13_Rb_tree_implISF_Lb1EEE", !29, i64 0, !30, i64 8, !32, i64 16}
!29 = !{!"_ZTSN7glslang14pool_allocatorISt13_Rb_tree_nodeISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_IcEEEENS_18TExtensionBehaviorEEEEE", !9, i64 0}
!30 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEEE", !31, i64 0}
!31 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEE"}
!32 = !{!"_ZTSSt15_Rb_tree_header", !33, i64 0, !35, i64 32}
!33 = !{!"_ZTSSt18_Rb_tree_node_base", !34, i64 0, !9, i64 8, !9, i64 16, !9, i64 24}
!34 = !{!"_ZTSSt14_Rb_tree_color", !10, i64 0}
!35 = !{!"long", !10, i64 0}
!36 = !{!"_ZTSN7glslang4TMapINSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEEjSt4lessIS7_EEE", !37, i64 0}
!37 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEjSt4lessIS7_ENS5_ISt4pairIKS7_jEEEE", !38, i64 0}
!38 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_jESt10_Select1stISA_ESt4lessIS7_ENS5_ISA_EEE", !39, i64 0}
!39 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_jESt10_Select1stISA_ESt4lessIS7_ENS5_ISA_EEE13_Rb_tree_implISE_Lb1EEE", !40, i64 0, !30, i64 8, !32, i64 16}
!40 = !{!"_ZTSN7glslang14pool_allocatorISt13_Rb_tree_nodeISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_IcEEEEjEEEE", !9, i64 0}
!41 = !{!"_ZTS11EShMessages", !10, i64 0}
!42 = distinct !{!42, !12}
!43 = distinct !{!43, !12}


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