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

@.str.327 = external hidden unnamed_addr constant [12 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZNK7glslang5TType9getStructEv(ptr noundef nonnull align 8 dereferenceable(144)) #2 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 #3 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
define dso_local noundef ptr @_ZN7glslang13TParseContext14addConstructorERKNS_10TSourceLocEP11TIntermNodeRKNS_5TTypeE(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef %2, ptr noundef nonnull align 8 dereferenceable(144) %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 i32, align 4
  %13 = alloca %"class.__gnu_cxx::__normal_iterator.228", align 8
  %14 = alloca %"class.__gnu_cxx::__normal_iterator.228", align 8
  %15 = alloca %"class.glslang::TType", align 8
  %16 = alloca ptr, align 8
  %17 = alloca i32, align 4
  %18 = alloca %"class.glslang::TType", align 8
  %19 = alloca i8, align 1
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca i32, align 4
  %23 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %24 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %25 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %26 = alloca ptr, align 8
  %27 = 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
  %28 = load ptr, ptr %6, align 8
  %29 = load ptr, ptr %8, align 8, !tbaa !5
  %30 = icmp eq ptr %29, null
  br i1 %30, label %38, label %31

31:                                               ; preds = %4
  %32 = load ptr, ptr %8, align 8, !tbaa !5
  %33 = load ptr, ptr %32, align 8, !tbaa !9
  %34 = getelementptr inbounds ptr, ptr %33, i64 3
  %35 = load ptr, ptr %34, align 8
  %36 = call noundef ptr %35(ptr noundef nonnull align 8 dereferenceable(32) %32)
  %37 = icmp eq ptr %36, null
  br i1 %37, label %38, label %39

38:                                               ; preds = %31, %4
  store ptr null, ptr %5, align 8
  br label %409

39:                                               ; preds = %31
  %40 = load ptr, ptr %7, align 8, !tbaa !5
  %41 = load ptr, ptr %8, align 8, !tbaa !5
  %42 = load ptr, ptr %41, align 8, !tbaa !9
  %43 = getelementptr inbounds ptr, ptr %42, i64 3
  %44 = load ptr, ptr %43, align 8
  %45 = call noundef ptr %44(ptr noundef nonnull align 8 dereferenceable(32) %41)
  %46 = load ptr, ptr %28, align 8, !tbaa !9
  %47 = getelementptr inbounds ptr, ptr %46, i64 64
  %48 = load ptr, ptr %47, align 8
  call void %48(ptr noundef nonnull align 8 dereferenceable(24912) %28, ptr noundef nonnull align 8 dereferenceable(24) %40, ptr noundef @.str.327, ptr noundef %45)
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #6
  %49 = load ptr, ptr %8, align 8, !tbaa !5
  %50 = load ptr, ptr %49, align 8, !tbaa !9
  %51 = getelementptr inbounds ptr, ptr %50, i64 6
  %52 = load ptr, ptr %51, align 8
  %53 = call noundef ptr %52(ptr noundef nonnull align 8 dereferenceable(32) %49)
  store ptr %53, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #6
  %54 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %28, i32 0, i32 7
  %55 = load ptr, ptr %54, align 8, !tbaa !11
  %56 = load ptr, ptr %9, align 8, !tbaa !5
  %57 = call noundef i32 @_ZNK7glslang13TIntermediate22mapTypeToConstructorOpERKNS_5TTypeE(ptr noundef nonnull align 8 dereferenceable(1784) %55, ptr noundef nonnull align 8 dereferenceable(144) %56)
  store i32 %57, ptr %11, align 4, !tbaa !35
  %58 = load i32, ptr %11, align 4, !tbaa !35
  %59 = icmp eq i32 %58, 569
  br i1 %59, label %60, label %115

60:                                               ; preds = %39
  %61 = load ptr, ptr %10, align 8, !tbaa !5
  %62 = load ptr, ptr %61, align 8, !tbaa !9
  %63 = getelementptr inbounds ptr, ptr %62, i64 50
  %64 = load ptr, ptr %63, align 8
  %65 = call noundef nonnull align 8 dereferenceable(32) ptr %64(ptr noundef nonnull align 8 dereferenceable(352) %61)
  %66 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %65, i64 noundef 1) #6
  %67 = load ptr, ptr %66, align 8, !tbaa !5
  %68 = load ptr, ptr %67, align 8, !tbaa !9
  %69 = getelementptr inbounds ptr, ptr %68, i64 3
  %70 = load ptr, ptr %69, align 8
  %71 = call noundef ptr %70(ptr noundef nonnull align 8 dereferenceable(32) %67)
  %72 = load ptr, ptr %71, align 8, !tbaa !9
  %73 = getelementptr inbounds ptr, ptr %72, i64 30
  %74 = load ptr, ptr %73, align 8
  %75 = call noundef nonnull align 8 dereferenceable(144) ptr %74(ptr noundef nonnull align 8 dereferenceable(176) %71)
  %76 = load ptr, ptr %75, align 8, !tbaa !9
  %77 = getelementptr inbounds ptr, ptr %76, i64 8
  %78 = load ptr, ptr %77, align 8
  %79 = call noundef nonnull align 4 dereferenceable(4) ptr %78(ptr noundef nonnull align 8 dereferenceable(144) %75)
  %80 = load i32, ptr %79, align 4
  %81 = lshr i32 %80, 17
  %82 = and i32 %81, 1
  %83 = trunc i32 %82 to i1
  br i1 %83, label %84, label %107

84:                                               ; preds = %60
  %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 = call noundef nonnull align 8 dereferenceable(32) ptr %88(ptr noundef nonnull align 8 dereferenceable(352) %85)
  %90 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %89, i64 noundef 0) #6
  %91 = load ptr, ptr %90, align 8, !tbaa !5
  %92 = load ptr, ptr %91, align 8, !tbaa !9
  %93 = getelementptr inbounds ptr, ptr %92, i64 3
  %94 = load ptr, ptr %93, align 8
  %95 = call noundef ptr %94(ptr noundef nonnull align 8 dereferenceable(32) %91)
  %96 = load ptr, ptr %95, align 8, !tbaa !9
  %97 = getelementptr inbounds ptr, ptr %96, i64 31
  %98 = load ptr, ptr %97, align 8
  %99 = call noundef nonnull align 8 dereferenceable(144) ptr %98(ptr noundef nonnull align 8 dereferenceable(176) %95)
  %100 = load ptr, ptr %99, align 8, !tbaa !9
  %101 = getelementptr inbounds ptr, ptr %100, i64 9
  %102 = load ptr, ptr %101, align 8
  %103 = call noundef nonnull align 4 dereferenceable(4) ptr %102(ptr noundef nonnull align 8 dereferenceable(144) %99)
  %104 = load i32, ptr %103, align 4
  %105 = and i32 %104, -131073
  %106 = or i32 %105, 131072
  store i32 %106, ptr %103, align 4
  br label %107

107:                                              ; preds = %84, %60
  %108 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %28, i32 0, i32 7
  %109 = load ptr, ptr %108, align 8, !tbaa !11
  %110 = load ptr, ptr %10, align 8, !tbaa !5
  %111 = load i32, ptr %11, align 4, !tbaa !35
  %112 = load ptr, ptr %9, align 8, !tbaa !5
  %113 = load ptr, ptr %7, align 8, !tbaa !5
  %114 = call noundef ptr @_ZN7glslang13TIntermediate20setAggregateOperatorEP11TIntermNodeNS_9TOperatorERKNS_5TTypeERKNS_10TSourceLocE(ptr noundef nonnull align 8 dereferenceable(1784) %109, ptr noundef %110, i32 noundef %111, ptr noundef nonnull align 8 dereferenceable(144) %112, ptr noundef nonnull align 8 dereferenceable(24) %113)
  store ptr %114, ptr %5, align 8
  store i32 1, ptr %12, align 4
  br label %408

115:                                              ; preds = %39
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #6
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKN7glslang8TTypeLocESt6vectorIS2_NS1_14pool_allocatorIS2_EEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %13) #6
  %116 = load i32, ptr %11, align 4, !tbaa !35
  %117 = icmp eq i32 %116, 568
  br i1 %117, label %118, label %123

118:                                              ; preds = %115
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #6
  %119 = load ptr, ptr %9, align 8, !tbaa !5
  %120 = call noundef ptr @_ZNK7glslang5TType9getStructEv(ptr noundef nonnull align 8 dereferenceable(144) %119)
  %121 = call ptr @_ZNKSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(32) %120) #6
  %122 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.228", ptr %14, i32 0, i32 0
  store ptr %121, ptr %122, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %13, ptr align 8 %14, i64 8, i1 false), !tbaa.struct !37
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #6
  br label %123

123:                                              ; preds = %118, %115
  call void @llvm.lifetime.start.p0(i64 144, ptr %15) #6
  call void @_ZN7glslang5TTypeC2ENS_10TBasicTypeENS_17TStorageQualifierEiiib(ptr noundef nonnull align 8 dereferenceable(144) %15, i32 noundef 0, i32 noundef 0, i32 noundef 1, i32 noundef 0, i32 noundef 0, i1 noundef zeroext false)
  %124 = load ptr, ptr %9, align 8, !tbaa !5
  %125 = load ptr, ptr %124, align 8, !tbaa !9
  %126 = getelementptr inbounds ptr, ptr %125, i64 29
  %127 = load ptr, ptr %126, align 8
  %128 = invoke noundef zeroext i1 %127(ptr noundef nonnull align 8 dereferenceable(144) %124)
          to label %129 unwind label %134

129:                                              ; preds = %123
  br i1 %128, label %130, label %147

130:                                              ; preds = %129
  call void @llvm.lifetime.start.p0(i64 144, ptr %18) #6
  %131 = load ptr, ptr %9, align 8, !tbaa !5
  invoke void @_ZN7glslang5TTypeC2ERKS0_ib(ptr noundef nonnull align 8 dereferenceable(144) %18, ptr noundef nonnull align 8 dereferenceable(144) %131, i32 noundef 0, i1 noundef zeroext false)
          to label %132 unwind label %138

132:                                              ; preds = %130
  invoke void @_ZN7glslang5TType11shallowCopyERKS0_(ptr noundef nonnull align 8 dereferenceable(144) %15, ptr noundef nonnull align 8 dereferenceable(144) %18)
          to label %133 unwind label %142

133:                                              ; preds = %132
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %18) #6
  call void @llvm.lifetime.end.p0(i64 144, ptr %18) #6
  br label %150

134:                                              ; preds = %147, %123
  %135 = landingpad { ptr, i32 }
          cleanup
  %136 = extractvalue { ptr, i32 } %135, 0
  store ptr %136, ptr %16, align 8
  %137 = extractvalue { ptr, i32 } %135, 1
  store i32 %137, ptr %17, align 4
  br label %407

138:                                              ; preds = %130
  %139 = landingpad { ptr, i32 }
          cleanup
  %140 = extractvalue { ptr, i32 } %139, 0
  store ptr %140, ptr %16, align 8
  %141 = extractvalue { ptr, i32 } %139, 1
  store i32 %141, ptr %17, align 4
  br label %146

142:                                              ; preds = %132
  %143 = landingpad { ptr, i32 }
          cleanup
  %144 = extractvalue { ptr, i32 } %143, 0
  store ptr %144, ptr %16, align 8
  %145 = extractvalue { ptr, i32 } %143, 1
  store i32 %145, ptr %17, align 4
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %18) #6
  br label %146

146:                                              ; preds = %142, %138
  call void @llvm.lifetime.end.p0(i64 144, ptr %18) #6
  br label %407

147:                                              ; preds = %129
  %148 = load ptr, ptr %9, align 8, !tbaa !5
  invoke void @_ZN7glslang5TType11shallowCopyERKS0_(ptr noundef nonnull align 8 dereferenceable(144) %15, ptr noundef nonnull align 8 dereferenceable(144) %148)
          to label %149 unwind label %134

149:                                              ; preds = %147
  br label %150

150:                                              ; preds = %149, %133
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #6
  %151 = load ptr, ptr %10, align 8, !tbaa !5
  %152 = icmp ne ptr %151, null
  br i1 %152, label %153, label %165

153:                                              ; preds = %150
  %154 = load ptr, ptr %10, align 8, !tbaa !5
  %155 = invoke noundef i32 @_ZNK7glslang15TIntermOperator5getOpEv(ptr noundef nonnull align 8 dereferenceable(184) %154)
          to label %156 unwind label %159

156:                                              ; preds = %153
  %157 = icmp ne i32 %155, 0
  br i1 %157, label %158, label %163

158:                                              ; preds = %156
  store i8 1, ptr %19, align 1, !tbaa !38
  br label %164

159:                                              ; preds = %153
  %160 = landingpad { ptr, i32 }
          cleanup
  %161 = extractvalue { ptr, i32 } %160, 0
  store ptr %161, ptr %16, align 8
  %162 = extractvalue { ptr, i32 } %160, 1
  store i32 %162, ptr %17, align 4
  br label %406

163:                                              ; preds = %156
  store i8 0, ptr %19, align 1, !tbaa !38
  br label %164

164:                                              ; preds = %163, %158
  br label %166

165:                                              ; preds = %150
  store i8 1, ptr %19, align 1, !tbaa !38
  br label %166

166:                                              ; preds = %165, %164
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #6
  %167 = load i8, ptr %19, align 1, !tbaa !38, !range !39, !noundef !40
  %168 = trunc i8 %167 to i1
  br i1 %168, label %169, label %247

169:                                              ; preds = %166
  %170 = load ptr, ptr %9, align 8, !tbaa !5
  %171 = load ptr, ptr %170, align 8, !tbaa !9
  %172 = getelementptr inbounds ptr, ptr %171, i64 29
  %173 = load ptr, ptr %172, align 8
  %174 = invoke noundef zeroext i1 %173(ptr noundef nonnull align 8 dereferenceable(144) %170)
          to label %175 unwind label %186

175:                                              ; preds = %169
  br i1 %174, label %176, label %190

176:                                              ; preds = %175
  %177 = load ptr, ptr %8, align 8, !tbaa !5
  %178 = load ptr, ptr %8, align 8, !tbaa !5
  %179 = load ptr, ptr %178, align 8, !tbaa !9
  %180 = getelementptr inbounds ptr, ptr %179, i64 0
  %181 = load ptr, ptr %180, align 8
  %182 = invoke noundef nonnull align 8 dereferenceable(24) ptr %181(ptr noundef nonnull align 8 dereferenceable(32) %178)
          to label %183 unwind label %186

183:                                              ; preds = %176
  %184 = invoke noundef ptr @_ZN7glslang13TParseContext18constructAggregateEP11TIntermNodeRKNS_5TTypeEiRKNS_10TSourceLocE(ptr noundef nonnull align 8 dereferenceable(24912) %28, ptr noundef %177, ptr noundef nonnull align 8 dereferenceable(144) %15, i32 noundef 1, ptr noundef nonnull align 8 dereferenceable(24) %182)
          to label %185 unwind label %186

185:                                              ; preds = %183
  store ptr %184, ptr %20, align 8, !tbaa !5
  br label %224

186:                                              ; preds = %237, %227, %220, %214, %206, %203, %193, %183, %176, %169
  %187 = landingpad { ptr, i32 }
          cleanup
  %188 = extractvalue { ptr, i32 } %187, 0
  store ptr %188, ptr %16, align 8
  %189 = extractvalue { ptr, i32 } %187, 1
  store i32 %189, ptr %17, align 4
  br label %405

190:                                              ; preds = %175
  %191 = load i32, ptr %11, align 4, !tbaa !35
  %192 = icmp eq i32 %191, 568
  br i1 %192, label %193, label %206

193:                                              ; preds = %190
  %194 = load ptr, ptr %8, align 8, !tbaa !5
  %195 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN7glslang8TTypeLocESt6vectorIS2_NS1_14pool_allocatorIS2_EEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %13) #6
  %196 = getelementptr inbounds %"struct.glslang::TTypeLoc", ptr %195, i32 0, i32 0
  %197 = load ptr, ptr %196, align 8, !tbaa !41
  %198 = load ptr, ptr %8, align 8, !tbaa !5
  %199 = load ptr, ptr %198, align 8, !tbaa !9
  %200 = getelementptr inbounds ptr, ptr %199, i64 0
  %201 = load ptr, ptr %200, align 8
  %202 = invoke noundef nonnull align 8 dereferenceable(24) ptr %201(ptr noundef nonnull align 8 dereferenceable(32) %198)
          to label %203 unwind label %186

203:                                              ; preds = %193
  %204 = invoke noundef ptr @_ZN7glslang13TParseContext18constructAggregateEP11TIntermNodeRKNS_5TTypeEiRKNS_10TSourceLocE(ptr noundef nonnull align 8 dereferenceable(24912) %28, ptr noundef %194, ptr noundef nonnull align 8 dereferenceable(144) %197, i32 noundef 1, ptr noundef nonnull align 8 dereferenceable(24) %202)
          to label %205 unwind label %186

205:                                              ; preds = %203
  store ptr %204, ptr %20, align 8, !tbaa !5
  br label %223

206:                                              ; preds = %190
  %207 = load ptr, ptr %9, align 8, !tbaa !5
  %208 = load i32, ptr %11, align 4, !tbaa !35
  %209 = load ptr, ptr %8, align 8, !tbaa !5
  %210 = load ptr, ptr %209, align 8, !tbaa !9
  %211 = getelementptr inbounds ptr, ptr %210, i64 3
  %212 = load ptr, ptr %211, align 8
  %213 = invoke noundef ptr %212(ptr noundef nonnull align 8 dereferenceable(32) %209)
          to label %214 unwind label %186

214:                                              ; preds = %206
  %215 = load ptr, ptr %8, align 8, !tbaa !5
  %216 = load ptr, ptr %215, align 8, !tbaa !9
  %217 = getelementptr inbounds ptr, ptr %216, i64 0
  %218 = load ptr, ptr %217, align 8
  %219 = invoke noundef nonnull align 8 dereferenceable(24) ptr %218(ptr noundef nonnull align 8 dereferenceable(32) %215)
          to label %220 unwind label %186

220:                                              ; preds = %214
  %221 = invoke noundef ptr @_ZN7glslang13TParseContext16constructBuiltInERKNS_5TTypeENS_9TOperatorEPNS_12TIntermTypedERKNS_10TSourceLocEb(ptr noundef nonnull align 8 dereferenceable(24912) %28, ptr noundef nonnull align 8 dereferenceable(144) %207, i32 noundef %208, ptr noundef %213, ptr noundef nonnull align 8 dereferenceable(24) %219, i1 noundef zeroext false)
          to label %222 unwind label %186

222:                                              ; preds = %220
  store ptr %221, ptr %20, align 8, !tbaa !5
  br label %223

223:                                              ; preds = %222, %205
  br label %224

224:                                              ; preds = %223, %185
  %225 = load ptr, ptr %20, align 8, !tbaa !5
  %226 = icmp ne ptr %225, null
  br i1 %226, label %227, label %245

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

233:                                              ; preds = %227
  br i1 %232, label %237, label %234

234:                                              ; preds = %233
  %235 = load i32, ptr %11, align 4, !tbaa !35
  %236 = icmp eq i32 %235, 568
  br i1 %236, label %237, label %245

237:                                              ; preds = %234, %233
  %238 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %28, i32 0, i32 7
  %239 = load ptr, ptr %238, align 8, !tbaa !11
  %240 = load ptr, ptr %20, align 8, !tbaa !5
  %241 = load ptr, ptr %9, align 8, !tbaa !5
  %242 = load ptr, ptr %7, align 8, !tbaa !5
  %243 = invoke noundef ptr @_ZN7glslang13TIntermediate20setAggregateOperatorEP11TIntermNodeNS_9TOperatorERKNS_5TTypeERKNS_10TSourceLocE(ptr noundef nonnull align 8 dereferenceable(1784) %239, ptr noundef %240, i32 noundef 568, ptr noundef nonnull align 8 dereferenceable(144) %241, ptr noundef nonnull align 8 dereferenceable(24) %242)
          to label %244 unwind label %186

244:                                              ; preds = %237
  store ptr %243, ptr %20, align 8, !tbaa !5
  br label %245

245:                                              ; preds = %244, %234, %224
  %246 = load ptr, ptr %20, align 8, !tbaa !5
  store ptr %246, ptr %5, align 8
  store i32 1, ptr %12, align 4
  br label %404

247:                                              ; preds = %166
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #6
  %248 = load ptr, ptr %10, align 8, !tbaa !5
  %249 = load ptr, ptr %248, align 8, !tbaa !9
  %250 = getelementptr inbounds ptr, ptr %249, i64 50
  %251 = load ptr, ptr %250, align 8
  %252 = invoke noundef nonnull align 8 dereferenceable(32) ptr %251(ptr noundef nonnull align 8 dereferenceable(352) %248)
          to label %253 unwind label %263

253:                                              ; preds = %247
  store ptr %252, ptr %21, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #6
  store i32 0, ptr %22, align 4, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #6
  %254 = load ptr, ptr %21, align 8, !tbaa !5
  %255 = call ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(32) %254) #6
  %256 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %23, i32 0, i32 0
  store ptr %255, ptr %256, align 8
  br label %257

257:                                              ; preds = %339, %253
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #6
  %258 = load ptr, ptr %21, align 8, !tbaa !5
  %259 = call ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(32) %258) #6
  %260 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %24, i32 0, i32 0
  store ptr %259, ptr %260, align 8
  %261 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPP11TIntermNodeSt6vectorIS2_N7glslang14pool_allocatorIS2_EEEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %24) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #6
  br i1 %261, label %267, label %262

262:                                              ; preds = %257
  store i32 2, ptr %12, align 4
  br label %344

263:                                              ; preds = %247
  %264 = landingpad { ptr, i32 }
          cleanup
  %265 = extractvalue { ptr, i32 } %264, 0
  store ptr %265, ptr %16, align 8
  %266 = extractvalue { ptr, i32 } %264, 1
  store i32 %266, ptr %17, align 4
  br label %403

267:                                              ; preds = %257
  %268 = load ptr, ptr %9, align 8, !tbaa !5
  %269 = load ptr, ptr %268, align 8, !tbaa !9
  %270 = getelementptr inbounds ptr, ptr %269, i64 29
  %271 = load ptr, ptr %270, align 8
  %272 = invoke noundef zeroext i1 %271(ptr noundef nonnull align 8 dereferenceable(144) %268)
          to label %273 unwind label %287

273:                                              ; preds = %267
  br i1 %272, label %274, label %291

274:                                              ; preds = %273
  %275 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPP11TIntermNodeSt6vectorIS2_N7glslang14pool_allocatorIS2_EEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %23) #6
  %276 = load ptr, ptr %275, align 8, !tbaa !5
  %277 = load i32, ptr %22, align 4, !tbaa !44
  %278 = add nsw i32 %277, 1
  %279 = load ptr, ptr %8, align 8, !tbaa !5
  %280 = load ptr, ptr %279, align 8, !tbaa !9
  %281 = getelementptr inbounds ptr, ptr %280, i64 0
  %282 = load ptr, ptr %281, align 8
  %283 = invoke noundef nonnull align 8 dereferenceable(24) ptr %282(ptr noundef nonnull align 8 dereferenceable(32) %279)
          to label %284 unwind label %287

284:                                              ; preds = %274
  %285 = invoke noundef ptr @_ZN7glslang13TParseContext18constructAggregateEP11TIntermNodeRKNS_5TTypeEiRKNS_10TSourceLocE(ptr noundef nonnull align 8 dereferenceable(24912) %28, ptr noundef %276, ptr noundef nonnull align 8 dereferenceable(144) %15, i32 noundef %278, ptr noundef nonnull align 8 dereferenceable(24) %283)
          to label %286 unwind label %287

286:                                              ; preds = %284
  store ptr %285, ptr %20, align 8, !tbaa !5
  br label %331

287:                                              ; preds = %327, %321, %312, %309, %294, %284, %274, %267
  %288 = landingpad { ptr, i32 }
          cleanup
  %289 = extractvalue { ptr, i32 } %288, 0
  store ptr %289, ptr %16, align 8
  %290 = extractvalue { ptr, i32 } %288, 1
  store i32 %290, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #6
  br label %402

291:                                              ; preds = %273
  %292 = load i32, ptr %11, align 4, !tbaa !35
  %293 = icmp eq i32 %292, 568
  br i1 %293, label %294, label %312

294:                                              ; preds = %291
  %295 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPP11TIntermNodeSt6vectorIS2_N7glslang14pool_allocatorIS2_EEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %23) #6
  %296 = load ptr, ptr %295, align 8, !tbaa !5
  %297 = load i32, ptr %22, align 4, !tbaa !44
  %298 = sext i32 %297 to i64
  %299 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN7glslang8TTypeLocESt6vectorIS2_NS1_14pool_allocatorIS2_EEEEixEl(ptr noundef nonnull align 8 dereferenceable(8) %13, i64 noundef %298) #6
  %300 = getelementptr inbounds %"struct.glslang::TTypeLoc", ptr %299, i32 0, i32 0
  %301 = load ptr, ptr %300, align 8, !tbaa !41
  %302 = load i32, ptr %22, align 4, !tbaa !44
  %303 = add nsw i32 %302, 1
  %304 = load ptr, ptr %8, align 8, !tbaa !5
  %305 = load ptr, ptr %304, align 8, !tbaa !9
  %306 = getelementptr inbounds ptr, ptr %305, i64 0
  %307 = load ptr, ptr %306, align 8
  %308 = invoke noundef nonnull align 8 dereferenceable(24) ptr %307(ptr noundef nonnull align 8 dereferenceable(32) %304)
          to label %309 unwind label %287

309:                                              ; preds = %294
  %310 = invoke noundef ptr @_ZN7glslang13TParseContext18constructAggregateEP11TIntermNodeRKNS_5TTypeEiRKNS_10TSourceLocE(ptr noundef nonnull align 8 dereferenceable(24912) %28, ptr noundef %296, ptr noundef nonnull align 8 dereferenceable(144) %301, i32 noundef %303, ptr noundef nonnull align 8 dereferenceable(24) %308)
          to label %311 unwind label %287

311:                                              ; preds = %309
  store ptr %310, ptr %20, align 8, !tbaa !5
  br label %330

312:                                              ; preds = %291
  %313 = load ptr, ptr %9, align 8, !tbaa !5
  %314 = load i32, ptr %11, align 4, !tbaa !35
  %315 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPP11TIntermNodeSt6vectorIS2_N7glslang14pool_allocatorIS2_EEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %23) #6
  %316 = load ptr, ptr %315, align 8, !tbaa !5
  %317 = load ptr, ptr %316, align 8, !tbaa !9
  %318 = getelementptr inbounds ptr, ptr %317, i64 3
  %319 = load ptr, ptr %318, align 8
  %320 = invoke noundef ptr %319(ptr noundef nonnull align 8 dereferenceable(32) %316)
          to label %321 unwind label %287

321:                                              ; preds = %312
  %322 = load ptr, ptr %8, align 8, !tbaa !5
  %323 = load ptr, ptr %322, align 8, !tbaa !9
  %324 = getelementptr inbounds ptr, ptr %323, i64 0
  %325 = load ptr, ptr %324, align 8
  %326 = invoke noundef nonnull align 8 dereferenceable(24) ptr %325(ptr noundef nonnull align 8 dereferenceable(32) %322)
          to label %327 unwind label %287

327:                                              ; preds = %321
  %328 = invoke noundef ptr @_ZN7glslang13TParseContext16constructBuiltInERKNS_5TTypeENS_9TOperatorEPNS_12TIntermTypedERKNS_10TSourceLocEb(ptr noundef nonnull align 8 dereferenceable(24912) %28, ptr noundef nonnull align 8 dereferenceable(144) %313, i32 noundef %314, ptr noundef %320, ptr noundef nonnull align 8 dereferenceable(24) %326, i1 noundef zeroext true)
          to label %329 unwind label %287

329:                                              ; preds = %327
  store ptr %328, ptr %20, align 8, !tbaa !5
  br label %330

330:                                              ; preds = %329, %311
  br label %331

331:                                              ; preds = %330, %286
  %332 = load ptr, ptr %20, align 8, !tbaa !5
  %333 = icmp ne ptr %332, null
  br i1 %333, label %334, label %337

334:                                              ; preds = %331
  %335 = load ptr, ptr %20, align 8, !tbaa !5
  %336 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPP11TIntermNodeSt6vectorIS2_N7glslang14pool_allocatorIS2_EEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %23) #6
  store ptr %335, ptr %336, align 8, !tbaa !5
  br label %338

337:                                              ; preds = %331
  store ptr null, ptr %5, align 8
  store i32 1, ptr %12, align 4
  br label %344

338:                                              ; preds = %334
  br label %339

339:                                              ; preds = %338
  %340 = call ptr @_ZN9__gnu_cxx17__normal_iteratorIPP11TIntermNodeSt6vectorIS2_N7glslang14pool_allocatorIS2_EEEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %23, i32 noundef 0) #6
  %341 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %25, i32 0, i32 0
  store ptr %340, ptr %341, align 8
  %342 = load i32, ptr %22, align 4, !tbaa !44
  %343 = add nsw i32 %342, 1
  store i32 %343, ptr %22, align 4, !tbaa !44
  br label %257, !llvm.loop !45

344:                                              ; preds = %337, %262
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #6
  %345 = load i32, ptr %12, align 4
  switch i32 %345, label %401 [
    i32 2, label %346
  ]

346:                                              ; preds = %344
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #6
  %347 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %28, i32 0, i32 7
  %348 = load ptr, ptr %347, align 8, !tbaa !11
  %349 = load ptr, ptr %10, align 8, !tbaa !5
  %350 = load i32, ptr %11, align 4, !tbaa !35
  %351 = load ptr, ptr %9, align 8, !tbaa !5
  %352 = load ptr, ptr %7, align 8, !tbaa !5
  %353 = invoke noundef ptr @_ZN7glslang13TIntermediate20setAggregateOperatorEP11TIntermNodeNS_9TOperatorERKNS_5TTypeERKNS_10TSourceLocE(ptr noundef nonnull align 8 dereferenceable(1784) %348, ptr noundef %349, i32 noundef %350, ptr noundef nonnull align 8 dereferenceable(144) %351, ptr noundef nonnull align 8 dereferenceable(24) %352)
          to label %354 unwind label %390

354:                                              ; preds = %346
  store ptr %353, ptr %26, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #6
  %355 = load ptr, ptr %26, align 8, !tbaa !5
  %356 = load ptr, ptr %355, align 8, !tbaa !9
  %357 = getelementptr inbounds ptr, ptr %356, i64 6
  %358 = load ptr, ptr %357, align 8
  %359 = invoke noundef ptr %358(ptr noundef nonnull align 8 dereferenceable(32) %355)
          to label %360 unwind label %394

360:                                              ; preds = %354
  store ptr %359, ptr %27, align 8, !tbaa !5
  %361 = load ptr, ptr %27, align 8, !tbaa !5
  %362 = icmp ne ptr %361, null
  br i1 %362, label %363, label %398

363:                                              ; preds = %360
  %364 = load ptr, ptr %27, align 8, !tbaa !5
  %365 = load ptr, ptr %364, align 8, !tbaa !9
  %366 = getelementptr inbounds ptr, ptr %365, i64 43
  %367 = load ptr, ptr %366, align 8
  %368 = invoke noundef zeroext i1 %367(ptr noundef nonnull align 8 dereferenceable(176) %364)
          to label %369 unwind label %394

369:                                              ; preds = %363
  br i1 %368, label %384, label %370

370:                                              ; preds = %369
  %371 = load ptr, ptr %27, align 8, !tbaa !5
  %372 = load ptr, ptr %371, align 8, !tbaa !9
  %373 = getelementptr inbounds ptr, ptr %372, i64 42
  %374 = load ptr, ptr %373, align 8
  %375 = invoke noundef zeroext i1 %374(ptr noundef nonnull align 8 dereferenceable(176) %371)
          to label %376 unwind label %394

376:                                              ; preds = %370
  br i1 %375, label %384, label %377

377:                                              ; preds = %376
  %378 = load ptr, ptr %27, align 8, !tbaa !5
  %379 = load ptr, ptr %378, align 8, !tbaa !9
  %380 = getelementptr inbounds ptr, ptr %379, i64 41
  %381 = load ptr, ptr %380, align 8
  %382 = invoke noundef zeroext i1 %381(ptr noundef nonnull align 8 dereferenceable(176) %378)
          to label %383 unwind label %394

383:                                              ; preds = %377
  br i1 %382, label %384, label %398

384:                                              ; preds = %383, %376, %369
  %385 = load ptr, ptr %27, align 8, !tbaa !5
  %386 = load ptr, ptr %385, align 8, !tbaa !9
  %387 = getelementptr inbounds ptr, ptr %386, i64 48
  %388 = load ptr, ptr %387, align 8
  invoke void %388(ptr noundef nonnull align 8 dereferenceable(352) %385)
          to label %389 unwind label %394

389:                                              ; preds = %384
  br label %398

390:                                              ; preds = %346
  %391 = landingpad { ptr, i32 }
          cleanup
  %392 = extractvalue { ptr, i32 } %391, 0
  store ptr %392, ptr %16, align 8
  %393 = extractvalue { ptr, i32 } %391, 1
  store i32 %393, ptr %17, align 4
  br label %400

394:                                              ; preds = %384, %377, %370, %363, %354
  %395 = landingpad { ptr, i32 }
          cleanup
  %396 = extractvalue { ptr, i32 } %395, 0
  store ptr %396, ptr %16, align 8
  %397 = extractvalue { ptr, i32 } %395, 1
  store i32 %397, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #6
  br label %400

398:                                              ; preds = %389, %383, %360
  %399 = load ptr, ptr %26, align 8, !tbaa !5
  store ptr %399, ptr %5, align 8
  store i32 1, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #6
  br label %401

400:                                              ; preds = %394, %390
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #6
  br label %402

401:                                              ; preds = %398, %344
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #6
  br label %404

402:                                              ; preds = %400, %287
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #6
  br label %403

403:                                              ; preds = %402, %263
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #6
  br label %405

404:                                              ; preds = %401, %245
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #6
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %15) #6
  call void @llvm.lifetime.end.p0(i64 144, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #6
  br label %408

405:                                              ; preds = %403, %186
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #6
  br label %406

406:                                              ; preds = %405, %159
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #6
  br label %407

407:                                              ; preds = %406, %146, %134
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %15) #6
  call void @llvm.lifetime.end.p0(i64 144, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #6
  br label %411

408:                                              ; preds = %404, %107
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #6
  br label %409

409:                                              ; preds = %408, %38
  %410 = load ptr, ptr %5, align 8
  ret ptr %410

411:                                              ; preds = %407
  %412 = load ptr, ptr %16, align 8
  %413 = load i32, ptr %17, align 4
  %414 = insertvalue { ptr, i32 } poison, ptr %412, 0
  %415 = insertvalue { ptr, i32 } %414, i32 %413, 1
  resume { ptr, i32 } %415
}

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK7glslang15TIntermOperator5getOpEv(ptr noundef nonnull align 8 dereferenceable(184)) #3 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 i32 @_ZNK7glslang13TIntermediate22mapTypeToConstructorOpERKNS_5TTypeE(ptr noundef nonnull align 8 dereferenceable(1784), ptr noundef nonnull align 8 dereferenceable(144)) #4

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

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

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

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

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

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

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

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

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

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

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nocallback nofree 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 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { 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, !6, i64 56}
!12 = !{!"_ZTSN7glslang14TParseVersionsE", !13, i64 8, !14, i64 12, !6, i64 16, !15, i64 24, !16, i64 28, !17, i64 32, !6, i64 56, !18, i64 64, !29, i64 120, !34, i64 176, !15, i64 180, !6, i64 184}
!13 = !{!"bool", !7, i64 0}
!14 = !{!"_ZTS8EProfile", !7, i64 0}
!15 = !{!"int", !7, i64 0}
!16 = !{!"_ZTS11EShLanguage", !7, i64 0}
!17 = !{!"_ZTSN7glslang10SpvVersionE", !15, i64 0, !15, i64 4, !15, i64 8, !15, i64 12, !13, i64 16}
!18 = !{!"_ZTSN7glslang4TMapINSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEENS_18TExtensionBehaviorESt4lessIS7_EEE", !19, i64 0}
!19 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEENS4_18TExtensionBehaviorESt4lessIS7_ENS5_ISt4pairIKS7_S8_EEEE", !20, i64 0}
!20 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_NS4_18TExtensionBehaviorEESt10_Select1stISB_ESt4lessIS7_ENS5_ISB_EEE", !21, i64 0}
!21 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_NS4_18TExtensionBehaviorEESt10_Select1stISB_ESt4lessIS7_ENS5_ISB_EEE13_Rb_tree_implISF_Lb1EEE", !22, i64 0, !23, i64 8, !25, i64 16}
!22 = !{!"_ZTSN7glslang14pool_allocatorISt13_Rb_tree_nodeISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_IcEEEENS_18TExtensionBehaviorEEEEE", !6, i64 0}
!23 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEEE", !24, i64 0}
!24 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEE"}
!25 = !{!"_ZTSSt15_Rb_tree_header", !26, i64 0, !28, i64 32}
!26 = !{!"_ZTSSt18_Rb_tree_node_base", !27, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!27 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!28 = !{!"long", !7, i64 0}
!29 = !{!"_ZTSN7glslang4TMapINSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEEjSt4lessIS7_EEE", !30, i64 0}
!30 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEjSt4lessIS7_ENS5_ISt4pairIKS7_jEEEE", !31, i64 0}
!31 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_jESt10_Select1stISA_ESt4lessIS7_ENS5_ISA_EEE", !32, i64 0}
!32 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_jESt10_Select1stISA_ESt4lessIS7_ENS5_ISA_EEE13_Rb_tree_implISE_Lb1EEE", !33, i64 0, !23, i64 8, !25, i64 16}
!33 = !{!"_ZTSN7glslang14pool_allocatorISt13_Rb_tree_nodeISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_IcEEEEjEEEE", !6, i64 0}
!34 = !{!"_ZTS11EShMessages", !7, i64 0}
!35 = !{!36, !36, i64 0}
!36 = !{!"_ZTSN7glslang9TOperatorE", !7, i64 0}
!37 = !{i64 0, i64 8, !5}
!38 = !{!13, !13, i64 0}
!39 = !{i8 0, i8 2}
!40 = !{}
!41 = !{!42, !6, i64 0}
!42 = !{!"_ZTSN7glslang8TTypeLocE", !6, i64 0, !43, i64 8}
!43 = !{!"_ZTSN7glslang10TSourceLocE", !6, i64 0, !15, i64 8, !15, i64 12, !15, i64 16}
!44 = !{!15, !15, i64 0}
!45 = distinct !{!45, !46}
!46 = !{!"llvm.loop.mustprogress"}


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

@.str.327 = external hidden unnamed_addr constant [12 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef ptr @_ZN7glslang13TParseContext14addConstructorERKNS_10TSourceLocEP11TIntermNodeRKNS_5TTypeE(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef %2, ptr noundef nonnull align 8 dereferenceable(144) %3) local_unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca %"class.__gnu_cxx::__normal_iterator.228", align 8
  %6 = alloca %"class.glslang::TType", align 8
  %7 = alloca %"class.glslang::TType", align 8
  %8 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %9 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %10 = icmp eq ptr %2, null
  br i1 %10, label %255, label %11

11:                                               ; preds = %4
  %12 = load ptr, ptr %2, align 8, !tbaa !5
  %13 = getelementptr inbounds i8, ptr %12, i64 24
  %14 = load ptr, ptr %13, align 8
  %15 = tail call noundef ptr %14(ptr noundef nonnull align 8 dereferenceable(32) %2)
  %16 = icmp eq ptr %15, null
  br i1 %16, label %255, label %17

17:                                               ; preds = %11
  %18 = load ptr, ptr %2, align 8, !tbaa !5
  %19 = getelementptr inbounds i8, ptr %18, i64 24
  %20 = load ptr, ptr %19, align 8
  %21 = tail call noundef ptr %20(ptr noundef nonnull align 8 dereferenceable(32) %2)
  %22 = load ptr, ptr %0, align 8, !tbaa !5
  %23 = getelementptr inbounds i8, ptr %22, i64 512
  %24 = load ptr, ptr %23, align 8
  tail call void %24(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.327, ptr noundef %21)
  %25 = load ptr, ptr %2, align 8, !tbaa !5
  %26 = getelementptr inbounds i8, ptr %25, i64 48
  %27 = load ptr, ptr %26, align 8
  %28 = tail call noundef ptr %27(ptr noundef nonnull align 8 dereferenceable(32) %2)
  %29 = getelementptr inbounds i8, ptr %0, i64 56
  %30 = load ptr, ptr %29, align 8, !tbaa !8
  %31 = tail call noundef i32 @_ZNK7glslang13TIntermediate22mapTypeToConstructorOpERKNS_5TTypeE(ptr noundef nonnull align 8 dereferenceable(1784) %30, ptr noundef nonnull align 8 dereferenceable(144) %3)
  %32 = icmp eq i32 %31, 569
  br i1 %32, label %33, label %78

33:                                               ; preds = %17
  %34 = load ptr, ptr %28, align 8, !tbaa !5
  %35 = getelementptr inbounds i8, ptr %34, i64 400
  %36 = load ptr, ptr %35, align 8
  %37 = tail call noundef nonnull align 8 dereferenceable(32) ptr %36(ptr noundef nonnull align 8 dereferenceable(352) %28)
  %38 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %37, i64 noundef 1) #5
  %39 = load ptr, ptr %38, align 8, !tbaa !34
  %40 = load ptr, ptr %39, align 8, !tbaa !5
  %41 = getelementptr inbounds i8, ptr %40, i64 24
  %42 = load ptr, ptr %41, align 8
  %43 = tail call noundef ptr %42(ptr noundef nonnull align 8 dereferenceable(32) %39)
  %44 = load ptr, ptr %43, align 8, !tbaa !5
  %45 = getelementptr inbounds i8, ptr %44, i64 240
  %46 = load ptr, ptr %45, align 8
  %47 = tail call noundef nonnull align 8 dereferenceable(144) ptr %46(ptr noundef nonnull align 8 dereferenceable(176) %43)
  %48 = load ptr, ptr %47, align 8, !tbaa !5
  %49 = getelementptr inbounds i8, ptr %48, i64 64
  %50 = load ptr, ptr %49, align 8
  %51 = tail call noundef nonnull align 4 dereferenceable(4) ptr %50(ptr noundef nonnull align 8 dereferenceable(144) %47)
  %52 = load i32, ptr %51, align 4
  %53 = and i32 %52, 131072
  %.not104 = icmp eq i32 %53, 0
  br i1 %.not104, label %75, label %54

54:                                               ; preds = %33
  %55 = load ptr, ptr %28, align 8, !tbaa !5
  %56 = getelementptr inbounds i8, ptr %55, i64 400
  %57 = load ptr, ptr %56, align 8
  %58 = tail call noundef nonnull align 8 dereferenceable(32) ptr %57(ptr noundef nonnull align 8 dereferenceable(352) %28)
  %59 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %58, i64 noundef 0) #5
  %60 = load ptr, ptr %59, align 8, !tbaa !34
  %61 = load ptr, ptr %60, align 8, !tbaa !5
  %62 = getelementptr inbounds i8, ptr %61, i64 24
  %63 = load ptr, ptr %62, align 8
  %64 = tail call noundef ptr %63(ptr noundef nonnull align 8 dereferenceable(32) %60)
  %65 = load ptr, ptr %64, align 8, !tbaa !5
  %66 = getelementptr inbounds i8, ptr %65, i64 248
  %67 = load ptr, ptr %66, align 8
  %68 = tail call noundef nonnull align 8 dereferenceable(144) ptr %67(ptr noundef nonnull align 8 dereferenceable(176) %64)
  %69 = load ptr, ptr %68, align 8, !tbaa !5
  %70 = getelementptr inbounds i8, ptr %69, i64 72
  %71 = load ptr, ptr %70, align 8
  %72 = tail call noundef nonnull align 4 dereferenceable(4) ptr %71(ptr noundef nonnull align 8 dereferenceable(144) %68)
  %73 = load i32, ptr %72, align 4
  %74 = or i32 %73, 131072
  store i32 %74, ptr %72, align 4
  br label %75

75:                                               ; preds = %54, %33
  %76 = load ptr, ptr %29, align 8, !tbaa !8
  %77 = tail call noundef ptr @_ZN7glslang13TIntermediate20setAggregateOperatorEP11TIntermNodeNS_9TOperatorERKNS_5TTypeERKNS_10TSourceLocE(ptr noundef nonnull align 8 dereferenceable(1784) %76, ptr noundef nonnull %28, i32 noundef 569, ptr noundef nonnull align 8 dereferenceable(144) %3, ptr noundef nonnull align 8 dereferenceable(24) %1)
  br label %255

78:                                               ; preds = %17
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #5
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKN7glslang8TTypeLocESt6vectorIS2_NS1_14pool_allocatorIS2_EEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %5) #5
  %79 = icmp eq i32 %31, 568
  br i1 %79, label %80, label %83

80:                                               ; preds = %78
  %81 = call noundef ptr @_ZNK7glslang5TType9getStructEv(ptr noundef nonnull align 8 dereferenceable(144) %3)
  %82 = call ptr @_ZNKSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(32) %81) #5
  store ptr %82, ptr %5, align 8, !tbaa !34
  br label %83

83:                                               ; preds = %80, %78
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %6) #5
  call void @_ZN7glslang5TTypeC2ENS_10TBasicTypeENS_17TStorageQualifierEiiib(ptr noundef nonnull align 8 dereferenceable(144) %6, i32 noundef 0, i32 noundef 0, i32 noundef 1, i32 noundef 0, i32 noundef 0, i1 noundef zeroext false)
  %84 = load ptr, ptr %3, align 8, !tbaa !5
  %85 = getelementptr inbounds i8, ptr %84, i64 232
  %86 = load ptr, ptr %85, align 8
  %87 = invoke noundef zeroext i1 %86(ptr noundef nonnull align 8 dereferenceable(144) %3)
          to label %88 unwind label %92

88:                                               ; preds = %83
  br i1 %87, label %89, label %99

89:                                               ; preds = %88
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %7) #5
  invoke void @_ZN7glslang5TTypeC2ERKS0_ib(ptr noundef nonnull align 8 dereferenceable(144) %7, ptr noundef nonnull align 8 dereferenceable(144) %3, i32 noundef 0, i1 noundef zeroext false)
          to label %90 unwind label %94

90:                                               ; preds = %89
  invoke void @_ZN7glslang5TType11shallowCopyERKS0_(ptr noundef nonnull align 8 dereferenceable(144) %6, ptr noundef nonnull align 8 dereferenceable(144) %7)
          to label %91 unwind label %96

91:                                               ; preds = %90
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %7) #5
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %7) #5
  br label %100

92:                                               ; preds = %99, %83
  %93 = landingpad { ptr, i32 }
          cleanup
  br label %254

94:                                               ; preds = %89
  %95 = landingpad { ptr, i32 }
          cleanup
  br label %98

96:                                               ; preds = %90
  %97 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %7) #5
  br label %98

98:                                               ; preds = %96, %94
  %.pn = phi { ptr, i32 } [ %97, %96 ], [ %95, %94 ]
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %7) #5
  br label %254

99:                                               ; preds = %88
  invoke void @_ZN7glslang5TType11shallowCopyERKS0_(ptr noundef nonnull align 8 dereferenceable(144) %6, ptr noundef nonnull align 8 dereferenceable(144) %3)
          to label %100 unwind label %92

100:                                              ; preds = %99, %91
  %.not = icmp eq ptr %28, null
  br i1 %.not, label %.critedge, label %101

101:                                              ; preds = %100
  %102 = call noundef i32 @_ZNK7glslang15TIntermOperator5getOpEv(ptr noundef nonnull align 8 dereferenceable(184) %28)
  %.not93.not = icmp eq i32 %102, 0
  br i1 %.not93.not, label %145, label %.critedge

.critedge:                                        ; preds = %100, %101
  %103 = load ptr, ptr %3, align 8, !tbaa !5
  %104 = getelementptr inbounds i8, ptr %103, i64 232
  %105 = load ptr, ptr %104, align 8
  %106 = invoke noundef zeroext i1 %105(ptr noundef nonnull align 8 dereferenceable(144) %3)
          to label %107 unwind label %112

107:                                              ; preds = %.critedge
  br i1 %106, label %108, label %114

108:                                              ; preds = %107
  %109 = load ptr, ptr %2, align 8, !tbaa !5
  %110 = load ptr, ptr %109, align 8
  %111 = invoke noundef nonnull align 8 dereferenceable(24) ptr %110(ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %.invoke unwind label %112

112:                                              ; preds = %.invoke, %142, %136, %133, %129, %124, %115, %108, %.critedge
  %113 = landingpad { ptr, i32 }
          cleanup
  br label %254

114:                                              ; preds = %107
  br i1 %79, label %115, label %124

115:                                              ; preds = %114
  %116 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN7glslang8TTypeLocESt6vectorIS2_NS1_14pool_allocatorIS2_EEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #5
  %117 = load ptr, ptr %116, align 8, !tbaa !35
  %118 = load ptr, ptr %2, align 8, !tbaa !5
  %119 = load ptr, ptr %118, align 8
  %120 = invoke noundef nonnull align 8 dereferenceable(24) ptr %119(ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %.invoke unwind label %112

.invoke:                                          ; preds = %108, %115
  %121 = phi ptr [ %117, %115 ], [ %6, %108 ]
  %122 = phi ptr [ %120, %115 ], [ %111, %108 ]
  %123 = invoke noundef ptr @_ZN7glslang13TParseContext18constructAggregateEP11TIntermNodeRKNS_5TTypeEiRKNS_10TSourceLocE(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull %2, ptr noundef nonnull align 8 dereferenceable(144) %121, i32 noundef 1, ptr noundef nonnull align 8 dereferenceable(24) %122)
          to label %135 unwind label %112

124:                                              ; preds = %114
  %125 = load ptr, ptr %2, align 8, !tbaa !5
  %126 = getelementptr inbounds i8, ptr %125, i64 24
  %127 = load ptr, ptr %126, align 8
  %128 = invoke noundef ptr %127(ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %129 unwind label %112

129:                                              ; preds = %124
  %130 = load ptr, ptr %2, align 8, !tbaa !5
  %131 = load ptr, ptr %130, align 8
  %132 = invoke noundef nonnull align 8 dereferenceable(24) ptr %131(ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %133 unwind label %112

133:                                              ; preds = %129
  %134 = invoke noundef ptr @_ZN7glslang13TParseContext16constructBuiltInERKNS_5TTypeENS_9TOperatorEPNS_12TIntermTypedERKNS_10TSourceLocEb(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(144) %3, i32 noundef %31, ptr noundef %128, ptr noundef nonnull align 8 dereferenceable(24) %132, i1 noundef zeroext false)
          to label %135 unwind label %112

135:                                              ; preds = %.invoke, %133
  %.084 = phi ptr [ %134, %133 ], [ %123, %.invoke ]
  %.not100 = icmp eq ptr %.084, null
  br i1 %.not100, label %253, label %136

136:                                              ; preds = %135
  %137 = load ptr, ptr %3, align 8, !tbaa !5
  %138 = getelementptr inbounds i8, ptr %137, i64 232
  %139 = load ptr, ptr %138, align 8
  %140 = invoke noundef zeroext i1 %139(ptr noundef nonnull align 8 dereferenceable(144) %3)
          to label %141 unwind label %112

141:                                              ; preds = %136
  %or.cond = or i1 %79, %140
  br i1 %or.cond, label %142, label %253

142:                                              ; preds = %141
  %143 = load ptr, ptr %29, align 8, !tbaa !8
  %144 = invoke noundef ptr @_ZN7glslang13TIntermediate20setAggregateOperatorEP11TIntermNodeNS_9TOperatorERKNS_5TTypeERKNS_10TSourceLocE(ptr noundef nonnull align 8 dereferenceable(1784) %143, ptr noundef nonnull %.084, i32 noundef 568, ptr noundef nonnull align 8 dereferenceable(144) %3, ptr noundef nonnull align 8 dereferenceable(24) %1)
          to label %253 unwind label %112

145:                                              ; preds = %101
  %146 = load ptr, ptr %28, align 8, !tbaa !5
  %147 = getelementptr inbounds i8, ptr %146, i64 400
  %148 = load ptr, ptr %147, align 8
  %149 = invoke noundef nonnull align 8 dereferenceable(32) ptr %148(ptr noundef nonnull align 8 dereferenceable(352) %28)
          to label %150 unwind label %183

150:                                              ; preds = %145
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #5
  %151 = call ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(32) %149) #5
  store ptr %151, ptr %8, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #5
  %152 = call ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(32) %149) #5
  store ptr %152, ptr %9, align 8
  %153 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPP11TIntermNodeSt6vectorIS2_N7glslang14pool_allocatorIS2_EEEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %9) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #5
  br i1 %153, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %150
  br i1 %79, label %.lr.ph.split.us, label %.lr.ph.split

.lr.ph.split.us:                                  ; preds = %.lr.ph, %177
  %indvars.iv = phi i64 [ %indvars.iv.next, %177 ], [ 0, %.lr.ph ]
  %154 = load ptr, ptr %3, align 8, !tbaa !5
  %155 = getelementptr inbounds i8, ptr %154, i64 232
  %156 = load ptr, ptr %155, align 8
  %157 = invoke noundef zeroext i1 %156(ptr noundef nonnull align 8 dereferenceable(144) %3)
          to label %158 unwind label %.split.us

158:                                              ; preds = %.lr.ph.split.us
  %159 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPP11TIntermNodeSt6vectorIS2_N7glslang14pool_allocatorIS2_EEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %8) #5
  %160 = load ptr, ptr %159, align 8, !tbaa !34
  br i1 %157, label %167, label %161

161:                                              ; preds = %158
  %162 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN7glslang8TTypeLocESt6vectorIS2_NS1_14pool_allocatorIS2_EEEEixEl(ptr noundef nonnull align 8 dereferenceable(8) %5, i64 noundef %indvars.iv) #5
  %163 = load ptr, ptr %162, align 8, !tbaa !35
  %164 = load ptr, ptr %2, align 8, !tbaa !5
  %165 = load ptr, ptr %164, align 8
  %166 = invoke noundef nonnull align 8 dereferenceable(24) ptr %165(ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %.invoke115 unwind label %.split.us

167:                                              ; preds = %158
  %168 = load ptr, ptr %2, align 8, !tbaa !5
  %169 = load ptr, ptr %168, align 8
  %170 = invoke noundef nonnull align 8 dereferenceable(24) ptr %169(ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %.invoke115 unwind label %.split.us

.invoke115:                                       ; preds = %167, %161
  %171 = phi ptr [ %163, %161 ], [ %6, %167 ]
  %172 = phi ptr [ %166, %161 ], [ %170, %167 ]
  %173 = trunc i64 %indvars.iv to i32
  %174 = add i32 %173, 1
  %175 = invoke noundef ptr @_ZN7glslang13TParseContext18constructAggregateEP11TIntermNodeRKNS_5TTypeEiRKNS_10TSourceLocE(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef %160, ptr noundef nonnull align 8 dereferenceable(144) %171, i32 noundef %174, ptr noundef nonnull align 8 dereferenceable(24) %172)
          to label %176 unwind label %.split.us

176:                                              ; preds = %.invoke115
  %.not94.us = icmp eq ptr %175, null
  br i1 %.not94.us, label %.split109.us, label %177

177:                                              ; preds = %176
  %178 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPP11TIntermNodeSt6vectorIS2_N7glslang14pool_allocatorIS2_EEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %8) #5
  store ptr %175, ptr %178, align 8, !tbaa !34
  %179 = call ptr @_ZN9__gnu_cxx17__normal_iteratorIPP11TIntermNodeSt6vectorIS2_N7glslang14pool_allocatorIS2_EEEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %8, i32 noundef 0) #5
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #5
  %180 = call ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(32) %149) #5
  store ptr %180, ptr %9, align 8
  %181 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPP11TIntermNodeSt6vectorIS2_N7glslang14pool_allocatorIS2_EEEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %9) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #5
  br i1 %181, label %.lr.ph.split.us, label %._crit_edge, !llvm.loop !38

.split.us:                                        ; preds = %.invoke115, %167, %161, %.lr.ph.split.us
  %182 = landingpad { ptr, i32 }
          cleanup
  br label %200

183:                                              ; preds = %145
  %184 = landingpad { ptr, i32 }
          cleanup
  br label %254

.lr.ph.split:                                     ; preds = %.lr.ph, %213
  %.077107 = phi i32 [ %216, %213 ], [ 0, %.lr.ph ]
  %185 = load ptr, ptr %3, align 8, !tbaa !5
  %186 = getelementptr inbounds i8, ptr %185, i64 232
  %187 = load ptr, ptr %186, align 8
  %188 = invoke noundef zeroext i1 %187(ptr noundef nonnull align 8 dereferenceable(144) %3)
          to label %189 unwind label %.split

189:                                              ; preds = %.lr.ph.split
  %190 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPP11TIntermNodeSt6vectorIS2_N7glslang14pool_allocatorIS2_EEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %8) #5
  %191 = load ptr, ptr %190, align 8, !tbaa !34
  br i1 %188, label %192, label %201

192:                                              ; preds = %189
  %193 = load ptr, ptr %2, align 8, !tbaa !5
  %194 = load ptr, ptr %193, align 8
  %195 = invoke noundef nonnull align 8 dereferenceable(24) ptr %194(ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %196 unwind label %.split

196:                                              ; preds = %192
  %197 = add nuw nsw i32 %.077107, 1
  %198 = invoke noundef ptr @_ZN7glslang13TParseContext18constructAggregateEP11TIntermNodeRKNS_5TTypeEiRKNS_10TSourceLocE(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef %191, ptr noundef nonnull align 8 dereferenceable(144) %6, i32 noundef %197, ptr noundef nonnull align 8 dereferenceable(24) %195)
          to label %212 unwind label %.split

.split:                                           ; preds = %210, %206, %201, %196, %192, %.lr.ph.split
  %199 = landingpad { ptr, i32 }
          cleanup
  br label %200

200:                                              ; preds = %.split.us, %.split
  %.us-phi = phi { ptr, i32 } [ %199, %.split ], [ %182, %.split.us ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #5
  br label %254

201:                                              ; preds = %189
  %202 = load ptr, ptr %191, align 8, !tbaa !5
  %203 = getelementptr inbounds i8, ptr %202, i64 24
  %204 = load ptr, ptr %203, align 8
  %205 = invoke noundef ptr %204(ptr noundef nonnull align 8 dereferenceable(32) %191)
          to label %206 unwind label %.split

206:                                              ; preds = %201
  %207 = load ptr, ptr %2, align 8, !tbaa !5
  %208 = load ptr, ptr %207, align 8
  %209 = invoke noundef nonnull align 8 dereferenceable(24) ptr %208(ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %210 unwind label %.split

210:                                              ; preds = %206
  %211 = invoke noundef ptr @_ZN7glslang13TParseContext16constructBuiltInERKNS_5TTypeENS_9TOperatorEPNS_12TIntermTypedERKNS_10TSourceLocEb(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(144) %3, i32 noundef %31, ptr noundef %205, ptr noundef nonnull align 8 dereferenceable(24) %209, i1 noundef zeroext true)
          to label %212 unwind label %.split

212:                                              ; preds = %210, %196
  %.286 = phi ptr [ %198, %196 ], [ %211, %210 ]
  %.not94 = icmp eq ptr %.286, null
  br i1 %.not94, label %.split109.us, label %213

213:                                              ; preds = %212
  %214 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPP11TIntermNodeSt6vectorIS2_N7glslang14pool_allocatorIS2_EEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %8) #5
  store ptr %.286, ptr %214, align 8, !tbaa !34
  %215 = call ptr @_ZN9__gnu_cxx17__normal_iteratorIPP11TIntermNodeSt6vectorIS2_N7glslang14pool_allocatorIS2_EEEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %8, i32 noundef 0) #5
  %216 = add nuw nsw i32 %.077107, 1
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #5
  %217 = call ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(32) %149) #5
  store ptr %217, ptr %9, align 8
  %218 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPP11TIntermNodeSt6vectorIS2_N7glslang14pool_allocatorIS2_EEEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %9) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #5
  br i1 %218, label %.lr.ph.split, label %._crit_edge, !llvm.loop !38

.split109.us:                                     ; preds = %212, %176
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #5
  br label %253

._crit_edge:                                      ; preds = %213, %177, %150
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #5
  %219 = load ptr, ptr %29, align 8, !tbaa !8
  %220 = invoke noundef ptr @_ZN7glslang13TIntermediate20setAggregateOperatorEP11TIntermNodeNS_9TOperatorERKNS_5TTypeERKNS_10TSourceLocE(ptr noundef nonnull align 8 dereferenceable(1784) %219, ptr noundef nonnull %28, i32 noundef %31, ptr noundef nonnull align 8 dereferenceable(144) %3, ptr noundef nonnull align 8 dereferenceable(24) %1)
          to label %221 unwind label %249

221:                                              ; preds = %._crit_edge
  %222 = load ptr, ptr %220, align 8, !tbaa !5
  %223 = getelementptr inbounds i8, ptr %222, i64 48
  %224 = load ptr, ptr %223, align 8
  %225 = invoke noundef ptr %224(ptr noundef nonnull align 8 dereferenceable(32) %220)
          to label %226 unwind label %251

226:                                              ; preds = %221
  %.not95 = icmp eq ptr %225, null
  br i1 %.not95, label %253, label %227

227:                                              ; preds = %226
  %228 = load ptr, ptr %225, align 8, !tbaa !5
  %229 = getelementptr inbounds i8, ptr %228, i64 344
  %230 = load ptr, ptr %229, align 8
  %231 = invoke noundef zeroext i1 %230(ptr noundef nonnull align 8 dereferenceable(176) %225)
          to label %232 unwind label %251

232:                                              ; preds = %227
  br i1 %231, label %245, label %233

233:                                              ; preds = %232
  %234 = load ptr, ptr %225, align 8, !tbaa !5
  %235 = getelementptr inbounds i8, ptr %234, i64 336
  %236 = load ptr, ptr %235, align 8
  %237 = invoke noundef zeroext i1 %236(ptr noundef nonnull align 8 dereferenceable(176) %225)
          to label %238 unwind label %251

238:                                              ; preds = %233
  br i1 %237, label %245, label %239

239:                                              ; preds = %238
  %240 = load ptr, ptr %225, align 8, !tbaa !5
  %241 = getelementptr inbounds i8, ptr %240, i64 328
  %242 = load ptr, ptr %241, align 8
  %243 = invoke noundef zeroext i1 %242(ptr noundef nonnull align 8 dereferenceable(176) %225)
          to label %244 unwind label %251

244:                                              ; preds = %239
  br i1 %243, label %245, label %253

245:                                              ; preds = %244, %238, %232
  %246 = load ptr, ptr %225, align 8, !tbaa !5
  %247 = getelementptr inbounds i8, ptr %246, i64 384
  %248 = load ptr, ptr %247, align 8
  invoke void %248(ptr noundef nonnull align 8 dereferenceable(352) %225)
          to label %253 unwind label %251

249:                                              ; preds = %._crit_edge
  %250 = landingpad { ptr, i32 }
          cleanup
  br label %254

251:                                              ; preds = %245, %239, %233, %227, %221
  %252 = landingpad { ptr, i32 }
          cleanup
  br label %254

253:                                              ; preds = %.split109.us, %245, %244, %226, %135, %141, %142
  %.2 = phi ptr [ %.084, %141 ], [ null, %135 ], [ %144, %142 ], [ null, %.split109.us ], [ %220, %245 ], [ %220, %244 ], [ %220, %226 ]
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %6) #5
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %6) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #5
  br label %255

254:                                              ; preds = %112, %200, %251, %249, %183, %98, %92
  %.pn101.pn = phi { ptr, i32 } [ %.pn, %98 ], [ %93, %92 ], [ %113, %112 ], [ %184, %183 ], [ %.us-phi, %200 ], [ %252, %251 ], [ %250, %249 ]
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %6) #5
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %6) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #5
  resume { ptr, i32 } %.pn101.pn

255:                                              ; preds = %75, %253, %4, %11
  %.4 = phi ptr [ null, %11 ], [ null, %4 ], [ %77, %75 ], [ %.2, %253 ]
  ret ptr %.4
}

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

; Function Attrs: mustprogress 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 #2 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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