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

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

%"class.glslang::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::TParameter" = type { ptr, ptr, 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 }

@.str.178 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.179 = external hidden unnamed_addr constant [8 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

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

; 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 noundef zeroext i1 @_ZNK7glslang5TTypeneERKS0_(ptr noundef nonnull align 8 dereferenceable(144), ptr noundef nonnull align 8 dereferenceable(144)) #2 align 2

declare noundef ptr @_ZN7glslang13TIntermediate13growAggregateEP11TIntermNodeS2_RKNS_10TSourceLocE(ptr noundef nonnull align 8 dereferenceable(1784), ptr noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(24)) #1

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

; 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 zeroext i1 @_ZNK7glslang10TQualifier13isParamOutputEv(ptr noundef nonnull align 8 dereferenceable(72)) #3 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef ptr @_ZNK7glslang13TParseContext28addOutputArgumentConversionsERKNS_9TFunctionERNS_16TIntermAggregateE(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(328) %1, ptr noundef nonnull align 8 dereferenceable(352) %2) #2 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca i8, align 1
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca i32, align 4
  %16 = alloca %"class.glslang::TType", align 8
  %17 = alloca ptr, align 8
  %18 = alloca i32, align 4
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store ptr %2, ptr %7, align 8, !tbaa !5
  %23 = load ptr, ptr %5, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #4
  %24 = load ptr, ptr %7, align 8, !tbaa !5
  %25 = load ptr, ptr %24, align 8, !tbaa !9
  %26 = getelementptr inbounds ptr, ptr %25, i64 50
  %27 = load ptr, ptr %26, align 8
  %28 = call noundef nonnull align 8 dereferenceable(32) ptr %27(ptr noundef nonnull align 8 dereferenceable(352) %24)
  store ptr %28, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %9) #4
  store i8 0, ptr %9, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #4
  store i32 0, ptr %10, align 4, !tbaa !13
  br label %29

29:                                               ; preds = %77, %3
  %30 = load i32, ptr %10, align 4, !tbaa !13
  %31 = load ptr, ptr %6, align 8, !tbaa !5
  %32 = load ptr, ptr %31, align 8, !tbaa !9
  %33 = getelementptr inbounds ptr, ptr %32, i64 36
  %34 = load ptr, ptr %33, align 8
  %35 = call noundef i32 %34(ptr noundef nonnull align 8 dereferenceable(328) %31)
  %36 = icmp slt i32 %30, %35
  br i1 %36, label %38, label %37

37:                                               ; preds = %29
  store i32 2, ptr %11, align 4
  br label %80

38:                                               ; preds = %29
  %39 = load ptr, ptr %6, align 8, !tbaa !5
  %40 = load i32, ptr %10, align 4, !tbaa !13
  %41 = load ptr, ptr %39, align 8, !tbaa !9
  %42 = getelementptr inbounds ptr, ptr %41, i64 40
  %43 = load ptr, ptr %42, align 8
  %44 = call noundef nonnull align 8 dereferenceable(24) ptr %43(ptr noundef nonnull align 8 dereferenceable(328) %39, i32 noundef %40)
  %45 = getelementptr inbounds %"struct.glslang::TParameter", ptr %44, i32 0, i32 1
  %46 = load ptr, ptr %45, align 8, !tbaa !15
  %47 = load ptr, ptr %8, align 8, !tbaa !5
  %48 = load i32, ptr %10, align 4, !tbaa !13
  %49 = sext i32 %48 to i64
  %50 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %47, i64 noundef %49) #4
  %51 = load ptr, ptr %50, align 8, !tbaa !5
  %52 = load ptr, ptr %51, align 8, !tbaa !9
  %53 = getelementptr inbounds ptr, ptr %52, i64 3
  %54 = load ptr, ptr %53, align 8
  %55 = call noundef ptr %54(ptr noundef nonnull align 8 dereferenceable(32) %51)
  %56 = load ptr, ptr %55, align 8, !tbaa !9
  %57 = getelementptr inbounds ptr, ptr %56, i64 30
  %58 = load ptr, ptr %57, align 8
  %59 = call noundef nonnull align 8 dereferenceable(144) ptr %58(ptr noundef nonnull align 8 dereferenceable(176) %55)
  %60 = call noundef zeroext i1 @_ZNK7glslang5TTypeneERKS0_(ptr noundef nonnull align 8 dereferenceable(144) %46, ptr noundef nonnull align 8 dereferenceable(144) %59)
  br i1 %60, label %61, label %76

61:                                               ; preds = %38
  %62 = load ptr, ptr %6, align 8, !tbaa !5
  %63 = load i32, ptr %10, align 4, !tbaa !13
  %64 = load ptr, ptr %62, align 8, !tbaa !9
  %65 = getelementptr inbounds ptr, ptr %64, i64 40
  %66 = load ptr, ptr %65, align 8
  %67 = call noundef nonnull align 8 dereferenceable(24) ptr %66(ptr noundef nonnull align 8 dereferenceable(328) %62, i32 noundef %63)
  %68 = getelementptr inbounds %"struct.glslang::TParameter", ptr %67, i32 0, i32 1
  %69 = load ptr, ptr %68, align 8, !tbaa !15
  %70 = load ptr, ptr %69, align 8, !tbaa !9
  %71 = getelementptr inbounds ptr, ptr %70, i64 10
  %72 = load ptr, ptr %71, align 8
  %73 = call noundef nonnull align 8 dereferenceable(72) ptr %72(ptr noundef nonnull align 8 dereferenceable(144) %69)
  %74 = call noundef zeroext i1 @_ZNK7glslang10TQualifier13isParamOutputEv(ptr noundef nonnull align 8 dereferenceable(72) %73)
  br i1 %74, label %75, label %76

75:                                               ; preds = %61
  store i8 1, ptr %9, align 1, !tbaa !11
  store i32 2, ptr %11, align 4
  br label %80

76:                                               ; preds = %61, %38
  br label %77

77:                                               ; preds = %76
  %78 = load i32, ptr %10, align 4, !tbaa !13
  %79 = add nsw i32 %78, 1
  store i32 %79, ptr %10, align 4, !tbaa !13
  br label %29, !llvm.loop !17

80:                                               ; preds = %75, %37
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #4
  br label %81

81:                                               ; preds = %80
  %82 = load i8, ptr %9, align 1, !tbaa !11, !range !19, !noundef !20
  %83 = trunc i8 %82 to i1
  br i1 %83, label %86, label %84

84:                                               ; preds = %81
  %85 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %85, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %389

86:                                               ; preds = %81
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #4
  store ptr null, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #4
  store ptr null, ptr %13, align 8, !tbaa !5
  %87 = load ptr, ptr %7, align 8, !tbaa !5
  %88 = load ptr, ptr %87, align 8, !tbaa !9
  %89 = getelementptr inbounds ptr, ptr %88, i64 32
  %90 = load ptr, ptr %89, align 8
  %91 = call noundef i32 %90(ptr noundef nonnull align 8 dereferenceable(176) %87)
  %92 = icmp ne i32 %91, 0
  br i1 %92, label %93, label %119

93:                                               ; preds = %86
  %94 = load ptr, ptr %7, align 8, !tbaa !5
  %95 = load ptr, ptr %94, align 8, !tbaa !9
  %96 = getelementptr inbounds ptr, ptr %95, i64 30
  %97 = load ptr, ptr %96, align 8
  %98 = call noundef nonnull align 8 dereferenceable(144) ptr %97(ptr noundef nonnull align 8 dereferenceable(176) %94)
  %99 = call noundef ptr @_ZNK7glslang13TParseContext20makeInternalVariableEPKcRKNS_5TTypeE(ptr noundef nonnull align 8 dereferenceable(24912) %23, ptr noundef @.str.178, ptr noundef nonnull align 8 dereferenceable(144) %98)
  store ptr %99, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #4
  %100 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %23, i32 0, i32 7
  %101 = load ptr, ptr %100, align 8, !tbaa !21
  %102 = load ptr, ptr %13, align 8, !tbaa !5
  %103 = load ptr, ptr %7, align 8, !tbaa !5
  %104 = load ptr, ptr %103, align 8, !tbaa !9
  %105 = getelementptr inbounds ptr, ptr %104, i64 0
  %106 = load ptr, ptr %105, align 8
  %107 = call noundef nonnull align 8 dereferenceable(24) ptr %106(ptr noundef nonnull align 8 dereferenceable(32) %103)
  %108 = call noundef ptr @_ZN7glslang13TIntermediate9addSymbolERKNS_9TVariableERKNS_10TSourceLocE(ptr noundef nonnull align 8 dereferenceable(1784) %101, ptr noundef nonnull align 8 dereferenceable(228) %102, ptr noundef nonnull align 8 dereferenceable(24) %107)
  store ptr %108, ptr %14, align 8, !tbaa !5
  %109 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %23, i32 0, i32 7
  %110 = load ptr, ptr %109, align 8, !tbaa !21
  %111 = load ptr, ptr %14, align 8, !tbaa !5
  %112 = load ptr, ptr %7, align 8, !tbaa !5
  %113 = load ptr, ptr %7, align 8, !tbaa !5
  %114 = load ptr, ptr %113, align 8, !tbaa !9
  %115 = getelementptr inbounds ptr, ptr %114, i64 0
  %116 = load ptr, ptr %115, align 8
  %117 = call noundef nonnull align 8 dereferenceable(24) ptr %116(ptr noundef nonnull align 8 dereferenceable(32) %113)
  %118 = call noundef ptr @_ZN7glslang13TIntermediate9addAssignENS_9TOperatorEPNS_12TIntermTypedES3_RKNS_10TSourceLocE(ptr noundef nonnull align 8 dereferenceable(1784) %110, i32 noundef 575, ptr noundef %111, ptr noundef %112, ptr noundef nonnull align 8 dereferenceable(24) %117)
  store ptr %118, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #4
  br label %121

119:                                              ; preds = %86
  %120 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %120, ptr %12, align 8, !tbaa !5
  br label %121

121:                                              ; preds = %119, %93
  %122 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %23, i32 0, i32 7
  %123 = load ptr, ptr %122, align 8, !tbaa !21
  %124 = load ptr, ptr %12, align 8, !tbaa !5
  %125 = call noundef ptr @_ZN7glslang13TIntermediate13makeAggregateEP11TIntermNode(ptr noundef nonnull align 8 dereferenceable(1784) %123, ptr noundef %124)
  store ptr %125, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #4
  store i32 0, ptr %15, align 4, !tbaa !13
  br label %126

126:                                              ; preds = %347, %121
  %127 = load i32, ptr %15, align 4, !tbaa !13
  %128 = load ptr, ptr %6, align 8, !tbaa !5
  %129 = load ptr, ptr %128, align 8, !tbaa !9
  %130 = getelementptr inbounds ptr, ptr %129, i64 36
  %131 = load ptr, ptr %130, align 8
  %132 = call noundef i32 %131(ptr noundef nonnull align 8 dereferenceable(328) %128)
  %133 = icmp slt i32 %127, %132
  br i1 %133, label %135, label %134

134:                                              ; preds = %126
  store i32 5, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #4
  br label %350

135:                                              ; preds = %126
  %136 = load ptr, ptr %6, align 8, !tbaa !5
  %137 = load i32, ptr %15, align 4, !tbaa !13
  %138 = load ptr, ptr %136, align 8, !tbaa !9
  %139 = getelementptr inbounds ptr, ptr %138, i64 40
  %140 = load ptr, ptr %139, align 8
  %141 = call noundef nonnull align 8 dereferenceable(24) ptr %140(ptr noundef nonnull align 8 dereferenceable(328) %136, i32 noundef %137)
  %142 = getelementptr inbounds %"struct.glslang::TParameter", ptr %141, i32 0, i32 1
  %143 = load ptr, ptr %142, align 8, !tbaa !15
  %144 = load ptr, ptr %8, align 8, !tbaa !5
  %145 = load i32, ptr %15, align 4, !tbaa !13
  %146 = sext i32 %145 to i64
  %147 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %144, i64 noundef %146) #4
  %148 = load ptr, ptr %147, align 8, !tbaa !5
  %149 = load ptr, ptr %148, align 8, !tbaa !9
  %150 = getelementptr inbounds ptr, ptr %149, i64 3
  %151 = load ptr, ptr %150, align 8
  %152 = call noundef ptr %151(ptr noundef nonnull align 8 dereferenceable(32) %148)
  %153 = load ptr, ptr %152, align 8, !tbaa !9
  %154 = getelementptr inbounds ptr, ptr %153, i64 30
  %155 = load ptr, ptr %154, align 8
  %156 = call noundef nonnull align 8 dereferenceable(144) ptr %155(ptr noundef nonnull align 8 dereferenceable(176) %152)
  %157 = call noundef zeroext i1 @_ZNK7glslang5TTypeneERKS0_(ptr noundef nonnull align 8 dereferenceable(144) %143, ptr noundef nonnull align 8 dereferenceable(144) %156)
  br i1 %157, label %158, label %346

158:                                              ; preds = %135
  %159 = load ptr, ptr %6, align 8, !tbaa !5
  %160 = load i32, ptr %15, align 4, !tbaa !13
  %161 = load ptr, ptr %159, align 8, !tbaa !9
  %162 = getelementptr inbounds ptr, ptr %161, i64 40
  %163 = load ptr, ptr %162, align 8
  %164 = call noundef nonnull align 8 dereferenceable(24) ptr %163(ptr noundef nonnull align 8 dereferenceable(328) %159, i32 noundef %160)
  %165 = getelementptr inbounds %"struct.glslang::TParameter", ptr %164, i32 0, i32 1
  %166 = load ptr, ptr %165, align 8, !tbaa !15
  %167 = load ptr, ptr %166, align 8, !tbaa !9
  %168 = getelementptr inbounds ptr, ptr %167, i64 10
  %169 = load ptr, ptr %168, align 8
  %170 = call noundef nonnull align 8 dereferenceable(72) ptr %169(ptr noundef nonnull align 8 dereferenceable(144) %166)
  %171 = call noundef zeroext i1 @_ZNK7glslang10TQualifier13isParamOutputEv(ptr noundef nonnull align 8 dereferenceable(72) %170)
  br i1 %171, label %172, label %345

172:                                              ; preds = %158
  call void @llvm.lifetime.start.p0(i64 144, ptr %16) #4
  call void @_ZN7glslang5TTypeC2ENS_10TBasicTypeENS_17TStorageQualifierEiiib(ptr noundef nonnull align 8 dereferenceable(144) %16, i32 noundef 0, i32 noundef 0, i32 noundef 1, i32 noundef 0, i32 noundef 0, i1 noundef zeroext false)
  %173 = load ptr, ptr %6, align 8, !tbaa !5
  %174 = load i32, ptr %15, align 4, !tbaa !13
  %175 = load ptr, ptr %173, align 8, !tbaa !9
  %176 = getelementptr inbounds ptr, ptr %175, i64 40
  %177 = load ptr, ptr %176, align 8
  %178 = invoke noundef nonnull align 8 dereferenceable(24) ptr %177(ptr noundef nonnull align 8 dereferenceable(328) %173, i32 noundef %174)
          to label %179 unwind label %244

179:                                              ; preds = %172
  %180 = getelementptr inbounds %"struct.glslang::TParameter", ptr %178, i32 0, i32 1
  %181 = load ptr, ptr %180, align 8, !tbaa !15
  invoke void @_ZN7glslang5TType11shallowCopyERKS0_(ptr noundef nonnull align 8 dereferenceable(144) %16, ptr noundef nonnull align 8 dereferenceable(144) %181)
          to label %182 unwind label %244

182:                                              ; preds = %179
  %183 = load ptr, ptr %8, align 8, !tbaa !5
  %184 = load i32, ptr %15, align 4, !tbaa !13
  %185 = sext i32 %184 to i64
  %186 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %183, i64 noundef %185) #4
  %187 = load ptr, ptr %186, align 8, !tbaa !5
  %188 = load ptr, ptr %187, align 8, !tbaa !9
  %189 = getelementptr inbounds ptr, ptr %188, i64 3
  %190 = load ptr, ptr %189, align 8
  %191 = invoke noundef ptr %190(ptr noundef nonnull align 8 dereferenceable(32) %187)
          to label %192 unwind label %244

192:                                              ; preds = %182
  %193 = load ptr, ptr %191, align 8, !tbaa !9
  %194 = getelementptr inbounds ptr, ptr %193, i64 30
  %195 = load ptr, ptr %194, align 8
  %196 = invoke noundef nonnull align 8 dereferenceable(144) ptr %195(ptr noundef nonnull align 8 dereferenceable(176) %191)
          to label %197 unwind label %244

197:                                              ; preds = %192
  %198 = load ptr, ptr %196, align 8, !tbaa !9
  %199 = getelementptr inbounds ptr, ptr %198, i64 44
  %200 = load ptr, ptr %199, align 8
  %201 = invoke noundef zeroext i1 %200(ptr noundef nonnull align 8 dereferenceable(144) %196)
          to label %202 unwind label %244

202:                                              ; preds = %197
  br i1 %201, label %203, label %248

203:                                              ; preds = %202
  %204 = invoke noundef zeroext i1 @_ZNK7glslang5TType15isParameterizedEv(ptr noundef nonnull align 8 dereferenceable(144) %16)
          to label %205 unwind label %244

205:                                              ; preds = %203
  br i1 %204, label %248, label %206

206:                                              ; preds = %205
  %207 = load ptr, ptr %8, align 8, !tbaa !5
  %208 = load i32, ptr %15, align 4, !tbaa !13
  %209 = sext i32 %208 to i64
  %210 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %207, i64 noundef %209) #4
  %211 = load ptr, ptr %210, align 8, !tbaa !5
  %212 = load ptr, ptr %211, align 8, !tbaa !9
  %213 = getelementptr inbounds ptr, ptr %212, i64 3
  %214 = load ptr, ptr %213, align 8
  %215 = invoke noundef ptr %214(ptr noundef nonnull align 8 dereferenceable(32) %211)
          to label %216 unwind label %244

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

221:                                              ; preds = %216
  invoke void @_ZN7glslang5TType11shallowCopyERKS0_(ptr noundef nonnull align 8 dereferenceable(144) %16, ptr noundef nonnull align 8 dereferenceable(144) %220)
          to label %222 unwind label %244

222:                                              ; preds = %221
  %223 = load ptr, ptr %8, align 8, !tbaa !5
  %224 = load i32, ptr %15, align 4, !tbaa !13
  %225 = sext i32 %224 to i64
  %226 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %223, i64 noundef %225) #4
  %227 = load ptr, ptr %226, align 8, !tbaa !5
  %228 = load ptr, ptr %227, align 8, !tbaa !9
  %229 = getelementptr inbounds ptr, ptr %228, i64 3
  %230 = load ptr, ptr %229, align 8
  %231 = invoke noundef ptr %230(ptr noundef nonnull align 8 dereferenceable(32) %227)
          to label %232 unwind label %244

232:                                              ; preds = %222
  %233 = load ptr, ptr %231, align 8, !tbaa !9
  %234 = getelementptr inbounds ptr, ptr %233, i64 30
  %235 = load ptr, ptr %234, align 8
  %236 = invoke noundef nonnull align 8 dereferenceable(144) ptr %235(ptr noundef nonnull align 8 dereferenceable(176) %231)
          to label %237 unwind label %244

237:                                              ; preds = %232
  %238 = load ptr, ptr %236, align 8, !tbaa !9
  %239 = getelementptr inbounds ptr, ptr %238, i64 22
  %240 = load ptr, ptr %239, align 8
  %241 = invoke noundef ptr %240(ptr noundef nonnull align 8 dereferenceable(144) %236)
          to label %242 unwind label %244

242:                                              ; preds = %237
  invoke void @_ZN7glslang5TType18copyTypeParametersERKNS_11TArraySizesE(ptr noundef nonnull align 8 dereferenceable(144) %16, ptr noundef nonnull align 8 dereferenceable(21) %241)
          to label %243 unwind label %244

243:                                              ; preds = %242
  br label %248

244:                                              ; preds = %242, %237, %232, %222, %221, %216, %206, %203, %197, %192, %182, %179, %172
  %245 = landingpad { ptr, i32 }
          cleanup
  %246 = extractvalue { ptr, i32 } %245, 0
  store ptr %246, ptr %17, align 8
  %247 = extractvalue { ptr, i32 } %245, 1
  store i32 %247, ptr %18, align 4
  br label %344

248:                                              ; preds = %243, %205, %202
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #4
  %249 = invoke noundef ptr @_ZNK7glslang13TParseContext20makeInternalVariableEPKcRKNS_5TTypeE(ptr noundef nonnull align 8 dereferenceable(24912) %23, ptr noundef @.str.179, ptr noundef nonnull align 8 dereferenceable(144) %16)
          to label %250 unwind label %330

250:                                              ; preds = %248
  store ptr %249, ptr %19, align 8, !tbaa !5
  %251 = load ptr, ptr %19, align 8, !tbaa !5
  %252 = load ptr, ptr %251, align 8, !tbaa !9
  %253 = getelementptr inbounds ptr, ptr %252, i64 13
  %254 = load ptr, ptr %253, align 8
  %255 = invoke noundef nonnull align 8 dereferenceable(144) ptr %254(ptr noundef nonnull align 8 dereferenceable(228) %251)
          to label %256 unwind label %330

256:                                              ; preds = %250
  %257 = load ptr, ptr %255, align 8, !tbaa !9
  %258 = getelementptr inbounds ptr, ptr %257, i64 10
  %259 = load ptr, ptr %258, align 8
  %260 = invoke noundef nonnull align 8 dereferenceable(72) ptr %259(ptr noundef nonnull align 8 dereferenceable(144) %255)
          to label %261 unwind label %330

261:                                              ; preds = %256
  invoke void @_ZN7glslang10TQualifier13makeTemporaryEv(ptr noundef nonnull align 8 dereferenceable(72) %260)
          to label %262 unwind label %330

262:                                              ; preds = %261
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #4
  %263 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %23, i32 0, i32 7
  %264 = load ptr, ptr %263, align 8, !tbaa !21
  %265 = load ptr, ptr %19, align 8, !tbaa !5
  %266 = load ptr, ptr %7, align 8, !tbaa !5
  %267 = load ptr, ptr %266, align 8, !tbaa !9
  %268 = getelementptr inbounds ptr, ptr %267, i64 0
  %269 = load ptr, ptr %268, align 8
  %270 = invoke noundef nonnull align 8 dereferenceable(24) ptr %269(ptr noundef nonnull align 8 dereferenceable(32) %266)
          to label %271 unwind label %334

271:                                              ; preds = %262
  %272 = invoke noundef ptr @_ZN7glslang13TIntermediate9addSymbolERKNS_9TVariableERKNS_10TSourceLocE(ptr noundef nonnull align 8 dereferenceable(1784) %264, ptr noundef nonnull align 8 dereferenceable(228) %265, ptr noundef nonnull align 8 dereferenceable(24) %270)
          to label %273 unwind label %334

273:                                              ; preds = %271
  store ptr %272, ptr %20, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #4
  %274 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %23, i32 0, i32 7
  %275 = load ptr, ptr %274, align 8, !tbaa !21
  %276 = load ptr, ptr %8, align 8, !tbaa !5
  %277 = load i32, ptr %15, align 4, !tbaa !13
  %278 = sext i32 %277 to i64
  %279 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %276, i64 noundef %278) #4
  %280 = load ptr, ptr %279, align 8, !tbaa !5
  %281 = load ptr, ptr %280, align 8, !tbaa !9
  %282 = getelementptr inbounds ptr, ptr %281, i64 3
  %283 = load ptr, ptr %282, align 8
  %284 = invoke noundef ptr %283(ptr noundef nonnull align 8 dereferenceable(32) %280)
          to label %285 unwind label %338

285:                                              ; preds = %273
  %286 = load ptr, ptr %20, align 8, !tbaa !5
  %287 = load ptr, ptr %8, align 8, !tbaa !5
  %288 = load i32, ptr %15, align 4, !tbaa !13
  %289 = sext i32 %288 to i64
  %290 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %287, i64 noundef %289) #4
  %291 = load ptr, ptr %290, align 8, !tbaa !5
  %292 = load ptr, ptr %291, align 8, !tbaa !9
  %293 = getelementptr inbounds ptr, ptr %292, i64 0
  %294 = load ptr, ptr %293, align 8
  %295 = invoke noundef nonnull align 8 dereferenceable(24) ptr %294(ptr noundef nonnull align 8 dereferenceable(32) %291)
          to label %296 unwind label %338

296:                                              ; preds = %285
  %297 = invoke noundef ptr @_ZN7glslang13TIntermediate9addAssignENS_9TOperatorEPNS_12TIntermTypedES3_RKNS_10TSourceLocE(ptr noundef nonnull align 8 dereferenceable(1784) %275, i32 noundef 575, ptr noundef %284, ptr noundef %286, ptr noundef nonnull align 8 dereferenceable(24) %295)
          to label %298 unwind label %338

298:                                              ; preds = %296
  store ptr %297, ptr %21, align 8, !tbaa !5
  %299 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %23, i32 0, i32 7
  %300 = load ptr, ptr %299, align 8, !tbaa !21
  %301 = load ptr, ptr %12, align 8, !tbaa !5
  %302 = load ptr, ptr %21, align 8, !tbaa !5
  %303 = load ptr, ptr %8, align 8, !tbaa !5
  %304 = load i32, ptr %15, align 4, !tbaa !13
  %305 = sext i32 %304 to i64
  %306 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %303, i64 noundef %305) #4
  %307 = load ptr, ptr %306, align 8, !tbaa !5
  %308 = load ptr, ptr %307, align 8, !tbaa !9
  %309 = getelementptr inbounds ptr, ptr %308, i64 0
  %310 = load ptr, ptr %309, align 8
  %311 = invoke noundef nonnull align 8 dereferenceable(24) ptr %310(ptr noundef nonnull align 8 dereferenceable(32) %307)
          to label %312 unwind label %338

312:                                              ; preds = %298
  %313 = invoke noundef ptr @_ZN7glslang13TIntermediate13growAggregateEP11TIntermNodeS2_RKNS_10TSourceLocE(ptr noundef nonnull align 8 dereferenceable(1784) %300, ptr noundef %301, ptr noundef %302, ptr noundef nonnull align 8 dereferenceable(24) %311)
          to label %314 unwind label %338

314:                                              ; preds = %312
  store ptr %313, ptr %12, align 8, !tbaa !5
  %315 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %23, i32 0, i32 7
  %316 = load ptr, ptr %315, align 8, !tbaa !21
  %317 = load ptr, ptr %19, align 8, !tbaa !5
  %318 = load ptr, ptr %7, align 8, !tbaa !5
  %319 = load ptr, ptr %318, align 8, !tbaa !9
  %320 = getelementptr inbounds ptr, ptr %319, i64 0
  %321 = load ptr, ptr %320, align 8
  %322 = invoke noundef nonnull align 8 dereferenceable(24) ptr %321(ptr noundef nonnull align 8 dereferenceable(32) %318)
          to label %323 unwind label %338

323:                                              ; preds = %314
  %324 = invoke noundef ptr @_ZN7glslang13TIntermediate9addSymbolERKNS_9TVariableERKNS_10TSourceLocE(ptr noundef nonnull align 8 dereferenceable(1784) %316, ptr noundef nonnull align 8 dereferenceable(228) %317, ptr noundef nonnull align 8 dereferenceable(24) %322)
          to label %325 unwind label %338

325:                                              ; preds = %323
  %326 = load ptr, ptr %8, align 8, !tbaa !5
  %327 = load i32, ptr %15, align 4, !tbaa !13
  %328 = sext i32 %327 to i64
  %329 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %326, i64 noundef %328) #4
  store ptr %324, ptr %329, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #4
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %16) #4
  call void @llvm.lifetime.end.p0(i64 144, ptr %16) #4
  br label %345

330:                                              ; preds = %261, %256, %250, %248
  %331 = landingpad { ptr, i32 }
          cleanup
  %332 = extractvalue { ptr, i32 } %331, 0
  store ptr %332, ptr %17, align 8
  %333 = extractvalue { ptr, i32 } %331, 1
  store i32 %333, ptr %18, align 4
  br label %343

334:                                              ; preds = %271, %262
  %335 = landingpad { ptr, i32 }
          cleanup
  %336 = extractvalue { ptr, i32 } %335, 0
  store ptr %336, ptr %17, align 8
  %337 = extractvalue { ptr, i32 } %335, 1
  store i32 %337, ptr %18, align 4
  br label %342

338:                                              ; preds = %323, %314, %312, %298, %296, %285, %273
  %339 = landingpad { ptr, i32 }
          cleanup
  %340 = extractvalue { ptr, i32 } %339, 0
  store ptr %340, ptr %17, align 8
  %341 = extractvalue { ptr, i32 } %339, 1
  store i32 %341, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #4
  br label %342

342:                                              ; preds = %338, %334
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #4
  br label %343

343:                                              ; preds = %342, %330
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #4
  br label %344

344:                                              ; preds = %343, %244
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %16) #4
  call void @llvm.lifetime.end.p0(i64 144, ptr %16) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %9) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #4
  br label %391

345:                                              ; preds = %325, %158
  br label %346

346:                                              ; preds = %345, %135
  br label %347

347:                                              ; preds = %346
  %348 = load i32, ptr %15, align 4, !tbaa !13
  %349 = add nsw i32 %348, 1
  store i32 %349, ptr %15, align 4, !tbaa !13
  br label %126, !llvm.loop !43

350:                                              ; preds = %134
  %351 = load ptr, ptr %13, align 8, !tbaa !5
  %352 = icmp ne ptr %351, null
  br i1 %352, label %353, label %373

353:                                              ; preds = %350
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #4
  %354 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %23, i32 0, i32 7
  %355 = load ptr, ptr %354, align 8, !tbaa !21
  %356 = load ptr, ptr %13, align 8, !tbaa !5
  %357 = load ptr, ptr %7, align 8, !tbaa !5
  %358 = load ptr, ptr %357, align 8, !tbaa !9
  %359 = getelementptr inbounds ptr, ptr %358, i64 0
  %360 = load ptr, ptr %359, align 8
  %361 = call noundef nonnull align 8 dereferenceable(24) ptr %360(ptr noundef nonnull align 8 dereferenceable(32) %357)
  %362 = call noundef ptr @_ZN7glslang13TIntermediate9addSymbolERKNS_9TVariableERKNS_10TSourceLocE(ptr noundef nonnull align 8 dereferenceable(1784) %355, ptr noundef nonnull align 8 dereferenceable(228) %356, ptr noundef nonnull align 8 dereferenceable(24) %361)
  store ptr %362, ptr %22, align 8, !tbaa !5
  %363 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %23, i32 0, i32 7
  %364 = load ptr, ptr %363, align 8, !tbaa !21
  %365 = load ptr, ptr %12, align 8, !tbaa !5
  %366 = load ptr, ptr %22, align 8, !tbaa !5
  %367 = load ptr, ptr %7, align 8, !tbaa !5
  %368 = load ptr, ptr %367, align 8, !tbaa !9
  %369 = getelementptr inbounds ptr, ptr %368, i64 0
  %370 = load ptr, ptr %369, align 8
  %371 = call noundef nonnull align 8 dereferenceable(24) ptr %370(ptr noundef nonnull align 8 dereferenceable(32) %367)
  %372 = call noundef ptr @_ZN7glslang13TIntermediate13growAggregateEP11TIntermNodeS2_RKNS_10TSourceLocE(ptr noundef nonnull align 8 dereferenceable(1784) %364, ptr noundef %365, ptr noundef %366, ptr noundef nonnull align 8 dereferenceable(24) %371)
  store ptr %372, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #4
  br label %373

373:                                              ; preds = %353, %350
  %374 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %23, i32 0, i32 7
  %375 = load ptr, ptr %374, align 8, !tbaa !21
  %376 = load ptr, ptr %12, align 8, !tbaa !5
  %377 = load ptr, ptr %7, align 8, !tbaa !5
  %378 = load ptr, ptr %377, align 8, !tbaa !9
  %379 = getelementptr inbounds ptr, ptr %378, i64 30
  %380 = load ptr, ptr %379, align 8
  %381 = call noundef nonnull align 8 dereferenceable(144) ptr %380(ptr noundef nonnull align 8 dereferenceable(176) %377)
  %382 = load ptr, ptr %7, align 8, !tbaa !5
  %383 = load ptr, ptr %382, align 8, !tbaa !9
  %384 = getelementptr inbounds ptr, ptr %383, i64 0
  %385 = load ptr, ptr %384, align 8
  %386 = call noundef nonnull align 8 dereferenceable(24) ptr %385(ptr noundef nonnull align 8 dereferenceable(32) %382)
  %387 = call noundef ptr @_ZN7glslang13TIntermediate20setAggregateOperatorEP11TIntermNodeNS_9TOperatorERKNS_5TTypeERKNS_10TSourceLocE(ptr noundef nonnull align 8 dereferenceable(1784) %375, ptr noundef %376, i32 noundef 172, ptr noundef nonnull align 8 dereferenceable(144) %381, ptr noundef nonnull align 8 dereferenceable(24) %386)
  store ptr %387, ptr %12, align 8, !tbaa !5
  %388 = load ptr, ptr %12, align 8, !tbaa !5
  store ptr %388, ptr %4, align 8
  store i32 1, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #4
  br label %389

389:                                              ; preds = %373, %84
  call void @llvm.lifetime.end.p0(i64 1, ptr %9) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #4
  %390 = load ptr, ptr %4, align 8
  ret ptr %390

391:                                              ; preds = %344
  %392 = load ptr, ptr %17, align 8
  %393 = load i32, ptr %18, align 4
  %394 = insertvalue { ptr, i32 } poison, ptr %392, 0
  %395 = insertvalue { ptr, i32 } %394, i32 %393, 1
  resume { ptr, i32 } %395
}

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

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

declare noundef ptr @_ZN7glslang13TIntermediate13makeAggregateEP11TIntermNode(ptr noundef nonnull align 8 dereferenceable(1784), ptr noundef) #1

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

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

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

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "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 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 = { nounwind }

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

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


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

%"class.glslang::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.178 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.179 = external hidden unnamed_addr constant [8 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

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

; 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 noundef zeroext i1 @_ZNK7glslang5TTypeneERKS0_(ptr noundef nonnull align 8 dereferenceable(144), ptr noundef nonnull align 8 dereferenceable(144)) local_unnamed_addr #2 align 2

declare noundef ptr @_ZN7glslang13TIntermediate13growAggregateEP11TIntermNodeS2_RKNS_10TSourceLocE(ptr noundef nonnull align 8 dereferenceable(1784), ptr noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef ptr @_ZNK7glslang13TParseContext28addOutputArgumentConversionsERKNS_9TFunctionERNS_16TIntermAggregateE(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(328) %1, ptr noundef nonnull align 8 dereferenceable(352) %2) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca %"class.glslang::TType", align 8
  %5 = load ptr, ptr %2, align 8, !tbaa !5
  %6 = getelementptr inbounds i8, ptr %5, i64 400
  %7 = load ptr, ptr %6, align 8
  %8 = tail call noundef nonnull align 8 dereferenceable(32) ptr %7(ptr noundef nonnull align 8 dereferenceable(352) %2)
  %9 = load ptr, ptr %1, align 8, !tbaa !5
  %10 = getelementptr inbounds i8, ptr %9, i64 288
  %11 = load ptr, ptr %10, align 8
  %12 = tail call noundef i32 %11(ptr noundef nonnull align 8 dereferenceable(328) %1)
  %13 = icmp sgt i32 %12, 0
  br i1 %13, label %.lr.ph, label %.critedge

.lr.ph:                                           ; preds = %3, %44
  %indvars.iv = phi i64 [ %indvars.iv.next, %44 ], [ 0, %3 ]
  %14 = load ptr, ptr %1, align 8, !tbaa !5
  %15 = getelementptr inbounds i8, ptr %14, i64 320
  %16 = load ptr, ptr %15, align 8
  %17 = trunc nuw nsw i64 %indvars.iv to i32
  %18 = tail call noundef nonnull align 8 dereferenceable(24) ptr %16(ptr noundef nonnull align 8 dereferenceable(328) %1, i32 noundef %17)
  %19 = getelementptr inbounds i8, ptr %18, i64 8
  %20 = load ptr, ptr %19, align 8, !tbaa !8
  %21 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef %indvars.iv) #4
  %22 = load ptr, ptr %21, align 8, !tbaa !12
  %23 = load ptr, ptr %22, align 8, !tbaa !5
  %24 = getelementptr inbounds i8, ptr %23, i64 24
  %25 = load ptr, ptr %24, align 8
  %26 = tail call noundef ptr %25(ptr noundef nonnull align 8 dereferenceable(32) %22)
  %27 = load ptr, ptr %26, align 8, !tbaa !5
  %28 = getelementptr inbounds i8, ptr %27, i64 240
  %29 = load ptr, ptr %28, align 8
  %30 = tail call noundef nonnull align 8 dereferenceable(144) ptr %29(ptr noundef nonnull align 8 dereferenceable(176) %26)
  %31 = tail call noundef zeroext i1 @_ZNK7glslang5TTypeneERKS0_(ptr noundef nonnull align 8 dereferenceable(144) %20, ptr noundef nonnull align 8 dereferenceable(144) %30)
  br i1 %31, label %32, label %44

32:                                               ; preds = %.lr.ph
  %33 = load ptr, ptr %1, align 8, !tbaa !5
  %34 = getelementptr inbounds i8, ptr %33, i64 320
  %35 = load ptr, ptr %34, align 8
  %36 = tail call noundef nonnull align 8 dereferenceable(24) ptr %35(ptr noundef nonnull align 8 dereferenceable(328) %1, i32 noundef %17)
  %37 = getelementptr inbounds i8, ptr %36, i64 8
  %38 = load ptr, ptr %37, align 8, !tbaa !8
  %39 = load ptr, ptr %38, align 8, !tbaa !5
  %40 = getelementptr inbounds i8, ptr %39, i64 80
  %41 = load ptr, ptr %40, align 8
  %42 = tail call noundef nonnull align 8 dereferenceable(72) ptr %41(ptr noundef nonnull align 8 dereferenceable(144) %38)
  %43 = tail call noundef zeroext i1 @_ZNK7glslang10TQualifier13isParamOutputEv(ptr noundef nonnull align 8 dereferenceable(72) %42)
  br i1 %43, label %51, label %44

44:                                               ; preds = %.lr.ph, %32
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %45 = load ptr, ptr %1, align 8, !tbaa !5
  %46 = getelementptr inbounds i8, ptr %45, i64 288
  %47 = load ptr, ptr %46, align 8
  %48 = tail call noundef i32 %47(ptr noundef nonnull align 8 dereferenceable(328) %1)
  %49 = sext i32 %48 to i64
  %50 = icmp slt i64 %indvars.iv.next, %49
  br i1 %50, label %.lr.ph, label %.critedge, !llvm.loop !13

51:                                               ; preds = %32
  %52 = load ptr, ptr %2, align 8, !tbaa !5
  %53 = getelementptr inbounds i8, ptr %52, i64 256
  %54 = load ptr, ptr %53, align 8
  %55 = tail call noundef i32 %54(ptr noundef nonnull align 8 dereferenceable(176) %2)
  %.not = icmp eq i32 %55, 0
  br i1 %.not, label %73, label %56

56:                                               ; preds = %51
  %57 = load ptr, ptr %2, align 8, !tbaa !5
  %58 = getelementptr inbounds i8, ptr %57, i64 240
  %59 = load ptr, ptr %58, align 8
  %60 = tail call noundef nonnull align 8 dereferenceable(144) ptr %59(ptr noundef nonnull align 8 dereferenceable(176) %2)
  %61 = tail call noundef ptr @_ZNK7glslang13TParseContext20makeInternalVariableEPKcRKNS_5TTypeE(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull @.str.178, ptr noundef nonnull align 8 dereferenceable(144) %60)
  %62 = getelementptr inbounds i8, ptr %0, i64 56
  %63 = load ptr, ptr %62, align 8, !tbaa !15
  %64 = load ptr, ptr %2, align 8, !tbaa !5
  %65 = load ptr, ptr %64, align 8
  %66 = tail call noundef nonnull align 8 dereferenceable(24) ptr %65(ptr noundef nonnull align 8 dereferenceable(32) %2)
  %67 = tail call noundef ptr @_ZN7glslang13TIntermediate9addSymbolERKNS_9TVariableERKNS_10TSourceLocE(ptr noundef nonnull align 8 dereferenceable(1784) %63, ptr noundef nonnull align 8 dereferenceable(228) %61, ptr noundef nonnull align 8 dereferenceable(24) %66)
  %68 = load ptr, ptr %62, align 8, !tbaa !15
  %69 = load ptr, ptr %2, align 8, !tbaa !5
  %70 = load ptr, ptr %69, align 8
  %71 = tail call noundef nonnull align 8 dereferenceable(24) ptr %70(ptr noundef nonnull align 8 dereferenceable(32) %2)
  %72 = tail call noundef ptr @_ZN7glslang13TIntermediate9addAssignENS_9TOperatorEPNS_12TIntermTypedES3_RKNS_10TSourceLocE(ptr noundef nonnull align 8 dereferenceable(1784) %68, i32 noundef 575, ptr noundef %67, ptr noundef nonnull %2, ptr noundef nonnull align 8 dereferenceable(24) %71)
  br label %73

73:                                               ; preds = %51, %56
  %.077 = phi ptr [ %61, %56 ], [ null, %51 ]
  %.074 = phi ptr [ %72, %56 ], [ %2, %51 ]
  %74 = getelementptr inbounds i8, ptr %0, i64 56
  %75 = load ptr, ptr %74, align 8, !tbaa !15
  %76 = tail call noundef ptr @_ZN7glslang13TIntermediate13makeAggregateEP11TIntermNode(ptr noundef nonnull align 8 dereferenceable(1784) %75, ptr noundef %.074)
  %77 = load ptr, ptr %1, align 8, !tbaa !5
  %78 = getelementptr inbounds i8, ptr %77, i64 288
  %79 = load ptr, ptr %78, align 8
  %80 = tail call noundef i32 %79(ptr noundef nonnull align 8 dereferenceable(328) %1)
  %81 = icmp sgt i32 %80, 0
  br i1 %81, label %.lr.ph89, label %._crit_edge

._crit_edge:                                      ; preds = %234, %73
  %.175.lcssa = phi ptr [ %76, %73 ], [ %.276, %234 ]
  %.not78 = icmp eq ptr %.077, null
  br i1 %.not78, label %252, label %241

.lr.ph89:                                         ; preds = %73, %234
  %indvars.iv91 = phi i64 [ %indvars.iv.next92, %234 ], [ 0, %73 ]
  %.17587 = phi ptr [ %.276, %234 ], [ %76, %73 ]
  %82 = load ptr, ptr %1, align 8, !tbaa !5
  %83 = getelementptr inbounds i8, ptr %82, i64 320
  %84 = load ptr, ptr %83, align 8
  %85 = trunc nuw nsw i64 %indvars.iv91 to i32
  %86 = call noundef nonnull align 8 dereferenceable(24) ptr %84(ptr noundef nonnull align 8 dereferenceable(328) %1, i32 noundef %85)
  %87 = getelementptr inbounds i8, ptr %86, i64 8
  %88 = load ptr, ptr %87, align 8, !tbaa !8
  %89 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef %indvars.iv91) #4
  %90 = load ptr, ptr %89, align 8, !tbaa !12
  %91 = load ptr, ptr %90, align 8, !tbaa !5
  %92 = getelementptr inbounds i8, ptr %91, i64 24
  %93 = load ptr, ptr %92, align 8
  %94 = call noundef ptr %93(ptr noundef nonnull align 8 dereferenceable(32) %90)
  %95 = load ptr, ptr %94, align 8, !tbaa !5
  %96 = getelementptr inbounds i8, ptr %95, i64 240
  %97 = load ptr, ptr %96, align 8
  %98 = call noundef nonnull align 8 dereferenceable(144) ptr %97(ptr noundef nonnull align 8 dereferenceable(176) %94)
  %99 = call noundef zeroext i1 @_ZNK7glslang5TTypeneERKS0_(ptr noundef nonnull align 8 dereferenceable(144) %88, ptr noundef nonnull align 8 dereferenceable(144) %98)
  br i1 %99, label %100, label %234

100:                                              ; preds = %.lr.ph89
  %101 = load ptr, ptr %1, align 8, !tbaa !5
  %102 = getelementptr inbounds i8, ptr %101, i64 320
  %103 = load ptr, ptr %102, align 8
  %104 = call noundef nonnull align 8 dereferenceable(24) ptr %103(ptr noundef nonnull align 8 dereferenceable(328) %1, i32 noundef %85)
  %105 = getelementptr inbounds i8, ptr %104, i64 8
  %106 = load ptr, ptr %105, align 8, !tbaa !8
  %107 = load ptr, ptr %106, align 8, !tbaa !5
  %108 = getelementptr inbounds i8, ptr %107, i64 80
  %109 = load ptr, ptr %108, align 8
  %110 = call noundef nonnull align 8 dereferenceable(72) ptr %109(ptr noundef nonnull align 8 dereferenceable(144) %106)
  %111 = call noundef zeroext i1 @_ZNK7glslang10TQualifier13isParamOutputEv(ptr noundef nonnull align 8 dereferenceable(72) %110)
  br i1 %111, label %112, label %234

112:                                              ; preds = %100
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %4) #4
  call void @_ZN7glslang5TTypeC2ENS_10TBasicTypeENS_17TStorageQualifierEiiib(ptr noundef nonnull align 8 dereferenceable(144) %4, i32 noundef 0, i32 noundef 0, i32 noundef 1, i32 noundef 0, i32 noundef 0, i1 noundef zeroext false)
  %113 = load ptr, ptr %1, align 8, !tbaa !5
  %114 = getelementptr inbounds i8, ptr %113, i64 320
  %115 = load ptr, ptr %114, align 8
  %116 = invoke noundef nonnull align 8 dereferenceable(24) ptr %115(ptr noundef nonnull align 8 dereferenceable(328) %1, i32 noundef %85)
          to label %117 unwind label %171

117:                                              ; preds = %112
  %118 = getelementptr inbounds i8, ptr %116, i64 8
  %119 = load ptr, ptr %118, align 8, !tbaa !8
  invoke void @_ZN7glslang5TType11shallowCopyERKS0_(ptr noundef nonnull align 8 dereferenceable(144) %4, ptr noundef nonnull align 8 dereferenceable(144) %119)
          to label %120 unwind label %171

120:                                              ; preds = %117
  %121 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef %indvars.iv91) #4
  %122 = load ptr, ptr %121, align 8, !tbaa !12
  %123 = load ptr, ptr %122, align 8, !tbaa !5
  %124 = getelementptr inbounds i8, ptr %123, i64 24
  %125 = load ptr, ptr %124, align 8
  %126 = invoke noundef ptr %125(ptr noundef nonnull align 8 dereferenceable(32) %122)
          to label %127 unwind label %171

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

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

137:                                              ; preds = %132
  br i1 %136, label %138, label %173

138:                                              ; preds = %137
  %139 = call noundef zeroext i1 @_ZNK7glslang5TType15isParameterizedEv(ptr noundef nonnull align 8 dereferenceable(144) %4)
  br i1 %139, label %173, label %140

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

147:                                              ; preds = %140
  %148 = load ptr, ptr %146, align 8, !tbaa !5
  %149 = getelementptr inbounds i8, ptr %148, i64 240
  %150 = load ptr, ptr %149, align 8
  %151 = invoke noundef nonnull align 8 dereferenceable(144) ptr %150(ptr noundef nonnull align 8 dereferenceable(176) %146)
          to label %152 unwind label %171

152:                                              ; preds = %147
  invoke void @_ZN7glslang5TType11shallowCopyERKS0_(ptr noundef nonnull align 8 dereferenceable(144) %4, ptr noundef nonnull align 8 dereferenceable(144) %151)
          to label %153 unwind label %171

153:                                              ; preds = %152
  %154 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef %indvars.iv91) #4
  %155 = load ptr, ptr %154, align 8, !tbaa !12
  %156 = load ptr, ptr %155, align 8, !tbaa !5
  %157 = getelementptr inbounds i8, ptr %156, i64 24
  %158 = load ptr, ptr %157, align 8
  %159 = invoke noundef ptr %158(ptr noundef nonnull align 8 dereferenceable(32) %155)
          to label %160 unwind label %171

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

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

170:                                              ; preds = %165
  invoke void @_ZN7glslang5TType18copyTypeParametersERKNS_11TArraySizesE(ptr noundef nonnull align 8 dereferenceable(144) %4, ptr noundef nonnull align 8 dereferenceable(21) %169)
          to label %173 unwind label %171

171:                                              ; preds = %170, %165, %160, %153, %152, %147, %140, %132, %127, %120, %117, %112
  %172 = landingpad { ptr, i32 }
          cleanup
  br label %233

173:                                              ; preds = %170, %138, %137
  %174 = invoke noundef ptr @_ZNK7glslang13TParseContext20makeInternalVariableEPKcRKNS_5TTypeE(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull @.str.179, ptr noundef nonnull align 8 dereferenceable(144) %4)
          to label %175 unwind label %227

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

180:                                              ; preds = %175
  %181 = load ptr, ptr %179, align 8, !tbaa !5
  %182 = getelementptr inbounds i8, ptr %181, i64 80
  %183 = load ptr, ptr %182, align 8
  %184 = invoke noundef nonnull align 8 dereferenceable(72) ptr %183(ptr noundef nonnull align 8 dereferenceable(144) %179)
          to label %185 unwind label %227

185:                                              ; preds = %180
  invoke void @_ZN7glslang10TQualifier13makeTemporaryEv(ptr noundef nonnull align 8 dereferenceable(72) %184)
          to label %186 unwind label %227

186:                                              ; preds = %185
  %187 = load ptr, ptr %74, align 8, !tbaa !15
  %188 = load ptr, ptr %2, align 8, !tbaa !5
  %189 = load ptr, ptr %188, align 8
  %190 = invoke noundef nonnull align 8 dereferenceable(24) ptr %189(ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %191 unwind label %229

191:                                              ; preds = %186
  %192 = invoke noundef ptr @_ZN7glslang13TIntermediate9addSymbolERKNS_9TVariableERKNS_10TSourceLocE(ptr noundef nonnull align 8 dereferenceable(1784) %187, ptr noundef nonnull align 8 dereferenceable(228) %174, ptr noundef nonnull align 8 dereferenceable(24) %190)
          to label %193 unwind label %229

193:                                              ; preds = %191
  %194 = load ptr, ptr %74, align 8, !tbaa !15
  %195 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef %indvars.iv91) #4
  %196 = load ptr, ptr %195, align 8, !tbaa !12
  %197 = load ptr, ptr %196, align 8, !tbaa !5
  %198 = getelementptr inbounds i8, ptr %197, i64 24
  %199 = load ptr, ptr %198, align 8
  %200 = invoke noundef ptr %199(ptr noundef nonnull align 8 dereferenceable(32) %196)
          to label %201 unwind label %231

201:                                              ; preds = %193
  %202 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef %indvars.iv91) #4
  %203 = load ptr, ptr %202, align 8, !tbaa !12
  %204 = load ptr, ptr %203, align 8, !tbaa !5
  %205 = load ptr, ptr %204, align 8
  %206 = invoke noundef nonnull align 8 dereferenceable(24) ptr %205(ptr noundef nonnull align 8 dereferenceable(32) %203)
          to label %207 unwind label %231

207:                                              ; preds = %201
  %208 = invoke noundef ptr @_ZN7glslang13TIntermediate9addAssignENS_9TOperatorEPNS_12TIntermTypedES3_RKNS_10TSourceLocE(ptr noundef nonnull align 8 dereferenceable(1784) %194, i32 noundef 575, ptr noundef %200, ptr noundef %192, ptr noundef nonnull align 8 dereferenceable(24) %206)
          to label %209 unwind label %231

209:                                              ; preds = %207
  %210 = load ptr, ptr %74, align 8, !tbaa !15
  %211 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef %indvars.iv91) #4
  %212 = load ptr, ptr %211, align 8, !tbaa !12
  %213 = load ptr, ptr %212, align 8, !tbaa !5
  %214 = load ptr, ptr %213, align 8
  %215 = invoke noundef nonnull align 8 dereferenceable(24) ptr %214(ptr noundef nonnull align 8 dereferenceable(32) %212)
          to label %216 unwind label %231

216:                                              ; preds = %209
  %217 = invoke noundef ptr @_ZN7glslang13TIntermediate13growAggregateEP11TIntermNodeS2_RKNS_10TSourceLocE(ptr noundef nonnull align 8 dereferenceable(1784) %210, ptr noundef %.17587, ptr noundef %208, ptr noundef nonnull align 8 dereferenceable(24) %215)
          to label %218 unwind label %231

218:                                              ; preds = %216
  %219 = load ptr, ptr %74, align 8, !tbaa !15
  %220 = load ptr, ptr %2, align 8, !tbaa !5
  %221 = load ptr, ptr %220, align 8
  %222 = invoke noundef nonnull align 8 dereferenceable(24) ptr %221(ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %223 unwind label %231

223:                                              ; preds = %218
  %224 = invoke noundef ptr @_ZN7glslang13TIntermediate9addSymbolERKNS_9TVariableERKNS_10TSourceLocE(ptr noundef nonnull align 8 dereferenceable(1784) %219, ptr noundef nonnull align 8 dereferenceable(228) %174, ptr noundef nonnull align 8 dereferenceable(24) %222)
          to label %225 unwind label %231

225:                                              ; preds = %223
  %226 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef %indvars.iv91) #4
  store ptr %224, ptr %226, align 8, !tbaa !12
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %4) #4
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %4) #4
  br label %234

227:                                              ; preds = %185, %180, %175, %173
  %228 = landingpad { ptr, i32 }
          cleanup
  br label %233

229:                                              ; preds = %191, %186
  %230 = landingpad { ptr, i32 }
          cleanup
  br label %233

231:                                              ; preds = %223, %218, %216, %209, %207, %201, %193
  %232 = landingpad { ptr, i32 }
          cleanup
  br label %233

233:                                              ; preds = %227, %231, %229, %171
  %.pn.pn.pn = phi { ptr, i32 } [ %172, %171 ], [ %228, %227 ], [ %232, %231 ], [ %230, %229 ]
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %4) #4
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %4) #4
  resume { ptr, i32 } %.pn.pn.pn

234:                                              ; preds = %.lr.ph89, %225, %100
  %.276 = phi ptr [ %217, %225 ], [ %.17587, %100 ], [ %.17587, %.lr.ph89 ]
  %indvars.iv.next92 = add nuw nsw i64 %indvars.iv91, 1
  %235 = load ptr, ptr %1, align 8, !tbaa !5
  %236 = getelementptr inbounds i8, ptr %235, i64 288
  %237 = load ptr, ptr %236, align 8
  %238 = call noundef i32 %237(ptr noundef nonnull align 8 dereferenceable(328) %1)
  %239 = sext i32 %238 to i64
  %240 = icmp slt i64 %indvars.iv.next92, %239
  br i1 %240, label %.lr.ph89, label %._crit_edge, !llvm.loop !39

241:                                              ; preds = %._crit_edge
  %242 = load ptr, ptr %74, align 8, !tbaa !15
  %243 = load ptr, ptr %2, align 8, !tbaa !5
  %244 = load ptr, ptr %243, align 8
  %245 = call noundef nonnull align 8 dereferenceable(24) ptr %244(ptr noundef nonnull align 8 dereferenceable(32) %2)
  %246 = call noundef ptr @_ZN7glslang13TIntermediate9addSymbolERKNS_9TVariableERKNS_10TSourceLocE(ptr noundef nonnull align 8 dereferenceable(1784) %242, ptr noundef nonnull align 8 dereferenceable(228) %.077, ptr noundef nonnull align 8 dereferenceable(24) %245)
  %247 = load ptr, ptr %74, align 8, !tbaa !15
  %248 = load ptr, ptr %2, align 8, !tbaa !5
  %249 = load ptr, ptr %248, align 8
  %250 = call noundef nonnull align 8 dereferenceable(24) ptr %249(ptr noundef nonnull align 8 dereferenceable(32) %2)
  %251 = call noundef ptr @_ZN7glslang13TIntermediate13growAggregateEP11TIntermNodeS2_RKNS_10TSourceLocE(ptr noundef nonnull align 8 dereferenceable(1784) %247, ptr noundef %.175.lcssa, ptr noundef %246, ptr noundef nonnull align 8 dereferenceable(24) %250)
  br label %252

252:                                              ; preds = %241, %._crit_edge
  %.3 = phi ptr [ %251, %241 ], [ %.175.lcssa, %._crit_edge ]
  %253 = load ptr, ptr %74, align 8, !tbaa !15
  %254 = load ptr, ptr %2, align 8, !tbaa !5
  %255 = getelementptr inbounds i8, ptr %254, i64 240
  %256 = load ptr, ptr %255, align 8
  %257 = call noundef nonnull align 8 dereferenceable(144) ptr %256(ptr noundef nonnull align 8 dereferenceable(176) %2)
  %258 = load ptr, ptr %2, align 8, !tbaa !5
  %259 = load ptr, ptr %258, align 8
  %260 = call noundef nonnull align 8 dereferenceable(24) ptr %259(ptr noundef nonnull align 8 dereferenceable(32) %2)
  %261 = call noundef ptr @_ZN7glslang13TIntermediate20setAggregateOperatorEP11TIntermNodeNS_9TOperatorERKNS_5TTypeERKNS_10TSourceLocE(ptr noundef nonnull align 8 dereferenceable(1784) %253, ptr noundef %.3, i32 noundef 172, ptr noundef nonnull align 8 dereferenceable(144) %257, ptr noundef nonnull align 8 dereferenceable(24) %260)
  br label %.critedge

.critedge:                                        ; preds = %44, %3, %252
  %.0 = phi ptr [ %261, %252 ], [ %2, %3 ], [ %2, %44 ]
  ret ptr %.0
}

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

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

declare noundef ptr @_ZN7glslang13TIntermediate13makeAggregateEP11TIntermNode(ptr noundef nonnull align 8 dereferenceable(1784), ptr noundef) local_unnamed_addr #1

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

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

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

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "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 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 = { 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, !10, i64 8}
!9 = !{!"_ZTSN7glslang10TParameterE", !10, i64 0, !10, i64 8, !10, i64 16}
!10 = !{!"any pointer", !11, i64 0}
!11 = !{!"omnipotent char", !7, i64 0}
!12 = !{!10, !10, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = !{!16, !10, i64 56}
!16 = !{!"_ZTSN7glslang14TParseVersionsE", !17, i64 8, !18, i64 12, !10, i64 16, !19, i64 24, !20, i64 28, !21, i64 32, !10, i64 56, !22, i64 64, !33, i64 120, !38, i64 176, !19, i64 180, !10, i64 184}
!17 = !{!"bool", !11, i64 0}
!18 = !{!"_ZTS8EProfile", !11, i64 0}
!19 = !{!"int", !11, i64 0}
!20 = !{!"_ZTS11EShLanguage", !11, i64 0}
!21 = !{!"_ZTSN7glslang10SpvVersionE", !19, i64 0, !19, i64 4, !19, i64 8, !19, i64 12, !17, i64 16}
!22 = !{!"_ZTSN7glslang4TMapINSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEENS_18TExtensionBehaviorESt4lessIS7_EEE", !23, i64 0}
!23 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEENS4_18TExtensionBehaviorESt4lessIS7_ENS5_ISt4pairIKS7_S8_EEEE", !24, i64 0}
!24 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_NS4_18TExtensionBehaviorEESt10_Select1stISB_ESt4lessIS7_ENS5_ISB_EEE", !25, i64 0}
!25 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_NS4_18TExtensionBehaviorEESt10_Select1stISB_ESt4lessIS7_ENS5_ISB_EEE13_Rb_tree_implISF_Lb1EEE", !26, i64 0, !27, i64 8, !29, i64 16}
!26 = !{!"_ZTSN7glslang14pool_allocatorISt13_Rb_tree_nodeISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_IcEEEENS_18TExtensionBehaviorEEEEE", !10, i64 0}
!27 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEEE", !28, i64 0}
!28 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEE"}
!29 = !{!"_ZTSSt15_Rb_tree_header", !30, i64 0, !32, i64 32}
!30 = !{!"_ZTSSt18_Rb_tree_node_base", !31, i64 0, !10, i64 8, !10, i64 16, !10, i64 24}
!31 = !{!"_ZTSSt14_Rb_tree_color", !11, i64 0}
!32 = !{!"long", !11, i64 0}
!33 = !{!"_ZTSN7glslang4TMapINSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEEjSt4lessIS7_EEE", !34, i64 0}
!34 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEjSt4lessIS7_ENS5_ISt4pairIKS7_jEEEE", !35, i64 0}
!35 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_jESt10_Select1stISA_ESt4lessIS7_ENS5_ISA_EEE", !36, i64 0}
!36 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_jESt10_Select1stISA_ESt4lessIS7_ENS5_ISA_EEE13_Rb_tree_implISE_Lb1EEE", !37, i64 0, !27, i64 8, !29, i64 16}
!37 = !{!"_ZTSN7glslang14pool_allocatorISt13_Rb_tree_nodeISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_IcEEEEjEEEE", !10, i64 0}
!38 = !{!"_ZTS11EShMessages", !11, i64 0}
!39 = distinct !{!39, !14}


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