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

; 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::TConstUnionArray" = type { ptr, ptr }
%"class.glslang::TVector.95" = type { %"class.std::vector.96" }
%"class.std::vector.96" = type { %"struct.std::_Vector_base.97" }
%"struct.std::_Vector_base.97" = type { %"struct.std::_Vector_base<glslang::TConstUnionArray, glslang::pool_allocator<glslang::TConstUnionArray>>::_Vector_impl" }
%"struct.std::_Vector_base<glslang::TConstUnionArray, glslang::pool_allocator<glslang::TConstUnionArray>>::_Vector_impl" = type { %"class.glslang::pool_allocator.98", %"struct.std::_Vector_base<glslang::TConstUnionArray, glslang::pool_allocator<glslang::TConstUnionArray>>::_Vector_impl_data" }
%"class.glslang::pool_allocator.98" = type { ptr }
%"struct.std::_Vector_base<glslang::TConstUnionArray, glslang::pool_allocator<glslang::TConstUnionArray>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.glslang::TConstUnion" = type <{ %union.anon.0, i32, [4 x i8] }>
%union.anon.0 = type { i64 }
%"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 }>

@.str = external hidden unnamed_addr constant [27 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [110 x i8], align 1
@__PRETTY_FUNCTION__._ZN7glslang13TIntermediate4foldEPNS_16TIntermAggregateE = external hidden unnamed_addr constant [63 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef) #1 align 2

; 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) #3

; Function Attrs: mustprogress uwtable
declare dso_local { i64, i32 } @_ZNK7glslang11TConstUnionmiERKS0_(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 8 dereferenceable(12)) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { i64, i32 } @_ZNK7glslang11TConstUnionmlERKS0_(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 8 dereferenceable(12)) #2 align 2

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12), double noundef) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN7glslang11TConstUnion9setIConstEi(ptr noundef nonnull align 8 dereferenceable(12), i32 noundef) #1 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN7glslang11TConstUnion9setUConstEj(ptr noundef nonnull align 8 dereferenceable(12), i32 noundef) #1 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN7glslang11TConstUnion10setI8ConstEa(ptr noundef nonnull align 8 dereferenceable(12), i8 noundef signext) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef signext i8 @_ZNK7glslang11TConstUnion10getI8ConstEv(ptr noundef nonnull align 8 dereferenceable(12)) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN7glslang11TConstUnion10setU8ConstEh(ptr noundef nonnull align 8 dereferenceable(12), i8 noundef zeroext) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i8 @_ZNK7glslang11TConstUnion10getU8ConstEv(ptr noundef nonnull align 8 dereferenceable(12)) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN7glslang11TConstUnion11setI16ConstEs(ptr noundef nonnull align 8 dereferenceable(12), i16 noundef signext) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef signext i16 @_ZNK7glslang11TConstUnion11getI16ConstEv(ptr noundef nonnull align 8 dereferenceable(12)) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN7glslang11TConstUnion11setU16ConstEt(ptr noundef nonnull align 8 dereferenceable(12), i16 noundef zeroext) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i16 @_ZNK7glslang11TConstUnion11getU16ConstEv(ptr noundef nonnull align 8 dereferenceable(12)) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN7glslang11TConstUnion11setI64ConstEx(ptr noundef nonnull align 8 dereferenceable(12), i64 noundef) #1 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN7glslang11TConstUnion11setU64ConstEy(ptr noundef nonnull align 8 dereferenceable(12), i64 noundef) #1 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN7glslang11TConstUnion9setBConstEb(ptr noundef nonnull align 8 dereferenceable(12), i1 noundef zeroext) #1 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN11TIntermNodenwEm(i64 noundef) #2 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN11TIntermNodedlEPv(ptr noundef) #1 align 2

; Function Attrs: nounwind
declare double @sqrt(double noundef) #6

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.floor.f64(double) #4

; Function Attrs: mustprogress uwtable
define dso_local noundef ptr @_ZN7glslang13TIntermediate4foldEPNS_16TIntermAggregateE(ptr noundef nonnull align 8 dereferenceable(1784) %0, ptr noundef %1) #2 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i8, align 1
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca %"class.glslang::TConstUnionArray", align 8
  %15 = alloca %"class.glslang::TVector.95", align 8
  %16 = alloca ptr, align 8
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca double, align 8
  %27 = alloca double, align 8
  %28 = alloca double, align 8
  %29 = alloca double, align 8
  %30 = alloca double, align 8
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i8, align 1
  %36 = alloca i8, align 1
  %37 = alloca i8, align 1
  %38 = alloca i8, align 1
  %39 = alloca i16, align 2
  %40 = alloca i16, align 2
  %41 = alloca i16, align 2
  %42 = alloca i16, align 2
  %43 = alloca i64, align 8
  %44 = alloca i64, align 8
  %45 = alloca i64, align 8
  %46 = alloca i64, align 8
  %47 = alloca double, align 8
  %48 = alloca double, align 8
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca i8, align 1
  %54 = alloca i8, align 1
  %55 = alloca i8, align 1
  %56 = alloca i8, align 1
  %57 = alloca i16, align 2
  %58 = alloca i16, align 2
  %59 = alloca i16, align 2
  %60 = alloca i16, align 2
  %61 = alloca i64, align 8
  %62 = alloca i64, align 8
  %63 = alloca i64, align 8
  %64 = alloca i64, align 8
  %65 = alloca double, align 8
  %66 = alloca double, align 8
  %67 = alloca double, align 8
  %68 = alloca i32, align 4
  %69 = alloca i32, align 4
  %70 = alloca i32, align 4
  %71 = alloca i8, align 1
  %72 = alloca i8, align 1
  %73 = alloca i8, align 1
  %74 = alloca i8, align 1
  %75 = alloca i8, align 1
  %76 = alloca i8, align 1
  %77 = alloca i16, align 2
  %78 = alloca i16, align 2
  %79 = alloca i16, align 2
  %80 = alloca i16, align 2
  %81 = alloca i16, align 2
  %82 = alloca i16, align 2
  %83 = alloca i32, align 4
  %84 = alloca i32, align 4
  %85 = alloca i32, align 4
  %86 = alloca i64, align 8
  %87 = alloca i64, align 8
  %88 = alloca i64, align 8
  %89 = alloca i64, align 8
  %90 = alloca i64, align 8
  %91 = alloca i64, align 8
  %92 = alloca double, align 8
  %93 = alloca i32, align 4
  %94 = alloca double, align 8
  %95 = alloca double, align 8
  %96 = alloca i32, align 4
  %97 = alloca double, align 8
  %98 = alloca %"class.glslang::TConstUnion", align 8
  %99 = alloca %"class.glslang::TConstUnion", align 8
  %100 = alloca { i64, i32 }, align 8
  %101 = alloca %"class.glslang::TConstUnion", align 8
  %102 = alloca { i64, i32 }, align 8
  %103 = alloca { i64, i32 }, align 8
  %104 = alloca %"class.glslang::TConstUnion", align 8
  %105 = alloca %"class.glslang::TConstUnion", align 8
  %106 = alloca { i64, i32 }, align 8
  %107 = alloca %"class.glslang::TConstUnion", align 8
  %108 = alloca { i64, i32 }, align 8
  %109 = alloca { i64, i32 }, align 8
  %110 = alloca %"class.glslang::TConstUnion", align 8
  %111 = alloca %"class.glslang::TConstUnion", align 8
  %112 = alloca { i64, i32 }, align 8
  %113 = alloca %"class.glslang::TConstUnion", align 8
  %114 = alloca { i64, i32 }, align 8
  %115 = alloca { i64, i32 }, align 8
  %116 = alloca i32, align 4
  %117 = alloca i32, align 4
  %118 = alloca double, align 8
  %119 = alloca double, align 8
  %120 = alloca i32, align 4
  %121 = alloca i32, align 4
  %122 = alloca i32, align 4
  %123 = alloca i32, align 4
  %124 = alloca i32, align 4
  %125 = alloca i32, align 4
  %126 = alloca %"class.glslang::TConstUnion", align 8
  %127 = alloca { i64, i32 }, align 8
  %128 = alloca ptr, align 8
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  %129 = load ptr, ptr %4, align 8
  %130 = load ptr, ptr %5, align 8, !tbaa !5
  %131 = icmp eq ptr %130, null
  br i1 %131, label %132, label %134

132:                                              ; preds = %2
  %133 = load ptr, ptr %5, align 8, !tbaa !5
  store ptr %133, ptr %3, align 8
  br label %2317

134:                                              ; preds = %2
  %135 = load ptr, ptr %5, align 8, !tbaa !5
  %136 = call noundef zeroext i1 @_ZN7glslang13TIntermediate16areAllChildConstEPNS_16TIntermAggregateE(ptr noundef nonnull align 8 dereferenceable(1784) %129, ptr noundef %135)
  br i1 %136, label %139, label %137

137:                                              ; preds = %134
  %138 = load ptr, ptr %5, align 8, !tbaa !5
  store ptr %138, ptr %3, align 8
  br label %2317

139:                                              ; preds = %134
  %140 = load ptr, ptr %5, align 8, !tbaa !5
  %141 = call noundef zeroext i1 @_ZNK7glslang15TIntermOperator13isConstructorEv(ptr noundef nonnull align 8 dereferenceable(184) %140)
  br i1 %141, label %142, label %145

142:                                              ; preds = %139
  %143 = load ptr, ptr %5, align 8, !tbaa !5
  %144 = call noundef ptr @_ZN7glslang13TIntermediate15foldConstructorEPNS_16TIntermAggregateE(ptr noundef nonnull align 8 dereferenceable(1784) %129, ptr noundef %143)
  store ptr %144, ptr %3, align 8
  br label %2317

145:                                              ; preds = %139
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #9
  %146 = load ptr, ptr %5, align 8, !tbaa !5
  %147 = load ptr, ptr %146, align 8, !tbaa !9
  %148 = getelementptr inbounds ptr, ptr %147, i64 50
  %149 = load ptr, ptr %148, align 8
  %150 = call noundef nonnull align 8 dereferenceable(32) ptr %149(ptr noundef nonnull align 8 dereferenceable(352) %146)
  store ptr %150, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %7) #9
  store i8 0, ptr %7, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #9
  %151 = load ptr, ptr %5, align 8, !tbaa !5
  %152 = call noundef i32 @_ZNK7glslang15TIntermOperator5getOpEv(ptr noundef nonnull align 8 dereferenceable(184) %151)
  switch i32 %152, label %278 [
    i32 193, label %153
    i32 200, label %153
    i32 216, label %153
    i32 217, label %153
    i32 219, label %153
    i32 158, label %153
    i32 218, label %153
    i32 168, label %153
    i32 169, label %153
    i32 170, label %153
    i32 171, label %153
    i32 166, label %153
    i32 167, label %153
    i32 274, label %166
    i32 277, label %166
    i32 278, label %166
    i32 276, label %166
    i32 272, label %179
    i32 273, label %179
    i32 296, label %180
    i32 220, label %212
    i32 221, label %245
  ]

153:                                              ; preds = %145, %145, %145, %145, %145, %145, %145, %145, %145, %145, %145, %145, %145
  store i8 1, ptr %7, align 1, !tbaa !11
  %154 = load ptr, ptr %6, align 8, !tbaa !5
  %155 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %154, i64 noundef 0) #9
  %156 = load ptr, ptr %155, align 8, !tbaa !5
  %157 = load ptr, ptr %156, align 8, !tbaa !9
  %158 = getelementptr inbounds ptr, ptr %157, i64 5
  %159 = load ptr, ptr %158, align 8
  %160 = call noundef ptr %159(ptr noundef nonnull align 8 dereferenceable(32) %156)
  %161 = load ptr, ptr %160, align 8, !tbaa !9
  %162 = getelementptr inbounds ptr, ptr %161, i64 30
  %163 = load ptr, ptr %162, align 8
  %164 = call noundef nonnull align 8 dereferenceable(144) ptr %163(ptr noundef nonnull align 8 dereferenceable(176) %160)
  %165 = call noundef i32 @_ZNK7glslang5TType20computeNumComponentsEv(ptr noundef nonnull align 8 dereferenceable(144) %164)
  store i32 %165, ptr %8, align 4, !tbaa !13
  br label %280

166:                                              ; preds = %145, %145, %145, %145
  %167 = load ptr, ptr %6, align 8, !tbaa !5
  %168 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %167, i64 noundef 0) #9
  %169 = load ptr, ptr %168, align 8, !tbaa !5
  %170 = load ptr, ptr %169, align 8, !tbaa !9
  %171 = getelementptr inbounds ptr, ptr %170, i64 5
  %172 = load ptr, ptr %171, align 8
  %173 = call noundef ptr %172(ptr noundef nonnull align 8 dereferenceable(32) %169)
  %174 = load ptr, ptr %173, align 8, !tbaa !9
  %175 = getelementptr inbounds ptr, ptr %174, i64 30
  %176 = load ptr, ptr %175, align 8
  %177 = call noundef nonnull align 8 dereferenceable(144) ptr %176(ptr noundef nonnull align 8 dereferenceable(176) %173)
  %178 = call noundef i32 @_ZNK7glslang5TType20computeNumComponentsEv(ptr noundef nonnull align 8 dereferenceable(144) %177)
  store i32 %178, ptr %8, align 4, !tbaa !13
  br label %280

179:                                              ; preds = %145, %145
  store i32 1, ptr %8, align 4, !tbaa !13
  br label %280

180:                                              ; preds = %145
  %181 = load ptr, ptr %6, align 8, !tbaa !5
  %182 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %181, i64 noundef 0) #9
  %183 = load ptr, ptr %182, align 8, !tbaa !5
  %184 = load ptr, ptr %183, align 8, !tbaa !9
  %185 = getelementptr inbounds ptr, ptr %184, i64 3
  %186 = load ptr, ptr %185, align 8
  %187 = call noundef ptr %186(ptr noundef nonnull align 8 dereferenceable(32) %183)
  %188 = load ptr, ptr %187, align 8, !tbaa !9
  %189 = getelementptr inbounds ptr, ptr %188, i64 30
  %190 = load ptr, ptr %189, align 8
  %191 = call noundef nonnull align 8 dereferenceable(144) ptr %190(ptr noundef nonnull align 8 dereferenceable(176) %187)
  %192 = load ptr, ptr %191, align 8, !tbaa !9
  %193 = getelementptr inbounds ptr, ptr %192, i64 12
  %194 = load ptr, ptr %193, align 8
  %195 = call noundef i32 %194(ptr noundef nonnull align 8 dereferenceable(144) %191)
  %196 = load ptr, ptr %6, align 8, !tbaa !5
  %197 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %196, i64 noundef 1) #9
  %198 = load ptr, ptr %197, align 8, !tbaa !5
  %199 = load ptr, ptr %198, align 8, !tbaa !9
  %200 = getelementptr inbounds ptr, ptr %199, i64 3
  %201 = load ptr, ptr %200, align 8
  %202 = call noundef ptr %201(ptr noundef nonnull align 8 dereferenceable(32) %198)
  %203 = load ptr, ptr %202, align 8, !tbaa !9
  %204 = getelementptr inbounds ptr, ptr %203, i64 30
  %205 = load ptr, ptr %204, align 8
  %206 = call noundef nonnull align 8 dereferenceable(144) ptr %205(ptr noundef nonnull align 8 dereferenceable(176) %202)
  %207 = load ptr, ptr %206, align 8, !tbaa !9
  %208 = getelementptr inbounds ptr, ptr %207, i64 12
  %209 = load ptr, ptr %208, align 8
  %210 = call noundef i32 %209(ptr noundef nonnull align 8 dereferenceable(144) %206)
  %211 = mul nsw i32 %195, %210
  store i32 %211, ptr %8, align 4, !tbaa !13
  br label %280

212:                                              ; preds = %145
  store i8 1, ptr %7, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #9
  %213 = load ptr, ptr %6, align 8, !tbaa !5
  %214 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %213, i64 noundef 0) #9
  %215 = load ptr, ptr %214, align 8, !tbaa !5
  %216 = load ptr, ptr %215, align 8, !tbaa !9
  %217 = getelementptr inbounds ptr, ptr %216, i64 3
  %218 = load ptr, ptr %217, align 8
  %219 = call noundef ptr %218(ptr noundef nonnull align 8 dereferenceable(32) %215)
  %220 = load ptr, ptr %219, align 8, !tbaa !9
  %221 = getelementptr inbounds ptr, ptr %220, i64 30
  %222 = load ptr, ptr %221, align 8
  %223 = call noundef nonnull align 8 dereferenceable(144) ptr %222(ptr noundef nonnull align 8 dereferenceable(176) %219)
  %224 = load ptr, ptr %223, align 8, !tbaa !9
  %225 = getelementptr inbounds ptr, ptr %224, i64 12
  %226 = load ptr, ptr %225, align 8
  %227 = call noundef i32 %226(ptr noundef nonnull align 8 dereferenceable(144) %223)
  store i32 %227, ptr %9, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #9
  %228 = load ptr, ptr %6, align 8, !tbaa !5
  %229 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %228, i64 noundef 1) #9
  %230 = load ptr, ptr %229, align 8, !tbaa !5
  %231 = load ptr, ptr %230, align 8, !tbaa !9
  %232 = getelementptr inbounds ptr, ptr %231, i64 3
  %233 = load ptr, ptr %232, align 8
  %234 = call noundef ptr %233(ptr noundef nonnull align 8 dereferenceable(32) %230)
  %235 = load ptr, ptr %234, align 8, !tbaa !9
  %236 = getelementptr inbounds ptr, ptr %235, i64 30
  %237 = load ptr, ptr %236, align 8
  %238 = call noundef nonnull align 8 dereferenceable(144) ptr %237(ptr noundef nonnull align 8 dereferenceable(176) %234)
  %239 = load ptr, ptr %238, align 8, !tbaa !9
  %240 = getelementptr inbounds ptr, ptr %239, i64 12
  %241 = load ptr, ptr %240, align 8
  %242 = call noundef i32 %241(ptr noundef nonnull align 8 dereferenceable(144) %238)
  store i32 %242, ptr %10, align 4, !tbaa !13
  %243 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %9, ptr noundef nonnull align 4 dereferenceable(4) %10)
  %244 = load i32, ptr %243, align 4, !tbaa !13
  store i32 %244, ptr %8, align 4, !tbaa !13
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #9
  br label %280

245:                                              ; preds = %145
  store i8 1, ptr %7, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #9
  %246 = load ptr, ptr %6, align 8, !tbaa !5
  %247 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %246, i64 noundef 0) #9
  %248 = load ptr, ptr %247, align 8, !tbaa !5
  %249 = load ptr, ptr %248, align 8, !tbaa !9
  %250 = getelementptr inbounds ptr, ptr %249, i64 3
  %251 = load ptr, ptr %250, align 8
  %252 = call noundef ptr %251(ptr noundef nonnull align 8 dereferenceable(32) %248)
  %253 = load ptr, ptr %252, align 8, !tbaa !9
  %254 = getelementptr inbounds ptr, ptr %253, i64 30
  %255 = load ptr, ptr %254, align 8
  %256 = call noundef nonnull align 8 dereferenceable(144) ptr %255(ptr noundef nonnull align 8 dereferenceable(176) %252)
  %257 = load ptr, ptr %256, align 8, !tbaa !9
  %258 = getelementptr inbounds ptr, ptr %257, i64 12
  %259 = load ptr, ptr %258, align 8
  %260 = call noundef i32 %259(ptr noundef nonnull align 8 dereferenceable(144) %256)
  store i32 %260, ptr %11, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #9
  %261 = load ptr, ptr %6, align 8, !tbaa !5
  %262 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %261, i64 noundef 2) #9
  %263 = load ptr, ptr %262, align 8, !tbaa !5
  %264 = load ptr, ptr %263, align 8, !tbaa !9
  %265 = getelementptr inbounds ptr, ptr %264, i64 3
  %266 = load ptr, ptr %265, align 8
  %267 = call noundef ptr %266(ptr noundef nonnull align 8 dereferenceable(32) %263)
  %268 = load ptr, ptr %267, align 8, !tbaa !9
  %269 = getelementptr inbounds ptr, ptr %268, i64 30
  %270 = load ptr, ptr %269, align 8
  %271 = call noundef nonnull align 8 dereferenceable(144) ptr %270(ptr noundef nonnull align 8 dereferenceable(176) %267)
  %272 = load ptr, ptr %271, align 8, !tbaa !9
  %273 = getelementptr inbounds ptr, ptr %272, i64 12
  %274 = load ptr, ptr %273, align 8
  %275 = call noundef i32 %274(ptr noundef nonnull align 8 dereferenceable(144) %271)
  store i32 %275, ptr %12, align 4, !tbaa !13
  %276 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %11, ptr noundef nonnull align 4 dereferenceable(4) %12)
  %277 = load i32, ptr %276, align 4, !tbaa !13
  store i32 %277, ptr %8, align 4, !tbaa !13
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #9
  br label %280

278:                                              ; preds = %145
  %279 = load ptr, ptr %5, align 8, !tbaa !5
  store ptr %279, ptr %3, align 8
  store i32 1, ptr %13, align 4
  br label %2316

280:                                              ; preds = %245, %212, %180, %179, %166, %153
  call void @llvm.lifetime.start.p0(i64 16, ptr %14) #9
  %281 = load i32, ptr %8, align 4, !tbaa !13
  call void @_ZN7glslang16TConstUnionArrayC2Ei(ptr noundef nonnull align 8 dereferenceable(16) %14, i32 noundef %281)
  call void @llvm.lifetime.start.p0(i64 32, ptr %15) #9
  invoke void @_ZN7glslang7TVectorINS_16TConstUnionArrayEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %282 unwind label %290

282:                                              ; preds = %280
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #9
  store i32 0, ptr %18, align 4, !tbaa !13
  br label %283

283:                                              ; preds = %308, %282
  %284 = load i32, ptr %18, align 4, !tbaa !13
  %285 = zext i32 %284 to i64
  %286 = load ptr, ptr %6, align 8, !tbaa !5
  %287 = call noundef i64 @_ZNKSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %286) #9
  %288 = icmp ult i64 %285, %287
  br i1 %288, label %294, label %289

289:                                              ; preds = %283
  store i32 3, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #9
  br label %315

290:                                              ; preds = %280
  %291 = landingpad { ptr, i32 }
          cleanup
  %292 = extractvalue { ptr, i32 } %291, 0
  store ptr %292, ptr %16, align 8
  %293 = extractvalue { ptr, i32 } %291, 1
  store i32 %293, ptr %17, align 4
  br label %2315

294:                                              ; preds = %283
  %295 = load ptr, ptr %6, align 8, !tbaa !5
  %296 = load i32, ptr %18, align 4, !tbaa !13
  %297 = zext i32 %296 to i64
  %298 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %295, i64 noundef %297) #9
  %299 = load ptr, ptr %298, align 8, !tbaa !5
  %300 = load ptr, ptr %299, align 8, !tbaa !9
  %301 = getelementptr inbounds ptr, ptr %300, i64 5
  %302 = load ptr, ptr %301, align 8
  %303 = invoke noundef ptr %302(ptr noundef nonnull align 8 dereferenceable(32) %299)
          to label %304 unwind label %311

304:                                              ; preds = %294
  %305 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK7glslang20TIntermConstantUnion13getConstArrayEv(ptr noundef nonnull align 8 dereferenceable(193) %303)
          to label %306 unwind label %311

306:                                              ; preds = %304
  invoke void @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull align 8 dereferenceable(16) %305)
          to label %307 unwind label %311

307:                                              ; preds = %306
  br label %308

308:                                              ; preds = %307
  %309 = load i32, ptr %18, align 4, !tbaa !13
  %310 = add i32 %309, 1
  store i32 %310, ptr %18, align 4, !tbaa !13
  br label %283, !llvm.loop !15

311:                                              ; preds = %306, %304, %294
  %312 = landingpad { ptr, i32 }
          cleanup
  %313 = extractvalue { ptr, i32 } %312, 0
  store ptr %313, ptr %16, align 8
  %314 = extractvalue { ptr, i32 } %312, 1
  store i32 %314, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #9
  br label %2314

315:                                              ; preds = %289
  %316 = load i8, ptr %7, align 1, !tbaa !11, !range !17, !noundef !18
  %317 = trunc i8 %316 to i1
  br i1 %317, label %318, label %1846

318:                                              ; preds = %315
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #9
  store i32 0, ptr %19, align 4, !tbaa !13
  br label %319

319:                                              ; preds = %1837, %318
  %320 = load i32, ptr %19, align 4, !tbaa !13
  %321 = load i32, ptr %8, align 4, !tbaa !13
  %322 = icmp slt i32 %320, %321
  br i1 %322, label %324, label %323

323:                                              ; preds = %319
  store i32 6, ptr %13, align 4
  br label %1843

324:                                              ; preds = %319
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #9
  %325 = load ptr, ptr %6, align 8, !tbaa !5
  %326 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %325, i64 noundef 0) #9
  %327 = load ptr, ptr %326, align 8, !tbaa !5
  %328 = load ptr, ptr %327, align 8, !tbaa !9
  %329 = getelementptr inbounds ptr, ptr %328, i64 3
  %330 = load ptr, ptr %329, align 8
  %331 = invoke noundef ptr %330(ptr noundef nonnull align 8 dereferenceable(32) %327)
          to label %332 unwind label %373

332:                                              ; preds = %324
  %333 = load ptr, ptr %331, align 8, !tbaa !9
  %334 = getelementptr inbounds ptr, ptr %333, i64 30
  %335 = load ptr, ptr %334, align 8
  %336 = invoke noundef nonnull align 8 dereferenceable(144) ptr %335(ptr noundef nonnull align 8 dereferenceable(176) %331)
          to label %337 unwind label %373

337:                                              ; preds = %332
  %338 = load ptr, ptr %336, align 8, !tbaa !9
  %339 = getelementptr inbounds ptr, ptr %338, i64 12
  %340 = load ptr, ptr %339, align 8
  %341 = invoke noundef i32 %340(ptr noundef nonnull align 8 dereferenceable(144) %336)
          to label %342 unwind label %373

342:                                              ; preds = %337
  %343 = sub nsw i32 %341, 1
  store i32 %343, ptr %21, align 4, !tbaa !13
  %344 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %19, ptr noundef nonnull align 4 dereferenceable(4) %21)
          to label %345 unwind label %373

345:                                              ; preds = %342
  %346 = load i32, ptr %344, align 4, !tbaa !13
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #9
  store i32 %346, ptr %20, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #9
  store i32 0, ptr %22, align 4, !tbaa !13
  %347 = load ptr, ptr %6, align 8, !tbaa !5
  %348 = call noundef i64 @_ZNKSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %347) #9
  %349 = icmp ugt i64 %348, 1
  br i1 %349, label %350, label %381

350:                                              ; preds = %345
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #9
  %351 = load ptr, ptr %6, align 8, !tbaa !5
  %352 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %351, i64 noundef 1) #9
  %353 = load ptr, ptr %352, align 8, !tbaa !5
  %354 = load ptr, ptr %353, align 8, !tbaa !9
  %355 = getelementptr inbounds ptr, ptr %354, i64 3
  %356 = load ptr, ptr %355, align 8
  %357 = invoke noundef ptr %356(ptr noundef nonnull align 8 dereferenceable(32) %353)
          to label %358 unwind label %377

358:                                              ; preds = %350
  %359 = load ptr, ptr %357, align 8, !tbaa !9
  %360 = getelementptr inbounds ptr, ptr %359, i64 30
  %361 = load ptr, ptr %360, align 8
  %362 = invoke noundef nonnull align 8 dereferenceable(144) ptr %361(ptr noundef nonnull align 8 dereferenceable(176) %357)
          to label %363 unwind label %377

363:                                              ; preds = %358
  %364 = load ptr, ptr %362, align 8, !tbaa !9
  %365 = getelementptr inbounds ptr, ptr %364, i64 12
  %366 = load ptr, ptr %365, align 8
  %367 = invoke noundef i32 %366(ptr noundef nonnull align 8 dereferenceable(144) %362)
          to label %368 unwind label %377

368:                                              ; preds = %363
  %369 = sub nsw i32 %367, 1
  store i32 %369, ptr %23, align 4, !tbaa !13
  %370 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %19, ptr noundef nonnull align 4 dereferenceable(4) %23)
          to label %371 unwind label %377

371:                                              ; preds = %368
  %372 = load i32, ptr %370, align 4, !tbaa !13
  store i32 %372, ptr %22, align 4, !tbaa !13
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #9
  br label %381

373:                                              ; preds = %342, %337, %332, %324
  %374 = landingpad { ptr, i32 }
          cleanup
  %375 = extractvalue { ptr, i32 } %374, 0
  store ptr %375, ptr %16, align 8
  %376 = extractvalue { ptr, i32 } %374, 1
  store i32 %376, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #9
  br label %1842

377:                                              ; preds = %368, %363, %358, %350
  %378 = landingpad { ptr, i32 }
          cleanup
  %379 = extractvalue { ptr, i32 } %378, 0
  store ptr %379, ptr %16, align 8
  %380 = extractvalue { ptr, i32 } %378, 1
  store i32 %380, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #9
  br label %1841

381:                                              ; preds = %371, %345
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #9
  store i32 0, ptr %24, align 4, !tbaa !13
  %382 = load ptr, ptr %6, align 8, !tbaa !5
  %383 = call noundef i64 @_ZNKSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %382) #9
  %384 = icmp ugt i64 %383, 2
  br i1 %384, label %385, label %412

385:                                              ; preds = %381
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #9
  %386 = load ptr, ptr %6, align 8, !tbaa !5
  %387 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %386, i64 noundef 2) #9
  %388 = load ptr, ptr %387, align 8, !tbaa !5
  %389 = load ptr, ptr %388, align 8, !tbaa !9
  %390 = getelementptr inbounds ptr, ptr %389, i64 3
  %391 = load ptr, ptr %390, align 8
  %392 = invoke noundef ptr %391(ptr noundef nonnull align 8 dereferenceable(32) %388)
          to label %393 unwind label %408

393:                                              ; preds = %385
  %394 = load ptr, ptr %392, align 8, !tbaa !9
  %395 = getelementptr inbounds ptr, ptr %394, i64 30
  %396 = load ptr, ptr %395, align 8
  %397 = invoke noundef nonnull align 8 dereferenceable(144) ptr %396(ptr noundef nonnull align 8 dereferenceable(176) %392)
          to label %398 unwind label %408

398:                                              ; preds = %393
  %399 = load ptr, ptr %397, align 8, !tbaa !9
  %400 = getelementptr inbounds ptr, ptr %399, i64 12
  %401 = load ptr, ptr %400, align 8
  %402 = invoke noundef i32 %401(ptr noundef nonnull align 8 dereferenceable(144) %397)
          to label %403 unwind label %408

403:                                              ; preds = %398
  %404 = sub nsw i32 %402, 1
  store i32 %404, ptr %25, align 4, !tbaa !13
  %405 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %19, ptr noundef nonnull align 4 dereferenceable(4) %25)
          to label %406 unwind label %408

406:                                              ; preds = %403
  %407 = load i32, ptr %405, align 4, !tbaa !13
  store i32 %407, ptr %24, align 4, !tbaa !13
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #9
  br label %412

408:                                              ; preds = %403, %398, %393, %385
  %409 = landingpad { ptr, i32 }
          cleanup
  %410 = extractvalue { ptr, i32 } %409, 0
  store ptr %410, ptr %16, align 8
  %411 = extractvalue { ptr, i32 } %409, 1
  store i32 %411, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #9
  br label %1840

412:                                              ; preds = %406, %381
  %413 = load ptr, ptr %5, align 8, !tbaa !5
  %414 = invoke noundef i32 @_ZNK7glslang15TIntermOperator5getOpEv(ptr noundef nonnull align 8 dereferenceable(184) %413)
          to label %415 unwind label %416

415:                                              ; preds = %412
  switch i32 %414, label %1831 [
    i32 193, label %420
    i32 200, label %441
    i32 158, label %462
    i32 216, label %505
    i32 217, label %809
    i32 218, label %1113
    i32 168, label %1543
    i32 169, label %1561
    i32 170, label %1579
    i32 171, label %1598
    i32 166, label %1617
    i32 167, label %1635
    i32 219, label %1653
    i32 220, label %1753
    i32 221, label %1776
  ]

416:                                              ; preds = %1771, %1769, %1764, %1762, %1757, %1753, %1748, %1746, %1741, %1739, %1733, %1731, %1726, %1724, %1719, %1715, %1712, %1709, %1704, %1701, %1696, %1693, %1688, %1684, %1677, %1669, %1661, %1653, %1651, %1649, %1644, %1639, %1635, %1633, %1631, %1626, %1621, %1617, %1614, %1612, %1607, %1602, %1598, %1595, %1593, %1588, %1583, %1579, %1577, %1575, %1570, %1565, %1561, %1559, %1557, %1552, %1547, %1543, %1495, %1449, %1403, %1357, %1311, %1265, %1219, %1173, %1127, %1121, %1113, %1079, %1047, %1015, %983, %951, %919, %887, %855, %823, %817, %809, %775, %743, %711, %679, %647, %615, %583, %551, %519, %513, %505, %459, %457, %452, %450, %445, %441, %438, %436, %431, %429, %424, %420, %412
  %417 = landingpad { ptr, i32 }
          cleanup
  %418 = extractvalue { ptr, i32 } %417, 0
  store ptr %418, ptr %16, align 8
  %419 = extractvalue { ptr, i32 } %417, 1
  store i32 %419, ptr %17, align 4
  br label %1840

420:                                              ; preds = %415
  %421 = load i32, ptr %19, align 4, !tbaa !13
  %422 = sext i32 %421 to i64
  %423 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef %422)
          to label %424 unwind label %416

424:                                              ; preds = %420
  %425 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 0) #9
  %426 = load i32, ptr %20, align 4, !tbaa !13
  %427 = sext i32 %426 to i64
  %428 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %425, i64 noundef %427)
          to label %429 unwind label %416

429:                                              ; preds = %424
  %430 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %428)
          to label %431 unwind label %416

431:                                              ; preds = %429
  %432 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 1) #9
  %433 = load i32, ptr %22, align 4, !tbaa !13
  %434 = sext i32 %433 to i64
  %435 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %432, i64 noundef %434)
          to label %436 unwind label %416

436:                                              ; preds = %431
  %437 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %435)
          to label %438 unwind label %416

438:                                              ; preds = %436
  %439 = call double @atan2(double noundef %430, double noundef %437) #9
  invoke void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %423, double noundef %439)
          to label %440 unwind label %416

440:                                              ; preds = %438
  br label %1833

441:                                              ; preds = %415
  %442 = load i32, ptr %19, align 4, !tbaa !13
  %443 = sext i32 %442 to i64
  %444 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef %443)
          to label %445 unwind label %416

445:                                              ; preds = %441
  %446 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 0) #9
  %447 = load i32, ptr %20, align 4, !tbaa !13
  %448 = sext i32 %447 to i64
  %449 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %446, i64 noundef %448)
          to label %450 unwind label %416

450:                                              ; preds = %445
  %451 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %449)
          to label %452 unwind label %416

452:                                              ; preds = %450
  %453 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 1) #9
  %454 = load i32, ptr %22, align 4, !tbaa !13
  %455 = sext i32 %454 to i64
  %456 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %453, i64 noundef %455)
          to label %457 unwind label %416

457:                                              ; preds = %452
  %458 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %456)
          to label %459 unwind label %416

459:                                              ; preds = %457
  %460 = call double @pow(double noundef %451, double noundef %458) #9
  invoke void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %444, double noundef %460)
          to label %461 unwind label %416

461:                                              ; preds = %459
  br label %1833

462:                                              ; preds = %415
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #9
  %463 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 0) #9
  %464 = load i32, ptr %20, align 4, !tbaa !13
  %465 = sext i32 %464 to i64
  %466 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %463, i64 noundef %465)
          to label %467 unwind label %491

467:                                              ; preds = %462
  %468 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %466)
          to label %469 unwind label %491

469:                                              ; preds = %467
  store double %468, ptr %26, align 8, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #9
  %470 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 1) #9
  %471 = load i32, ptr %22, align 4, !tbaa !13
  %472 = sext i32 %471 to i64
  %473 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %470, i64 noundef %472)
          to label %474 unwind label %495

474:                                              ; preds = %469
  %475 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %473)
          to label %476 unwind label %495

476:                                              ; preds = %474
  store double %475, ptr %27, align 8, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #9
  %477 = load double, ptr %26, align 8, !tbaa !19
  %478 = load double, ptr %27, align 8, !tbaa !19
  %479 = load double, ptr %26, align 8, !tbaa !19
  %480 = load double, ptr %27, align 8, !tbaa !19
  %481 = fdiv double %479, %480
  %482 = call double @llvm.floor.f64(double %481)
  %483 = fneg double %478
  %484 = call double @llvm.fmuladd.f64(double %483, double %482, double %477)
  store double %484, ptr %28, align 8, !tbaa !19
  %485 = load i32, ptr %19, align 4, !tbaa !13
  %486 = sext i32 %485 to i64
  %487 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef %486)
          to label %488 unwind label %499

488:                                              ; preds = %476
  %489 = load double, ptr %28, align 8, !tbaa !19
  invoke void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %487, double noundef %489)
          to label %490 unwind label %499

490:                                              ; preds = %488
  store i32 9, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #9
  br label %1833

491:                                              ; preds = %467, %462
  %492 = landingpad { ptr, i32 }
          cleanup
  %493 = extractvalue { ptr, i32 } %492, 0
  store ptr %493, ptr %16, align 8
  %494 = extractvalue { ptr, i32 } %492, 1
  store i32 %494, ptr %17, align 4
  br label %504

495:                                              ; preds = %474, %469
  %496 = landingpad { ptr, i32 }
          cleanup
  %497 = extractvalue { ptr, i32 } %496, 0
  store ptr %497, ptr %16, align 8
  %498 = extractvalue { ptr, i32 } %496, 1
  store i32 %498, ptr %17, align 4
  br label %503

499:                                              ; preds = %488, %476
  %500 = landingpad { ptr, i32 }
          cleanup
  %501 = extractvalue { ptr, i32 } %500, 0
  store ptr %501, ptr %16, align 8
  %502 = extractvalue { ptr, i32 } %500, 1
  store i32 %502, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #9
  br label %503

503:                                              ; preds = %499, %495
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #9
  br label %504

504:                                              ; preds = %503, %491
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #9
  br label %1840

505:                                              ; preds = %415
  %506 = load ptr, ptr %6, align 8, !tbaa !5
  %507 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %506, i64 noundef 0) #9
  %508 = load ptr, ptr %507, align 8, !tbaa !5
  %509 = load ptr, ptr %508, align 8, !tbaa !9
  %510 = getelementptr inbounds ptr, ptr %509, i64 3
  %511 = load ptr, ptr %510, align 8
  %512 = invoke noundef ptr %511(ptr noundef nonnull align 8 dereferenceable(32) %508)
          to label %513 unwind label %416

513:                                              ; preds = %505
  %514 = load ptr, ptr %512, align 8, !tbaa !9
  %515 = getelementptr inbounds ptr, ptr %514, i64 32
  %516 = load ptr, ptr %515, align 8
  %517 = invoke noundef i32 %516(ptr noundef nonnull align 8 dereferenceable(176) %512)
          to label %518 unwind label %416

518:                                              ; preds = %513
  switch i32 %517, label %807 [
    i32 3, label %519
    i32 1, label %519
    i32 2, label %519
    i32 8, label %551
    i32 9, label %583
    i32 4, label %615
    i32 5, label %647
    i32 6, label %679
    i32 7, label %711
    i32 10, label %743
    i32 11, label %775
  ]

519:                                              ; preds = %518, %518, %518
  %520 = load i32, ptr %19, align 4, !tbaa !13
  %521 = sext i32 %520 to i64
  %522 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef %521)
          to label %523 unwind label %416

523:                                              ; preds = %519
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #9
  %524 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 0) #9
  %525 = load i32, ptr %20, align 4, !tbaa !13
  %526 = sext i32 %525 to i64
  %527 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %524, i64 noundef %526)
          to label %528 unwind label %542

528:                                              ; preds = %523
  %529 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %527)
          to label %530 unwind label %542

530:                                              ; preds = %528
  store double %529, ptr %29, align 8, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #9
  %531 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 1) #9
  %532 = load i32, ptr %22, align 4, !tbaa !13
  %533 = sext i32 %532 to i64
  %534 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %531, i64 noundef %533)
          to label %535 unwind label %546

535:                                              ; preds = %530
  %536 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %534)
          to label %537 unwind label %546

537:                                              ; preds = %535
  store double %536, ptr %30, align 8, !tbaa !19
  %538 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull align 8 dereferenceable(8) %30)
          to label %539 unwind label %546

539:                                              ; preds = %537
  %540 = load double, ptr %538, align 8, !tbaa !19
  invoke void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %522, double noundef %540)
          to label %541 unwind label %546

541:                                              ; preds = %539
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #9
  br label %808

542:                                              ; preds = %528, %523
  %543 = landingpad { ptr, i32 }
          cleanup
  %544 = extractvalue { ptr, i32 } %543, 0
  store ptr %544, ptr %16, align 8
  %545 = extractvalue { ptr, i32 } %543, 1
  store i32 %545, ptr %17, align 4
  br label %550

546:                                              ; preds = %539, %537, %535, %530
  %547 = landingpad { ptr, i32 }
          cleanup
  %548 = extractvalue { ptr, i32 } %547, 0
  store ptr %548, ptr %16, align 8
  %549 = extractvalue { ptr, i32 } %547, 1
  store i32 %549, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #9
  br label %550

550:                                              ; preds = %546, %542
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #9
  br label %1840

551:                                              ; preds = %518
  %552 = load i32, ptr %19, align 4, !tbaa !13
  %553 = sext i32 %552 to i64
  %554 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef %553)
          to label %555 unwind label %416

555:                                              ; preds = %551
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #9
  %556 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 0) #9
  %557 = load i32, ptr %20, align 4, !tbaa !13
  %558 = sext i32 %557 to i64
  %559 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %556, i64 noundef %558)
          to label %560 unwind label %574

560:                                              ; preds = %555
  %561 = invoke noundef i32 @_ZNK7glslang11TConstUnion9getIConstEv(ptr noundef nonnull align 8 dereferenceable(12) %559)
          to label %562 unwind label %574

562:                                              ; preds = %560
  store i32 %561, ptr %31, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #9
  %563 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 1) #9
  %564 = load i32, ptr %22, align 4, !tbaa !13
  %565 = sext i32 %564 to i64
  %566 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %563, i64 noundef %565)
          to label %567 unwind label %578

567:                                              ; preds = %562
  %568 = invoke noundef i32 @_ZNK7glslang11TConstUnion9getIConstEv(ptr noundef nonnull align 8 dereferenceable(12) %566)
          to label %569 unwind label %578

569:                                              ; preds = %567
  store i32 %568, ptr %32, align 4, !tbaa !13
  %570 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %31, ptr noundef nonnull align 4 dereferenceable(4) %32)
          to label %571 unwind label %578

571:                                              ; preds = %569
  %572 = load i32, ptr %570, align 4, !tbaa !13
  invoke void @_ZN7glslang11TConstUnion9setIConstEi(ptr noundef nonnull align 8 dereferenceable(12) %554, i32 noundef %572)
          to label %573 unwind label %578

573:                                              ; preds = %571
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #9
  br label %808

574:                                              ; preds = %560, %555
  %575 = landingpad { ptr, i32 }
          cleanup
  %576 = extractvalue { ptr, i32 } %575, 0
  store ptr %576, ptr %16, align 8
  %577 = extractvalue { ptr, i32 } %575, 1
  store i32 %577, ptr %17, align 4
  br label %582

578:                                              ; preds = %571, %569, %567, %562
  %579 = landingpad { ptr, i32 }
          cleanup
  %580 = extractvalue { ptr, i32 } %579, 0
  store ptr %580, ptr %16, align 8
  %581 = extractvalue { ptr, i32 } %579, 1
  store i32 %581, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #9
  br label %582

582:                                              ; preds = %578, %574
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #9
  br label %1840

583:                                              ; preds = %518
  %584 = load i32, ptr %19, align 4, !tbaa !13
  %585 = sext i32 %584 to i64
  %586 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef %585)
          to label %587 unwind label %416

587:                                              ; preds = %583
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #9
  %588 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 0) #9
  %589 = load i32, ptr %20, align 4, !tbaa !13
  %590 = sext i32 %589 to i64
  %591 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %588, i64 noundef %590)
          to label %592 unwind label %606

592:                                              ; preds = %587
  %593 = invoke noundef i32 @_ZNK7glslang11TConstUnion9getUConstEv(ptr noundef nonnull align 8 dereferenceable(12) %591)
          to label %594 unwind label %606

594:                                              ; preds = %592
  store i32 %593, ptr %33, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #9
  %595 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 1) #9
  %596 = load i32, ptr %22, align 4, !tbaa !13
  %597 = sext i32 %596 to i64
  %598 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %595, i64 noundef %597)
          to label %599 unwind label %610

599:                                              ; preds = %594
  %600 = invoke noundef i32 @_ZNK7glslang11TConstUnion9getUConstEv(ptr noundef nonnull align 8 dereferenceable(12) %598)
          to label %601 unwind label %610

601:                                              ; preds = %599
  store i32 %600, ptr %34, align 4, !tbaa !13
  %602 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %33, ptr noundef nonnull align 4 dereferenceable(4) %34)
          to label %603 unwind label %610

603:                                              ; preds = %601
  %604 = load i32, ptr %602, align 4, !tbaa !13
  invoke void @_ZN7glslang11TConstUnion9setUConstEj(ptr noundef nonnull align 8 dereferenceable(12) %586, i32 noundef %604)
          to label %605 unwind label %610

605:                                              ; preds = %603
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #9
  br label %808

606:                                              ; preds = %592, %587
  %607 = landingpad { ptr, i32 }
          cleanup
  %608 = extractvalue { ptr, i32 } %607, 0
  store ptr %608, ptr %16, align 8
  %609 = extractvalue { ptr, i32 } %607, 1
  store i32 %609, ptr %17, align 4
  br label %614

610:                                              ; preds = %603, %601, %599, %594
  %611 = landingpad { ptr, i32 }
          cleanup
  %612 = extractvalue { ptr, i32 } %611, 0
  store ptr %612, ptr %16, align 8
  %613 = extractvalue { ptr, i32 } %611, 1
  store i32 %613, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #9
  br label %614

614:                                              ; preds = %610, %606
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #9
  br label %1840

615:                                              ; preds = %518
  %616 = load i32, ptr %19, align 4, !tbaa !13
  %617 = sext i32 %616 to i64
  %618 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef %617)
          to label %619 unwind label %416

619:                                              ; preds = %615
  call void @llvm.lifetime.start.p0(i64 1, ptr %35) #9
  %620 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 0) #9
  %621 = load i32, ptr %20, align 4, !tbaa !13
  %622 = sext i32 %621 to i64
  %623 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %620, i64 noundef %622)
          to label %624 unwind label %638

624:                                              ; preds = %619
  %625 = invoke noundef signext i8 @_ZNK7glslang11TConstUnion10getI8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %623)
          to label %626 unwind label %638

626:                                              ; preds = %624
  store i8 %625, ptr %35, align 1, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #9
  %627 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 1) #9
  %628 = load i32, ptr %22, align 4, !tbaa !13
  %629 = sext i32 %628 to i64
  %630 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %627, i64 noundef %629)
          to label %631 unwind label %642

631:                                              ; preds = %626
  %632 = invoke noundef signext i8 @_ZNK7glslang11TConstUnion10getI8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %630)
          to label %633 unwind label %642

633:                                              ; preds = %631
  store i8 %632, ptr %36, align 1, !tbaa !21
  %634 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZSt3minIaERKT_S2_S2_(ptr noundef nonnull align 1 dereferenceable(1) %35, ptr noundef nonnull align 1 dereferenceable(1) %36)
          to label %635 unwind label %642

635:                                              ; preds = %633
  %636 = load i8, ptr %634, align 1, !tbaa !21
  invoke void @_ZN7glslang11TConstUnion10setI8ConstEa(ptr noundef nonnull align 8 dereferenceable(12) %618, i8 noundef signext %636)
          to label %637 unwind label %642

637:                                              ; preds = %635
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #9
  br label %808

638:                                              ; preds = %624, %619
  %639 = landingpad { ptr, i32 }
          cleanup
  %640 = extractvalue { ptr, i32 } %639, 0
  store ptr %640, ptr %16, align 8
  %641 = extractvalue { ptr, i32 } %639, 1
  store i32 %641, ptr %17, align 4
  br label %646

642:                                              ; preds = %635, %633, %631, %626
  %643 = landingpad { ptr, i32 }
          cleanup
  %644 = extractvalue { ptr, i32 } %643, 0
  store ptr %644, ptr %16, align 8
  %645 = extractvalue { ptr, i32 } %643, 1
  store i32 %645, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #9
  br label %646

646:                                              ; preds = %642, %638
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #9
  br label %1840

647:                                              ; preds = %518
  %648 = load i32, ptr %19, align 4, !tbaa !13
  %649 = sext i32 %648 to i64
  %650 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef %649)
          to label %651 unwind label %416

651:                                              ; preds = %647
  call void @llvm.lifetime.start.p0(i64 1, ptr %37) #9
  %652 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 0) #9
  %653 = load i32, ptr %20, align 4, !tbaa !13
  %654 = sext i32 %653 to i64
  %655 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %652, i64 noundef %654)
          to label %656 unwind label %670

656:                                              ; preds = %651
  %657 = invoke noundef zeroext i8 @_ZNK7glslang11TConstUnion10getU8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %655)
          to label %658 unwind label %670

658:                                              ; preds = %656
  store i8 %657, ptr %37, align 1, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 1, ptr %38) #9
  %659 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 1) #9
  %660 = load i32, ptr %22, align 4, !tbaa !13
  %661 = sext i32 %660 to i64
  %662 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %659, i64 noundef %661)
          to label %663 unwind label %674

663:                                              ; preds = %658
  %664 = invoke noundef zeroext i8 @_ZNK7glslang11TConstUnion10getU8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %662)
          to label %665 unwind label %674

665:                                              ; preds = %663
  store i8 %664, ptr %38, align 1, !tbaa !21
  %666 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZSt3minIhERKT_S2_S2_(ptr noundef nonnull align 1 dereferenceable(1) %37, ptr noundef nonnull align 1 dereferenceable(1) %38)
          to label %667 unwind label %674

667:                                              ; preds = %665
  %668 = load i8, ptr %666, align 1, !tbaa !21
  invoke void @_ZN7glslang11TConstUnion10setU8ConstEh(ptr noundef nonnull align 8 dereferenceable(12) %650, i8 noundef zeroext %668)
          to label %669 unwind label %674

669:                                              ; preds = %667
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #9
  br label %808

670:                                              ; preds = %656, %651
  %671 = landingpad { ptr, i32 }
          cleanup
  %672 = extractvalue { ptr, i32 } %671, 0
  store ptr %672, ptr %16, align 8
  %673 = extractvalue { ptr, i32 } %671, 1
  store i32 %673, ptr %17, align 4
  br label %678

674:                                              ; preds = %667, %665, %663, %658
  %675 = landingpad { ptr, i32 }
          cleanup
  %676 = extractvalue { ptr, i32 } %675, 0
  store ptr %676, ptr %16, align 8
  %677 = extractvalue { ptr, i32 } %675, 1
  store i32 %677, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #9
  br label %678

678:                                              ; preds = %674, %670
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #9
  br label %1840

679:                                              ; preds = %518
  %680 = load i32, ptr %19, align 4, !tbaa !13
  %681 = sext i32 %680 to i64
  %682 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef %681)
          to label %683 unwind label %416

683:                                              ; preds = %679
  call void @llvm.lifetime.start.p0(i64 2, ptr %39) #9
  %684 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 0) #9
  %685 = load i32, ptr %20, align 4, !tbaa !13
  %686 = sext i32 %685 to i64
  %687 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %684, i64 noundef %686)
          to label %688 unwind label %702

688:                                              ; preds = %683
  %689 = invoke noundef signext i16 @_ZNK7glslang11TConstUnion11getI16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %687)
          to label %690 unwind label %702

690:                                              ; preds = %688
  store i16 %689, ptr %39, align 2, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 2, ptr %40) #9
  %691 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 1) #9
  %692 = load i32, ptr %22, align 4, !tbaa !13
  %693 = sext i32 %692 to i64
  %694 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %691, i64 noundef %693)
          to label %695 unwind label %706

695:                                              ; preds = %690
  %696 = invoke noundef signext i16 @_ZNK7glslang11TConstUnion11getI16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %694)
          to label %697 unwind label %706

697:                                              ; preds = %695
  store i16 %696, ptr %40, align 2, !tbaa !22
  %698 = invoke noundef nonnull align 2 dereferenceable(2) ptr @_ZSt3minIsERKT_S2_S2_(ptr noundef nonnull align 2 dereferenceable(2) %39, ptr noundef nonnull align 2 dereferenceable(2) %40)
          to label %699 unwind label %706

699:                                              ; preds = %697
  %700 = load i16, ptr %698, align 2, !tbaa !22
  invoke void @_ZN7glslang11TConstUnion11setI16ConstEs(ptr noundef nonnull align 8 dereferenceable(12) %682, i16 noundef signext %700)
          to label %701 unwind label %706

701:                                              ; preds = %699
  call void @llvm.lifetime.end.p0(i64 2, ptr %40) #9
  call void @llvm.lifetime.end.p0(i64 2, ptr %39) #9
  br label %808

702:                                              ; preds = %688, %683
  %703 = landingpad { ptr, i32 }
          cleanup
  %704 = extractvalue { ptr, i32 } %703, 0
  store ptr %704, ptr %16, align 8
  %705 = extractvalue { ptr, i32 } %703, 1
  store i32 %705, ptr %17, align 4
  br label %710

706:                                              ; preds = %699, %697, %695, %690
  %707 = landingpad { ptr, i32 }
          cleanup
  %708 = extractvalue { ptr, i32 } %707, 0
  store ptr %708, ptr %16, align 8
  %709 = extractvalue { ptr, i32 } %707, 1
  store i32 %709, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 2, ptr %40) #9
  br label %710

710:                                              ; preds = %706, %702
  call void @llvm.lifetime.end.p0(i64 2, ptr %39) #9
  br label %1840

711:                                              ; preds = %518
  %712 = load i32, ptr %19, align 4, !tbaa !13
  %713 = sext i32 %712 to i64
  %714 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef %713)
          to label %715 unwind label %416

715:                                              ; preds = %711
  call void @llvm.lifetime.start.p0(i64 2, ptr %41) #9
  %716 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 0) #9
  %717 = load i32, ptr %20, align 4, !tbaa !13
  %718 = sext i32 %717 to i64
  %719 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %716, i64 noundef %718)
          to label %720 unwind label %734

720:                                              ; preds = %715
  %721 = invoke noundef zeroext i16 @_ZNK7glslang11TConstUnion11getU16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %719)
          to label %722 unwind label %734

722:                                              ; preds = %720
  store i16 %721, ptr %41, align 2, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 2, ptr %42) #9
  %723 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 1) #9
  %724 = load i32, ptr %22, align 4, !tbaa !13
  %725 = sext i32 %724 to i64
  %726 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %723, i64 noundef %725)
          to label %727 unwind label %738

727:                                              ; preds = %722
  %728 = invoke noundef zeroext i16 @_ZNK7glslang11TConstUnion11getU16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %726)
          to label %729 unwind label %738

729:                                              ; preds = %727
  store i16 %728, ptr %42, align 2, !tbaa !22
  %730 = invoke noundef nonnull align 2 dereferenceable(2) ptr @_ZSt3minItERKT_S2_S2_(ptr noundef nonnull align 2 dereferenceable(2) %41, ptr noundef nonnull align 2 dereferenceable(2) %42)
          to label %731 unwind label %738

731:                                              ; preds = %729
  %732 = load i16, ptr %730, align 2, !tbaa !22
  invoke void @_ZN7glslang11TConstUnion11setU16ConstEt(ptr noundef nonnull align 8 dereferenceable(12) %714, i16 noundef zeroext %732)
          to label %733 unwind label %738

733:                                              ; preds = %731
  call void @llvm.lifetime.end.p0(i64 2, ptr %42) #9
  call void @llvm.lifetime.end.p0(i64 2, ptr %41) #9
  br label %808

734:                                              ; preds = %720, %715
  %735 = landingpad { ptr, i32 }
          cleanup
  %736 = extractvalue { ptr, i32 } %735, 0
  store ptr %736, ptr %16, align 8
  %737 = extractvalue { ptr, i32 } %735, 1
  store i32 %737, ptr %17, align 4
  br label %742

738:                                              ; preds = %731, %729, %727, %722
  %739 = landingpad { ptr, i32 }
          cleanup
  %740 = extractvalue { ptr, i32 } %739, 0
  store ptr %740, ptr %16, align 8
  %741 = extractvalue { ptr, i32 } %739, 1
  store i32 %741, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 2, ptr %42) #9
  br label %742

742:                                              ; preds = %738, %734
  call void @llvm.lifetime.end.p0(i64 2, ptr %41) #9
  br label %1840

743:                                              ; preds = %518
  %744 = load i32, ptr %19, align 4, !tbaa !13
  %745 = sext i32 %744 to i64
  %746 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef %745)
          to label %747 unwind label %416

747:                                              ; preds = %743
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #9
  %748 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 0) #9
  %749 = load i32, ptr %20, align 4, !tbaa !13
  %750 = sext i32 %749 to i64
  %751 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %748, i64 noundef %750)
          to label %752 unwind label %766

752:                                              ; preds = %747
  %753 = invoke noundef i64 @_ZNK7glslang11TConstUnion11getI64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %751)
          to label %754 unwind label %766

754:                                              ; preds = %752
  store i64 %753, ptr %43, align 8, !tbaa !24
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #9
  %755 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 1) #9
  %756 = load i32, ptr %22, align 4, !tbaa !13
  %757 = sext i32 %756 to i64
  %758 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %755, i64 noundef %757)
          to label %759 unwind label %770

759:                                              ; preds = %754
  %760 = invoke noundef i64 @_ZNK7glslang11TConstUnion11getI64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %758)
          to label %761 unwind label %770

761:                                              ; preds = %759
  store i64 %760, ptr %44, align 8, !tbaa !24
  %762 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIxERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef nonnull align 8 dereferenceable(8) %44)
          to label %763 unwind label %770

763:                                              ; preds = %761
  %764 = load i64, ptr %762, align 8, !tbaa !24
  invoke void @_ZN7glslang11TConstUnion11setI64ConstEx(ptr noundef nonnull align 8 dereferenceable(12) %746, i64 noundef %764)
          to label %765 unwind label %770

765:                                              ; preds = %763
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #9
  br label %808

766:                                              ; preds = %752, %747
  %767 = landingpad { ptr, i32 }
          cleanup
  %768 = extractvalue { ptr, i32 } %767, 0
  store ptr %768, ptr %16, align 8
  %769 = extractvalue { ptr, i32 } %767, 1
  store i32 %769, ptr %17, align 4
  br label %774

770:                                              ; preds = %763, %761, %759, %754
  %771 = landingpad { ptr, i32 }
          cleanup
  %772 = extractvalue { ptr, i32 } %771, 0
  store ptr %772, ptr %16, align 8
  %773 = extractvalue { ptr, i32 } %771, 1
  store i32 %773, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #9
  br label %774

774:                                              ; preds = %770, %766
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #9
  br label %1840

775:                                              ; preds = %518
  %776 = load i32, ptr %19, align 4, !tbaa !13
  %777 = sext i32 %776 to i64
  %778 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef %777)
          to label %779 unwind label %416

779:                                              ; preds = %775
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #9
  %780 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 0) #9
  %781 = load i32, ptr %20, align 4, !tbaa !13
  %782 = sext i32 %781 to i64
  %783 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %780, i64 noundef %782)
          to label %784 unwind label %798

784:                                              ; preds = %779
  %785 = invoke noundef i64 @_ZNK7glslang11TConstUnion11getU64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %783)
          to label %786 unwind label %798

786:                                              ; preds = %784
  store i64 %785, ptr %45, align 8, !tbaa !24
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #9
  %787 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 1) #9
  %788 = load i32, ptr %22, align 4, !tbaa !13
  %789 = sext i32 %788 to i64
  %790 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %787, i64 noundef %789)
          to label %791 unwind label %802

791:                                              ; preds = %786
  %792 = invoke noundef i64 @_ZNK7glslang11TConstUnion11getU64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %790)
          to label %793 unwind label %802

793:                                              ; preds = %791
  store i64 %792, ptr %46, align 8, !tbaa !24
  %794 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIyERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %45, ptr noundef nonnull align 8 dereferenceable(8) %46)
          to label %795 unwind label %802

795:                                              ; preds = %793
  %796 = load i64, ptr %794, align 8, !tbaa !24
  invoke void @_ZN7glslang11TConstUnion11setU64ConstEy(ptr noundef nonnull align 8 dereferenceable(12) %778, i64 noundef %796)
          to label %797 unwind label %802

797:                                              ; preds = %795
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #9
  br label %808

798:                                              ; preds = %784, %779
  %799 = landingpad { ptr, i32 }
          cleanup
  %800 = extractvalue { ptr, i32 } %799, 0
  store ptr %800, ptr %16, align 8
  %801 = extractvalue { ptr, i32 } %799, 1
  store i32 %801, ptr %17, align 4
  br label %806

802:                                              ; preds = %795, %793, %791, %786
  %803 = landingpad { ptr, i32 }
          cleanup
  %804 = extractvalue { ptr, i32 } %803, 0
  store ptr %804, ptr %16, align 8
  %805 = extractvalue { ptr, i32 } %803, 1
  store i32 %805, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #9
  br label %806

806:                                              ; preds = %802, %798
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #9
  br label %1840

807:                                              ; preds = %518
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 1089, ptr noundef @__PRETTY_FUNCTION__._ZN7glslang13TIntermediate4foldEPNS_16TIntermAggregateE) #10
  unreachable

808:                                              ; preds = %797, %765, %733, %701, %669, %637, %605, %573, %541
  br label %1833

809:                                              ; preds = %415
  %810 = load ptr, ptr %6, align 8, !tbaa !5
  %811 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %810, i64 noundef 0) #9
  %812 = load ptr, ptr %811, align 8, !tbaa !5
  %813 = load ptr, ptr %812, align 8, !tbaa !9
  %814 = getelementptr inbounds ptr, ptr %813, i64 3
  %815 = load ptr, ptr %814, align 8
  %816 = invoke noundef ptr %815(ptr noundef nonnull align 8 dereferenceable(32) %812)
          to label %817 unwind label %416

817:                                              ; preds = %809
  %818 = load ptr, ptr %816, align 8, !tbaa !9
  %819 = getelementptr inbounds ptr, ptr %818, i64 32
  %820 = load ptr, ptr %819, align 8
  %821 = invoke noundef i32 %820(ptr noundef nonnull align 8 dereferenceable(176) %816)
          to label %822 unwind label %416

822:                                              ; preds = %817
  switch i32 %821, label %1111 [
    i32 3, label %823
    i32 1, label %823
    i32 2, label %823
    i32 8, label %855
    i32 9, label %887
    i32 4, label %919
    i32 5, label %951
    i32 6, label %983
    i32 7, label %1015
    i32 10, label %1047
    i32 11, label %1079
  ]

823:                                              ; preds = %822, %822, %822
  %824 = load i32, ptr %19, align 4, !tbaa !13
  %825 = sext i32 %824 to i64
  %826 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef %825)
          to label %827 unwind label %416

827:                                              ; preds = %823
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #9
  %828 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 0) #9
  %829 = load i32, ptr %20, align 4, !tbaa !13
  %830 = sext i32 %829 to i64
  %831 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %828, i64 noundef %830)
          to label %832 unwind label %846

832:                                              ; preds = %827
  %833 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %831)
          to label %834 unwind label %846

834:                                              ; preds = %832
  store double %833, ptr %47, align 8, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #9
  %835 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 1) #9
  %836 = load i32, ptr %22, align 4, !tbaa !13
  %837 = sext i32 %836 to i64
  %838 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %835, i64 noundef %837)
          to label %839 unwind label %850

839:                                              ; preds = %834
  %840 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %838)
          to label %841 unwind label %850

841:                                              ; preds = %839
  store double %840, ptr %48, align 8, !tbaa !19
  %842 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %47, ptr noundef nonnull align 8 dereferenceable(8) %48)
          to label %843 unwind label %850

843:                                              ; preds = %841
  %844 = load double, ptr %842, align 8, !tbaa !19
  invoke void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %826, double noundef %844)
          to label %845 unwind label %850

845:                                              ; preds = %843
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #9
  br label %1112

846:                                              ; preds = %832, %827
  %847 = landingpad { ptr, i32 }
          cleanup
  %848 = extractvalue { ptr, i32 } %847, 0
  store ptr %848, ptr %16, align 8
  %849 = extractvalue { ptr, i32 } %847, 1
  store i32 %849, ptr %17, align 4
  br label %854

850:                                              ; preds = %843, %841, %839, %834
  %851 = landingpad { ptr, i32 }
          cleanup
  %852 = extractvalue { ptr, i32 } %851, 0
  store ptr %852, ptr %16, align 8
  %853 = extractvalue { ptr, i32 } %851, 1
  store i32 %853, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #9
  br label %854

854:                                              ; preds = %850, %846
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #9
  br label %1840

855:                                              ; preds = %822
  %856 = load i32, ptr %19, align 4, !tbaa !13
  %857 = sext i32 %856 to i64
  %858 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef %857)
          to label %859 unwind label %416

859:                                              ; preds = %855
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #9
  %860 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 0) #9
  %861 = load i32, ptr %20, align 4, !tbaa !13
  %862 = sext i32 %861 to i64
  %863 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %860, i64 noundef %862)
          to label %864 unwind label %878

864:                                              ; preds = %859
  %865 = invoke noundef i32 @_ZNK7glslang11TConstUnion9getIConstEv(ptr noundef nonnull align 8 dereferenceable(12) %863)
          to label %866 unwind label %878

866:                                              ; preds = %864
  store i32 %865, ptr %49, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #9
  %867 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 1) #9
  %868 = load i32, ptr %22, align 4, !tbaa !13
  %869 = sext i32 %868 to i64
  %870 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %867, i64 noundef %869)
          to label %871 unwind label %882

871:                                              ; preds = %866
  %872 = invoke noundef i32 @_ZNK7glslang11TConstUnion9getIConstEv(ptr noundef nonnull align 8 dereferenceable(12) %870)
          to label %873 unwind label %882

873:                                              ; preds = %871
  store i32 %872, ptr %50, align 4, !tbaa !13
  %874 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %49, ptr noundef nonnull align 4 dereferenceable(4) %50)
          to label %875 unwind label %882

875:                                              ; preds = %873
  %876 = load i32, ptr %874, align 4, !tbaa !13
  invoke void @_ZN7glslang11TConstUnion9setIConstEi(ptr noundef nonnull align 8 dereferenceable(12) %858, i32 noundef %876)
          to label %877 unwind label %882

877:                                              ; preds = %875
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #9
  br label %1112

878:                                              ; preds = %864, %859
  %879 = landingpad { ptr, i32 }
          cleanup
  %880 = extractvalue { ptr, i32 } %879, 0
  store ptr %880, ptr %16, align 8
  %881 = extractvalue { ptr, i32 } %879, 1
  store i32 %881, ptr %17, align 4
  br label %886

882:                                              ; preds = %875, %873, %871, %866
  %883 = landingpad { ptr, i32 }
          cleanup
  %884 = extractvalue { ptr, i32 } %883, 0
  store ptr %884, ptr %16, align 8
  %885 = extractvalue { ptr, i32 } %883, 1
  store i32 %885, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #9
  br label %886

886:                                              ; preds = %882, %878
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #9
  br label %1840

887:                                              ; preds = %822
  %888 = load i32, ptr %19, align 4, !tbaa !13
  %889 = sext i32 %888 to i64
  %890 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef %889)
          to label %891 unwind label %416

891:                                              ; preds = %887
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #9
  %892 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 0) #9
  %893 = load i32, ptr %20, align 4, !tbaa !13
  %894 = sext i32 %893 to i64
  %895 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %892, i64 noundef %894)
          to label %896 unwind label %910

896:                                              ; preds = %891
  %897 = invoke noundef i32 @_ZNK7glslang11TConstUnion9getUConstEv(ptr noundef nonnull align 8 dereferenceable(12) %895)
          to label %898 unwind label %910

898:                                              ; preds = %896
  store i32 %897, ptr %51, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #9
  %899 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 1) #9
  %900 = load i32, ptr %22, align 4, !tbaa !13
  %901 = sext i32 %900 to i64
  %902 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %899, i64 noundef %901)
          to label %903 unwind label %914

903:                                              ; preds = %898
  %904 = invoke noundef i32 @_ZNK7glslang11TConstUnion9getUConstEv(ptr noundef nonnull align 8 dereferenceable(12) %902)
          to label %905 unwind label %914

905:                                              ; preds = %903
  store i32 %904, ptr %52, align 4, !tbaa !13
  %906 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %51, ptr noundef nonnull align 4 dereferenceable(4) %52)
          to label %907 unwind label %914

907:                                              ; preds = %905
  %908 = load i32, ptr %906, align 4, !tbaa !13
  invoke void @_ZN7glslang11TConstUnion9setUConstEj(ptr noundef nonnull align 8 dereferenceable(12) %890, i32 noundef %908)
          to label %909 unwind label %914

909:                                              ; preds = %907
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #9
  br label %1112

910:                                              ; preds = %896, %891
  %911 = landingpad { ptr, i32 }
          cleanup
  %912 = extractvalue { ptr, i32 } %911, 0
  store ptr %912, ptr %16, align 8
  %913 = extractvalue { ptr, i32 } %911, 1
  store i32 %913, ptr %17, align 4
  br label %918

914:                                              ; preds = %907, %905, %903, %898
  %915 = landingpad { ptr, i32 }
          cleanup
  %916 = extractvalue { ptr, i32 } %915, 0
  store ptr %916, ptr %16, align 8
  %917 = extractvalue { ptr, i32 } %915, 1
  store i32 %917, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #9
  br label %918

918:                                              ; preds = %914, %910
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #9
  br label %1840

919:                                              ; preds = %822
  %920 = load i32, ptr %19, align 4, !tbaa !13
  %921 = sext i32 %920 to i64
  %922 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef %921)
          to label %923 unwind label %416

923:                                              ; preds = %919
  call void @llvm.lifetime.start.p0(i64 1, ptr %53) #9
  %924 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 0) #9
  %925 = load i32, ptr %20, align 4, !tbaa !13
  %926 = sext i32 %925 to i64
  %927 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %924, i64 noundef %926)
          to label %928 unwind label %942

928:                                              ; preds = %923
  %929 = invoke noundef signext i8 @_ZNK7glslang11TConstUnion10getI8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %927)
          to label %930 unwind label %942

930:                                              ; preds = %928
  store i8 %929, ptr %53, align 1, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 1, ptr %54) #9
  %931 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 1) #9
  %932 = load i32, ptr %22, align 4, !tbaa !13
  %933 = sext i32 %932 to i64
  %934 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %931, i64 noundef %933)
          to label %935 unwind label %946

935:                                              ; preds = %930
  %936 = invoke noundef signext i8 @_ZNK7glslang11TConstUnion10getI8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %934)
          to label %937 unwind label %946

937:                                              ; preds = %935
  store i8 %936, ptr %54, align 1, !tbaa !21
  %938 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZSt3maxIaERKT_S2_S2_(ptr noundef nonnull align 1 dereferenceable(1) %53, ptr noundef nonnull align 1 dereferenceable(1) %54)
          to label %939 unwind label %946

939:                                              ; preds = %937
  %940 = load i8, ptr %938, align 1, !tbaa !21
  invoke void @_ZN7glslang11TConstUnion10setI8ConstEa(ptr noundef nonnull align 8 dereferenceable(12) %922, i8 noundef signext %940)
          to label %941 unwind label %946

941:                                              ; preds = %939
  call void @llvm.lifetime.end.p0(i64 1, ptr %54) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #9
  br label %1112

942:                                              ; preds = %928, %923
  %943 = landingpad { ptr, i32 }
          cleanup
  %944 = extractvalue { ptr, i32 } %943, 0
  store ptr %944, ptr %16, align 8
  %945 = extractvalue { ptr, i32 } %943, 1
  store i32 %945, ptr %17, align 4
  br label %950

946:                                              ; preds = %939, %937, %935, %930
  %947 = landingpad { ptr, i32 }
          cleanup
  %948 = extractvalue { ptr, i32 } %947, 0
  store ptr %948, ptr %16, align 8
  %949 = extractvalue { ptr, i32 } %947, 1
  store i32 %949, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %54) #9
  br label %950

950:                                              ; preds = %946, %942
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #9
  br label %1840

951:                                              ; preds = %822
  %952 = load i32, ptr %19, align 4, !tbaa !13
  %953 = sext i32 %952 to i64
  %954 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef %953)
          to label %955 unwind label %416

955:                                              ; preds = %951
  call void @llvm.lifetime.start.p0(i64 1, ptr %55) #9
  %956 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 0) #9
  %957 = load i32, ptr %20, align 4, !tbaa !13
  %958 = sext i32 %957 to i64
  %959 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %956, i64 noundef %958)
          to label %960 unwind label %974

960:                                              ; preds = %955
  %961 = invoke noundef zeroext i8 @_ZNK7glslang11TConstUnion10getU8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %959)
          to label %962 unwind label %974

962:                                              ; preds = %960
  store i8 %961, ptr %55, align 1, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 1, ptr %56) #9
  %963 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 1) #9
  %964 = load i32, ptr %22, align 4, !tbaa !13
  %965 = sext i32 %964 to i64
  %966 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %963, i64 noundef %965)
          to label %967 unwind label %978

967:                                              ; preds = %962
  %968 = invoke noundef zeroext i8 @_ZNK7glslang11TConstUnion10getU8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %966)
          to label %969 unwind label %978

969:                                              ; preds = %967
  store i8 %968, ptr %56, align 1, !tbaa !21
  %970 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZSt3maxIhERKT_S2_S2_(ptr noundef nonnull align 1 dereferenceable(1) %55, ptr noundef nonnull align 1 dereferenceable(1) %56)
          to label %971 unwind label %978

971:                                              ; preds = %969
  %972 = load i8, ptr %970, align 1, !tbaa !21
  invoke void @_ZN7glslang11TConstUnion10setU8ConstEh(ptr noundef nonnull align 8 dereferenceable(12) %954, i8 noundef zeroext %972)
          to label %973 unwind label %978

973:                                              ; preds = %971
  call void @llvm.lifetime.end.p0(i64 1, ptr %56) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #9
  br label %1112

974:                                              ; preds = %960, %955
  %975 = landingpad { ptr, i32 }
          cleanup
  %976 = extractvalue { ptr, i32 } %975, 0
  store ptr %976, ptr %16, align 8
  %977 = extractvalue { ptr, i32 } %975, 1
  store i32 %977, ptr %17, align 4
  br label %982

978:                                              ; preds = %971, %969, %967, %962
  %979 = landingpad { ptr, i32 }
          cleanup
  %980 = extractvalue { ptr, i32 } %979, 0
  store ptr %980, ptr %16, align 8
  %981 = extractvalue { ptr, i32 } %979, 1
  store i32 %981, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %56) #9
  br label %982

982:                                              ; preds = %978, %974
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #9
  br label %1840

983:                                              ; preds = %822
  %984 = load i32, ptr %19, align 4, !tbaa !13
  %985 = sext i32 %984 to i64
  %986 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef %985)
          to label %987 unwind label %416

987:                                              ; preds = %983
  call void @llvm.lifetime.start.p0(i64 2, ptr %57) #9
  %988 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 0) #9
  %989 = load i32, ptr %20, align 4, !tbaa !13
  %990 = sext i32 %989 to i64
  %991 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %988, i64 noundef %990)
          to label %992 unwind label %1006

992:                                              ; preds = %987
  %993 = invoke noundef signext i16 @_ZNK7glslang11TConstUnion11getI16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %991)
          to label %994 unwind label %1006

994:                                              ; preds = %992
  store i16 %993, ptr %57, align 2, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 2, ptr %58) #9
  %995 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 1) #9
  %996 = load i32, ptr %22, align 4, !tbaa !13
  %997 = sext i32 %996 to i64
  %998 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %995, i64 noundef %997)
          to label %999 unwind label %1010

999:                                              ; preds = %994
  %1000 = invoke noundef signext i16 @_ZNK7glslang11TConstUnion11getI16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %998)
          to label %1001 unwind label %1010

1001:                                             ; preds = %999
  store i16 %1000, ptr %58, align 2, !tbaa !22
  %1002 = invoke noundef nonnull align 2 dereferenceable(2) ptr @_ZSt3maxIsERKT_S2_S2_(ptr noundef nonnull align 2 dereferenceable(2) %57, ptr noundef nonnull align 2 dereferenceable(2) %58)
          to label %1003 unwind label %1010

1003:                                             ; preds = %1001
  %1004 = load i16, ptr %1002, align 2, !tbaa !22
  invoke void @_ZN7glslang11TConstUnion11setI16ConstEs(ptr noundef nonnull align 8 dereferenceable(12) %986, i16 noundef signext %1004)
          to label %1005 unwind label %1010

1005:                                             ; preds = %1003
  call void @llvm.lifetime.end.p0(i64 2, ptr %58) #9
  call void @llvm.lifetime.end.p0(i64 2, ptr %57) #9
  br label %1112

1006:                                             ; preds = %992, %987
  %1007 = landingpad { ptr, i32 }
          cleanup
  %1008 = extractvalue { ptr, i32 } %1007, 0
  store ptr %1008, ptr %16, align 8
  %1009 = extractvalue { ptr, i32 } %1007, 1
  store i32 %1009, ptr %17, align 4
  br label %1014

1010:                                             ; preds = %1003, %1001, %999, %994
  %1011 = landingpad { ptr, i32 }
          cleanup
  %1012 = extractvalue { ptr, i32 } %1011, 0
  store ptr %1012, ptr %16, align 8
  %1013 = extractvalue { ptr, i32 } %1011, 1
  store i32 %1013, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 2, ptr %58) #9
  br label %1014

1014:                                             ; preds = %1010, %1006
  call void @llvm.lifetime.end.p0(i64 2, ptr %57) #9
  br label %1840

1015:                                             ; preds = %822
  %1016 = load i32, ptr %19, align 4, !tbaa !13
  %1017 = sext i32 %1016 to i64
  %1018 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef %1017)
          to label %1019 unwind label %416

1019:                                             ; preds = %1015
  call void @llvm.lifetime.start.p0(i64 2, ptr %59) #9
  %1020 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 0) #9
  %1021 = load i32, ptr %20, align 4, !tbaa !13
  %1022 = sext i32 %1021 to i64
  %1023 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1020, i64 noundef %1022)
          to label %1024 unwind label %1038

1024:                                             ; preds = %1019
  %1025 = invoke noundef zeroext i16 @_ZNK7glslang11TConstUnion11getU16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1023)
          to label %1026 unwind label %1038

1026:                                             ; preds = %1024
  store i16 %1025, ptr %59, align 2, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 2, ptr %60) #9
  %1027 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 1) #9
  %1028 = load i32, ptr %22, align 4, !tbaa !13
  %1029 = sext i32 %1028 to i64
  %1030 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1027, i64 noundef %1029)
          to label %1031 unwind label %1042

1031:                                             ; preds = %1026
  %1032 = invoke noundef zeroext i16 @_ZNK7glslang11TConstUnion11getU16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1030)
          to label %1033 unwind label %1042

1033:                                             ; preds = %1031
  store i16 %1032, ptr %60, align 2, !tbaa !22
  %1034 = invoke noundef nonnull align 2 dereferenceable(2) ptr @_ZSt3maxItERKT_S2_S2_(ptr noundef nonnull align 2 dereferenceable(2) %59, ptr noundef nonnull align 2 dereferenceable(2) %60)
          to label %1035 unwind label %1042

1035:                                             ; preds = %1033
  %1036 = load i16, ptr %1034, align 2, !tbaa !22
  invoke void @_ZN7glslang11TConstUnion11setU16ConstEt(ptr noundef nonnull align 8 dereferenceable(12) %1018, i16 noundef zeroext %1036)
          to label %1037 unwind label %1042

1037:                                             ; preds = %1035
  call void @llvm.lifetime.end.p0(i64 2, ptr %60) #9
  call void @llvm.lifetime.end.p0(i64 2, ptr %59) #9
  br label %1112

1038:                                             ; preds = %1024, %1019
  %1039 = landingpad { ptr, i32 }
          cleanup
  %1040 = extractvalue { ptr, i32 } %1039, 0
  store ptr %1040, ptr %16, align 8
  %1041 = extractvalue { ptr, i32 } %1039, 1
  store i32 %1041, ptr %17, align 4
  br label %1046

1042:                                             ; preds = %1035, %1033, %1031, %1026
  %1043 = landingpad { ptr, i32 }
          cleanup
  %1044 = extractvalue { ptr, i32 } %1043, 0
  store ptr %1044, ptr %16, align 8
  %1045 = extractvalue { ptr, i32 } %1043, 1
  store i32 %1045, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 2, ptr %60) #9
  br label %1046

1046:                                             ; preds = %1042, %1038
  call void @llvm.lifetime.end.p0(i64 2, ptr %59) #9
  br label %1840

1047:                                             ; preds = %822
  %1048 = load i32, ptr %19, align 4, !tbaa !13
  %1049 = sext i32 %1048 to i64
  %1050 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef %1049)
          to label %1051 unwind label %416

1051:                                             ; preds = %1047
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #9
  %1052 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 0) #9
  %1053 = load i32, ptr %20, align 4, !tbaa !13
  %1054 = sext i32 %1053 to i64
  %1055 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1052, i64 noundef %1054)
          to label %1056 unwind label %1070

1056:                                             ; preds = %1051
  %1057 = invoke noundef i64 @_ZNK7glslang11TConstUnion11getI64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1055)
          to label %1058 unwind label %1070

1058:                                             ; preds = %1056
  store i64 %1057, ptr %61, align 8, !tbaa !24
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #9
  %1059 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 1) #9
  %1060 = load i32, ptr %22, align 4, !tbaa !13
  %1061 = sext i32 %1060 to i64
  %1062 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1059, i64 noundef %1061)
          to label %1063 unwind label %1074

1063:                                             ; preds = %1058
  %1064 = invoke noundef i64 @_ZNK7glslang11TConstUnion11getI64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1062)
          to label %1065 unwind label %1074

1065:                                             ; preds = %1063
  store i64 %1064, ptr %62, align 8, !tbaa !24
  %1066 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIxERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %61, ptr noundef nonnull align 8 dereferenceable(8) %62)
          to label %1067 unwind label %1074

1067:                                             ; preds = %1065
  %1068 = load i64, ptr %1066, align 8, !tbaa !24
  invoke void @_ZN7glslang11TConstUnion11setI64ConstEx(ptr noundef nonnull align 8 dereferenceable(12) %1050, i64 noundef %1068)
          to label %1069 unwind label %1074

1069:                                             ; preds = %1067
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #9
  br label %1112

1070:                                             ; preds = %1056, %1051
  %1071 = landingpad { ptr, i32 }
          cleanup
  %1072 = extractvalue { ptr, i32 } %1071, 0
  store ptr %1072, ptr %16, align 8
  %1073 = extractvalue { ptr, i32 } %1071, 1
  store i32 %1073, ptr %17, align 4
  br label %1078

1074:                                             ; preds = %1067, %1065, %1063, %1058
  %1075 = landingpad { ptr, i32 }
          cleanup
  %1076 = extractvalue { ptr, i32 } %1075, 0
  store ptr %1076, ptr %16, align 8
  %1077 = extractvalue { ptr, i32 } %1075, 1
  store i32 %1077, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #9
  br label %1078

1078:                                             ; preds = %1074, %1070
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #9
  br label %1840

1079:                                             ; preds = %822
  %1080 = load i32, ptr %19, align 4, !tbaa !13
  %1081 = sext i32 %1080 to i64
  %1082 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef %1081)
          to label %1083 unwind label %416

1083:                                             ; preds = %1079
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #9
  %1084 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 0) #9
  %1085 = load i32, ptr %20, align 4, !tbaa !13
  %1086 = sext i32 %1085 to i64
  %1087 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1084, i64 noundef %1086)
          to label %1088 unwind label %1102

1088:                                             ; preds = %1083
  %1089 = invoke noundef i64 @_ZNK7glslang11TConstUnion11getU64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1087)
          to label %1090 unwind label %1102

1090:                                             ; preds = %1088
  store i64 %1089, ptr %63, align 8, !tbaa !24
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #9
  %1091 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 1) #9
  %1092 = load i32, ptr %22, align 4, !tbaa !13
  %1093 = sext i32 %1092 to i64
  %1094 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1091, i64 noundef %1093)
          to label %1095 unwind label %1106

1095:                                             ; preds = %1090
  %1096 = invoke noundef i64 @_ZNK7glslang11TConstUnion11getU64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1094)
          to label %1097 unwind label %1106

1097:                                             ; preds = %1095
  store i64 %1096, ptr %64, align 8, !tbaa !24
  %1098 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIyERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %63, ptr noundef nonnull align 8 dereferenceable(8) %64)
          to label %1099 unwind label %1106

1099:                                             ; preds = %1097
  %1100 = load i64, ptr %1098, align 8, !tbaa !24
  invoke void @_ZN7glslang11TConstUnion11setU64ConstEy(ptr noundef nonnull align 8 dereferenceable(12) %1082, i64 noundef %1100)
          to label %1101 unwind label %1106

1101:                                             ; preds = %1099
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #9
  br label %1112

1102:                                             ; preds = %1088, %1083
  %1103 = landingpad { ptr, i32 }
          cleanup
  %1104 = extractvalue { ptr, i32 } %1103, 0
  store ptr %1104, ptr %16, align 8
  %1105 = extractvalue { ptr, i32 } %1103, 1
  store i32 %1105, ptr %17, align 4
  br label %1110

1106:                                             ; preds = %1099, %1097, %1095, %1090
  %1107 = landingpad { ptr, i32 }
          cleanup
  %1108 = extractvalue { ptr, i32 } %1107, 0
  store ptr %1108, ptr %16, align 8
  %1109 = extractvalue { ptr, i32 } %1107, 1
  store i32 %1109, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #9
  br label %1110

1110:                                             ; preds = %1106, %1102
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #9
  br label %1840

1111:                                             ; preds = %822
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 1125, ptr noundef @__PRETTY_FUNCTION__._ZN7glslang13TIntermediate4foldEPNS_16TIntermAggregateE) #10
  unreachable

1112:                                             ; preds = %1101, %1069, %1037, %1005, %973, %941, %909, %877, %845
  br label %1833

1113:                                             ; preds = %415
  %1114 = load ptr, ptr %6, align 8, !tbaa !5
  %1115 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %1114, i64 noundef 0) #9
  %1116 = load ptr, ptr %1115, align 8, !tbaa !5
  %1117 = load ptr, ptr %1116, align 8, !tbaa !9
  %1118 = getelementptr inbounds ptr, ptr %1117, i64 3
  %1119 = load ptr, ptr %1118, align 8
  %1120 = invoke noundef ptr %1119(ptr noundef nonnull align 8 dereferenceable(32) %1116)
          to label %1121 unwind label %416

1121:                                             ; preds = %1113
  %1122 = load ptr, ptr %1120, align 8, !tbaa !9
  %1123 = getelementptr inbounds ptr, ptr %1122, i64 32
  %1124 = load ptr, ptr %1123, align 8
  %1125 = invoke noundef i32 %1124(ptr noundef nonnull align 8 dereferenceable(176) %1120)
          to label %1126 unwind label %416

1126:                                             ; preds = %1121
  switch i32 %1125, label %1541 [
    i32 3, label %1127
    i32 1, label %1127
    i32 2, label %1127
    i32 9, label %1173
    i32 4, label %1219
    i32 5, label %1265
    i32 6, label %1311
    i32 7, label %1357
    i32 8, label %1403
    i32 10, label %1449
    i32 11, label %1495
  ]

1127:                                             ; preds = %1126, %1126, %1126
  %1128 = load i32, ptr %19, align 4, !tbaa !13
  %1129 = sext i32 %1128 to i64
  %1130 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef %1129)
          to label %1131 unwind label %416

1131:                                             ; preds = %1127
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #9
  %1132 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 0) #9
  %1133 = load i32, ptr %20, align 4, !tbaa !13
  %1134 = sext i32 %1133 to i64
  %1135 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1132, i64 noundef %1134)
          to label %1136 unwind label %1159

1136:                                             ; preds = %1131
  %1137 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1135)
          to label %1138 unwind label %1159

1138:                                             ; preds = %1136
  store double %1137, ptr %65, align 8, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #9
  %1139 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 1) #9
  %1140 = load i32, ptr %22, align 4, !tbaa !13
  %1141 = sext i32 %1140 to i64
  %1142 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1139, i64 noundef %1141)
          to label %1143 unwind label %1163

1143:                                             ; preds = %1138
  %1144 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1142)
          to label %1145 unwind label %1163

1145:                                             ; preds = %1143
  store double %1144, ptr %66, align 8, !tbaa !19
  %1146 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %65, ptr noundef nonnull align 8 dereferenceable(8) %66)
          to label %1147 unwind label %1163

1147:                                             ; preds = %1145
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #9
  %1148 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 2) #9
  %1149 = load i32, ptr %24, align 4, !tbaa !13
  %1150 = sext i32 %1149 to i64
  %1151 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1148, i64 noundef %1150)
          to label %1152 unwind label %1167

1152:                                             ; preds = %1147
  %1153 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1151)
          to label %1154 unwind label %1167

1154:                                             ; preds = %1152
  store double %1153, ptr %67, align 8, !tbaa !19
  %1155 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %1146, ptr noundef nonnull align 8 dereferenceable(8) %67)
          to label %1156 unwind label %1167

1156:                                             ; preds = %1154
  %1157 = load double, ptr %1155, align 8, !tbaa !19
  invoke void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %1130, double noundef %1157)
          to label %1158 unwind label %1167

1158:                                             ; preds = %1156
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #9
  br label %1542

1159:                                             ; preds = %1136, %1131
  %1160 = landingpad { ptr, i32 }
          cleanup
  %1161 = extractvalue { ptr, i32 } %1160, 0
  store ptr %1161, ptr %16, align 8
  %1162 = extractvalue { ptr, i32 } %1160, 1
  store i32 %1162, ptr %17, align 4
  br label %1172

1163:                                             ; preds = %1145, %1143, %1138
  %1164 = landingpad { ptr, i32 }
          cleanup
  %1165 = extractvalue { ptr, i32 } %1164, 0
  store ptr %1165, ptr %16, align 8
  %1166 = extractvalue { ptr, i32 } %1164, 1
  store i32 %1166, ptr %17, align 4
  br label %1171

1167:                                             ; preds = %1156, %1154, %1152, %1147
  %1168 = landingpad { ptr, i32 }
          cleanup
  %1169 = extractvalue { ptr, i32 } %1168, 0
  store ptr %1169, ptr %16, align 8
  %1170 = extractvalue { ptr, i32 } %1168, 1
  store i32 %1170, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #9
  br label %1171

1171:                                             ; preds = %1167, %1163
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #9
  br label %1172

1172:                                             ; preds = %1171, %1159
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #9
  br label %1840

1173:                                             ; preds = %1126
  %1174 = load i32, ptr %19, align 4, !tbaa !13
  %1175 = sext i32 %1174 to i64
  %1176 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef %1175)
          to label %1177 unwind label %416

1177:                                             ; preds = %1173
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #9
  %1178 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 0) #9
  %1179 = load i32, ptr %20, align 4, !tbaa !13
  %1180 = sext i32 %1179 to i64
  %1181 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1178, i64 noundef %1180)
          to label %1182 unwind label %1205

1182:                                             ; preds = %1177
  %1183 = invoke noundef i32 @_ZNK7glslang11TConstUnion9getUConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1181)
          to label %1184 unwind label %1205

1184:                                             ; preds = %1182
  store i32 %1183, ptr %68, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #9
  %1185 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 1) #9
  %1186 = load i32, ptr %22, align 4, !tbaa !13
  %1187 = sext i32 %1186 to i64
  %1188 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1185, i64 noundef %1187)
          to label %1189 unwind label %1209

1189:                                             ; preds = %1184
  %1190 = invoke noundef i32 @_ZNK7glslang11TConstUnion9getUConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1188)
          to label %1191 unwind label %1209

1191:                                             ; preds = %1189
  store i32 %1190, ptr %69, align 4, !tbaa !13
  %1192 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %68, ptr noundef nonnull align 4 dereferenceable(4) %69)
          to label %1193 unwind label %1209

1193:                                             ; preds = %1191
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #9
  %1194 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 2) #9
  %1195 = load i32, ptr %24, align 4, !tbaa !13
  %1196 = sext i32 %1195 to i64
  %1197 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1194, i64 noundef %1196)
          to label %1198 unwind label %1213

1198:                                             ; preds = %1193
  %1199 = invoke noundef i32 @_ZNK7glslang11TConstUnion9getUConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1197)
          to label %1200 unwind label %1213

1200:                                             ; preds = %1198
  store i32 %1199, ptr %70, align 4, !tbaa !13
  %1201 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %1192, ptr noundef nonnull align 4 dereferenceable(4) %70)
          to label %1202 unwind label %1213

1202:                                             ; preds = %1200
  %1203 = load i32, ptr %1201, align 4, !tbaa !13
  invoke void @_ZN7glslang11TConstUnion9setUConstEj(ptr noundef nonnull align 8 dereferenceable(12) %1176, i32 noundef %1203)
          to label %1204 unwind label %1213

1204:                                             ; preds = %1202
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #9
  br label %1542

1205:                                             ; preds = %1182, %1177
  %1206 = landingpad { ptr, i32 }
          cleanup
  %1207 = extractvalue { ptr, i32 } %1206, 0
  store ptr %1207, ptr %16, align 8
  %1208 = extractvalue { ptr, i32 } %1206, 1
  store i32 %1208, ptr %17, align 4
  br label %1218

1209:                                             ; preds = %1191, %1189, %1184
  %1210 = landingpad { ptr, i32 }
          cleanup
  %1211 = extractvalue { ptr, i32 } %1210, 0
  store ptr %1211, ptr %16, align 8
  %1212 = extractvalue { ptr, i32 } %1210, 1
  store i32 %1212, ptr %17, align 4
  br label %1217

1213:                                             ; preds = %1202, %1200, %1198, %1193
  %1214 = landingpad { ptr, i32 }
          cleanup
  %1215 = extractvalue { ptr, i32 } %1214, 0
  store ptr %1215, ptr %16, align 8
  %1216 = extractvalue { ptr, i32 } %1214, 1
  store i32 %1216, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #9
  br label %1217

1217:                                             ; preds = %1213, %1209
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #9
  br label %1218

1218:                                             ; preds = %1217, %1205
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #9
  br label %1840

1219:                                             ; preds = %1126
  %1220 = load i32, ptr %19, align 4, !tbaa !13
  %1221 = sext i32 %1220 to i64
  %1222 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef %1221)
          to label %1223 unwind label %416

1223:                                             ; preds = %1219
  call void @llvm.lifetime.start.p0(i64 1, ptr %71) #9
  %1224 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 0) #9
  %1225 = load i32, ptr %20, align 4, !tbaa !13
  %1226 = sext i32 %1225 to i64
  %1227 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1224, i64 noundef %1226)
          to label %1228 unwind label %1251

1228:                                             ; preds = %1223
  %1229 = invoke noundef signext i8 @_ZNK7glslang11TConstUnion10getI8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1227)
          to label %1230 unwind label %1251

1230:                                             ; preds = %1228
  store i8 %1229, ptr %71, align 1, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 1, ptr %72) #9
  %1231 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 1) #9
  %1232 = load i32, ptr %22, align 4, !tbaa !13
  %1233 = sext i32 %1232 to i64
  %1234 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1231, i64 noundef %1233)
          to label %1235 unwind label %1255

1235:                                             ; preds = %1230
  %1236 = invoke noundef signext i8 @_ZNK7glslang11TConstUnion10getI8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1234)
          to label %1237 unwind label %1255

1237:                                             ; preds = %1235
  store i8 %1236, ptr %72, align 1, !tbaa !21
  %1238 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZSt3maxIaERKT_S2_S2_(ptr noundef nonnull align 1 dereferenceable(1) %71, ptr noundef nonnull align 1 dereferenceable(1) %72)
          to label %1239 unwind label %1255

1239:                                             ; preds = %1237
  call void @llvm.lifetime.start.p0(i64 1, ptr %73) #9
  %1240 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 2) #9
  %1241 = load i32, ptr %24, align 4, !tbaa !13
  %1242 = sext i32 %1241 to i64
  %1243 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1240, i64 noundef %1242)
          to label %1244 unwind label %1259

1244:                                             ; preds = %1239
  %1245 = invoke noundef signext i8 @_ZNK7glslang11TConstUnion10getI8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1243)
          to label %1246 unwind label %1259

1246:                                             ; preds = %1244
  store i8 %1245, ptr %73, align 1, !tbaa !21
  %1247 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZSt3minIaERKT_S2_S2_(ptr noundef nonnull align 1 dereferenceable(1) %1238, ptr noundef nonnull align 1 dereferenceable(1) %73)
          to label %1248 unwind label %1259

1248:                                             ; preds = %1246
  %1249 = load i8, ptr %1247, align 1, !tbaa !21
  invoke void @_ZN7glslang11TConstUnion10setI8ConstEa(ptr noundef nonnull align 8 dereferenceable(12) %1222, i8 noundef signext %1249)
          to label %1250 unwind label %1259

1250:                                             ; preds = %1248
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %72) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %71) #9
  br label %1542

1251:                                             ; preds = %1228, %1223
  %1252 = landingpad { ptr, i32 }
          cleanup
  %1253 = extractvalue { ptr, i32 } %1252, 0
  store ptr %1253, ptr %16, align 8
  %1254 = extractvalue { ptr, i32 } %1252, 1
  store i32 %1254, ptr %17, align 4
  br label %1264

1255:                                             ; preds = %1237, %1235, %1230
  %1256 = landingpad { ptr, i32 }
          cleanup
  %1257 = extractvalue { ptr, i32 } %1256, 0
  store ptr %1257, ptr %16, align 8
  %1258 = extractvalue { ptr, i32 } %1256, 1
  store i32 %1258, ptr %17, align 4
  br label %1263

1259:                                             ; preds = %1248, %1246, %1244, %1239
  %1260 = landingpad { ptr, i32 }
          cleanup
  %1261 = extractvalue { ptr, i32 } %1260, 0
  store ptr %1261, ptr %16, align 8
  %1262 = extractvalue { ptr, i32 } %1260, 1
  store i32 %1262, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #9
  br label %1263

1263:                                             ; preds = %1259, %1255
  call void @llvm.lifetime.end.p0(i64 1, ptr %72) #9
  br label %1264

1264:                                             ; preds = %1263, %1251
  call void @llvm.lifetime.end.p0(i64 1, ptr %71) #9
  br label %1840

1265:                                             ; preds = %1126
  %1266 = load i32, ptr %19, align 4, !tbaa !13
  %1267 = sext i32 %1266 to i64
  %1268 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef %1267)
          to label %1269 unwind label %416

1269:                                             ; preds = %1265
  call void @llvm.lifetime.start.p0(i64 1, ptr %74) #9
  %1270 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 0) #9
  %1271 = load i32, ptr %20, align 4, !tbaa !13
  %1272 = sext i32 %1271 to i64
  %1273 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1270, i64 noundef %1272)
          to label %1274 unwind label %1297

1274:                                             ; preds = %1269
  %1275 = invoke noundef zeroext i8 @_ZNK7glslang11TConstUnion10getU8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1273)
          to label %1276 unwind label %1297

1276:                                             ; preds = %1274
  store i8 %1275, ptr %74, align 1, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 1, ptr %75) #9
  %1277 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 1) #9
  %1278 = load i32, ptr %22, align 4, !tbaa !13
  %1279 = sext i32 %1278 to i64
  %1280 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1277, i64 noundef %1279)
          to label %1281 unwind label %1301

1281:                                             ; preds = %1276
  %1282 = invoke noundef zeroext i8 @_ZNK7glslang11TConstUnion10getU8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1280)
          to label %1283 unwind label %1301

1283:                                             ; preds = %1281
  store i8 %1282, ptr %75, align 1, !tbaa !21
  %1284 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZSt3maxIhERKT_S2_S2_(ptr noundef nonnull align 1 dereferenceable(1) %74, ptr noundef nonnull align 1 dereferenceable(1) %75)
          to label %1285 unwind label %1301

1285:                                             ; preds = %1283
  call void @llvm.lifetime.start.p0(i64 1, ptr %76) #9
  %1286 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 2) #9
  %1287 = load i32, ptr %24, align 4, !tbaa !13
  %1288 = sext i32 %1287 to i64
  %1289 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1286, i64 noundef %1288)
          to label %1290 unwind label %1305

1290:                                             ; preds = %1285
  %1291 = invoke noundef zeroext i8 @_ZNK7glslang11TConstUnion10getU8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1289)
          to label %1292 unwind label %1305

1292:                                             ; preds = %1290
  store i8 %1291, ptr %76, align 1, !tbaa !21
  %1293 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZSt3minIhERKT_S2_S2_(ptr noundef nonnull align 1 dereferenceable(1) %1284, ptr noundef nonnull align 1 dereferenceable(1) %76)
          to label %1294 unwind label %1305

1294:                                             ; preds = %1292
  %1295 = load i8, ptr %1293, align 1, !tbaa !21
  invoke void @_ZN7glslang11TConstUnion10setU8ConstEh(ptr noundef nonnull align 8 dereferenceable(12) %1268, i8 noundef zeroext %1295)
          to label %1296 unwind label %1305

1296:                                             ; preds = %1294
  call void @llvm.lifetime.end.p0(i64 1, ptr %76) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %75) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %74) #9
  br label %1542

1297:                                             ; preds = %1274, %1269
  %1298 = landingpad { ptr, i32 }
          cleanup
  %1299 = extractvalue { ptr, i32 } %1298, 0
  store ptr %1299, ptr %16, align 8
  %1300 = extractvalue { ptr, i32 } %1298, 1
  store i32 %1300, ptr %17, align 4
  br label %1310

1301:                                             ; preds = %1283, %1281, %1276
  %1302 = landingpad { ptr, i32 }
          cleanup
  %1303 = extractvalue { ptr, i32 } %1302, 0
  store ptr %1303, ptr %16, align 8
  %1304 = extractvalue { ptr, i32 } %1302, 1
  store i32 %1304, ptr %17, align 4
  br label %1309

1305:                                             ; preds = %1294, %1292, %1290, %1285
  %1306 = landingpad { ptr, i32 }
          cleanup
  %1307 = extractvalue { ptr, i32 } %1306, 0
  store ptr %1307, ptr %16, align 8
  %1308 = extractvalue { ptr, i32 } %1306, 1
  store i32 %1308, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %76) #9
  br label %1309

1309:                                             ; preds = %1305, %1301
  call void @llvm.lifetime.end.p0(i64 1, ptr %75) #9
  br label %1310

1310:                                             ; preds = %1309, %1297
  call void @llvm.lifetime.end.p0(i64 1, ptr %74) #9
  br label %1840

1311:                                             ; preds = %1126
  %1312 = load i32, ptr %19, align 4, !tbaa !13
  %1313 = sext i32 %1312 to i64
  %1314 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef %1313)
          to label %1315 unwind label %416

1315:                                             ; preds = %1311
  call void @llvm.lifetime.start.p0(i64 2, ptr %77) #9
  %1316 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 0) #9
  %1317 = load i32, ptr %20, align 4, !tbaa !13
  %1318 = sext i32 %1317 to i64
  %1319 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1316, i64 noundef %1318)
          to label %1320 unwind label %1343

1320:                                             ; preds = %1315
  %1321 = invoke noundef signext i16 @_ZNK7glslang11TConstUnion11getI16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1319)
          to label %1322 unwind label %1343

1322:                                             ; preds = %1320
  store i16 %1321, ptr %77, align 2, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 2, ptr %78) #9
  %1323 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 1) #9
  %1324 = load i32, ptr %22, align 4, !tbaa !13
  %1325 = sext i32 %1324 to i64
  %1326 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1323, i64 noundef %1325)
          to label %1327 unwind label %1347

1327:                                             ; preds = %1322
  %1328 = invoke noundef signext i16 @_ZNK7glslang11TConstUnion11getI16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1326)
          to label %1329 unwind label %1347

1329:                                             ; preds = %1327
  store i16 %1328, ptr %78, align 2, !tbaa !22
  %1330 = invoke noundef nonnull align 2 dereferenceable(2) ptr @_ZSt3maxIsERKT_S2_S2_(ptr noundef nonnull align 2 dereferenceable(2) %77, ptr noundef nonnull align 2 dereferenceable(2) %78)
          to label %1331 unwind label %1347

1331:                                             ; preds = %1329
  call void @llvm.lifetime.start.p0(i64 2, ptr %79) #9
  %1332 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 2) #9
  %1333 = load i32, ptr %24, align 4, !tbaa !13
  %1334 = sext i32 %1333 to i64
  %1335 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1332, i64 noundef %1334)
          to label %1336 unwind label %1351

1336:                                             ; preds = %1331
  %1337 = invoke noundef signext i16 @_ZNK7glslang11TConstUnion11getI16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1335)
          to label %1338 unwind label %1351

1338:                                             ; preds = %1336
  store i16 %1337, ptr %79, align 2, !tbaa !22
  %1339 = invoke noundef nonnull align 2 dereferenceable(2) ptr @_ZSt3minIsERKT_S2_S2_(ptr noundef nonnull align 2 dereferenceable(2) %1330, ptr noundef nonnull align 2 dereferenceable(2) %79)
          to label %1340 unwind label %1351

1340:                                             ; preds = %1338
  %1341 = load i16, ptr %1339, align 2, !tbaa !22
  invoke void @_ZN7glslang11TConstUnion11setI16ConstEs(ptr noundef nonnull align 8 dereferenceable(12) %1314, i16 noundef signext %1341)
          to label %1342 unwind label %1351

1342:                                             ; preds = %1340
  call void @llvm.lifetime.end.p0(i64 2, ptr %79) #9
  call void @llvm.lifetime.end.p0(i64 2, ptr %78) #9
  call void @llvm.lifetime.end.p0(i64 2, ptr %77) #9
  br label %1542

1343:                                             ; preds = %1320, %1315
  %1344 = landingpad { ptr, i32 }
          cleanup
  %1345 = extractvalue { ptr, i32 } %1344, 0
  store ptr %1345, ptr %16, align 8
  %1346 = extractvalue { ptr, i32 } %1344, 1
  store i32 %1346, ptr %17, align 4
  br label %1356

1347:                                             ; preds = %1329, %1327, %1322
  %1348 = landingpad { ptr, i32 }
          cleanup
  %1349 = extractvalue { ptr, i32 } %1348, 0
  store ptr %1349, ptr %16, align 8
  %1350 = extractvalue { ptr, i32 } %1348, 1
  store i32 %1350, ptr %17, align 4
  br label %1355

1351:                                             ; preds = %1340, %1338, %1336, %1331
  %1352 = landingpad { ptr, i32 }
          cleanup
  %1353 = extractvalue { ptr, i32 } %1352, 0
  store ptr %1353, ptr %16, align 8
  %1354 = extractvalue { ptr, i32 } %1352, 1
  store i32 %1354, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 2, ptr %79) #9
  br label %1355

1355:                                             ; preds = %1351, %1347
  call void @llvm.lifetime.end.p0(i64 2, ptr %78) #9
  br label %1356

1356:                                             ; preds = %1355, %1343
  call void @llvm.lifetime.end.p0(i64 2, ptr %77) #9
  br label %1840

1357:                                             ; preds = %1126
  %1358 = load i32, ptr %19, align 4, !tbaa !13
  %1359 = sext i32 %1358 to i64
  %1360 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef %1359)
          to label %1361 unwind label %416

1361:                                             ; preds = %1357
  call void @llvm.lifetime.start.p0(i64 2, ptr %80) #9
  %1362 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 0) #9
  %1363 = load i32, ptr %20, align 4, !tbaa !13
  %1364 = sext i32 %1363 to i64
  %1365 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1362, i64 noundef %1364)
          to label %1366 unwind label %1389

1366:                                             ; preds = %1361
  %1367 = invoke noundef zeroext i16 @_ZNK7glslang11TConstUnion11getU16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1365)
          to label %1368 unwind label %1389

1368:                                             ; preds = %1366
  store i16 %1367, ptr %80, align 2, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 2, ptr %81) #9
  %1369 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 1) #9
  %1370 = load i32, ptr %22, align 4, !tbaa !13
  %1371 = sext i32 %1370 to i64
  %1372 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1369, i64 noundef %1371)
          to label %1373 unwind label %1393

1373:                                             ; preds = %1368
  %1374 = invoke noundef zeroext i16 @_ZNK7glslang11TConstUnion11getU16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1372)
          to label %1375 unwind label %1393

1375:                                             ; preds = %1373
  store i16 %1374, ptr %81, align 2, !tbaa !22
  %1376 = invoke noundef nonnull align 2 dereferenceable(2) ptr @_ZSt3maxItERKT_S2_S2_(ptr noundef nonnull align 2 dereferenceable(2) %80, ptr noundef nonnull align 2 dereferenceable(2) %81)
          to label %1377 unwind label %1393

1377:                                             ; preds = %1375
  call void @llvm.lifetime.start.p0(i64 2, ptr %82) #9
  %1378 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 2) #9
  %1379 = load i32, ptr %24, align 4, !tbaa !13
  %1380 = sext i32 %1379 to i64
  %1381 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1378, i64 noundef %1380)
          to label %1382 unwind label %1397

1382:                                             ; preds = %1377
  %1383 = invoke noundef zeroext i16 @_ZNK7glslang11TConstUnion11getU16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1381)
          to label %1384 unwind label %1397

1384:                                             ; preds = %1382
  store i16 %1383, ptr %82, align 2, !tbaa !22
  %1385 = invoke noundef nonnull align 2 dereferenceable(2) ptr @_ZSt3minItERKT_S2_S2_(ptr noundef nonnull align 2 dereferenceable(2) %1376, ptr noundef nonnull align 2 dereferenceable(2) %82)
          to label %1386 unwind label %1397

1386:                                             ; preds = %1384
  %1387 = load i16, ptr %1385, align 2, !tbaa !22
  invoke void @_ZN7glslang11TConstUnion11setU16ConstEt(ptr noundef nonnull align 8 dereferenceable(12) %1360, i16 noundef zeroext %1387)
          to label %1388 unwind label %1397

1388:                                             ; preds = %1386
  call void @llvm.lifetime.end.p0(i64 2, ptr %82) #9
  call void @llvm.lifetime.end.p0(i64 2, ptr %81) #9
  call void @llvm.lifetime.end.p0(i64 2, ptr %80) #9
  br label %1542

1389:                                             ; preds = %1366, %1361
  %1390 = landingpad { ptr, i32 }
          cleanup
  %1391 = extractvalue { ptr, i32 } %1390, 0
  store ptr %1391, ptr %16, align 8
  %1392 = extractvalue { ptr, i32 } %1390, 1
  store i32 %1392, ptr %17, align 4
  br label %1402

1393:                                             ; preds = %1375, %1373, %1368
  %1394 = landingpad { ptr, i32 }
          cleanup
  %1395 = extractvalue { ptr, i32 } %1394, 0
  store ptr %1395, ptr %16, align 8
  %1396 = extractvalue { ptr, i32 } %1394, 1
  store i32 %1396, ptr %17, align 4
  br label %1401

1397:                                             ; preds = %1386, %1384, %1382, %1377
  %1398 = landingpad { ptr, i32 }
          cleanup
  %1399 = extractvalue { ptr, i32 } %1398, 0
  store ptr %1399, ptr %16, align 8
  %1400 = extractvalue { ptr, i32 } %1398, 1
  store i32 %1400, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 2, ptr %82) #9
  br label %1401

1401:                                             ; preds = %1397, %1393
  call void @llvm.lifetime.end.p0(i64 2, ptr %81) #9
  br label %1402

1402:                                             ; preds = %1401, %1389
  call void @llvm.lifetime.end.p0(i64 2, ptr %80) #9
  br label %1840

1403:                                             ; preds = %1126
  %1404 = load i32, ptr %19, align 4, !tbaa !13
  %1405 = sext i32 %1404 to i64
  %1406 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef %1405)
          to label %1407 unwind label %416

1407:                                             ; preds = %1403
  call void @llvm.lifetime.start.p0(i64 4, ptr %83) #9
  %1408 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 0) #9
  %1409 = load i32, ptr %20, align 4, !tbaa !13
  %1410 = sext i32 %1409 to i64
  %1411 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1408, i64 noundef %1410)
          to label %1412 unwind label %1435

1412:                                             ; preds = %1407
  %1413 = invoke noundef i32 @_ZNK7glslang11TConstUnion9getIConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1411)
          to label %1414 unwind label %1435

1414:                                             ; preds = %1412
  store i32 %1413, ptr %83, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %84) #9
  %1415 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 1) #9
  %1416 = load i32, ptr %22, align 4, !tbaa !13
  %1417 = sext i32 %1416 to i64
  %1418 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1415, i64 noundef %1417)
          to label %1419 unwind label %1439

1419:                                             ; preds = %1414
  %1420 = invoke noundef i32 @_ZNK7glslang11TConstUnion9getIConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1418)
          to label %1421 unwind label %1439

1421:                                             ; preds = %1419
  store i32 %1420, ptr %84, align 4, !tbaa !13
  %1422 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %83, ptr noundef nonnull align 4 dereferenceable(4) %84)
          to label %1423 unwind label %1439

1423:                                             ; preds = %1421
  call void @llvm.lifetime.start.p0(i64 4, ptr %85) #9
  %1424 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 2) #9
  %1425 = load i32, ptr %24, align 4, !tbaa !13
  %1426 = sext i32 %1425 to i64
  %1427 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1424, i64 noundef %1426)
          to label %1428 unwind label %1443

1428:                                             ; preds = %1423
  %1429 = invoke noundef i32 @_ZNK7glslang11TConstUnion9getIConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1427)
          to label %1430 unwind label %1443

1430:                                             ; preds = %1428
  store i32 %1429, ptr %85, align 4, !tbaa !13
  %1431 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %1422, ptr noundef nonnull align 4 dereferenceable(4) %85)
          to label %1432 unwind label %1443

1432:                                             ; preds = %1430
  %1433 = load i32, ptr %1431, align 4, !tbaa !13
  invoke void @_ZN7glslang11TConstUnion9setIConstEi(ptr noundef nonnull align 8 dereferenceable(12) %1406, i32 noundef %1433)
          to label %1434 unwind label %1443

1434:                                             ; preds = %1432
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #9
  br label %1542

1435:                                             ; preds = %1412, %1407
  %1436 = landingpad { ptr, i32 }
          cleanup
  %1437 = extractvalue { ptr, i32 } %1436, 0
  store ptr %1437, ptr %16, align 8
  %1438 = extractvalue { ptr, i32 } %1436, 1
  store i32 %1438, ptr %17, align 4
  br label %1448

1439:                                             ; preds = %1421, %1419, %1414
  %1440 = landingpad { ptr, i32 }
          cleanup
  %1441 = extractvalue { ptr, i32 } %1440, 0
  store ptr %1441, ptr %16, align 8
  %1442 = extractvalue { ptr, i32 } %1440, 1
  store i32 %1442, ptr %17, align 4
  br label %1447

1443:                                             ; preds = %1432, %1430, %1428, %1423
  %1444 = landingpad { ptr, i32 }
          cleanup
  %1445 = extractvalue { ptr, i32 } %1444, 0
  store ptr %1445, ptr %16, align 8
  %1446 = extractvalue { ptr, i32 } %1444, 1
  store i32 %1446, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #9
  br label %1447

1447:                                             ; preds = %1443, %1439
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #9
  br label %1448

1448:                                             ; preds = %1447, %1435
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #9
  br label %1840

1449:                                             ; preds = %1126
  %1450 = load i32, ptr %19, align 4, !tbaa !13
  %1451 = sext i32 %1450 to i64
  %1452 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef %1451)
          to label %1453 unwind label %416

1453:                                             ; preds = %1449
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #9
  %1454 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 0) #9
  %1455 = load i32, ptr %20, align 4, !tbaa !13
  %1456 = sext i32 %1455 to i64
  %1457 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1454, i64 noundef %1456)
          to label %1458 unwind label %1481

1458:                                             ; preds = %1453
  %1459 = invoke noundef i64 @_ZNK7glslang11TConstUnion11getI64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1457)
          to label %1460 unwind label %1481

1460:                                             ; preds = %1458
  store i64 %1459, ptr %86, align 8, !tbaa !24
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #9
  %1461 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 1) #9
  %1462 = load i32, ptr %22, align 4, !tbaa !13
  %1463 = sext i32 %1462 to i64
  %1464 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1461, i64 noundef %1463)
          to label %1465 unwind label %1485

1465:                                             ; preds = %1460
  %1466 = invoke noundef i64 @_ZNK7glslang11TConstUnion11getI64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1464)
          to label %1467 unwind label %1485

1467:                                             ; preds = %1465
  store i64 %1466, ptr %87, align 8, !tbaa !24
  %1468 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIxERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %86, ptr noundef nonnull align 8 dereferenceable(8) %87)
          to label %1469 unwind label %1485

1469:                                             ; preds = %1467
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #9
  %1470 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 2) #9
  %1471 = load i32, ptr %24, align 4, !tbaa !13
  %1472 = sext i32 %1471 to i64
  %1473 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1470, i64 noundef %1472)
          to label %1474 unwind label %1489

1474:                                             ; preds = %1469
  %1475 = invoke noundef i64 @_ZNK7glslang11TConstUnion11getI64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1473)
          to label %1476 unwind label %1489

1476:                                             ; preds = %1474
  store i64 %1475, ptr %88, align 8, !tbaa !24
  %1477 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIxERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %1468, ptr noundef nonnull align 8 dereferenceable(8) %88)
          to label %1478 unwind label %1489

1478:                                             ; preds = %1476
  %1479 = load i64, ptr %1477, align 8, !tbaa !24
  invoke void @_ZN7glslang11TConstUnion11setI64ConstEx(ptr noundef nonnull align 8 dereferenceable(12) %1452, i64 noundef %1479)
          to label %1480 unwind label %1489

1480:                                             ; preds = %1478
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #9
  br label %1542

1481:                                             ; preds = %1458, %1453
  %1482 = landingpad { ptr, i32 }
          cleanup
  %1483 = extractvalue { ptr, i32 } %1482, 0
  store ptr %1483, ptr %16, align 8
  %1484 = extractvalue { ptr, i32 } %1482, 1
  store i32 %1484, ptr %17, align 4
  br label %1494

1485:                                             ; preds = %1467, %1465, %1460
  %1486 = landingpad { ptr, i32 }
          cleanup
  %1487 = extractvalue { ptr, i32 } %1486, 0
  store ptr %1487, ptr %16, align 8
  %1488 = extractvalue { ptr, i32 } %1486, 1
  store i32 %1488, ptr %17, align 4
  br label %1493

1489:                                             ; preds = %1478, %1476, %1474, %1469
  %1490 = landingpad { ptr, i32 }
          cleanup
  %1491 = extractvalue { ptr, i32 } %1490, 0
  store ptr %1491, ptr %16, align 8
  %1492 = extractvalue { ptr, i32 } %1490, 1
  store i32 %1492, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #9
  br label %1493

1493:                                             ; preds = %1489, %1485
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #9
  br label %1494

1494:                                             ; preds = %1493, %1481
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #9
  br label %1840

1495:                                             ; preds = %1126
  %1496 = load i32, ptr %19, align 4, !tbaa !13
  %1497 = sext i32 %1496 to i64
  %1498 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef %1497)
          to label %1499 unwind label %416

1499:                                             ; preds = %1495
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #9
  %1500 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 0) #9
  %1501 = load i32, ptr %20, align 4, !tbaa !13
  %1502 = sext i32 %1501 to i64
  %1503 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1500, i64 noundef %1502)
          to label %1504 unwind label %1527

1504:                                             ; preds = %1499
  %1505 = invoke noundef i64 @_ZNK7glslang11TConstUnion11getU64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1503)
          to label %1506 unwind label %1527

1506:                                             ; preds = %1504
  store i64 %1505, ptr %89, align 8, !tbaa !24
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #9
  %1507 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 1) #9
  %1508 = load i32, ptr %22, align 4, !tbaa !13
  %1509 = sext i32 %1508 to i64
  %1510 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1507, i64 noundef %1509)
          to label %1511 unwind label %1531

1511:                                             ; preds = %1506
  %1512 = invoke noundef i64 @_ZNK7glslang11TConstUnion11getU64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1510)
          to label %1513 unwind label %1531

1513:                                             ; preds = %1511
  store i64 %1512, ptr %90, align 8, !tbaa !24
  %1514 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIyERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %89, ptr noundef nonnull align 8 dereferenceable(8) %90)
          to label %1515 unwind label %1531

1515:                                             ; preds = %1513
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #9
  %1516 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 2) #9
  %1517 = load i32, ptr %24, align 4, !tbaa !13
  %1518 = sext i32 %1517 to i64
  %1519 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1516, i64 noundef %1518)
          to label %1520 unwind label %1535

1520:                                             ; preds = %1515
  %1521 = invoke noundef i64 @_ZNK7glslang11TConstUnion11getU64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1519)
          to label %1522 unwind label %1535

1522:                                             ; preds = %1520
  store i64 %1521, ptr %91, align 8, !tbaa !24
  %1523 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIyERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %1514, ptr noundef nonnull align 8 dereferenceable(8) %91)
          to label %1524 unwind label %1535

1524:                                             ; preds = %1522
  %1525 = load i64, ptr %1523, align 8, !tbaa !24
  invoke void @_ZN7glslang11TConstUnion11setU64ConstEy(ptr noundef nonnull align 8 dereferenceable(12) %1498, i64 noundef %1525)
          to label %1526 unwind label %1535

1526:                                             ; preds = %1524
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #9
  br label %1542

1527:                                             ; preds = %1504, %1499
  %1528 = landingpad { ptr, i32 }
          cleanup
  %1529 = extractvalue { ptr, i32 } %1528, 0
  store ptr %1529, ptr %16, align 8
  %1530 = extractvalue { ptr, i32 } %1528, 1
  store i32 %1530, ptr %17, align 4
  br label %1540

1531:                                             ; preds = %1513, %1511, %1506
  %1532 = landingpad { ptr, i32 }
          cleanup
  %1533 = extractvalue { ptr, i32 } %1532, 0
  store ptr %1533, ptr %16, align 8
  %1534 = extractvalue { ptr, i32 } %1532, 1
  store i32 %1534, ptr %17, align 4
  br label %1539

1535:                                             ; preds = %1524, %1522, %1520, %1515
  %1536 = landingpad { ptr, i32 }
          cleanup
  %1537 = extractvalue { ptr, i32 } %1536, 0
  store ptr %1537, ptr %16, align 8
  %1538 = extractvalue { ptr, i32 } %1536, 1
  store i32 %1538, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #9
  br label %1539

1539:                                             ; preds = %1535, %1531
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #9
  br label %1540

1540:                                             ; preds = %1539, %1527
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #9
  br label %1840

1541:                                             ; preds = %1126
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 1170, ptr noundef @__PRETTY_FUNCTION__._ZN7glslang13TIntermediate4foldEPNS_16TIntermAggregateE) #10
  unreachable

1542:                                             ; preds = %1526, %1480, %1434, %1388, %1342, %1296, %1250, %1204, %1158
  br label %1833

1543:                                             ; preds = %415
  %1544 = load i32, ptr %19, align 4, !tbaa !13
  %1545 = sext i32 %1544 to i64
  %1546 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef %1545)
          to label %1547 unwind label %416

1547:                                             ; preds = %1543
  %1548 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 0) #9
  %1549 = load i32, ptr %20, align 4, !tbaa !13
  %1550 = sext i32 %1549 to i64
  %1551 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1548, i64 noundef %1550)
          to label %1552 unwind label %416

1552:                                             ; preds = %1547
  %1553 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 1) #9
  %1554 = load i32, ptr %22, align 4, !tbaa !13
  %1555 = sext i32 %1554 to i64
  %1556 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1553, i64 noundef %1555)
          to label %1557 unwind label %416

1557:                                             ; preds = %1552
  %1558 = invoke noundef zeroext i1 @_ZNK7glslang11TConstUnionltERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %1551, ptr noundef nonnull align 8 dereferenceable(12) %1556)
          to label %1559 unwind label %416

1559:                                             ; preds = %1557
  invoke void @_ZN7glslang11TConstUnion9setBConstEb(ptr noundef nonnull align 8 dereferenceable(12) %1546, i1 noundef zeroext %1558)
          to label %1560 unwind label %416

1560:                                             ; preds = %1559
  br label %1833

1561:                                             ; preds = %415
  %1562 = load i32, ptr %19, align 4, !tbaa !13
  %1563 = sext i32 %1562 to i64
  %1564 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef %1563)
          to label %1565 unwind label %416

1565:                                             ; preds = %1561
  %1566 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 0) #9
  %1567 = load i32, ptr %20, align 4, !tbaa !13
  %1568 = sext i32 %1567 to i64
  %1569 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1566, i64 noundef %1568)
          to label %1570 unwind label %416

1570:                                             ; preds = %1565
  %1571 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 1) #9
  %1572 = load i32, ptr %22, align 4, !tbaa !13
  %1573 = sext i32 %1572 to i64
  %1574 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1571, i64 noundef %1573)
          to label %1575 unwind label %416

1575:                                             ; preds = %1570
  %1576 = invoke noundef zeroext i1 @_ZNK7glslang11TConstUniongtERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %1569, ptr noundef nonnull align 8 dereferenceable(12) %1574)
          to label %1577 unwind label %416

1577:                                             ; preds = %1575
  invoke void @_ZN7glslang11TConstUnion9setBConstEb(ptr noundef nonnull align 8 dereferenceable(12) %1564, i1 noundef zeroext %1576)
          to label %1578 unwind label %416

1578:                                             ; preds = %1577
  br label %1833

1579:                                             ; preds = %415
  %1580 = load i32, ptr %19, align 4, !tbaa !13
  %1581 = sext i32 %1580 to i64
  %1582 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef %1581)
          to label %1583 unwind label %416

1583:                                             ; preds = %1579
  %1584 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 0) #9
  %1585 = load i32, ptr %20, align 4, !tbaa !13
  %1586 = sext i32 %1585 to i64
  %1587 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1584, i64 noundef %1586)
          to label %1588 unwind label %416

1588:                                             ; preds = %1583
  %1589 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 1) #9
  %1590 = load i32, ptr %22, align 4, !tbaa !13
  %1591 = sext i32 %1590 to i64
  %1592 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1589, i64 noundef %1591)
          to label %1593 unwind label %416

1593:                                             ; preds = %1588
  %1594 = invoke noundef zeroext i1 @_ZNK7glslang11TConstUniongtERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %1587, ptr noundef nonnull align 8 dereferenceable(12) %1592)
          to label %1595 unwind label %416

1595:                                             ; preds = %1593
  %1596 = xor i1 %1594, true
  invoke void @_ZN7glslang11TConstUnion9setBConstEb(ptr noundef nonnull align 8 dereferenceable(12) %1582, i1 noundef zeroext %1596)
          to label %1597 unwind label %416

1597:                                             ; preds = %1595
  br label %1833

1598:                                             ; preds = %415
  %1599 = load i32, ptr %19, align 4, !tbaa !13
  %1600 = sext i32 %1599 to i64
  %1601 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef %1600)
          to label %1602 unwind label %416

1602:                                             ; preds = %1598
  %1603 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 0) #9
  %1604 = load i32, ptr %20, align 4, !tbaa !13
  %1605 = sext i32 %1604 to i64
  %1606 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1603, i64 noundef %1605)
          to label %1607 unwind label %416

1607:                                             ; preds = %1602
  %1608 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 1) #9
  %1609 = load i32, ptr %22, align 4, !tbaa !13
  %1610 = sext i32 %1609 to i64
  %1611 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1608, i64 noundef %1610)
          to label %1612 unwind label %416

1612:                                             ; preds = %1607
  %1613 = invoke noundef zeroext i1 @_ZNK7glslang11TConstUnionltERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %1606, ptr noundef nonnull align 8 dereferenceable(12) %1611)
          to label %1614 unwind label %416

1614:                                             ; preds = %1612
  %1615 = xor i1 %1613, true
  invoke void @_ZN7glslang11TConstUnion9setBConstEb(ptr noundef nonnull align 8 dereferenceable(12) %1601, i1 noundef zeroext %1615)
          to label %1616 unwind label %416

1616:                                             ; preds = %1614
  br label %1833

1617:                                             ; preds = %415
  %1618 = load i32, ptr %19, align 4, !tbaa !13
  %1619 = sext i32 %1618 to i64
  %1620 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef %1619)
          to label %1621 unwind label %416

1621:                                             ; preds = %1617
  %1622 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 0) #9
  %1623 = load i32, ptr %20, align 4, !tbaa !13
  %1624 = sext i32 %1623 to i64
  %1625 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1622, i64 noundef %1624)
          to label %1626 unwind label %416

1626:                                             ; preds = %1621
  %1627 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 1) #9
  %1628 = load i32, ptr %22, align 4, !tbaa !13
  %1629 = sext i32 %1628 to i64
  %1630 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1627, i64 noundef %1629)
          to label %1631 unwind label %416

1631:                                             ; preds = %1626
  %1632 = invoke noundef zeroext i1 @_ZNK7glslang11TConstUnioneqERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %1625, ptr noundef nonnull align 8 dereferenceable(12) %1630)
          to label %1633 unwind label %416

1633:                                             ; preds = %1631
  invoke void @_ZN7glslang11TConstUnion9setBConstEb(ptr noundef nonnull align 8 dereferenceable(12) %1620, i1 noundef zeroext %1632)
          to label %1634 unwind label %416

1634:                                             ; preds = %1633
  br label %1833

1635:                                             ; preds = %415
  %1636 = load i32, ptr %19, align 4, !tbaa !13
  %1637 = sext i32 %1636 to i64
  %1638 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef %1637)
          to label %1639 unwind label %416

1639:                                             ; preds = %1635
  %1640 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 0) #9
  %1641 = load i32, ptr %20, align 4, !tbaa !13
  %1642 = sext i32 %1641 to i64
  %1643 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1640, i64 noundef %1642)
          to label %1644 unwind label %416

1644:                                             ; preds = %1639
  %1645 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 1) #9
  %1646 = load i32, ptr %22, align 4, !tbaa !13
  %1647 = sext i32 %1646 to i64
  %1648 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1645, i64 noundef %1647)
          to label %1649 unwind label %416

1649:                                             ; preds = %1644
  %1650 = invoke noundef zeroext i1 @_ZNK7glslang11TConstUnionneERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %1643, ptr noundef nonnull align 8 dereferenceable(12) %1648)
          to label %1651 unwind label %416

1651:                                             ; preds = %1649
  invoke void @_ZN7glslang11TConstUnion9setBConstEb(ptr noundef nonnull align 8 dereferenceable(12) %1638, i1 noundef zeroext %1650)
          to label %1652 unwind label %416

1652:                                             ; preds = %1651
  br label %1833

1653:                                             ; preds = %415
  %1654 = load ptr, ptr %6, align 8, !tbaa !5
  %1655 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %1654, i64 noundef 0) #9
  %1656 = load ptr, ptr %1655, align 8, !tbaa !5
  %1657 = load ptr, ptr %1656, align 8, !tbaa !9
  %1658 = getelementptr inbounds ptr, ptr %1657, i64 3
  %1659 = load ptr, ptr %1658, align 8
  %1660 = invoke noundef ptr %1659(ptr noundef nonnull align 8 dereferenceable(32) %1656)
          to label %1661 unwind label %416

1661:                                             ; preds = %1653
  %1662 = load ptr, ptr %1660, align 8, !tbaa !9
  %1663 = getelementptr inbounds ptr, ptr %1662, i64 46
  %1664 = load ptr, ptr %1663, align 8
  %1665 = invoke noundef zeroext i1 %1664(ptr noundef nonnull align 8 dereferenceable(176) %1660)
          to label %1666 unwind label %416

1666:                                             ; preds = %1661
  br i1 %1665, label %1669, label %1667

1667:                                             ; preds = %1666
  %1668 = load ptr, ptr %5, align 8, !tbaa !5
  store ptr %1668, ptr %3, align 8
  store i32 1, ptr %13, align 4
  br label %1834

1669:                                             ; preds = %1666
  %1670 = load ptr, ptr %6, align 8, !tbaa !5
  %1671 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %1670, i64 noundef 2) #9
  %1672 = load ptr, ptr %1671, align 8, !tbaa !5
  %1673 = load ptr, ptr %1672, align 8, !tbaa !9
  %1674 = getelementptr inbounds ptr, ptr %1673, i64 3
  %1675 = load ptr, ptr %1674, align 8
  %1676 = invoke noundef ptr %1675(ptr noundef nonnull align 8 dereferenceable(32) %1672)
          to label %1677 unwind label %416

1677:                                             ; preds = %1669
  %1678 = load ptr, ptr %1676, align 8, !tbaa !9
  %1679 = getelementptr inbounds ptr, ptr %1678, i64 32
  %1680 = load ptr, ptr %1679, align 8
  %1681 = invoke noundef i32 %1680(ptr noundef nonnull align 8 dereferenceable(176) %1676)
          to label %1682 unwind label %416

1682:                                             ; preds = %1677
  %1683 = icmp eq i32 %1681, 12
  br i1 %1683, label %1684, label %1715

1684:                                             ; preds = %1682
  %1685 = load i32, ptr %19, align 4, !tbaa !13
  %1686 = sext i32 %1685 to i64
  %1687 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef %1686)
          to label %1688 unwind label %416

1688:                                             ; preds = %1684
  %1689 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 2) #9
  %1690 = load i32, ptr %24, align 4, !tbaa !13
  %1691 = sext i32 %1690 to i64
  %1692 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1689, i64 noundef %1691)
          to label %1693 unwind label %416

1693:                                             ; preds = %1688
  %1694 = invoke noundef zeroext i1 @_ZNK7glslang11TConstUnion9getBConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1692)
          to label %1695 unwind label %416

1695:                                             ; preds = %1693
  br i1 %1694, label %1696, label %1704

1696:                                             ; preds = %1695
  %1697 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 1) #9
  %1698 = load i32, ptr %22, align 4, !tbaa !13
  %1699 = sext i32 %1698 to i64
  %1700 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1697, i64 noundef %1699)
          to label %1701 unwind label %416

1701:                                             ; preds = %1696
  %1702 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1700)
          to label %1703 unwind label %416

1703:                                             ; preds = %1701
  br label %1712

1704:                                             ; preds = %1695
  %1705 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 0) #9
  %1706 = load i32, ptr %20, align 4, !tbaa !13
  %1707 = sext i32 %1706 to i64
  %1708 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1705, i64 noundef %1707)
          to label %1709 unwind label %416

1709:                                             ; preds = %1704
  %1710 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1708)
          to label %1711 unwind label %416

1711:                                             ; preds = %1709
  br label %1712

1712:                                             ; preds = %1711, %1703
  %1713 = phi double [ %1702, %1703 ], [ %1710, %1711 ]
  invoke void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %1687, double noundef %1713)
          to label %1714 unwind label %416

1714:                                             ; preds = %1712
  br label %1752

1715:                                             ; preds = %1682
  %1716 = load i32, ptr %19, align 4, !tbaa !13
  %1717 = sext i32 %1716 to i64
  %1718 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef %1717)
          to label %1719 unwind label %416

1719:                                             ; preds = %1715
  %1720 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 0) #9
  %1721 = load i32, ptr %20, align 4, !tbaa !13
  %1722 = sext i32 %1721 to i64
  %1723 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1720, i64 noundef %1722)
          to label %1724 unwind label %416

1724:                                             ; preds = %1719
  %1725 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1723)
          to label %1726 unwind label %416

1726:                                             ; preds = %1724
  %1727 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 2) #9
  %1728 = load i32, ptr %24, align 4, !tbaa !13
  %1729 = sext i32 %1728 to i64
  %1730 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1727, i64 noundef %1729)
          to label %1731 unwind label %416

1731:                                             ; preds = %1726
  %1732 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1730)
          to label %1733 unwind label %416

1733:                                             ; preds = %1731
  %1734 = fsub double 1.000000e+00, %1732
  %1735 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 1) #9
  %1736 = load i32, ptr %22, align 4, !tbaa !13
  %1737 = sext i32 %1736 to i64
  %1738 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1735, i64 noundef %1737)
          to label %1739 unwind label %416

1739:                                             ; preds = %1733
  %1740 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1738)
          to label %1741 unwind label %416

1741:                                             ; preds = %1739
  %1742 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 2) #9
  %1743 = load i32, ptr %24, align 4, !tbaa !13
  %1744 = sext i32 %1743 to i64
  %1745 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1742, i64 noundef %1744)
          to label %1746 unwind label %416

1746:                                             ; preds = %1741
  %1747 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1745)
          to label %1748 unwind label %416

1748:                                             ; preds = %1746
  %1749 = fmul double %1740, %1747
  %1750 = call double @llvm.fmuladd.f64(double %1725, double %1734, double %1749)
  invoke void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %1718, double noundef %1750)
          to label %1751 unwind label %416

1751:                                             ; preds = %1748
  br label %1752

1752:                                             ; preds = %1751, %1714
  br label %1833

1753:                                             ; preds = %415
  %1754 = load i32, ptr %19, align 4, !tbaa !13
  %1755 = sext i32 %1754 to i64
  %1756 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef %1755)
          to label %1757 unwind label %416

1757:                                             ; preds = %1753
  %1758 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 1) #9
  %1759 = load i32, ptr %22, align 4, !tbaa !13
  %1760 = sext i32 %1759 to i64
  %1761 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1758, i64 noundef %1760)
          to label %1762 unwind label %416

1762:                                             ; preds = %1757
  %1763 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1761)
          to label %1764 unwind label %416

1764:                                             ; preds = %1762
  %1765 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 0) #9
  %1766 = load i32, ptr %20, align 4, !tbaa !13
  %1767 = sext i32 %1766 to i64
  %1768 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1765, i64 noundef %1767)
          to label %1769 unwind label %416

1769:                                             ; preds = %1764
  %1770 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1768)
          to label %1771 unwind label %416

1771:                                             ; preds = %1769
  %1772 = fcmp olt double %1763, %1770
  %1773 = zext i1 %1772 to i64
  %1774 = select i1 %1772, double 0.000000e+00, double 1.000000e+00
  invoke void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %1756, double noundef %1774)
          to label %1775 unwind label %416

1775:                                             ; preds = %1771
  br label %1833

1776:                                             ; preds = %415
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #9
  %1777 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 2) #9
  %1778 = load i32, ptr %24, align 4, !tbaa !13
  %1779 = sext i32 %1778 to i64
  %1780 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1777, i64 noundef %1779)
          to label %1781 unwind label %1811

1781:                                             ; preds = %1776
  %1782 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1780)
          to label %1783 unwind label %1811

1783:                                             ; preds = %1781
  %1784 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 0) #9
  %1785 = load i32, ptr %20, align 4, !tbaa !13
  %1786 = sext i32 %1785 to i64
  %1787 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1784, i64 noundef %1786)
          to label %1788 unwind label %1811

1788:                                             ; preds = %1783
  %1789 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1787)
          to label %1790 unwind label %1811

1790:                                             ; preds = %1788
  %1791 = fsub double %1782, %1789
  %1792 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 1) #9
  %1793 = load i32, ptr %22, align 4, !tbaa !13
  %1794 = sext i32 %1793 to i64
  %1795 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1792, i64 noundef %1794)
          to label %1796 unwind label %1811

1796:                                             ; preds = %1790
  %1797 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1795)
          to label %1798 unwind label %1811

1798:                                             ; preds = %1796
  %1799 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 0) #9
  %1800 = load i32, ptr %20, align 4, !tbaa !13
  %1801 = sext i32 %1800 to i64
  %1802 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1799, i64 noundef %1801)
          to label %1803 unwind label %1811

1803:                                             ; preds = %1798
  %1804 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1802)
          to label %1805 unwind label %1811

1805:                                             ; preds = %1803
  %1806 = fsub double %1797, %1804
  %1807 = fdiv double %1791, %1806
  store double %1807, ptr %92, align 8, !tbaa !19
  %1808 = load double, ptr %92, align 8, !tbaa !19
  %1809 = fcmp olt double %1808, 0.000000e+00
  br i1 %1809, label %1810, label %1815

1810:                                             ; preds = %1805
  store double 0.000000e+00, ptr %92, align 8, !tbaa !19
  br label %1815

1811:                                             ; preds = %1823, %1819, %1803, %1798, %1796, %1790, %1788, %1783, %1781, %1776
  %1812 = landingpad { ptr, i32 }
          cleanup
  %1813 = extractvalue { ptr, i32 } %1812, 0
  store ptr %1813, ptr %16, align 8
  %1814 = extractvalue { ptr, i32 } %1812, 1
  store i32 %1814, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #9
  br label %1840

1815:                                             ; preds = %1810, %1805
  %1816 = load double, ptr %92, align 8, !tbaa !19
  %1817 = fcmp ogt double %1816, 1.000000e+00
  br i1 %1817, label %1818, label %1819

1818:                                             ; preds = %1815
  store double 1.000000e+00, ptr %92, align 8, !tbaa !19
  br label %1819

1819:                                             ; preds = %1818, %1815
  %1820 = load i32, ptr %19, align 4, !tbaa !13
  %1821 = sext i32 %1820 to i64
  %1822 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef %1821)
          to label %1823 unwind label %1811

1823:                                             ; preds = %1819
  %1824 = load double, ptr %92, align 8, !tbaa !19
  %1825 = load double, ptr %92, align 8, !tbaa !19
  %1826 = fmul double %1824, %1825
  %1827 = load double, ptr %92, align 8, !tbaa !19
  %1828 = call double @llvm.fmuladd.f64(double -2.000000e+00, double %1827, double 3.000000e+00)
  %1829 = fmul double %1826, %1828
  invoke void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %1822, double noundef %1829)
          to label %1830 unwind label %1811

1830:                                             ; preds = %1823
  store i32 9, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #9
  br label %1833

1831:                                             ; preds = %415
  %1832 = load ptr, ptr %5, align 8, !tbaa !5
  store ptr %1832, ptr %3, align 8
  store i32 1, ptr %13, align 4
  br label %1834

1833:                                             ; preds = %1830, %1775, %1752, %1652, %1634, %1616, %1597, %1578, %1560, %1542, %1112, %808, %490, %461, %440
  store i32 0, ptr %13, align 4
  br label %1834

1834:                                             ; preds = %1833, %1831, %1667
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #9
  %1835 = load i32, ptr %13, align 4
  switch i32 %1835, label %1843 [
    i32 0, label %1836
  ]

1836:                                             ; preds = %1834
  br label %1837

1837:                                             ; preds = %1836
  %1838 = load i32, ptr %19, align 4, !tbaa !13
  %1839 = add nsw i32 %1838, 1
  store i32 %1839, ptr %19, align 4, !tbaa !13
  br label %319, !llvm.loop !26

1840:                                             ; preds = %1811, %1540, %1494, %1448, %1402, %1356, %1310, %1264, %1218, %1172, %1110, %1078, %1046, %1014, %982, %950, %918, %886, %854, %806, %774, %742, %710, %678, %646, %614, %582, %550, %504, %416, %408
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #9
  br label %1841

1841:                                             ; preds = %1840, %377
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #9
  br label %1842

1842:                                             ; preds = %1841, %373
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #9
  br label %2314

1843:                                             ; preds = %1834, %323
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #9
  %1844 = load i32, ptr %13, align 4
  switch i32 %1844, label %2313 [
    i32 6, label %1845
  ]

1845:                                             ; preds = %1843
  br label %2267

1846:                                             ; preds = %315
  call void @llvm.lifetime.start.p0(i64 4, ptr %93) #9
  %1847 = load ptr, ptr %6, align 8, !tbaa !5
  %1848 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %1847, i64 noundef 0) #9
  %1849 = load ptr, ptr %1848, align 8, !tbaa !5
  %1850 = load ptr, ptr %1849, align 8, !tbaa !9
  %1851 = getelementptr inbounds ptr, ptr %1850, i64 5
  %1852 = load ptr, ptr %1851, align 8
  %1853 = invoke noundef ptr %1852(ptr noundef nonnull align 8 dereferenceable(32) %1849)
          to label %1854 unwind label %1865

1854:                                             ; preds = %1846
  %1855 = load ptr, ptr %1853, align 8, !tbaa !9
  %1856 = getelementptr inbounds ptr, ptr %1855, i64 30
  %1857 = load ptr, ptr %1856, align 8
  %1858 = invoke noundef nonnull align 8 dereferenceable(144) ptr %1857(ptr noundef nonnull align 8 dereferenceable(176) %1853)
          to label %1859 unwind label %1865

1859:                                             ; preds = %1854
  %1860 = invoke noundef i32 @_ZNK7glslang5TType20computeNumComponentsEv(ptr noundef nonnull align 8 dereferenceable(144) %1858)
          to label %1861 unwind label %1865

1861:                                             ; preds = %1859
  store i32 %1860, ptr %93, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #9
  %1862 = load ptr, ptr %5, align 8, !tbaa !5
  %1863 = invoke noundef i32 @_ZNK7glslang15TIntermOperator5getOpEv(ptr noundef nonnull align 8 dereferenceable(184) %1862)
          to label %1864 unwind label %1869

1864:                                             ; preds = %1861
  switch i32 %1863, label %2259 [
    i32 272, label %1873
    i32 273, label %1917
    i32 274, label %1925
    i32 276, label %2013
    i32 277, label %2059
    i32 278, label %2102
    i32 296, label %2193
  ]

1865:                                             ; preds = %1859, %1854, %1846
  %1866 = landingpad { ptr, i32 }
          cleanup
  %1867 = extractvalue { ptr, i32 } %1866, 0
  store ptr %1867, ptr %16, align 8
  %1868 = extractvalue { ptr, i32 } %1866, 1
  store i32 %1868, ptr %17, align 4
  br label %2266

1869:                                             ; preds = %2102, %2059, %2013, %1923, %1919, %1917, %1861
  %1870 = landingpad { ptr, i32 }
          cleanup
  %1871 = extractvalue { ptr, i32 } %1870, 0
  store ptr %1871, ptr %16, align 8
  %1872 = extractvalue { ptr, i32 } %1870, 1
  store i32 %1872, ptr %17, align 4
  br label %2265

1873:                                             ; preds = %1864
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #9
  store double 0.000000e+00, ptr %95, align 8, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 4, ptr %96) #9
  store i32 0, ptr %96, align 4, !tbaa !13
  br label %1874

1874:                                             ; preds = %1899, %1873
  %1875 = load i32, ptr %96, align 4, !tbaa !13
  %1876 = load i32, ptr %93, align 4, !tbaa !13
  %1877 = icmp slt i32 %1875, %1876
  br i1 %1877, label %1879, label %1878

1878:                                             ; preds = %1874
  store i32 14, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #9
  br label %1906

1879:                                             ; preds = %1874
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #9
  %1880 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 1) #9
  %1881 = load i32, ptr %96, align 4, !tbaa !13
  %1882 = sext i32 %1881 to i64
  %1883 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1880, i64 noundef %1882)
          to label %1884 unwind label %1902

1884:                                             ; preds = %1879
  %1885 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1883)
          to label %1886 unwind label %1902

1886:                                             ; preds = %1884
  %1887 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 0) #9
  %1888 = load i32, ptr %96, align 4, !tbaa !13
  %1889 = sext i32 %1888 to i64
  %1890 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1887, i64 noundef %1889)
          to label %1891 unwind label %1902

1891:                                             ; preds = %1886
  %1892 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1890)
          to label %1893 unwind label %1902

1893:                                             ; preds = %1891
  %1894 = fsub double %1885, %1892
  store double %1894, ptr %97, align 8, !tbaa !19
  %1895 = load double, ptr %97, align 8, !tbaa !19
  %1896 = load double, ptr %97, align 8, !tbaa !19
  %1897 = load double, ptr %95, align 8, !tbaa !19
  %1898 = call double @llvm.fmuladd.f64(double %1895, double %1896, double %1897)
  store double %1898, ptr %95, align 8, !tbaa !19
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #9
  br label %1899

1899:                                             ; preds = %1893
  %1900 = load i32, ptr %96, align 4, !tbaa !13
  %1901 = add nsw i32 %1900, 1
  store i32 %1901, ptr %96, align 4, !tbaa !13
  br label %1874, !llvm.loop !27

1902:                                             ; preds = %1891, %1886, %1884, %1879
  %1903 = landingpad { ptr, i32 }
          cleanup
  %1904 = extractvalue { ptr, i32 } %1903, 0
  store ptr %1904, ptr %16, align 8
  %1905 = extractvalue { ptr, i32 } %1903, 1
  store i32 %1905, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #9
  br label %1916

1906:                                             ; preds = %1878
  %1907 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef 0)
          to label %1908 unwind label %1912

1908:                                             ; preds = %1906
  %1909 = load double, ptr %95, align 8, !tbaa !19
  %1910 = call double @sqrt(double noundef %1909) #9
  invoke void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %1907, double noundef %1910)
          to label %1911 unwind label %1912

1911:                                             ; preds = %1908
  store i32 13, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #9
  br label %2261

1912:                                             ; preds = %1908, %1906
  %1913 = landingpad { ptr, i32 }
          cleanup
  %1914 = extractvalue { ptr, i32 } %1913, 0
  store ptr %1914, ptr %16, align 8
  %1915 = extractvalue { ptr, i32 } %1913, 1
  store i32 %1915, ptr %17, align 4
  br label %1916

1916:                                             ; preds = %1912, %1902
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #9
  br label %2265

1917:                                             ; preds = %1864
  %1918 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef 0)
          to label %1919 unwind label %1869

1919:                                             ; preds = %1917
  %1920 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 0) #9
  %1921 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 1) #9
  %1922 = invoke noundef double @_ZN7glslang16TConstUnionArray3dotERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %1920, ptr noundef nonnull align 8 dereferenceable(16) %1921)
          to label %1923 unwind label %1869

1923:                                             ; preds = %1919
  invoke void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %1918, double noundef %1922)
          to label %1924 unwind label %1869

1924:                                             ; preds = %1923
  br label %2261

1925:                                             ; preds = %1864
  call void @llvm.lifetime.start.p0(i64 16, ptr %98) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %99) #9
  %1926 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 0) #9
  %1927 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1926, i64 noundef 1)
          to label %1928 unwind label %1986

1928:                                             ; preds = %1925
  %1929 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 1) #9
  %1930 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1929, i64 noundef 2)
          to label %1931 unwind label %1986

1931:                                             ; preds = %1928
  %1932 = invoke { i64, i32 } @_ZNK7glslang11TConstUnionmlERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %1927, ptr noundef nonnull align 8 dereferenceable(12) %1930)
          to label %1933 unwind label %1986

1933:                                             ; preds = %1931
  store { i64, i32 } %1932, ptr %100, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %99, ptr align 8 %100, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr %101) #9
  %1934 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 0) #9
  %1935 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1934, i64 noundef 2)
          to label %1936 unwind label %1990

1936:                                             ; preds = %1933
  %1937 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 1) #9
  %1938 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1937, i64 noundef 1)
          to label %1939 unwind label %1990

1939:                                             ; preds = %1936
  %1940 = invoke { i64, i32 } @_ZNK7glslang11TConstUnionmlERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %1935, ptr noundef nonnull align 8 dereferenceable(12) %1938)
          to label %1941 unwind label %1990

1941:                                             ; preds = %1939
  store { i64, i32 } %1940, ptr %102, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %101, ptr align 8 %102, i64 12, i1 false)
  %1942 = invoke { i64, i32 } @_ZNK7glslang11TConstUnionmiERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %99, ptr noundef nonnull align 8 dereferenceable(12) %101)
          to label %1943 unwind label %1990

1943:                                             ; preds = %1941
  store { i64, i32 } %1942, ptr %103, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %98, ptr align 8 %103, i64 12, i1 false)
  %1944 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef 0)
          to label %1945 unwind label %1990

1945:                                             ; preds = %1943
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1944, ptr align 8 %98, i64 12, i1 false), !tbaa.struct !28
  call void @llvm.lifetime.end.p0(i64 16, ptr %101) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %99) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %98) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %104) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %105) #9
  %1946 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 0) #9
  %1947 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1946, i64 noundef 2)
          to label %1948 unwind label %1995

1948:                                             ; preds = %1945
  %1949 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 1) #9
  %1950 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1949, i64 noundef 0)
          to label %1951 unwind label %1995

1951:                                             ; preds = %1948
  %1952 = invoke { i64, i32 } @_ZNK7glslang11TConstUnionmlERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %1947, ptr noundef nonnull align 8 dereferenceable(12) %1950)
          to label %1953 unwind label %1995

1953:                                             ; preds = %1951
  store { i64, i32 } %1952, ptr %106, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %105, ptr align 8 %106, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr %107) #9
  %1954 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 0) #9
  %1955 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1954, i64 noundef 0)
          to label %1956 unwind label %1999

1956:                                             ; preds = %1953
  %1957 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 1) #9
  %1958 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1957, i64 noundef 2)
          to label %1959 unwind label %1999

1959:                                             ; preds = %1956
  %1960 = invoke { i64, i32 } @_ZNK7glslang11TConstUnionmlERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %1955, ptr noundef nonnull align 8 dereferenceable(12) %1958)
          to label %1961 unwind label %1999

1961:                                             ; preds = %1959
  store { i64, i32 } %1960, ptr %108, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %107, ptr align 8 %108, i64 12, i1 false)
  %1962 = invoke { i64, i32 } @_ZNK7glslang11TConstUnionmiERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %105, ptr noundef nonnull align 8 dereferenceable(12) %107)
          to label %1963 unwind label %1999

1963:                                             ; preds = %1961
  store { i64, i32 } %1962, ptr %109, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %104, ptr align 8 %109, i64 12, i1 false)
  %1964 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef 1)
          to label %1965 unwind label %1999

1965:                                             ; preds = %1963
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1964, ptr align 8 %104, i64 12, i1 false), !tbaa.struct !28
  call void @llvm.lifetime.end.p0(i64 16, ptr %107) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %105) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %104) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %110) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %111) #9
  %1966 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 0) #9
  %1967 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1966, i64 noundef 0)
          to label %1968 unwind label %2004

1968:                                             ; preds = %1965
  %1969 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 1) #9
  %1970 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1969, i64 noundef 1)
          to label %1971 unwind label %2004

1971:                                             ; preds = %1968
  %1972 = invoke { i64, i32 } @_ZNK7glslang11TConstUnionmlERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %1967, ptr noundef nonnull align 8 dereferenceable(12) %1970)
          to label %1973 unwind label %2004

1973:                                             ; preds = %1971
  store { i64, i32 } %1972, ptr %112, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %111, ptr align 8 %112, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr %113) #9
  %1974 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 0) #9
  %1975 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1974, i64 noundef 1)
          to label %1976 unwind label %2008

1976:                                             ; preds = %1973
  %1977 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 1) #9
  %1978 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1977, i64 noundef 0)
          to label %1979 unwind label %2008

1979:                                             ; preds = %1976
  %1980 = invoke { i64, i32 } @_ZNK7glslang11TConstUnionmlERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %1975, ptr noundef nonnull align 8 dereferenceable(12) %1978)
          to label %1981 unwind label %2008

1981:                                             ; preds = %1979
  store { i64, i32 } %1980, ptr %114, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %113, ptr align 8 %114, i64 12, i1 false)
  %1982 = invoke { i64, i32 } @_ZNK7glslang11TConstUnionmiERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %111, ptr noundef nonnull align 8 dereferenceable(12) %113)
          to label %1983 unwind label %2008

1983:                                             ; preds = %1981
  store { i64, i32 } %1982, ptr %115, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %110, ptr align 8 %115, i64 12, i1 false)
  %1984 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef 2)
          to label %1985 unwind label %2008

1985:                                             ; preds = %1983
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1984, ptr align 8 %110, i64 12, i1 false), !tbaa.struct !28
  call void @llvm.lifetime.end.p0(i64 16, ptr %113) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %111) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %110) #9
  br label %2261

1986:                                             ; preds = %1931, %1928, %1925
  %1987 = landingpad { ptr, i32 }
          cleanup
  %1988 = extractvalue { ptr, i32 } %1987, 0
  store ptr %1988, ptr %16, align 8
  %1989 = extractvalue { ptr, i32 } %1987, 1
  store i32 %1989, ptr %17, align 4
  br label %1994

1990:                                             ; preds = %1943, %1941, %1939, %1936, %1933
  %1991 = landingpad { ptr, i32 }
          cleanup
  %1992 = extractvalue { ptr, i32 } %1991, 0
  store ptr %1992, ptr %16, align 8
  %1993 = extractvalue { ptr, i32 } %1991, 1
  store i32 %1993, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %101) #9
  br label %1994

1994:                                             ; preds = %1990, %1986
  call void @llvm.lifetime.end.p0(i64 16, ptr %99) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %98) #9
  br label %2265

1995:                                             ; preds = %1951, %1948, %1945
  %1996 = landingpad { ptr, i32 }
          cleanup
  %1997 = extractvalue { ptr, i32 } %1996, 0
  store ptr %1997, ptr %16, align 8
  %1998 = extractvalue { ptr, i32 } %1996, 1
  store i32 %1998, ptr %17, align 4
  br label %2003

1999:                                             ; preds = %1963, %1961, %1959, %1956, %1953
  %2000 = landingpad { ptr, i32 }
          cleanup
  %2001 = extractvalue { ptr, i32 } %2000, 0
  store ptr %2001, ptr %16, align 8
  %2002 = extractvalue { ptr, i32 } %2000, 1
  store i32 %2002, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %107) #9
  br label %2003

2003:                                             ; preds = %1999, %1995
  call void @llvm.lifetime.end.p0(i64 16, ptr %105) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %104) #9
  br label %2265

2004:                                             ; preds = %1971, %1968, %1965
  %2005 = landingpad { ptr, i32 }
          cleanup
  %2006 = extractvalue { ptr, i32 } %2005, 0
  store ptr %2006, ptr %16, align 8
  %2007 = extractvalue { ptr, i32 } %2005, 1
  store i32 %2007, ptr %17, align 4
  br label %2012

2008:                                             ; preds = %1983, %1981, %1979, %1976, %1973
  %2009 = landingpad { ptr, i32 }
          cleanup
  %2010 = extractvalue { ptr, i32 } %2009, 0
  store ptr %2010, ptr %16, align 8
  %2011 = extractvalue { ptr, i32 } %2009, 1
  store i32 %2011, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %113) #9
  br label %2012

2012:                                             ; preds = %2008, %2004
  call void @llvm.lifetime.end.p0(i64 16, ptr %111) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %110) #9
  br label %2265

2013:                                             ; preds = %1864
  %2014 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 1) #9
  %2015 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 2) #9
  %2016 = invoke noundef double @_ZN7glslang16TConstUnionArray3dotERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %2014, ptr noundef nonnull align 8 dereferenceable(16) %2015)
          to label %2017 unwind label %1869

2017:                                             ; preds = %2013
  store double %2016, ptr %94, align 8, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 4, ptr %116) #9
  store i32 0, ptr %116, align 4, !tbaa !13
  br label %2018

2018:                                             ; preds = %2055, %2017
  %2019 = load i32, ptr %116, align 4, !tbaa !13
  %2020 = load i32, ptr %93, align 4, !tbaa !13
  %2021 = icmp slt i32 %2019, %2020
  br i1 %2021, label %2023, label %2022

2022:                                             ; preds = %2018
  store i32 17, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %116) #9
  br label %2058

2023:                                             ; preds = %2018
  %2024 = load double, ptr %94, align 8, !tbaa !19
  %2025 = fcmp olt double %2024, 0.000000e+00
  br i1 %2025, label %2026, label %2040

2026:                                             ; preds = %2023
  %2027 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 0) #9
  %2028 = load i32, ptr %116, align 4, !tbaa !13
  %2029 = sext i32 %2028 to i64
  %2030 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %2027, i64 noundef %2029)
          to label %2031 unwind label %2036

2031:                                             ; preds = %2026
  %2032 = load i32, ptr %116, align 4, !tbaa !13
  %2033 = sext i32 %2032 to i64
  %2034 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef %2033)
          to label %2035 unwind label %2036

2035:                                             ; preds = %2031
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2034, ptr align 8 %2030, i64 12, i1 false), !tbaa.struct !28
  br label %2054

2036:                                             ; preds = %2051, %2049, %2044, %2040, %2031, %2026
  %2037 = landingpad { ptr, i32 }
          cleanup
  %2038 = extractvalue { ptr, i32 } %2037, 0
  store ptr %2038, ptr %16, align 8
  %2039 = extractvalue { ptr, i32 } %2037, 1
  store i32 %2039, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %116) #9
  br label %2265

2040:                                             ; preds = %2023
  %2041 = load i32, ptr %116, align 4, !tbaa !13
  %2042 = sext i32 %2041 to i64
  %2043 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef %2042)
          to label %2044 unwind label %2036

2044:                                             ; preds = %2040
  %2045 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 0) #9
  %2046 = load i32, ptr %116, align 4, !tbaa !13
  %2047 = sext i32 %2046 to i64
  %2048 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %2045, i64 noundef %2047)
          to label %2049 unwind label %2036

2049:                                             ; preds = %2044
  %2050 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %2048)
          to label %2051 unwind label %2036

2051:                                             ; preds = %2049
  %2052 = fneg double %2050
  invoke void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %2043, double noundef %2052)
          to label %2053 unwind label %2036

2053:                                             ; preds = %2051
  br label %2054

2054:                                             ; preds = %2053, %2035
  br label %2055

2055:                                             ; preds = %2054
  %2056 = load i32, ptr %116, align 4, !tbaa !13
  %2057 = add nsw i32 %2056, 1
  store i32 %2057, ptr %116, align 4, !tbaa !13
  br label %2018, !llvm.loop !31

2058:                                             ; preds = %2022
  br label %2261

2059:                                             ; preds = %1864
  %2060 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 0) #9
  %2061 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 1) #9
  %2062 = invoke noundef double @_ZN7glslang16TConstUnionArray3dotERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %2060, ptr noundef nonnull align 8 dereferenceable(16) %2061)
          to label %2063 unwind label %1869

2063:                                             ; preds = %2059
  store double %2062, ptr %94, align 8, !tbaa !19
  %2064 = load double, ptr %94, align 8, !tbaa !19
  %2065 = fmul double %2064, 2.000000e+00
  store double %2065, ptr %94, align 8, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 4, ptr %117) #9
  store i32 0, ptr %117, align 4, !tbaa !13
  br label %2066

2066:                                             ; preds = %2094, %2063
  %2067 = load i32, ptr %117, align 4, !tbaa !13
  %2068 = load i32, ptr %93, align 4, !tbaa !13
  %2069 = icmp slt i32 %2067, %2068
  br i1 %2069, label %2071, label %2070

2070:                                             ; preds = %2066
  store i32 20, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %117) #9
  br label %2101

2071:                                             ; preds = %2066
  %2072 = load i32, ptr %117, align 4, !tbaa !13
  %2073 = sext i32 %2072 to i64
  %2074 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef %2073)
          to label %2075 unwind label %2097

2075:                                             ; preds = %2071
  %2076 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 0) #9
  %2077 = load i32, ptr %117, align 4, !tbaa !13
  %2078 = sext i32 %2077 to i64
  %2079 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %2076, i64 noundef %2078)
          to label %2080 unwind label %2097

2080:                                             ; preds = %2075
  %2081 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %2079)
          to label %2082 unwind label %2097

2082:                                             ; preds = %2080
  %2083 = load double, ptr %94, align 8, !tbaa !19
  %2084 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 1) #9
  %2085 = load i32, ptr %117, align 4, !tbaa !13
  %2086 = sext i32 %2085 to i64
  %2087 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %2084, i64 noundef %2086)
          to label %2088 unwind label %2097

2088:                                             ; preds = %2082
  %2089 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %2087)
          to label %2090 unwind label %2097

2090:                                             ; preds = %2088
  %2091 = fneg double %2083
  %2092 = call double @llvm.fmuladd.f64(double %2091, double %2089, double %2081)
  invoke void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %2074, double noundef %2092)
          to label %2093 unwind label %2097

2093:                                             ; preds = %2090
  br label %2094

2094:                                             ; preds = %2093
  %2095 = load i32, ptr %117, align 4, !tbaa !13
  %2096 = add nsw i32 %2095, 1
  store i32 %2096, ptr %117, align 4, !tbaa !13
  br label %2066, !llvm.loop !32

2097:                                             ; preds = %2090, %2088, %2082, %2080, %2075, %2071
  %2098 = landingpad { ptr, i32 }
          cleanup
  %2099 = extractvalue { ptr, i32 } %2098, 0
  store ptr %2099, ptr %16, align 8
  %2100 = extractvalue { ptr, i32 } %2098, 1
  store i32 %2100, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %117) #9
  br label %2265

2101:                                             ; preds = %2070
  br label %2261

2102:                                             ; preds = %1864
  %2103 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 0) #9
  %2104 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 1) #9
  %2105 = invoke noundef double @_ZN7glslang16TConstUnionArray3dotERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %2103, ptr noundef nonnull align 8 dereferenceable(16) %2104)
          to label %2106 unwind label %1869

2106:                                             ; preds = %2102
  store double %2105, ptr %94, align 8, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 8, ptr %118) #9
  %2107 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 2) #9
  %2108 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %2107, i64 noundef 0)
          to label %2109 unwind label %2129

2109:                                             ; preds = %2106
  %2110 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %2108)
          to label %2111 unwind label %2129

2111:                                             ; preds = %2109
  store double %2110, ptr %118, align 8, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 8, ptr %119) #9
  %2112 = load double, ptr %118, align 8, !tbaa !19
  %2113 = load double, ptr %118, align 8, !tbaa !19
  %2114 = fmul double %2112, %2113
  %2115 = load double, ptr %94, align 8, !tbaa !19
  %2116 = load double, ptr %94, align 8, !tbaa !19
  %2117 = fneg double %2115
  %2118 = call double @llvm.fmuladd.f64(double %2117, double %2116, double 1.000000e+00)
  %2119 = fneg double %2114
  %2120 = call double @llvm.fmuladd.f64(double %2119, double %2118, double 1.000000e+00)
  store double %2120, ptr %119, align 8, !tbaa !19
  %2121 = load double, ptr %119, align 8, !tbaa !19
  %2122 = fcmp olt double %2121, 0.000000e+00
  br i1 %2122, label %2123, label %2147

2123:                                             ; preds = %2111
  call void @llvm.lifetime.start.p0(i64 4, ptr %120) #9
  store i32 0, ptr %120, align 4, !tbaa !13
  br label %2124

2124:                                             ; preds = %2139, %2123
  %2125 = load i32, ptr %120, align 4, !tbaa !13
  %2126 = load i32, ptr %93, align 4, !tbaa !13
  %2127 = icmp slt i32 %2125, %2126
  br i1 %2127, label %2133, label %2128

2128:                                             ; preds = %2124
  store i32 23, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %120) #9
  br label %2146

2129:                                             ; preds = %2109, %2106
  %2130 = landingpad { ptr, i32 }
          cleanup
  %2131 = extractvalue { ptr, i32 } %2130, 0
  store ptr %2131, ptr %16, align 8
  %2132 = extractvalue { ptr, i32 } %2130, 1
  store i32 %2132, ptr %17, align 4
  br label %2192

2133:                                             ; preds = %2124
  %2134 = load i32, ptr %120, align 4, !tbaa !13
  %2135 = sext i32 %2134 to i64
  %2136 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef %2135)
          to label %2137 unwind label %2142

2137:                                             ; preds = %2133
  invoke void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %2136, double noundef 0.000000e+00)
          to label %2138 unwind label %2142

2138:                                             ; preds = %2137
  br label %2139

2139:                                             ; preds = %2138
  %2140 = load i32, ptr %120, align 4, !tbaa !13
  %2141 = add nsw i32 %2140, 1
  store i32 %2141, ptr %120, align 4, !tbaa !13
  br label %2124, !llvm.loop !33

2142:                                             ; preds = %2137, %2133
  %2143 = landingpad { ptr, i32 }
          cleanup
  %2144 = extractvalue { ptr, i32 } %2143, 0
  store ptr %2144, ptr %16, align 8
  %2145 = extractvalue { ptr, i32 } %2143, 1
  store i32 %2145, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %120) #9
  br label %2191

2146:                                             ; preds = %2128
  br label %2190

2147:                                             ; preds = %2111
  call void @llvm.lifetime.start.p0(i64 4, ptr %121) #9
  store i32 0, ptr %121, align 4, !tbaa !13
  br label %2148

2148:                                             ; preds = %2182, %2147
  %2149 = load i32, ptr %121, align 4, !tbaa !13
  %2150 = load i32, ptr %93, align 4, !tbaa !13
  %2151 = icmp slt i32 %2149, %2150
  br i1 %2151, label %2153, label %2152

2152:                                             ; preds = %2148
  store i32 26, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %121) #9
  br label %2189

2153:                                             ; preds = %2148
  %2154 = load i32, ptr %121, align 4, !tbaa !13
  %2155 = sext i32 %2154 to i64
  %2156 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef %2155)
          to label %2157 unwind label %2185

2157:                                             ; preds = %2153
  %2158 = load double, ptr %118, align 8, !tbaa !19
  %2159 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 0) #9
  %2160 = load i32, ptr %121, align 4, !tbaa !13
  %2161 = sext i32 %2160 to i64
  %2162 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %2159, i64 noundef %2161)
          to label %2163 unwind label %2185

2163:                                             ; preds = %2157
  %2164 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %2162)
          to label %2165 unwind label %2185

2165:                                             ; preds = %2163
  %2166 = load double, ptr %118, align 8, !tbaa !19
  %2167 = load double, ptr %94, align 8, !tbaa !19
  %2168 = load double, ptr %119, align 8, !tbaa !19
  %2169 = call double @sqrt(double noundef %2168) #9
  %2170 = call double @llvm.fmuladd.f64(double %2166, double %2167, double %2169)
  %2171 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 1) #9
  %2172 = load i32, ptr %121, align 4, !tbaa !13
  %2173 = sext i32 %2172 to i64
  %2174 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %2171, i64 noundef %2173)
          to label %2175 unwind label %2185

2175:                                             ; preds = %2165
  %2176 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %2174)
          to label %2177 unwind label %2185

2177:                                             ; preds = %2175
  %2178 = fmul double %2170, %2176
  %2179 = fneg double %2178
  %2180 = call double @llvm.fmuladd.f64(double %2158, double %2164, double %2179)
  invoke void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %2156, double noundef %2180)
          to label %2181 unwind label %2185

2181:                                             ; preds = %2177
  br label %2182

2182:                                             ; preds = %2181
  %2183 = load i32, ptr %121, align 4, !tbaa !13
  %2184 = add nsw i32 %2183, 1
  store i32 %2184, ptr %121, align 4, !tbaa !13
  br label %2148, !llvm.loop !34

2185:                                             ; preds = %2177, %2175, %2165, %2163, %2157, %2153
  %2186 = landingpad { ptr, i32 }
          cleanup
  %2187 = extractvalue { ptr, i32 } %2186, 0
  store ptr %2187, ptr %16, align 8
  %2188 = extractvalue { ptr, i32 } %2186, 1
  store i32 %2188, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %121) #9
  br label %2191

2189:                                             ; preds = %2152
  br label %2190

2190:                                             ; preds = %2189, %2146
  store i32 13, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %118) #9
  br label %2261

2191:                                             ; preds = %2185, %2142
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #9
  br label %2192

2192:                                             ; preds = %2191, %2129
  call void @llvm.lifetime.end.p0(i64 8, ptr %118) #9
  br label %2265

2193:                                             ; preds = %1864
  call void @llvm.lifetime.start.p0(i64 4, ptr %122) #9
  %2194 = load i32, ptr %93, align 4, !tbaa !13
  store i32 %2194, ptr %122, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %123) #9
  %2195 = load ptr, ptr %6, align 8, !tbaa !5
  %2196 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %2195, i64 noundef 1) #9
  %2197 = load ptr, ptr %2196, align 8, !tbaa !5
  %2198 = load ptr, ptr %2197, align 8, !tbaa !9
  %2199 = getelementptr inbounds ptr, ptr %2198, i64 5
  %2200 = load ptr, ptr %2199, align 8
  %2201 = invoke noundef ptr %2200(ptr noundef nonnull align 8 dereferenceable(32) %2197)
          to label %2202 unwind label %2215

2202:                                             ; preds = %2193
  %2203 = load ptr, ptr %2201, align 8, !tbaa !9
  %2204 = getelementptr inbounds ptr, ptr %2203, i64 30
  %2205 = load ptr, ptr %2204, align 8
  %2206 = invoke noundef nonnull align 8 dereferenceable(144) ptr %2205(ptr noundef nonnull align 8 dereferenceable(176) %2201)
          to label %2207 unwind label %2215

2207:                                             ; preds = %2202
  %2208 = invoke noundef i32 @_ZNK7glslang5TType20computeNumComponentsEv(ptr noundef nonnull align 8 dereferenceable(144) %2206)
          to label %2209 unwind label %2215

2209:                                             ; preds = %2207
  store i32 %2208, ptr %123, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %124) #9
  store i32 0, ptr %124, align 4, !tbaa !13
  br label %2210

2210:                                             ; preds = %2254, %2209
  %2211 = load i32, ptr %124, align 4, !tbaa !13
  %2212 = load i32, ptr %122, align 4, !tbaa !13
  %2213 = icmp slt i32 %2211, %2212
  br i1 %2213, label %2219, label %2214

2214:                                             ; preds = %2210
  store i32 29, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %124) #9
  br label %2257

2215:                                             ; preds = %2207, %2202, %2193
  %2216 = landingpad { ptr, i32 }
          cleanup
  %2217 = extractvalue { ptr, i32 } %2216, 0
  store ptr %2217, ptr %16, align 8
  %2218 = extractvalue { ptr, i32 } %2216, 1
  store i32 %2218, ptr %17, align 4
  br label %2258

2219:                                             ; preds = %2210
  call void @llvm.lifetime.start.p0(i64 4, ptr %125) #9
  store i32 0, ptr %125, align 4, !tbaa !13
  br label %2220

2220:                                             ; preds = %2246, %2219
  %2221 = load i32, ptr %125, align 4, !tbaa !13
  %2222 = load i32, ptr %123, align 4, !tbaa !13
  %2223 = icmp slt i32 %2221, %2222
  br i1 %2223, label %2225, label %2224

2224:                                             ; preds = %2220
  store i32 32, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %125) #9
  br label %2253

2225:                                             ; preds = %2220
  call void @llvm.lifetime.start.p0(i64 16, ptr %126) #9
  %2226 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 0) #9
  %2227 = load i32, ptr %124, align 4, !tbaa !13
  %2228 = sext i32 %2227 to i64
  %2229 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %2226, i64 noundef %2228)
          to label %2230 unwind label %2249

2230:                                             ; preds = %2225
  %2231 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef 1) #9
  %2232 = load i32, ptr %125, align 4, !tbaa !13
  %2233 = sext i32 %2232 to i64
  %2234 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %2231, i64 noundef %2233)
          to label %2235 unwind label %2249

2235:                                             ; preds = %2230
  %2236 = invoke { i64, i32 } @_ZNK7glslang11TConstUnionmlERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %2229, ptr noundef nonnull align 8 dereferenceable(12) %2234)
          to label %2237 unwind label %2249

2237:                                             ; preds = %2235
  store { i64, i32 } %2236, ptr %127, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %126, ptr align 8 %127, i64 12, i1 false)
  %2238 = load i32, ptr %125, align 4, !tbaa !13
  %2239 = load i32, ptr %122, align 4, !tbaa !13
  %2240 = mul nsw i32 %2238, %2239
  %2241 = load i32, ptr %124, align 4, !tbaa !13
  %2242 = add nsw i32 %2240, %2241
  %2243 = sext i32 %2242 to i64
  %2244 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef %2243)
          to label %2245 unwind label %2249

2245:                                             ; preds = %2237
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2244, ptr align 8 %126, i64 12, i1 false), !tbaa.struct !28
  call void @llvm.lifetime.end.p0(i64 16, ptr %126) #9
  br label %2246

2246:                                             ; preds = %2245
  %2247 = load i32, ptr %125, align 4, !tbaa !13
  %2248 = add nsw i32 %2247, 1
  store i32 %2248, ptr %125, align 4, !tbaa !13
  br label %2220, !llvm.loop !35

2249:                                             ; preds = %2237, %2235, %2230, %2225
  %2250 = landingpad { ptr, i32 }
          cleanup
  %2251 = extractvalue { ptr, i32 } %2250, 0
  store ptr %2251, ptr %16, align 8
  %2252 = extractvalue { ptr, i32 } %2250, 1
  store i32 %2252, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %126) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %125) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %124) #9
  br label %2258

2253:                                             ; preds = %2224
  br label %2254

2254:                                             ; preds = %2253
  %2255 = load i32, ptr %124, align 4, !tbaa !13
  %2256 = add nsw i32 %2255, 1
  store i32 %2256, ptr %124, align 4, !tbaa !13
  br label %2210, !llvm.loop !36

2257:                                             ; preds = %2214
  store i32 13, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %123) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %122) #9
  br label %2261

2258:                                             ; preds = %2249, %2215
  call void @llvm.lifetime.end.p0(i64 4, ptr %123) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %122) #9
  br label %2265

2259:                                             ; preds = %1864
  %2260 = load ptr, ptr %5, align 8, !tbaa !5
  store ptr %2260, ptr %3, align 8
  store i32 1, ptr %13, align 4
  br label %2262

2261:                                             ; preds = %2257, %2190, %2101, %2058, %1985, %1924, %1911
  store i32 0, ptr %13, align 4
  br label %2262

2262:                                             ; preds = %2261, %2259
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #9
  %2263 = load i32, ptr %13, align 4
  switch i32 %2263, label %2313 [
    i32 0, label %2264
  ]

2264:                                             ; preds = %2262
  br label %2267

2265:                                             ; preds = %2258, %2192, %2097, %2036, %2012, %2003, %1994, %1916, %1869
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #9
  br label %2266

2266:                                             ; preds = %2265, %1865
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #9
  br label %2314

2267:                                             ; preds = %2264, %1845
  call void @llvm.lifetime.start.p0(i64 8, ptr %128) #9
  %2268 = invoke noundef ptr @_ZN11TIntermNodenwEm(i64 noundef 200)
          to label %2269 unwind label %2304

2269:                                             ; preds = %2267
  %2270 = load ptr, ptr %5, align 8, !tbaa !5
  %2271 = load ptr, ptr %2270, align 8, !tbaa !9
  %2272 = getelementptr inbounds ptr, ptr %2271, i64 30
  %2273 = load ptr, ptr %2272, align 8
  %2274 = invoke noundef nonnull align 8 dereferenceable(144) ptr %2273(ptr noundef nonnull align 8 dereferenceable(176) %2270)
          to label %2275 unwind label %2308

2275:                                             ; preds = %2269
  invoke void @_ZN7glslang20TIntermConstantUnionC2ERKNS_16TConstUnionArrayERKNS_5TTypeE(ptr noundef nonnull align 8 dereferenceable(193) %2268, ptr noundef nonnull align 8 dereferenceable(16) %14, ptr noundef nonnull align 8 dereferenceable(144) %2274)
          to label %2276 unwind label %2308

2276:                                             ; preds = %2275
  store ptr %2268, ptr %128, align 8, !tbaa !5
  %2277 = load ptr, ptr %128, align 8, !tbaa !5
  %2278 = load ptr, ptr %2277, align 8, !tbaa !9
  %2279 = getelementptr inbounds ptr, ptr %2278, i64 31
  %2280 = load ptr, ptr %2279, align 8
  %2281 = invoke noundef nonnull align 8 dereferenceable(144) ptr %2280(ptr noundef nonnull align 8 dereferenceable(176) %2277)
          to label %2282 unwind label %2304

2282:                                             ; preds = %2276
  %2283 = load ptr, ptr %2281, align 8, !tbaa !9
  %2284 = getelementptr inbounds ptr, ptr %2283, i64 10
  %2285 = load ptr, ptr %2284, align 8
  %2286 = invoke noundef nonnull align 8 dereferenceable(72) ptr %2285(ptr noundef nonnull align 8 dereferenceable(144) %2281)
          to label %2287 unwind label %2304

2287:                                             ; preds = %2282
  %2288 = getelementptr inbounds %"class.glslang::TQualifier", ptr %2286, i32 0, i32 1
  %2289 = load i64, ptr %2288, align 8
  %2290 = and i64 %2289, -64
  %2291 = or i64 %2290, 2
  store i64 %2291, ptr %2288, align 8
  %2292 = load ptr, ptr %128, align 8, !tbaa !5
  %2293 = load ptr, ptr %5, align 8, !tbaa !5
  %2294 = load ptr, ptr %2293, align 8, !tbaa !9
  %2295 = getelementptr inbounds ptr, ptr %2294, i64 0
  %2296 = load ptr, ptr %2295, align 8
  %2297 = invoke noundef nonnull align 8 dereferenceable(24) ptr %2296(ptr noundef nonnull align 8 dereferenceable(32) %2293)
          to label %2298 unwind label %2304

2298:                                             ; preds = %2287
  %2299 = load ptr, ptr %2292, align 8, !tbaa !9
  %2300 = getelementptr inbounds ptr, ptr %2299, i64 1
  %2301 = load ptr, ptr %2300, align 8
  invoke void %2301(ptr noundef nonnull align 8 dereferenceable(32) %2292, ptr noundef nonnull align 8 dereferenceable(24) %2297)
          to label %2302 unwind label %2304

2302:                                             ; preds = %2298
  %2303 = load ptr, ptr %128, align 8, !tbaa !5
  store ptr %2303, ptr %3, align 8
  store i32 1, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #9
  br label %2313

2304:                                             ; preds = %2298, %2287, %2282, %2276, %2267
  %2305 = landingpad { ptr, i32 }
          cleanup
  %2306 = extractvalue { ptr, i32 } %2305, 0
  store ptr %2306, ptr %16, align 8
  %2307 = extractvalue { ptr, i32 } %2305, 1
  store i32 %2307, ptr %17, align 4
  br label %2312

2308:                                             ; preds = %2275, %2269
  %2309 = landingpad { ptr, i32 }
          cleanup
  %2310 = extractvalue { ptr, i32 } %2309, 0
  store ptr %2310, ptr %16, align 8
  %2311 = extractvalue { ptr, i32 } %2309, 1
  store i32 %2311, ptr %17, align 4
  call void @_ZN11TIntermNodedlEPv(ptr noundef %2268) #9
  br label %2312

2312:                                             ; preds = %2308, %2304
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #9
  br label %2314

2313:                                             ; preds = %2302, %2262, %1843
  call void @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %15) #9
  call void @_ZN7glslang16TConstUnionArrayD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %14) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %14) #9
  br label %2316

2314:                                             ; preds = %2312, %2266, %1842, %311
  call void @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #9
  br label %2315

2315:                                             ; preds = %2314, %290
  call void @llvm.lifetime.end.p0(i64 32, ptr %15) #9
  call void @_ZN7glslang16TConstUnionArrayD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %14) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %14) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #9
  br label %2319

2316:                                             ; preds = %2313, %278
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #9
  br label %2317

2317:                                             ; preds = %2316, %142, %137, %132
  %2318 = load ptr, ptr %3, align 8
  ret ptr %2318

2319:                                             ; preds = %2315
  %2320 = load ptr, ptr %16, align 8
  %2321 = load i32, ptr %17, align 4
  %2322 = insertvalue { ptr, i32 } poison, ptr %2320, 0
  %2323 = insertvalue { ptr, i32 } %2322, i32 %2321, 1
  resume { ptr, i32 } %2323
}

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

declare noundef zeroext i1 @_ZNK7glslang15TIntermOperator13isConstructorEv(ptr noundef nonnull align 8 dereferenceable(184)) #7

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

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

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

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

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

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

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

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

; Function Attrs: nounwind
declare double @atan2(double noundef, double noundef) #6

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

; Function Attrs: nounwind
declare double @pow(double noundef, double noundef) #6

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZSt3minIaERKT_S2_S2_(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1)) #8

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZSt3minIhERKT_S2_S2_(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1)) #8

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZSt3maxIaERKT_S2_S2_(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1)) #8

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZSt3maxIhERKT_S2_S2_(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1)) #8

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZN7glslang16TConstUnionArray3dotERKS0_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) #1 align 2

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #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 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nounwind "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 #7 = { "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 #8 = { 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 #9 = { nounwind }
attributes #10 = { noreturn nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !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 = distinct !{!15, !16}
!16 = !{!"llvm.loop.mustprogress"}
!17 = !{i8 0, i8 2}
!18 = !{}
!19 = !{!20, !20, i64 0}
!20 = !{!"double", !7, i64 0}
!21 = !{!7, !7, i64 0}
!22 = !{!23, !23, i64 0}
!23 = !{!"short", !7, i64 0}
!24 = !{!25, !25, i64 0}
!25 = !{!"long long", !7, i64 0}
!26 = distinct !{!26, !16}
!27 = distinct !{!27, !16}
!28 = !{i64 0, i64 8, !21, i64 8, i64 4, !29}
!29 = !{!30, !30, i64 0}
!30 = !{!"_ZTSN7glslang10TBasicTypeE", !7, i64 0}
!31 = distinct !{!31, !16}
!32 = distinct !{!32, !16}
!33 = distinct !{!33, !16}
!34 = distinct !{!34, !16}
!35 = distinct !{!35, !16}
!36 = distinct !{!36, !16}


; 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::TConstUnionArray" = type { ptr, ptr }
%"class.glslang::TVector.95" = type { %"class.std::vector.96" }
%"class.std::vector.96" = type { %"struct.std::_Vector_base.97" }
%"struct.std::_Vector_base.97" = type { %"struct.std::_Vector_base<glslang::TConstUnionArray, glslang::pool_allocator<glslang::TConstUnionArray>>::_Vector_impl" }
%"struct.std::_Vector_base<glslang::TConstUnionArray, glslang::pool_allocator<glslang::TConstUnionArray>>::_Vector_impl" = type { %"class.glslang::pool_allocator.98", %"struct.std::_Vector_base<glslang::TConstUnionArray, glslang::pool_allocator<glslang::TConstUnionArray>>::_Vector_impl_data" }
%"class.glslang::pool_allocator.98" = type { ptr }
%"struct.std::_Vector_base<glslang::TConstUnionArray, glslang::pool_allocator<glslang::TConstUnionArray>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.glslang::TConstUnion" = type <{ %union.anon.0, i32, [4 x i8] }>
%union.anon.0 = type { i64 }

@.str = external hidden unnamed_addr constant [27 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [110 x i8], align 1
@__PRETTY_FUNCTION__._ZN7glslang13TIntermediate4foldEPNS_16TIntermAggregateE = external hidden unnamed_addr constant [63 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

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

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

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

; 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 void @_ZN7glslang16TConstUnionArrayC2Ei(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress 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) #3

; Function Attrs: mustprogress uwtable
declare dso_local { i64, i32 } @_ZNK7glslang11TConstUnionmiERKS0_(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { i64, i32 } @_ZNK7glslang11TConstUnionmlERKS0_(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #2 align 2

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

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12), double noundef) local_unnamed_addr #1 align 2

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN7glslang11TConstUnion10setI8ConstEa(ptr noundef nonnull align 8 dereferenceable(12), i8 noundef signext) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef signext i8 @_ZNK7glslang11TConstUnion10getI8ConstEv(ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN7glslang11TConstUnion10setU8ConstEh(ptr noundef nonnull align 8 dereferenceable(12), i8 noundef zeroext) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i8 @_ZNK7glslang11TConstUnion10getU8ConstEv(ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN7glslang11TConstUnion11setI16ConstEs(ptr noundef nonnull align 8 dereferenceable(12), i16 noundef signext) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef signext i16 @_ZNK7glslang11TConstUnion11getI16ConstEv(ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN7glslang11TConstUnion11setU16ConstEt(ptr noundef nonnull align 8 dereferenceable(12), i16 noundef zeroext) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i16 @_ZNK7glslang11TConstUnion11getU16ConstEv(ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN7glslang11TConstUnion11setI64ConstEx(ptr noundef nonnull align 8 dereferenceable(12), i64 noundef) local_unnamed_addr #1 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN7glslang11TConstUnion11setU64ConstEy(ptr noundef nonnull align 8 dereferenceable(12), i64 noundef) local_unnamed_addr #1 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN11TIntermNodenwEm(i64 noundef) local_unnamed_addr #2 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN11TIntermNodedlEPv(ptr noundef) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @sqrt(double noundef) local_unnamed_addr #6

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

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.floor.f64(double) #4

; Function Attrs: mustprogress uwtable
define dso_local noundef ptr @_ZN7glslang13TIntermediate4foldEPNS_16TIntermAggregateE(ptr noundef nonnull align 8 dereferenceable(1784) %0, ptr noundef %1) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca %"class.glslang::TConstUnionArray", align 8
  %8 = alloca %"class.glslang::TVector.95", align 8
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca double, align 8
  %14 = alloca double, align 8
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i8, align 1
  %20 = alloca i8, align 1
  %21 = alloca i8, align 1
  %22 = alloca i8, align 1
  %23 = alloca i16, align 2
  %24 = alloca i16, align 2
  %25 = alloca i16, align 2
  %26 = alloca i16, align 2
  %27 = alloca i64, align 8
  %28 = alloca i64, align 8
  %29 = alloca i64, align 8
  %30 = alloca i64, align 8
  %31 = alloca double, align 8
  %32 = alloca double, align 8
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i8, align 1
  %38 = alloca i8, align 1
  %39 = alloca i8, align 1
  %40 = alloca i8, align 1
  %41 = alloca i16, align 2
  %42 = alloca i16, align 2
  %43 = alloca i16, align 2
  %44 = alloca i16, align 2
  %45 = alloca i64, align 8
  %46 = alloca i64, align 8
  %47 = alloca i64, align 8
  %48 = alloca i64, align 8
  %49 = alloca double, align 8
  %50 = alloca double, align 8
  %51 = alloca double, align 8
  %52 = alloca i32, align 4
  %53 = alloca i32, align 4
  %54 = alloca i32, align 4
  %55 = alloca i8, align 1
  %56 = alloca i8, align 1
  %57 = alloca i8, align 1
  %58 = alloca i8, align 1
  %59 = alloca i8, align 1
  %60 = alloca i8, align 1
  %61 = alloca i16, align 2
  %62 = alloca i16, align 2
  %63 = alloca i16, align 2
  %64 = alloca i16, align 2
  %65 = alloca i16, align 2
  %66 = alloca i16, align 2
  %67 = alloca i32, align 4
  %68 = alloca i32, align 4
  %69 = alloca i32, align 4
  %70 = alloca i64, align 8
  %71 = alloca i64, align 8
  %72 = alloca i64, align 8
  %73 = alloca i64, align 8
  %74 = alloca i64, align 8
  %75 = alloca i64, align 8
  %76 = alloca %"class.glslang::TConstUnion", align 8
  %77 = alloca %"class.glslang::TConstUnion", align 8
  %78 = alloca %"class.glslang::TConstUnion", align 8
  %79 = alloca %"class.glslang::TConstUnion", align 8
  %80 = alloca %"class.glslang::TConstUnion", align 8
  %81 = alloca %"class.glslang::TConstUnion", align 8
  %82 = icmp eq ptr %1, null
  br i1 %82, label %1203, label %83

83:                                               ; preds = %2
  %84 = tail call noundef zeroext i1 @_ZN7glslang13TIntermediate16areAllChildConstEPNS_16TIntermAggregateE(ptr noundef nonnull align 8 dereferenceable(1784) %0, ptr noundef nonnull %1)
  br i1 %84, label %85, label %1203

85:                                               ; preds = %83
  %86 = tail call noundef zeroext i1 @_ZNK7glslang15TIntermOperator13isConstructorEv(ptr noundef nonnull align 8 dereferenceable(184) %1)
  br i1 %86, label %87, label %89

87:                                               ; preds = %85
  %88 = tail call noundef ptr @_ZN7glslang13TIntermediate15foldConstructorEPNS_16TIntermAggregateE(ptr noundef nonnull align 8 dereferenceable(1784) %0, ptr noundef nonnull %1)
  br label %1203

89:                                               ; preds = %85
  %90 = load ptr, ptr %1, align 8, !tbaa !5
  %91 = getelementptr inbounds i8, ptr %90, i64 400
  %92 = load ptr, ptr %91, align 8
  %93 = tail call noundef nonnull align 8 dereferenceable(32) ptr %92(ptr noundef nonnull align 8 dereferenceable(352) %1)
  %94 = tail call noundef i32 @_ZNK7glslang15TIntermOperator5getOpEv(ptr noundef nonnull align 8 dereferenceable(184) %1)
  switch i32 %94, label %1203 [
    i32 193, label %95
    i32 200, label %95
    i32 216, label %95
    i32 217, label %95
    i32 219, label %95
    i32 158, label %95
    i32 218, label %95
    i32 168, label %95
    i32 169, label %95
    i32 170, label %95
    i32 171, label %95
    i32 166, label %95
    i32 167, label %95
    i32 274, label %107
    i32 277, label %107
    i32 278, label %107
    i32 276, label %107
    i32 272, label %211
    i32 273, label %211
    i32 296, label %119
    i32 220, label %149
    i32 221, label %180
  ]

95:                                               ; preds = %89, %89, %89, %89, %89, %89, %89, %89, %89, %89, %89, %89, %89
  %96 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %93, i64 noundef 0) #9
  %97 = load ptr, ptr %96, align 8, !tbaa !8
  %98 = load ptr, ptr %97, align 8, !tbaa !5
  %99 = getelementptr inbounds i8, ptr %98, i64 40
  %100 = load ptr, ptr %99, align 8
  %101 = tail call noundef ptr %100(ptr noundef nonnull align 8 dereferenceable(32) %97)
  %102 = load ptr, ptr %101, align 8, !tbaa !5
  %103 = getelementptr inbounds i8, ptr %102, i64 240
  %104 = load ptr, ptr %103, align 8
  %105 = tail call noundef nonnull align 8 dereferenceable(144) ptr %104(ptr noundef nonnull align 8 dereferenceable(176) %101)
  %106 = tail call noundef i32 @_ZNK7glslang5TType20computeNumComponentsEv(ptr noundef nonnull align 8 dereferenceable(144) %105)
  br label %211

107:                                              ; preds = %89, %89, %89, %89
  %108 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %93, i64 noundef 0) #9
  %109 = load ptr, ptr %108, align 8, !tbaa !8
  %110 = load ptr, ptr %109, align 8, !tbaa !5
  %111 = getelementptr inbounds i8, ptr %110, i64 40
  %112 = load ptr, ptr %111, align 8
  %113 = tail call noundef ptr %112(ptr noundef nonnull align 8 dereferenceable(32) %109)
  %114 = load ptr, ptr %113, align 8, !tbaa !5
  %115 = getelementptr inbounds i8, ptr %114, i64 240
  %116 = load ptr, ptr %115, align 8
  %117 = tail call noundef nonnull align 8 dereferenceable(144) ptr %116(ptr noundef nonnull align 8 dereferenceable(176) %113)
  %118 = tail call noundef i32 @_ZNK7glslang5TType20computeNumComponentsEv(ptr noundef nonnull align 8 dereferenceable(144) %117)
  br label %211

119:                                              ; preds = %89
  %120 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %93, i64 noundef 0) #9
  %121 = load ptr, ptr %120, align 8, !tbaa !8
  %122 = load ptr, ptr %121, align 8, !tbaa !5
  %123 = getelementptr inbounds i8, ptr %122, i64 24
  %124 = load ptr, ptr %123, align 8
  %125 = tail call noundef ptr %124(ptr noundef nonnull align 8 dereferenceable(32) %121)
  %126 = load ptr, ptr %125, align 8, !tbaa !5
  %127 = getelementptr inbounds i8, ptr %126, i64 240
  %128 = load ptr, ptr %127, align 8
  %129 = tail call noundef nonnull align 8 dereferenceable(144) ptr %128(ptr noundef nonnull align 8 dereferenceable(176) %125)
  %130 = load ptr, ptr %129, align 8, !tbaa !5
  %131 = getelementptr inbounds i8, ptr %130, i64 96
  %132 = load ptr, ptr %131, align 8
  %133 = tail call noundef i32 %132(ptr noundef nonnull align 8 dereferenceable(144) %129)
  %134 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %93, i64 noundef 1) #9
  %135 = load ptr, ptr %134, align 8, !tbaa !8
  %136 = load ptr, ptr %135, align 8, !tbaa !5
  %137 = getelementptr inbounds i8, ptr %136, i64 24
  %138 = load ptr, ptr %137, align 8
  %139 = tail call noundef ptr %138(ptr noundef nonnull align 8 dereferenceable(32) %135)
  %140 = load ptr, ptr %139, align 8, !tbaa !5
  %141 = getelementptr inbounds i8, ptr %140, i64 240
  %142 = load ptr, ptr %141, align 8
  %143 = tail call noundef nonnull align 8 dereferenceable(144) ptr %142(ptr noundef nonnull align 8 dereferenceable(176) %139)
  %144 = load ptr, ptr %143, align 8, !tbaa !5
  %145 = getelementptr inbounds i8, ptr %144, i64 96
  %146 = load ptr, ptr %145, align 8
  %147 = tail call noundef i32 %146(ptr noundef nonnull align 8 dereferenceable(144) %143)
  %148 = mul nsw i32 %147, %133
  br label %211

149:                                              ; preds = %89
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3) #9
  %150 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %93, i64 noundef 0) #9
  %151 = load ptr, ptr %150, align 8, !tbaa !8
  %152 = load ptr, ptr %151, align 8, !tbaa !5
  %153 = getelementptr inbounds i8, ptr %152, i64 24
  %154 = load ptr, ptr %153, align 8
  %155 = tail call noundef ptr %154(ptr noundef nonnull align 8 dereferenceable(32) %151)
  %156 = load ptr, ptr %155, align 8, !tbaa !5
  %157 = getelementptr inbounds i8, ptr %156, i64 240
  %158 = load ptr, ptr %157, align 8
  %159 = tail call noundef nonnull align 8 dereferenceable(144) ptr %158(ptr noundef nonnull align 8 dereferenceable(176) %155)
  %160 = load ptr, ptr %159, align 8, !tbaa !5
  %161 = getelementptr inbounds i8, ptr %160, i64 96
  %162 = load ptr, ptr %161, align 8
  %163 = tail call noundef i32 %162(ptr noundef nonnull align 8 dereferenceable(144) %159)
  store i32 %163, ptr %3, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #9
  %164 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %93, i64 noundef 1) #9
  %165 = load ptr, ptr %164, align 8, !tbaa !8
  %166 = load ptr, ptr %165, align 8, !tbaa !5
  %167 = getelementptr inbounds i8, ptr %166, i64 24
  %168 = load ptr, ptr %167, align 8
  %169 = tail call noundef ptr %168(ptr noundef nonnull align 8 dereferenceable(32) %165)
  %170 = load ptr, ptr %169, align 8, !tbaa !5
  %171 = getelementptr inbounds i8, ptr %170, i64 240
  %172 = load ptr, ptr %171, align 8
  %173 = tail call noundef nonnull align 8 dereferenceable(144) ptr %172(ptr noundef nonnull align 8 dereferenceable(176) %169)
  %174 = load ptr, ptr %173, align 8, !tbaa !5
  %175 = getelementptr inbounds i8, ptr %174, i64 96
  %176 = load ptr, ptr %175, align 8
  %177 = tail call noundef i32 %176(ptr noundef nonnull align 8 dereferenceable(144) %173)
  store i32 %177, ptr %4, align 4, !tbaa !11
  %178 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %3, ptr noundef nonnull align 4 dereferenceable(4) %4)
  %179 = load i32, ptr %178, align 4, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #9
  br label %211

180:                                              ; preds = %89
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #9
  %181 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %93, i64 noundef 0) #9
  %182 = load ptr, ptr %181, align 8, !tbaa !8
  %183 = load ptr, ptr %182, align 8, !tbaa !5
  %184 = getelementptr inbounds i8, ptr %183, i64 24
  %185 = load ptr, ptr %184, align 8
  %186 = tail call noundef ptr %185(ptr noundef nonnull align 8 dereferenceable(32) %182)
  %187 = load ptr, ptr %186, align 8, !tbaa !5
  %188 = getelementptr inbounds i8, ptr %187, i64 240
  %189 = load ptr, ptr %188, align 8
  %190 = tail call noundef nonnull align 8 dereferenceable(144) ptr %189(ptr noundef nonnull align 8 dereferenceable(176) %186)
  %191 = load ptr, ptr %190, align 8, !tbaa !5
  %192 = getelementptr inbounds i8, ptr %191, i64 96
  %193 = load ptr, ptr %192, align 8
  %194 = tail call noundef i32 %193(ptr noundef nonnull align 8 dereferenceable(144) %190)
  store i32 %194, ptr %5, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #9
  %195 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %93, i64 noundef 2) #9
  %196 = load ptr, ptr %195, align 8, !tbaa !8
  %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 = tail call noundef ptr %199(ptr noundef nonnull align 8 dereferenceable(32) %196)
  %201 = load ptr, ptr %200, align 8, !tbaa !5
  %202 = getelementptr inbounds i8, ptr %201, i64 240
  %203 = load ptr, ptr %202, align 8
  %204 = tail call noundef nonnull align 8 dereferenceable(144) ptr %203(ptr noundef nonnull align 8 dereferenceable(176) %200)
  %205 = load ptr, ptr %204, align 8, !tbaa !5
  %206 = getelementptr inbounds i8, ptr %205, i64 96
  %207 = load ptr, ptr %206, align 8
  %208 = tail call noundef i32 %207(ptr noundef nonnull align 8 dereferenceable(144) %204)
  store i32 %208, ptr %6, align 4, !tbaa !11
  %209 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %5, ptr noundef nonnull align 4 dereferenceable(4) %6)
  %210 = load i32, ptr %209, align 4, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #9
  br label %211

211:                                              ; preds = %89, %89, %180, %149, %119, %107, %95
  %.0262 = phi i32 [ %210, %180 ], [ %179, %149 ], [ %148, %119 ], [ %118, %107 ], [ %106, %95 ], [ 1, %89 ], [ 1, %89 ]
  %.0261 = phi i1 [ true, %180 ], [ true, %149 ], [ false, %119 ], [ false, %107 ], [ true, %95 ], [ false, %89 ], [ false, %89 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #9
  call void @_ZN7glslang16TConstUnionArrayC2Ei(ptr noundef nonnull align 8 dereferenceable(16) %7, i32 noundef %.0262)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #9
  invoke void @_ZN7glslang7TVectorINS_16TConstUnionArrayEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8)
          to label %.preheader336 unwind label %213

.preheader336:                                    ; preds = %211
  %212 = call noundef i64 @_ZNKSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %93) #9
  %.not360 = icmp eq i64 %212, 0
  br i1 %.not360, label %._crit_edge, label %.lr.ph

._crit_edge:                                      ; preds = %224, %.preheader336
  br i1 %.0261, label %231, label %987

213:                                              ; preds = %211
  %214 = landingpad { ptr, i32 }
          cleanup
  br label %1202

.lr.ph:                                           ; preds = %.preheader336, %224
  %215 = phi i64 [ %226, %224 ], [ 0, %.preheader336 ]
  %.0287337 = phi i32 [ %225, %224 ], [ 0, %.preheader336 ]
  %216 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %93, i64 noundef %215) #9
  %217 = load ptr, ptr %216, align 8, !tbaa !8
  %218 = load ptr, ptr %217, align 8, !tbaa !5
  %219 = getelementptr inbounds i8, ptr %218, i64 40
  %220 = load ptr, ptr %219, align 8
  %221 = invoke noundef ptr %220(ptr noundef nonnull align 8 dereferenceable(32) %217)
          to label %222 unwind label %229

222:                                              ; preds = %.lr.ph
  %223 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK7glslang20TIntermConstantUnion13getConstArrayEv(ptr noundef nonnull align 8 dereferenceable(193) %221)
  invoke void @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(16) %223)
          to label %224 unwind label %229

224:                                              ; preds = %222
  %225 = add i32 %.0287337, 1
  %226 = zext i32 %225 to i64
  %227 = call noundef i64 @_ZNKSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %93) #9
  %228 = icmp ugt i64 %227, %226
  br i1 %228, label %.lr.ph, label %._crit_edge, !llvm.loop !13

229:                                              ; preds = %222, %.lr.ph
  %230 = landingpad { ptr, i32 }
          cleanup
  br label %1201

231:                                              ; preds = %._crit_edge
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #9
  store i32 0, ptr %9, align 4, !tbaa !11
  %.not356 = icmp sgt i32 %.0262, 0
  br i1 %.not356, label %.lr.ph358, label %._crit_edge359

.lr.ph358:                                        ; preds = %231, %983
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #9
  %232 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %93, i64 noundef 0) #9
  %233 = load ptr, ptr %232, align 8, !tbaa !8
  %234 = load ptr, ptr %233, align 8, !tbaa !5
  %235 = getelementptr inbounds i8, ptr %234, i64 24
  %236 = load ptr, ptr %235, align 8
  %237 = invoke noundef ptr %236(ptr noundef nonnull align 8 dereferenceable(32) %233)
          to label %238 unwind label %275

238:                                              ; preds = %.lr.ph358
  %239 = load ptr, ptr %237, align 8, !tbaa !5
  %240 = getelementptr inbounds i8, ptr %239, i64 240
  %241 = load ptr, ptr %240, align 8
  %242 = invoke noundef nonnull align 8 dereferenceable(144) ptr %241(ptr noundef nonnull align 8 dereferenceable(176) %237)
          to label %243 unwind label %275

243:                                              ; preds = %238
  %244 = load ptr, ptr %242, align 8, !tbaa !5
  %245 = getelementptr inbounds i8, ptr %244, i64 96
  %246 = load ptr, ptr %245, align 8
  %247 = invoke noundef i32 %246(ptr noundef nonnull align 8 dereferenceable(144) %242)
          to label %248 unwind label %275

248:                                              ; preds = %243
  %249 = add nsw i32 %247, -1
  store i32 %249, ptr %10, align 4, !tbaa !11
  %250 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %9, ptr noundef nonnull align 4 dereferenceable(4) %10)
  %251 = load i32, ptr %250, align 4, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #9
  %252 = call noundef i64 @_ZNKSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %93) #9
  %253 = icmp ugt i64 %252, 1
  br i1 %253, label %254, label %279

254:                                              ; preds = %248
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #9
  %255 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %93, i64 noundef 1) #9
  %256 = load ptr, ptr %255, align 8, !tbaa !8
  %257 = load ptr, ptr %256, align 8, !tbaa !5
  %258 = getelementptr inbounds i8, ptr %257, i64 24
  %259 = load ptr, ptr %258, align 8
  %260 = invoke noundef ptr %259(ptr noundef nonnull align 8 dereferenceable(32) %256)
          to label %261 unwind label %277

261:                                              ; preds = %254
  %262 = load ptr, ptr %260, align 8, !tbaa !5
  %263 = getelementptr inbounds i8, ptr %262, i64 240
  %264 = load ptr, ptr %263, align 8
  %265 = invoke noundef nonnull align 8 dereferenceable(144) ptr %264(ptr noundef nonnull align 8 dereferenceable(176) %260)
          to label %266 unwind label %277

266:                                              ; preds = %261
  %267 = load ptr, ptr %265, align 8, !tbaa !5
  %268 = getelementptr inbounds i8, ptr %267, i64 96
  %269 = load ptr, ptr %268, align 8
  %270 = invoke noundef i32 %269(ptr noundef nonnull align 8 dereferenceable(144) %265)
          to label %271 unwind label %277

271:                                              ; preds = %266
  %272 = add nsw i32 %270, -1
  store i32 %272, ptr %11, align 4, !tbaa !11
  %273 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %9, ptr noundef nonnull align 4 dereferenceable(4) %11)
  %274 = load i32, ptr %273, align 4, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #9
  br label %279

275:                                              ; preds = %243, %238, %.lr.ph358
  %276 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #9
  br label %986

277:                                              ; preds = %266, %261, %254
  %278 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #9
  br label %986

279:                                              ; preds = %271, %248
  %.0288 = phi i32 [ %274, %271 ], [ 0, %248 ]
  %280 = call noundef i64 @_ZNKSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %93) #9
  %281 = icmp ugt i64 %280, 2
  br i1 %281, label %282, label %305

282:                                              ; preds = %279
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #9
  %283 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %93, i64 noundef 2) #9
  %284 = load ptr, ptr %283, align 8, !tbaa !8
  %285 = load ptr, ptr %284, align 8, !tbaa !5
  %286 = getelementptr inbounds i8, ptr %285, i64 24
  %287 = load ptr, ptr %286, align 8
  %288 = invoke noundef ptr %287(ptr noundef nonnull align 8 dereferenceable(32) %284)
          to label %289 unwind label %303

289:                                              ; preds = %282
  %290 = load ptr, ptr %288, align 8, !tbaa !5
  %291 = getelementptr inbounds i8, ptr %290, i64 240
  %292 = load ptr, ptr %291, align 8
  %293 = invoke noundef nonnull align 8 dereferenceable(144) ptr %292(ptr noundef nonnull align 8 dereferenceable(176) %288)
          to label %294 unwind label %303

294:                                              ; preds = %289
  %295 = load ptr, ptr %293, align 8, !tbaa !5
  %296 = getelementptr inbounds i8, ptr %295, i64 96
  %297 = load ptr, ptr %296, align 8
  %298 = invoke noundef i32 %297(ptr noundef nonnull align 8 dereferenceable(144) %293)
          to label %299 unwind label %303

299:                                              ; preds = %294
  %300 = add nsw i32 %298, -1
  store i32 %300, ptr %12, align 4, !tbaa !11
  %301 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %9, ptr noundef nonnull align 4 dereferenceable(4) %12)
  %302 = load i32, ptr %301, align 4, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #9
  br label %305

303:                                              ; preds = %294, %289, %282
  %304 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #9
  br label %986

305:                                              ; preds = %299, %279
  %.0291 = phi i32 [ %302, %299 ], [ 0, %279 ]
  %306 = call noundef i32 @_ZNK7glslang15TIntermOperator5getOpEv(ptr noundef nonnull align 8 dereferenceable(184) %1)
  switch i32 %306, label %.thread326 [
    i32 193, label %309
    i32 200, label %322
    i32 158, label %335
    i32 216, label %351
    i32 217, label %491
    i32 218, label %631
    i32 168, label %816
    i32 169, label %827
    i32 170, label %838
    i32 171, label %850
    i32 166, label %862
    i32 167, label %873
    i32 219, label %884
    i32 220, label %942
    i32 221, label %956
  ]

307:                                              ; preds = %904, %897, %891, %884, %638, %631, %498, %491, %358, %351
  %308 = landingpad { ptr, i32 }
          cleanup
  br label %986

309:                                              ; preds = %305
  %310 = load i32, ptr %9, align 4, !tbaa !11
  %311 = sext i32 %310 to i64
  %312 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %311)
  %313 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0) #9
  %314 = sext i32 %251 to i64
  %315 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %313, i64 noundef %314)
  %316 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %315)
  %317 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 1) #9
  %318 = sext i32 %.0288 to i64
  %319 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %317, i64 noundef %318)
  %320 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %319)
  %321 = call double @atan2(double noundef %316, double noundef %320) #9
  call void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %312, double noundef %321)
  br label %983

322:                                              ; preds = %305
  %323 = load i32, ptr %9, align 4, !tbaa !11
  %324 = sext i32 %323 to i64
  %325 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %324)
  %326 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0) #9
  %327 = sext i32 %251 to i64
  %328 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %326, i64 noundef %327)
  %329 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %328)
  %330 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 1) #9
  %331 = sext i32 %.0288 to i64
  %332 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %330, i64 noundef %331)
  %333 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %332)
  %334 = call double @pow(double noundef %329, double noundef %333) #9
  call void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %325, double noundef %334)
  br label %983

335:                                              ; preds = %305
  %336 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0) #9
  %337 = sext i32 %251 to i64
  %338 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %336, i64 noundef %337)
  %339 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %338)
  %340 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 1) #9
  %341 = sext i32 %.0288 to i64
  %342 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %340, i64 noundef %341)
  %343 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %342)
  %344 = fdiv double %339, %343
  %345 = call double @llvm.floor.f64(double %344)
  %346 = fneg double %343
  %347 = call double @llvm.fmuladd.f64(double %346, double %345, double %339)
  %348 = load i32, ptr %9, align 4, !tbaa !11
  %349 = sext i32 %348 to i64
  %350 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %349)
  call void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %350, double noundef %347)
  br label %983

351:                                              ; preds = %305
  %352 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %93, i64 noundef 0) #9
  %353 = load ptr, ptr %352, align 8, !tbaa !8
  %354 = load ptr, ptr %353, align 8, !tbaa !5
  %355 = getelementptr inbounds i8, ptr %354, i64 24
  %356 = load ptr, ptr %355, align 8
  %357 = invoke noundef ptr %356(ptr noundef nonnull align 8 dereferenceable(32) %353)
          to label %358 unwind label %307

358:                                              ; preds = %351
  %359 = load ptr, ptr %357, align 8, !tbaa !5
  %360 = getelementptr inbounds i8, ptr %359, i64 256
  %361 = load ptr, ptr %360, align 8
  %362 = invoke noundef i32 %361(ptr noundef nonnull align 8 dereferenceable(176) %357)
          to label %363 unwind label %307

363:                                              ; preds = %358
  switch i32 %362, label %490 [
    i32 3, label %364
    i32 1, label %364
    i32 2, label %364
    i32 8, label %378
    i32 9, label %392
    i32 4, label %406
    i32 5, label %420
    i32 6, label %434
    i32 7, label %448
    i32 10, label %462
    i32 11, label %476
  ]

364:                                              ; preds = %363, %363, %363
  %365 = load i32, ptr %9, align 4, !tbaa !11
  %366 = sext i32 %365 to i64
  %367 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %366)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #9
  %368 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0) #9
  %369 = sext i32 %251 to i64
  %370 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %368, i64 noundef %369)
  %371 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %370)
  store double %371, ptr %13, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #9
  %372 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 1) #9
  %373 = sext i32 %.0288 to i64
  %374 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %372, i64 noundef %373)
  %375 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %374)
  store double %375, ptr %14, align 8, !tbaa !15
  %376 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 8 dereferenceable(8) %14)
  %377 = load double, ptr %376, align 8, !tbaa !15
  call void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %367, double noundef %377)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #9
  br label %983

378:                                              ; preds = %363
  %379 = load i32, ptr %9, align 4, !tbaa !11
  %380 = sext i32 %379 to i64
  %381 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %380)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #9
  %382 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0) #9
  %383 = sext i32 %251 to i64
  %384 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %382, i64 noundef %383)
  %385 = call noundef i32 @_ZNK7glslang11TConstUnion9getIConstEv(ptr noundef nonnull align 8 dereferenceable(12) %384)
  store i32 %385, ptr %15, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #9
  %386 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 1) #9
  %387 = sext i32 %.0288 to i64
  %388 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %386, i64 noundef %387)
  %389 = call noundef i32 @_ZNK7glslang11TConstUnion9getIConstEv(ptr noundef nonnull align 8 dereferenceable(12) %388)
  store i32 %389, ptr %16, align 4, !tbaa !11
  %390 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %15, ptr noundef nonnull align 4 dereferenceable(4) %16)
  %391 = load i32, ptr %390, align 4, !tbaa !11
  call void @_ZN7glslang11TConstUnion9setIConstEi(ptr noundef nonnull align 8 dereferenceable(12) %381, i32 noundef %391)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #9
  br label %983

392:                                              ; preds = %363
  %393 = load i32, ptr %9, align 4, !tbaa !11
  %394 = sext i32 %393 to i64
  %395 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %394)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #9
  %396 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0) #9
  %397 = sext i32 %251 to i64
  %398 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %396, i64 noundef %397)
  %399 = call noundef i32 @_ZNK7glslang11TConstUnion9getUConstEv(ptr noundef nonnull align 8 dereferenceable(12) %398)
  store i32 %399, ptr %17, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #9
  %400 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 1) #9
  %401 = sext i32 %.0288 to i64
  %402 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %400, i64 noundef %401)
  %403 = call noundef i32 @_ZNK7glslang11TConstUnion9getUConstEv(ptr noundef nonnull align 8 dereferenceable(12) %402)
  store i32 %403, ptr %18, align 4, !tbaa !11
  %404 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %17, ptr noundef nonnull align 4 dereferenceable(4) %18)
  %405 = load i32, ptr %404, align 4, !tbaa !11
  call void @_ZN7glslang11TConstUnion9setUConstEj(ptr noundef nonnull align 8 dereferenceable(12) %395, i32 noundef %405)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #9
  br label %983

406:                                              ; preds = %363
  %407 = load i32, ptr %9, align 4, !tbaa !11
  %408 = sext i32 %407 to i64
  %409 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %408)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %19) #9
  %410 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0) #9
  %411 = sext i32 %251 to i64
  %412 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %410, i64 noundef %411)
  %413 = call noundef signext i8 @_ZNK7glslang11TConstUnion10getI8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %412)
  store i8 %413, ptr %19, align 1, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %20) #9
  %414 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 1) #9
  %415 = sext i32 %.0288 to i64
  %416 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %414, i64 noundef %415)
  %417 = call noundef signext i8 @_ZNK7glslang11TConstUnion10getI8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %416)
  store i8 %417, ptr %20, align 1, !tbaa !17
  %418 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZSt3minIaERKT_S2_S2_(ptr noundef nonnull align 1 dereferenceable(1) %19, ptr noundef nonnull align 1 dereferenceable(1) %20)
  %419 = load i8, ptr %418, align 1, !tbaa !17
  call void @_ZN7glslang11TConstUnion10setI8ConstEa(ptr noundef nonnull align 8 dereferenceable(12) %409, i8 noundef signext %419)
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #9
  br label %983

420:                                              ; preds = %363
  %421 = load i32, ptr %9, align 4, !tbaa !11
  %422 = sext i32 %421 to i64
  %423 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %422)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %21) #9
  %424 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0) #9
  %425 = sext i32 %251 to i64
  %426 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %424, i64 noundef %425)
  %427 = call noundef zeroext i8 @_ZNK7glslang11TConstUnion10getU8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %426)
  store i8 %427, ptr %21, align 1, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %22) #9
  %428 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 1) #9
  %429 = sext i32 %.0288 to i64
  %430 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %428, i64 noundef %429)
  %431 = call noundef zeroext i8 @_ZNK7glslang11TConstUnion10getU8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %430)
  store i8 %431, ptr %22, align 1, !tbaa !17
  %432 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZSt3minIhERKT_S2_S2_(ptr noundef nonnull align 1 dereferenceable(1) %21, ptr noundef nonnull align 1 dereferenceable(1) %22)
  %433 = load i8, ptr %432, align 1, !tbaa !17
  call void @_ZN7glslang11TConstUnion10setU8ConstEh(ptr noundef nonnull align 8 dereferenceable(12) %423, i8 noundef zeroext %433)
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %22) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %21) #9
  br label %983

434:                                              ; preds = %363
  %435 = load i32, ptr %9, align 4, !tbaa !11
  %436 = sext i32 %435 to i64
  %437 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %436)
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %23) #9
  %438 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0) #9
  %439 = sext i32 %251 to i64
  %440 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %438, i64 noundef %439)
  %441 = call noundef signext i16 @_ZNK7glslang11TConstUnion11getI16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %440)
  store i16 %441, ptr %23, align 2, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %24) #9
  %442 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 1) #9
  %443 = sext i32 %.0288 to i64
  %444 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %442, i64 noundef %443)
  %445 = call noundef signext i16 @_ZNK7glslang11TConstUnion11getI16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %444)
  store i16 %445, ptr %24, align 2, !tbaa !18
  %446 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZSt3minIsERKT_S2_S2_(ptr noundef nonnull align 2 dereferenceable(2) %23, ptr noundef nonnull align 2 dereferenceable(2) %24)
  %447 = load i16, ptr %446, align 2, !tbaa !18
  call void @_ZN7glslang11TConstUnion11setI16ConstEs(ptr noundef nonnull align 8 dereferenceable(12) %437, i16 noundef signext %447)
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %24) #9
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %23) #9
  br label %983

448:                                              ; preds = %363
  %449 = load i32, ptr %9, align 4, !tbaa !11
  %450 = sext i32 %449 to i64
  %451 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %450)
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %25) #9
  %452 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0) #9
  %453 = sext i32 %251 to i64
  %454 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %452, i64 noundef %453)
  %455 = call noundef zeroext i16 @_ZNK7glslang11TConstUnion11getU16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %454)
  store i16 %455, ptr %25, align 2, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %26) #9
  %456 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 1) #9
  %457 = sext i32 %.0288 to i64
  %458 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %456, i64 noundef %457)
  %459 = call noundef zeroext i16 @_ZNK7glslang11TConstUnion11getU16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %458)
  store i16 %459, ptr %26, align 2, !tbaa !18
  %460 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZSt3minItERKT_S2_S2_(ptr noundef nonnull align 2 dereferenceable(2) %25, ptr noundef nonnull align 2 dereferenceable(2) %26)
  %461 = load i16, ptr %460, align 2, !tbaa !18
  call void @_ZN7glslang11TConstUnion11setU16ConstEt(ptr noundef nonnull align 8 dereferenceable(12) %451, i16 noundef zeroext %461)
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %26) #9
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %25) #9
  br label %983

462:                                              ; preds = %363
  %463 = load i32, ptr %9, align 4, !tbaa !11
  %464 = sext i32 %463 to i64
  %465 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %464)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #9
  %466 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0) #9
  %467 = sext i32 %251 to i64
  %468 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %466, i64 noundef %467)
  %469 = call noundef i64 @_ZNK7glslang11TConstUnion11getI64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %468)
  store i64 %469, ptr %27, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #9
  %470 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 1) #9
  %471 = sext i32 %.0288 to i64
  %472 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %470, i64 noundef %471)
  %473 = call noundef i64 @_ZNK7glslang11TConstUnion11getI64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %472)
  store i64 %473, ptr %28, align 8, !tbaa !20
  %474 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIxERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull align 8 dereferenceable(8) %28)
  %475 = load i64, ptr %474, align 8, !tbaa !20
  call void @_ZN7glslang11TConstUnion11setI64ConstEx(ptr noundef nonnull align 8 dereferenceable(12) %465, i64 noundef %475)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #9
  br label %983

476:                                              ; preds = %363
  %477 = load i32, ptr %9, align 4, !tbaa !11
  %478 = sext i32 %477 to i64
  %479 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %478)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #9
  %480 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0) #9
  %481 = sext i32 %251 to i64
  %482 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %480, i64 noundef %481)
  %483 = call noundef i64 @_ZNK7glslang11TConstUnion11getU64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %482)
  store i64 %483, ptr %29, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #9
  %484 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 1) #9
  %485 = sext i32 %.0288 to i64
  %486 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %484, i64 noundef %485)
  %487 = call noundef i64 @_ZNK7glslang11TConstUnion11getU64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %486)
  store i64 %487, ptr %30, align 8, !tbaa !20
  %488 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIyERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull align 8 dereferenceable(8) %30)
  %489 = load i64, ptr %488, align 8, !tbaa !20
  call void @_ZN7glslang11TConstUnion11setU64ConstEy(ptr noundef nonnull align 8 dereferenceable(12) %479, i64 noundef %489)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #9
  br label %983

490:                                              ; preds = %363
  call void @__assert_fail(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 1089, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN7glslang13TIntermediate4foldEPNS_16TIntermAggregateE) #10
  unreachable

491:                                              ; preds = %305
  %492 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %93, i64 noundef 0) #9
  %493 = load ptr, ptr %492, align 8, !tbaa !8
  %494 = load ptr, ptr %493, align 8, !tbaa !5
  %495 = getelementptr inbounds i8, ptr %494, i64 24
  %496 = load ptr, ptr %495, align 8
  %497 = invoke noundef ptr %496(ptr noundef nonnull align 8 dereferenceable(32) %493)
          to label %498 unwind label %307

498:                                              ; preds = %491
  %499 = load ptr, ptr %497, align 8, !tbaa !5
  %500 = getelementptr inbounds i8, ptr %499, i64 256
  %501 = load ptr, ptr %500, align 8
  %502 = invoke noundef i32 %501(ptr noundef nonnull align 8 dereferenceable(176) %497)
          to label %503 unwind label %307

503:                                              ; preds = %498
  switch i32 %502, label %630 [
    i32 3, label %504
    i32 1, label %504
    i32 2, label %504
    i32 8, label %518
    i32 9, label %532
    i32 4, label %546
    i32 5, label %560
    i32 6, label %574
    i32 7, label %588
    i32 10, label %602
    i32 11, label %616
  ]

504:                                              ; preds = %503, %503, %503
  %505 = load i32, ptr %9, align 4, !tbaa !11
  %506 = sext i32 %505 to i64
  %507 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %506)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #9
  %508 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0) #9
  %509 = sext i32 %251 to i64
  %510 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %508, i64 noundef %509)
  %511 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %510)
  store double %511, ptr %31, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #9
  %512 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 1) #9
  %513 = sext i32 %.0288 to i64
  %514 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %512, i64 noundef %513)
  %515 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %514)
  store double %515, ptr %32, align 8, !tbaa !15
  %516 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %31, ptr noundef nonnull align 8 dereferenceable(8) %32)
  %517 = load double, ptr %516, align 8, !tbaa !15
  call void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %507, double noundef %517)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #9
  br label %983

518:                                              ; preds = %503
  %519 = load i32, ptr %9, align 4, !tbaa !11
  %520 = sext i32 %519 to i64
  %521 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %520)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %33) #9
  %522 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0) #9
  %523 = sext i32 %251 to i64
  %524 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %522, i64 noundef %523)
  %525 = call noundef i32 @_ZNK7glslang11TConstUnion9getIConstEv(ptr noundef nonnull align 8 dereferenceable(12) %524)
  store i32 %525, ptr %33, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %34) #9
  %526 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 1) #9
  %527 = sext i32 %.0288 to i64
  %528 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %526, i64 noundef %527)
  %529 = call noundef i32 @_ZNK7glslang11TConstUnion9getIConstEv(ptr noundef nonnull align 8 dereferenceable(12) %528)
  store i32 %529, ptr %34, align 4, !tbaa !11
  %530 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %33, ptr noundef nonnull align 4 dereferenceable(4) %34)
  %531 = load i32, ptr %530, align 4, !tbaa !11
  call void @_ZN7glslang11TConstUnion9setIConstEi(ptr noundef nonnull align 8 dereferenceable(12) %521, i32 noundef %531)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %34) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %33) #9
  br label %983

532:                                              ; preds = %503
  %533 = load i32, ptr %9, align 4, !tbaa !11
  %534 = sext i32 %533 to i64
  %535 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %534)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %35) #9
  %536 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0) #9
  %537 = sext i32 %251 to i64
  %538 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %536, i64 noundef %537)
  %539 = call noundef i32 @_ZNK7glslang11TConstUnion9getUConstEv(ptr noundef nonnull align 8 dereferenceable(12) %538)
  store i32 %539, ptr %35, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %36) #9
  %540 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 1) #9
  %541 = sext i32 %.0288 to i64
  %542 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %540, i64 noundef %541)
  %543 = call noundef i32 @_ZNK7glslang11TConstUnion9getUConstEv(ptr noundef nonnull align 8 dereferenceable(12) %542)
  store i32 %543, ptr %36, align 4, !tbaa !11
  %544 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %35, ptr noundef nonnull align 4 dereferenceable(4) %36)
  %545 = load i32, ptr %544, align 4, !tbaa !11
  call void @_ZN7glslang11TConstUnion9setUConstEj(ptr noundef nonnull align 8 dereferenceable(12) %535, i32 noundef %545)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %36) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %35) #9
  br label %983

546:                                              ; preds = %503
  %547 = load i32, ptr %9, align 4, !tbaa !11
  %548 = sext i32 %547 to i64
  %549 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %548)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %37) #9
  %550 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0) #9
  %551 = sext i32 %251 to i64
  %552 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %550, i64 noundef %551)
  %553 = call noundef signext i8 @_ZNK7glslang11TConstUnion10getI8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %552)
  store i8 %553, ptr %37, align 1, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %38) #9
  %554 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 1) #9
  %555 = sext i32 %.0288 to i64
  %556 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %554, i64 noundef %555)
  %557 = call noundef signext i8 @_ZNK7glslang11TConstUnion10getI8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %556)
  store i8 %557, ptr %38, align 1, !tbaa !17
  %558 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZSt3maxIaERKT_S2_S2_(ptr noundef nonnull align 1 dereferenceable(1) %37, ptr noundef nonnull align 1 dereferenceable(1) %38)
  %559 = load i8, ptr %558, align 1, !tbaa !17
  call void @_ZN7glslang11TConstUnion10setI8ConstEa(ptr noundef nonnull align 8 dereferenceable(12) %549, i8 noundef signext %559)
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %38) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %37) #9
  br label %983

560:                                              ; preds = %503
  %561 = load i32, ptr %9, align 4, !tbaa !11
  %562 = sext i32 %561 to i64
  %563 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %562)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %39) #9
  %564 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0) #9
  %565 = sext i32 %251 to i64
  %566 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %564, i64 noundef %565)
  %567 = call noundef zeroext i8 @_ZNK7glslang11TConstUnion10getU8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %566)
  store i8 %567, ptr %39, align 1, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %40) #9
  %568 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 1) #9
  %569 = sext i32 %.0288 to i64
  %570 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %568, i64 noundef %569)
  %571 = call noundef zeroext i8 @_ZNK7glslang11TConstUnion10getU8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %570)
  store i8 %571, ptr %40, align 1, !tbaa !17
  %572 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZSt3maxIhERKT_S2_S2_(ptr noundef nonnull align 1 dereferenceable(1) %39, ptr noundef nonnull align 1 dereferenceable(1) %40)
  %573 = load i8, ptr %572, align 1, !tbaa !17
  call void @_ZN7glslang11TConstUnion10setU8ConstEh(ptr noundef nonnull align 8 dereferenceable(12) %563, i8 noundef zeroext %573)
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %40) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %39) #9
  br label %983

574:                                              ; preds = %503
  %575 = load i32, ptr %9, align 4, !tbaa !11
  %576 = sext i32 %575 to i64
  %577 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %576)
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %41) #9
  %578 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0) #9
  %579 = sext i32 %251 to i64
  %580 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %578, i64 noundef %579)
  %581 = call noundef signext i16 @_ZNK7glslang11TConstUnion11getI16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %580)
  store i16 %581, ptr %41, align 2, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %42) #9
  %582 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 1) #9
  %583 = sext i32 %.0288 to i64
  %584 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %582, i64 noundef %583)
  %585 = call noundef signext i16 @_ZNK7glslang11TConstUnion11getI16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %584)
  store i16 %585, ptr %42, align 2, !tbaa !18
  %586 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZSt3maxIsERKT_S2_S2_(ptr noundef nonnull align 2 dereferenceable(2) %41, ptr noundef nonnull align 2 dereferenceable(2) %42)
  %587 = load i16, ptr %586, align 2, !tbaa !18
  call void @_ZN7glslang11TConstUnion11setI16ConstEs(ptr noundef nonnull align 8 dereferenceable(12) %577, i16 noundef signext %587)
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %42) #9
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %41) #9
  br label %983

588:                                              ; preds = %503
  %589 = load i32, ptr %9, align 4, !tbaa !11
  %590 = sext i32 %589 to i64
  %591 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %590)
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %43) #9
  %592 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0) #9
  %593 = sext i32 %251 to i64
  %594 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %592, i64 noundef %593)
  %595 = call noundef zeroext i16 @_ZNK7glslang11TConstUnion11getU16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %594)
  store i16 %595, ptr %43, align 2, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %44) #9
  %596 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 1) #9
  %597 = sext i32 %.0288 to i64
  %598 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %596, i64 noundef %597)
  %599 = call noundef zeroext i16 @_ZNK7glslang11TConstUnion11getU16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %598)
  store i16 %599, ptr %44, align 2, !tbaa !18
  %600 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZSt3maxItERKT_S2_S2_(ptr noundef nonnull align 2 dereferenceable(2) %43, ptr noundef nonnull align 2 dereferenceable(2) %44)
  %601 = load i16, ptr %600, align 2, !tbaa !18
  call void @_ZN7glslang11TConstUnion11setU16ConstEt(ptr noundef nonnull align 8 dereferenceable(12) %591, i16 noundef zeroext %601)
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %44) #9
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %43) #9
  br label %983

602:                                              ; preds = %503
  %603 = load i32, ptr %9, align 4, !tbaa !11
  %604 = sext i32 %603 to i64
  %605 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %604)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %45) #9
  %606 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0) #9
  %607 = sext i32 %251 to i64
  %608 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %606, i64 noundef %607)
  %609 = call noundef i64 @_ZNK7glslang11TConstUnion11getI64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %608)
  store i64 %609, ptr %45, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %46) #9
  %610 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 1) #9
  %611 = sext i32 %.0288 to i64
  %612 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %610, i64 noundef %611)
  %613 = call noundef i64 @_ZNK7glslang11TConstUnion11getI64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %612)
  store i64 %613, ptr %46, align 8, !tbaa !20
  %614 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIxERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %45, ptr noundef nonnull align 8 dereferenceable(8) %46)
  %615 = load i64, ptr %614, align 8, !tbaa !20
  call void @_ZN7glslang11TConstUnion11setI64ConstEx(ptr noundef nonnull align 8 dereferenceable(12) %605, i64 noundef %615)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #9
  br label %983

616:                                              ; preds = %503
  %617 = load i32, ptr %9, align 4, !tbaa !11
  %618 = sext i32 %617 to i64
  %619 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %618)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %47) #9
  %620 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0) #9
  %621 = sext i32 %251 to i64
  %622 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %620, i64 noundef %621)
  %623 = call noundef i64 @_ZNK7glslang11TConstUnion11getU64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %622)
  store i64 %623, ptr %47, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %48) #9
  %624 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 1) #9
  %625 = sext i32 %.0288 to i64
  %626 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %624, i64 noundef %625)
  %627 = call noundef i64 @_ZNK7glslang11TConstUnion11getU64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %626)
  store i64 %627, ptr %48, align 8, !tbaa !20
  %628 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIyERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %47, ptr noundef nonnull align 8 dereferenceable(8) %48)
  %629 = load i64, ptr %628, align 8, !tbaa !20
  call void @_ZN7glslang11TConstUnion11setU64ConstEy(ptr noundef nonnull align 8 dereferenceable(12) %619, i64 noundef %629)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #9
  br label %983

630:                                              ; preds = %503
  call void @__assert_fail(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 1125, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN7glslang13TIntermediate4foldEPNS_16TIntermAggregateE) #10
  unreachable

631:                                              ; preds = %305
  %632 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %93, i64 noundef 0) #9
  %633 = load ptr, ptr %632, align 8, !tbaa !8
  %634 = load ptr, ptr %633, align 8, !tbaa !5
  %635 = getelementptr inbounds i8, ptr %634, i64 24
  %636 = load ptr, ptr %635, align 8
  %637 = invoke noundef ptr %636(ptr noundef nonnull align 8 dereferenceable(32) %633)
          to label %638 unwind label %307

638:                                              ; preds = %631
  %639 = load ptr, ptr %637, align 8, !tbaa !5
  %640 = getelementptr inbounds i8, ptr %639, i64 256
  %641 = load ptr, ptr %640, align 8
  %642 = invoke noundef i32 %641(ptr noundef nonnull align 8 dereferenceable(176) %637)
          to label %643 unwind label %307

643:                                              ; preds = %638
  switch i32 %642, label %815 [
    i32 3, label %644
    i32 1, label %644
    i32 2, label %644
    i32 9, label %663
    i32 4, label %682
    i32 5, label %701
    i32 6, label %720
    i32 7, label %739
    i32 8, label %758
    i32 10, label %777
    i32 11, label %796
  ]

644:                                              ; preds = %643, %643, %643
  %645 = load i32, ptr %9, align 4, !tbaa !11
  %646 = sext i32 %645 to i64
  %647 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %646)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %49) #9
  %648 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0) #9
  %649 = sext i32 %251 to i64
  %650 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %648, i64 noundef %649)
  %651 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %650)
  store double %651, ptr %49, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %50) #9
  %652 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 1) #9
  %653 = sext i32 %.0288 to i64
  %654 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %652, i64 noundef %653)
  %655 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %654)
  store double %655, ptr %50, align 8, !tbaa !15
  %656 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %49, ptr noundef nonnull align 8 dereferenceable(8) %50)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %51) #9
  %657 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 2) #9
  %658 = sext i32 %.0291 to i64
  %659 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %657, i64 noundef %658)
  %660 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %659)
  store double %660, ptr %51, align 8, !tbaa !15
  %661 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %656, ptr noundef nonnull align 8 dereferenceable(8) %51)
  %662 = load double, ptr %661, align 8, !tbaa !15
  call void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %647, double noundef %662)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %50) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %49) #9
  br label %983

663:                                              ; preds = %643
  %664 = load i32, ptr %9, align 4, !tbaa !11
  %665 = sext i32 %664 to i64
  %666 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %665)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %52) #9
  %667 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0) #9
  %668 = sext i32 %251 to i64
  %669 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %667, i64 noundef %668)
  %670 = call noundef i32 @_ZNK7glslang11TConstUnion9getUConstEv(ptr noundef nonnull align 8 dereferenceable(12) %669)
  store i32 %670, ptr %52, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %53) #9
  %671 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 1) #9
  %672 = sext i32 %.0288 to i64
  %673 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %671, i64 noundef %672)
  %674 = call noundef i32 @_ZNK7glslang11TConstUnion9getUConstEv(ptr noundef nonnull align 8 dereferenceable(12) %673)
  store i32 %674, ptr %53, align 4, !tbaa !11
  %675 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %52, ptr noundef nonnull align 4 dereferenceable(4) %53)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %54) #9
  %676 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 2) #9
  %677 = sext i32 %.0291 to i64
  %678 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %676, i64 noundef %677)
  %679 = call noundef i32 @_ZNK7glslang11TConstUnion9getUConstEv(ptr noundef nonnull align 8 dereferenceable(12) %678)
  store i32 %679, ptr %54, align 4, !tbaa !11
  %680 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %675, ptr noundef nonnull align 4 dereferenceable(4) %54)
  %681 = load i32, ptr %680, align 4, !tbaa !11
  call void @_ZN7glslang11TConstUnion9setUConstEj(ptr noundef nonnull align 8 dereferenceable(12) %666, i32 noundef %681)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %54) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %53) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %52) #9
  br label %983

682:                                              ; preds = %643
  %683 = load i32, ptr %9, align 4, !tbaa !11
  %684 = sext i32 %683 to i64
  %685 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %684)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %55) #9
  %686 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0) #9
  %687 = sext i32 %251 to i64
  %688 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %686, i64 noundef %687)
  %689 = call noundef signext i8 @_ZNK7glslang11TConstUnion10getI8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %688)
  store i8 %689, ptr %55, align 1, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %56) #9
  %690 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 1) #9
  %691 = sext i32 %.0288 to i64
  %692 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %690, i64 noundef %691)
  %693 = call noundef signext i8 @_ZNK7glslang11TConstUnion10getI8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %692)
  store i8 %693, ptr %56, align 1, !tbaa !17
  %694 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZSt3maxIaERKT_S2_S2_(ptr noundef nonnull align 1 dereferenceable(1) %55, ptr noundef nonnull align 1 dereferenceable(1) %56)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %57) #9
  %695 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 2) #9
  %696 = sext i32 %.0291 to i64
  %697 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %695, i64 noundef %696)
  %698 = call noundef signext i8 @_ZNK7glslang11TConstUnion10getI8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %697)
  store i8 %698, ptr %57, align 1, !tbaa !17
  %699 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZSt3minIaERKT_S2_S2_(ptr noundef nonnull align 1 dereferenceable(1) %694, ptr noundef nonnull align 1 dereferenceable(1) %57)
  %700 = load i8, ptr %699, align 1, !tbaa !17
  call void @_ZN7glslang11TConstUnion10setI8ConstEa(ptr noundef nonnull align 8 dereferenceable(12) %685, i8 noundef signext %700)
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %57) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %56) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %55) #9
  br label %983

701:                                              ; preds = %643
  %702 = load i32, ptr %9, align 4, !tbaa !11
  %703 = sext i32 %702 to i64
  %704 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %703)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %58) #9
  %705 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0) #9
  %706 = sext i32 %251 to i64
  %707 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %705, i64 noundef %706)
  %708 = call noundef zeroext i8 @_ZNK7glslang11TConstUnion10getU8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %707)
  store i8 %708, ptr %58, align 1, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %59) #9
  %709 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 1) #9
  %710 = sext i32 %.0288 to i64
  %711 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %709, i64 noundef %710)
  %712 = call noundef zeroext i8 @_ZNK7glslang11TConstUnion10getU8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %711)
  store i8 %712, ptr %59, align 1, !tbaa !17
  %713 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZSt3maxIhERKT_S2_S2_(ptr noundef nonnull align 1 dereferenceable(1) %58, ptr noundef nonnull align 1 dereferenceable(1) %59)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %60) #9
  %714 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 2) #9
  %715 = sext i32 %.0291 to i64
  %716 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %714, i64 noundef %715)
  %717 = call noundef zeroext i8 @_ZNK7glslang11TConstUnion10getU8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %716)
  store i8 %717, ptr %60, align 1, !tbaa !17
  %718 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZSt3minIhERKT_S2_S2_(ptr noundef nonnull align 1 dereferenceable(1) %713, ptr noundef nonnull align 1 dereferenceable(1) %60)
  %719 = load i8, ptr %718, align 1, !tbaa !17
  call void @_ZN7glslang11TConstUnion10setU8ConstEh(ptr noundef nonnull align 8 dereferenceable(12) %704, i8 noundef zeroext %719)
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %60) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %59) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %58) #9
  br label %983

720:                                              ; preds = %643
  %721 = load i32, ptr %9, align 4, !tbaa !11
  %722 = sext i32 %721 to i64
  %723 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %722)
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %61) #9
  %724 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0) #9
  %725 = sext i32 %251 to i64
  %726 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %724, i64 noundef %725)
  %727 = call noundef signext i16 @_ZNK7glslang11TConstUnion11getI16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %726)
  store i16 %727, ptr %61, align 2, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %62) #9
  %728 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 1) #9
  %729 = sext i32 %.0288 to i64
  %730 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %728, i64 noundef %729)
  %731 = call noundef signext i16 @_ZNK7glslang11TConstUnion11getI16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %730)
  store i16 %731, ptr %62, align 2, !tbaa !18
  %732 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZSt3maxIsERKT_S2_S2_(ptr noundef nonnull align 2 dereferenceable(2) %61, ptr noundef nonnull align 2 dereferenceable(2) %62)
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %63) #9
  %733 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 2) #9
  %734 = sext i32 %.0291 to i64
  %735 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %733, i64 noundef %734)
  %736 = call noundef signext i16 @_ZNK7glslang11TConstUnion11getI16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %735)
  store i16 %736, ptr %63, align 2, !tbaa !18
  %737 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZSt3minIsERKT_S2_S2_(ptr noundef nonnull align 2 dereferenceable(2) %732, ptr noundef nonnull align 2 dereferenceable(2) %63)
  %738 = load i16, ptr %737, align 2, !tbaa !18
  call void @_ZN7glslang11TConstUnion11setI16ConstEs(ptr noundef nonnull align 8 dereferenceable(12) %723, i16 noundef signext %738)
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %63) #9
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %62) #9
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %61) #9
  br label %983

739:                                              ; preds = %643
  %740 = load i32, ptr %9, align 4, !tbaa !11
  %741 = sext i32 %740 to i64
  %742 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %741)
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %64) #9
  %743 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0) #9
  %744 = sext i32 %251 to i64
  %745 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %743, i64 noundef %744)
  %746 = call noundef zeroext i16 @_ZNK7glslang11TConstUnion11getU16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %745)
  store i16 %746, ptr %64, align 2, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %65) #9
  %747 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 1) #9
  %748 = sext i32 %.0288 to i64
  %749 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %747, i64 noundef %748)
  %750 = call noundef zeroext i16 @_ZNK7glslang11TConstUnion11getU16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %749)
  store i16 %750, ptr %65, align 2, !tbaa !18
  %751 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZSt3maxItERKT_S2_S2_(ptr noundef nonnull align 2 dereferenceable(2) %64, ptr noundef nonnull align 2 dereferenceable(2) %65)
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %66) #9
  %752 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 2) #9
  %753 = sext i32 %.0291 to i64
  %754 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %752, i64 noundef %753)
  %755 = call noundef zeroext i16 @_ZNK7glslang11TConstUnion11getU16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %754)
  store i16 %755, ptr %66, align 2, !tbaa !18
  %756 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZSt3minItERKT_S2_S2_(ptr noundef nonnull align 2 dereferenceable(2) %751, ptr noundef nonnull align 2 dereferenceable(2) %66)
  %757 = load i16, ptr %756, align 2, !tbaa !18
  call void @_ZN7glslang11TConstUnion11setU16ConstEt(ptr noundef nonnull align 8 dereferenceable(12) %742, i16 noundef zeroext %757)
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %66) #9
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %65) #9
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %64) #9
  br label %983

758:                                              ; preds = %643
  %759 = load i32, ptr %9, align 4, !tbaa !11
  %760 = sext i32 %759 to i64
  %761 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %760)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %67) #9
  %762 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0) #9
  %763 = sext i32 %251 to i64
  %764 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %762, i64 noundef %763)
  %765 = call noundef i32 @_ZNK7glslang11TConstUnion9getIConstEv(ptr noundef nonnull align 8 dereferenceable(12) %764)
  store i32 %765, ptr %67, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %68) #9
  %766 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 1) #9
  %767 = sext i32 %.0288 to i64
  %768 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %766, i64 noundef %767)
  %769 = call noundef i32 @_ZNK7glslang11TConstUnion9getIConstEv(ptr noundef nonnull align 8 dereferenceable(12) %768)
  store i32 %769, ptr %68, align 4, !tbaa !11
  %770 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %67, ptr noundef nonnull align 4 dereferenceable(4) %68)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %69) #9
  %771 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 2) #9
  %772 = sext i32 %.0291 to i64
  %773 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %771, i64 noundef %772)
  %774 = call noundef i32 @_ZNK7glslang11TConstUnion9getIConstEv(ptr noundef nonnull align 8 dereferenceable(12) %773)
  store i32 %774, ptr %69, align 4, !tbaa !11
  %775 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %770, ptr noundef nonnull align 4 dereferenceable(4) %69)
  %776 = load i32, ptr %775, align 4, !tbaa !11
  call void @_ZN7glslang11TConstUnion9setIConstEi(ptr noundef nonnull align 8 dereferenceable(12) %761, i32 noundef %776)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %69) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %68) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %67) #9
  br label %983

777:                                              ; preds = %643
  %778 = load i32, ptr %9, align 4, !tbaa !11
  %779 = sext i32 %778 to i64
  %780 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %779)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %70) #9
  %781 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0) #9
  %782 = sext i32 %251 to i64
  %783 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %781, i64 noundef %782)
  %784 = call noundef i64 @_ZNK7glslang11TConstUnion11getI64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %783)
  store i64 %784, ptr %70, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %71) #9
  %785 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 1) #9
  %786 = sext i32 %.0288 to i64
  %787 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %785, i64 noundef %786)
  %788 = call noundef i64 @_ZNK7glslang11TConstUnion11getI64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %787)
  store i64 %788, ptr %71, align 8, !tbaa !20
  %789 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIxERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %70, ptr noundef nonnull align 8 dereferenceable(8) %71)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %72) #9
  %790 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 2) #9
  %791 = sext i32 %.0291 to i64
  %792 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %790, i64 noundef %791)
  %793 = call noundef i64 @_ZNK7glslang11TConstUnion11getI64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %792)
  store i64 %793, ptr %72, align 8, !tbaa !20
  %794 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIxERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %789, ptr noundef nonnull align 8 dereferenceable(8) %72)
  %795 = load i64, ptr %794, align 8, !tbaa !20
  call void @_ZN7glslang11TConstUnion11setI64ConstEx(ptr noundef nonnull align 8 dereferenceable(12) %780, i64 noundef %795)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %72) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %71) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %70) #9
  br label %983

796:                                              ; preds = %643
  %797 = load i32, ptr %9, align 4, !tbaa !11
  %798 = sext i32 %797 to i64
  %799 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %798)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %73) #9
  %800 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0) #9
  %801 = sext i32 %251 to i64
  %802 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %800, i64 noundef %801)
  %803 = call noundef i64 @_ZNK7glslang11TConstUnion11getU64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %802)
  store i64 %803, ptr %73, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %74) #9
  %804 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 1) #9
  %805 = sext i32 %.0288 to i64
  %806 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %804, i64 noundef %805)
  %807 = call noundef i64 @_ZNK7glslang11TConstUnion11getU64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %806)
  store i64 %807, ptr %74, align 8, !tbaa !20
  %808 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIyERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %73, ptr noundef nonnull align 8 dereferenceable(8) %74)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %75) #9
  %809 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 2) #9
  %810 = sext i32 %.0291 to i64
  %811 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %809, i64 noundef %810)
  %812 = call noundef i64 @_ZNK7glslang11TConstUnion11getU64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %811)
  store i64 %812, ptr %75, align 8, !tbaa !20
  %813 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIyERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %808, ptr noundef nonnull align 8 dereferenceable(8) %75)
  %814 = load i64, ptr %813, align 8, !tbaa !20
  call void @_ZN7glslang11TConstUnion11setU64ConstEy(ptr noundef nonnull align 8 dereferenceable(12) %799, i64 noundef %814)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %75) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %74) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %73) #9
  br label %983

815:                                              ; preds = %643
  call void @__assert_fail(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 1170, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN7glslang13TIntermediate4foldEPNS_16TIntermAggregateE) #10
  unreachable

816:                                              ; preds = %305
  %817 = load i32, ptr %9, align 4, !tbaa !11
  %818 = sext i32 %817 to i64
  %819 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %818)
  %820 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0) #9
  %821 = sext i32 %251 to i64
  %822 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %820, i64 noundef %821)
  %823 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 1) #9
  %824 = sext i32 %.0288 to i64
  %825 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %823, i64 noundef %824)
  %826 = call noundef zeroext i1 @_ZNK7glslang11TConstUnionltERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %822, ptr noundef nonnull align 8 dereferenceable(12) %825)
  call void @_ZN7glslang11TConstUnion9setBConstEb(ptr noundef nonnull align 8 dereferenceable(12) %819, i1 noundef zeroext %826)
  br label %983

827:                                              ; preds = %305
  %828 = load i32, ptr %9, align 4, !tbaa !11
  %829 = sext i32 %828 to i64
  %830 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %829)
  %831 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0) #9
  %832 = sext i32 %251 to i64
  %833 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %831, i64 noundef %832)
  %834 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 1) #9
  %835 = sext i32 %.0288 to i64
  %836 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %834, i64 noundef %835)
  %837 = call noundef zeroext i1 @_ZNK7glslang11TConstUniongtERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %833, ptr noundef nonnull align 8 dereferenceable(12) %836)
  call void @_ZN7glslang11TConstUnion9setBConstEb(ptr noundef nonnull align 8 dereferenceable(12) %830, i1 noundef zeroext %837)
  br label %983

838:                                              ; preds = %305
  %839 = load i32, ptr %9, align 4, !tbaa !11
  %840 = sext i32 %839 to i64
  %841 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %840)
  %842 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0) #9
  %843 = sext i32 %251 to i64
  %844 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %842, i64 noundef %843)
  %845 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 1) #9
  %846 = sext i32 %.0288 to i64
  %847 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %845, i64 noundef %846)
  %848 = call noundef zeroext i1 @_ZNK7glslang11TConstUniongtERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %844, ptr noundef nonnull align 8 dereferenceable(12) %847)
  %849 = xor i1 %848, true
  call void @_ZN7glslang11TConstUnion9setBConstEb(ptr noundef nonnull align 8 dereferenceable(12) %841, i1 noundef zeroext %849)
  br label %983

850:                                              ; preds = %305
  %851 = load i32, ptr %9, align 4, !tbaa !11
  %852 = sext i32 %851 to i64
  %853 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %852)
  %854 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0) #9
  %855 = sext i32 %251 to i64
  %856 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %854, i64 noundef %855)
  %857 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 1) #9
  %858 = sext i32 %.0288 to i64
  %859 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %857, i64 noundef %858)
  %860 = call noundef zeroext i1 @_ZNK7glslang11TConstUnionltERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %856, ptr noundef nonnull align 8 dereferenceable(12) %859)
  %861 = xor i1 %860, true
  call void @_ZN7glslang11TConstUnion9setBConstEb(ptr noundef nonnull align 8 dereferenceable(12) %853, i1 noundef zeroext %861)
  br label %983

862:                                              ; preds = %305
  %863 = load i32, ptr %9, align 4, !tbaa !11
  %864 = sext i32 %863 to i64
  %865 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %864)
  %866 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0) #9
  %867 = sext i32 %251 to i64
  %868 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %866, i64 noundef %867)
  %869 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 1) #9
  %870 = sext i32 %.0288 to i64
  %871 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %869, i64 noundef %870)
  %872 = call noundef zeroext i1 @_ZNK7glslang11TConstUnioneqERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %868, ptr noundef nonnull align 8 dereferenceable(12) %871)
  call void @_ZN7glslang11TConstUnion9setBConstEb(ptr noundef nonnull align 8 dereferenceable(12) %865, i1 noundef zeroext %872)
  br label %983

873:                                              ; preds = %305
  %874 = load i32, ptr %9, align 4, !tbaa !11
  %875 = sext i32 %874 to i64
  %876 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %875)
  %877 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0) #9
  %878 = sext i32 %251 to i64
  %879 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %877, i64 noundef %878)
  %880 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 1) #9
  %881 = sext i32 %.0288 to i64
  %882 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %880, i64 noundef %881)
  %883 = call noundef zeroext i1 @_ZNK7glslang11TConstUnionneERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %879, ptr noundef nonnull align 8 dereferenceable(12) %882)
  call void @_ZN7glslang11TConstUnion9setBConstEb(ptr noundef nonnull align 8 dereferenceable(12) %876, i1 noundef zeroext %883)
  br label %983

884:                                              ; preds = %305
  %885 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %93, i64 noundef 0) #9
  %886 = load ptr, ptr %885, align 8, !tbaa !8
  %887 = load ptr, ptr %886, align 8, !tbaa !5
  %888 = getelementptr inbounds i8, ptr %887, i64 24
  %889 = load ptr, ptr %888, align 8
  %890 = invoke noundef ptr %889(ptr noundef nonnull align 8 dereferenceable(32) %886)
          to label %891 unwind label %307

891:                                              ; preds = %884
  %892 = load ptr, ptr %890, align 8, !tbaa !5
  %893 = getelementptr inbounds i8, ptr %892, i64 368
  %894 = load ptr, ptr %893, align 8
  %895 = invoke noundef zeroext i1 %894(ptr noundef nonnull align 8 dereferenceable(176) %890)
          to label %896 unwind label %307

896:                                              ; preds = %891
  br i1 %895, label %897, label %.thread326

897:                                              ; preds = %896
  %898 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %93, i64 noundef 2) #9
  %899 = load ptr, ptr %898, align 8, !tbaa !8
  %900 = load ptr, ptr %899, align 8, !tbaa !5
  %901 = getelementptr inbounds i8, ptr %900, i64 24
  %902 = load ptr, ptr %901, align 8
  %903 = invoke noundef ptr %902(ptr noundef nonnull align 8 dereferenceable(32) %899)
          to label %904 unwind label %307

904:                                              ; preds = %897
  %905 = load ptr, ptr %903, align 8, !tbaa !5
  %906 = getelementptr inbounds i8, ptr %905, i64 256
  %907 = load ptr, ptr %906, align 8
  %908 = invoke noundef i32 %907(ptr noundef nonnull align 8 dereferenceable(176) %903)
          to label %909 unwind label %307

909:                                              ; preds = %904
  %910 = icmp eq i32 %908, 12
  %911 = load i32, ptr %9, align 4, !tbaa !11
  %912 = sext i32 %911 to i64
  %913 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %912)
  br i1 %910, label %914, label %923

914:                                              ; preds = %909
  %915 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 2) #9
  %916 = sext i32 %.0291 to i64
  %917 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %915, i64 noundef %916)
  %918 = call noundef zeroext i1 @_ZNK7glslang11TConstUnion9getBConstEv(ptr noundef nonnull align 8 dereferenceable(12) %917)
  %. = zext i1 %918 to i64
  %.0288. = select i1 %918, i32 %.0288, i32 %251
  %919 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef %.) #9
  %920 = sext i32 %.0288. to i64
  %921 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %919, i64 noundef %920)
  %922 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %921)
  call void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %913, double noundef %922)
  br label %983

923:                                              ; preds = %909
  %924 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0) #9
  %925 = sext i32 %251 to i64
  %926 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %924, i64 noundef %925)
  %927 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %926)
  %928 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 2) #9
  %929 = sext i32 %.0291 to i64
  %930 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %928, i64 noundef %929)
  %931 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %930)
  %932 = fsub double 1.000000e+00, %931
  %933 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 1) #9
  %934 = sext i32 %.0288 to i64
  %935 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %933, i64 noundef %934)
  %936 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %935)
  %937 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 2) #9
  %938 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %937, i64 noundef %929)
  %939 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %938)
  %940 = fmul double %936, %939
  %941 = call double @llvm.fmuladd.f64(double %927, double %932, double %940)
  call void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %913, double noundef %941)
  br label %983

942:                                              ; preds = %305
  %943 = load i32, ptr %9, align 4, !tbaa !11
  %944 = sext i32 %943 to i64
  %945 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %944)
  %946 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 1) #9
  %947 = sext i32 %.0288 to i64
  %948 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %946, i64 noundef %947)
  %949 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %948)
  %950 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0) #9
  %951 = sext i32 %251 to i64
  %952 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %950, i64 noundef %951)
  %953 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %952)
  %954 = fcmp olt double %949, %953
  %955 = select i1 %954, double 0.000000e+00, double 1.000000e+00
  call void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %945, double noundef %955)
  br label %983

956:                                              ; preds = %305
  %957 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 2) #9
  %958 = sext i32 %.0291 to i64
  %959 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %957, i64 noundef %958)
  %960 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %959)
  %961 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0) #9
  %962 = sext i32 %251 to i64
  %963 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %961, i64 noundef %962)
  %964 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %963)
  %965 = fsub double %960, %964
  %966 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 1) #9
  %967 = sext i32 %.0288 to i64
  %968 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %966, i64 noundef %967)
  %969 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %968)
  %970 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0) #9
  %971 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %970, i64 noundef %962)
  %972 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %971)
  %973 = fsub double %969, %972
  %974 = fdiv double %965, %973
  %975 = fcmp olt double %974, 0.000000e+00
  %.0292 = select i1 %975, double 0.000000e+00, double %974
  %976 = fcmp ogt double %.0292, 1.000000e+00
  %.1293 = select i1 %976, double 1.000000e+00, double %.0292
  %977 = load i32, ptr %9, align 4, !tbaa !11
  %978 = sext i32 %977 to i64
  %979 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %978)
  %980 = fmul double %.1293, %.1293
  %981 = call double @llvm.fmuladd.f64(double %.1293, double -2.000000e+00, double 3.000000e+00)
  %982 = fmul double %980, %981
  call void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %979, double noundef %982)
  br label %983

983:                                              ; preds = %914, %923, %644, %663, %682, %701, %720, %739, %758, %777, %796, %504, %518, %532, %546, %560, %574, %588, %602, %616, %364, %378, %392, %406, %420, %434, %448, %462, %476, %956, %942, %873, %862, %850, %838, %827, %816, %335, %322, %309
  %984 = load i32, ptr %9, align 4, !tbaa !11
  %985 = add nsw i32 %984, 1
  store i32 %985, ptr %9, align 4, !tbaa !11
  %.not = icmp slt i32 %985, %.0262
  br i1 %.not, label %.lr.ph358, label %._crit_edge359, !llvm.loop !22

986:                                              ; preds = %277, %307, %303, %275
  %.pn313.pn.pn = phi { ptr, i32 } [ %276, %275 ], [ %278, %277 ], [ %308, %307 ], [ %304, %303 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #9
  br label %1201

.thread326:                                       ; preds = %896, %305
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #9
  br label %.critedge

._crit_edge359:                                   ; preds = %983, %231
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #9
  br label %.loopexit

987:                                              ; preds = %._crit_edge
  %988 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %93, i64 noundef 0) #9
  %989 = load ptr, ptr %988, align 8, !tbaa !8
  %990 = load ptr, ptr %989, align 8, !tbaa !5
  %991 = getelementptr inbounds i8, ptr %990, i64 40
  %992 = load ptr, ptr %991, align 8
  %993 = invoke noundef ptr %992(ptr noundef nonnull align 8 dereferenceable(32) %989)
          to label %994 unwind label %1004

994:                                              ; preds = %987
  %995 = load ptr, ptr %993, align 8, !tbaa !5
  %996 = getelementptr inbounds i8, ptr %995, i64 240
  %997 = load ptr, ptr %996, align 8
  %998 = invoke noundef nonnull align 8 dereferenceable(144) ptr %997(ptr noundef nonnull align 8 dereferenceable(176) %993)
          to label %999 unwind label %1004

999:                                              ; preds = %994
  %1000 = invoke noundef i32 @_ZNK7glslang5TType20computeNumComponentsEv(ptr noundef nonnull align 8 dereferenceable(144) %998)
          to label %1001 unwind label %1004

1001:                                             ; preds = %999
  %1002 = call noundef i32 @_ZNK7glslang15TIntermOperator5getOpEv(ptr noundef nonnull align 8 dereferenceable(184) %1)
  switch i32 %1002, label %.critedge [
    i32 272, label %.preheader
    i32 273, label %1016
    i32 274, label %1021
    i32 276, label %1082
    i32 277, label %1096
    i32 278, label %1111
    i32 296, label %1138
  ]

.preheader:                                       ; preds = %1001
  %1003 = icmp sgt i32 %1000, 0
  br i1 %1003, label %.lr.ph354.preheader, label %._crit_edge355

.lr.ph354.preheader:                              ; preds = %.preheader
  %wide.trip.count401 = zext nneg i32 %1000 to i64
  br label %.lr.ph354

1004:                                             ; preds = %999, %994, %987
  %1005 = landingpad { ptr, i32 }
          cleanup
  br label %1201

._crit_edge355:                                   ; preds = %.lr.ph354, %.preheader
  %.0296.lcssa = phi double [ 0.000000e+00, %.preheader ], [ %1015, %.lr.ph354 ]
  %1006 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef 0)
  %1007 = call double @sqrt(double noundef %.0296.lcssa) #9
  call void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %1006, double noundef %1007)
  br label %.loopexit

.lr.ph354:                                        ; preds = %.lr.ph354.preheader, %.lr.ph354
  %indvars.iv398 = phi i64 [ 0, %.lr.ph354.preheader ], [ %indvars.iv.next399, %.lr.ph354 ]
  %.0296353 = phi double [ 0.000000e+00, %.lr.ph354.preheader ], [ %1015, %.lr.ph354 ]
  %1008 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 1) #9
  %1009 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1008, i64 noundef %indvars.iv398)
  %1010 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1009)
  %1011 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0) #9
  %1012 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1011, i64 noundef %indvars.iv398)
  %1013 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1012)
  %1014 = fsub double %1010, %1013
  %1015 = call double @llvm.fmuladd.f64(double %1014, double %1014, double %.0296353)
  %indvars.iv.next399 = add nuw nsw i64 %indvars.iv398, 1
  %exitcond402.not = icmp eq i64 %indvars.iv.next399, %wide.trip.count401
  br i1 %exitcond402.not, label %._crit_edge355, label %.lr.ph354, !llvm.loop !23

1016:                                             ; preds = %1001
  %1017 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef 0)
  %1018 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0) #9
  %1019 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 1) #9
  %1020 = call noundef double @_ZN7glslang16TConstUnionArray3dotERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %1018, ptr noundef nonnull align 8 dereferenceable(16) %1019)
  call void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %1017, double noundef %1020)
  br label %.loopexit

1021:                                             ; preds = %1001
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %76) #9
  %1022 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0) #9
  %1023 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1022, i64 noundef 1)
  %1024 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 1) #9
  %1025 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1024, i64 noundef 2)
  %1026 = invoke { i64, i32 } @_ZNK7glslang11TConstUnionmlERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %1023, ptr noundef nonnull align 8 dereferenceable(12) %1025)
          to label %1027 unwind label %1067

1027:                                             ; preds = %1021
  %.fca.0.extract79 = extractvalue { i64, i32 } %1026, 0
  %.fca.1.extract80 = extractvalue { i64, i32 } %1026, 1
  store i64 %.fca.0.extract79, ptr %76, align 8
  %.sroa.282.0..sroa_idx = getelementptr inbounds i8, ptr %76, i64 8
  store i32 %.fca.1.extract80, ptr %.sroa.282.0..sroa_idx, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %77) #9
  %1028 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0) #9
  %1029 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1028, i64 noundef 2)
  %1030 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 1) #9
  %1031 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1030, i64 noundef 1)
  %1032 = invoke { i64, i32 } @_ZNK7glslang11TConstUnionmlERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %1029, ptr noundef nonnull align 8 dereferenceable(12) %1031)
          to label %1033 unwind label %1069

1033:                                             ; preds = %1027
  %.fca.0.extract75 = extractvalue { i64, i32 } %1032, 0
  %.fca.1.extract76 = extractvalue { i64, i32 } %1032, 1
  store i64 %.fca.0.extract75, ptr %77, align 8
  %.sroa.278.0..sroa_idx = getelementptr inbounds i8, ptr %77, i64 8
  store i32 %.fca.1.extract76, ptr %.sroa.278.0..sroa_idx, align 8
  %1034 = invoke { i64, i32 } @_ZNK7glslang11TConstUnionmiERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %76, ptr noundef nonnull align 8 dereferenceable(12) %77)
          to label %1035 unwind label %1069

1035:                                             ; preds = %1033
  %.fca.0.extract71 = extractvalue { i64, i32 } %1034, 0
  %.fca.1.extract72 = extractvalue { i64, i32 } %1034, 1
  %1036 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef 0)
  store i64 %.fca.0.extract71, ptr %1036, align 8, !tbaa !17
  %.sroa.584.0..sroa_idx = getelementptr inbounds i8, ptr %1036, i64 8
  store i32 %.fca.1.extract72, ptr %.sroa.584.0..sroa_idx, align 8, !tbaa !24
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %77) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %76) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %78) #9
  %1037 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0) #9
  %1038 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1037, i64 noundef 2)
  %1039 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 1) #9
  %1040 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1039, i64 noundef 0)
  %1041 = invoke { i64, i32 } @_ZNK7glslang11TConstUnionmlERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %1038, ptr noundef nonnull align 8 dereferenceable(12) %1040)
          to label %1042 unwind label %1072

1042:                                             ; preds = %1035
  %.fca.0.extract64 = extractvalue { i64, i32 } %1041, 0
  %.fca.1.extract65 = extractvalue { i64, i32 } %1041, 1
  store i64 %.fca.0.extract64, ptr %78, align 8
  %.sroa.267.0..sroa_idx = getelementptr inbounds i8, ptr %78, i64 8
  store i32 %.fca.1.extract65, ptr %.sroa.267.0..sroa_idx, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %79) #9
  %1043 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0) #9
  %1044 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1043, i64 noundef 0)
  %1045 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 1) #9
  %1046 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1045, i64 noundef 2)
  %1047 = invoke { i64, i32 } @_ZNK7glslang11TConstUnionmlERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %1044, ptr noundef nonnull align 8 dereferenceable(12) %1046)
          to label %1048 unwind label %1074

1048:                                             ; preds = %1042
  %.fca.0.extract60 = extractvalue { i64, i32 } %1047, 0
  %.fca.1.extract61 = extractvalue { i64, i32 } %1047, 1
  store i64 %.fca.0.extract60, ptr %79, align 8
  %.sroa.263.0..sroa_idx = getelementptr inbounds i8, ptr %79, i64 8
  store i32 %.fca.1.extract61, ptr %.sroa.263.0..sroa_idx, align 8
  %1049 = invoke { i64, i32 } @_ZNK7glslang11TConstUnionmiERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %78, ptr noundef nonnull align 8 dereferenceable(12) %79)
          to label %1050 unwind label %1074

1050:                                             ; preds = %1048
  %.fca.0.extract56 = extractvalue { i64, i32 } %1049, 0
  %.fca.1.extract57 = extractvalue { i64, i32 } %1049, 1
  %1051 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef 1)
  store i64 %.fca.0.extract56, ptr %1051, align 8, !tbaa !17
  %.sroa.569.0..sroa_idx = getelementptr inbounds i8, ptr %1051, i64 8
  store i32 %.fca.1.extract57, ptr %.sroa.569.0..sroa_idx, align 8, !tbaa !24
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %79) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %78) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %80) #9
  %1052 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0) #9
  %1053 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1052, i64 noundef 0)
  %1054 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 1) #9
  %1055 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1054, i64 noundef 1)
  %1056 = invoke { i64, i32 } @_ZNK7glslang11TConstUnionmlERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %1053, ptr noundef nonnull align 8 dereferenceable(12) %1055)
          to label %1057 unwind label %1077

1057:                                             ; preds = %1050
  %.fca.0.extract49 = extractvalue { i64, i32 } %1056, 0
  %.fca.1.extract50 = extractvalue { i64, i32 } %1056, 1
  store i64 %.fca.0.extract49, ptr %80, align 8
  %.sroa.252.0..sroa_idx = getelementptr inbounds i8, ptr %80, i64 8
  store i32 %.fca.1.extract50, ptr %.sroa.252.0..sroa_idx, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %81) #9
  %1058 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0) #9
  %1059 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1058, i64 noundef 1)
  %1060 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 1) #9
  %1061 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1060, i64 noundef 0)
  %1062 = invoke { i64, i32 } @_ZNK7glslang11TConstUnionmlERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %1059, ptr noundef nonnull align 8 dereferenceable(12) %1061)
          to label %1063 unwind label %1079

1063:                                             ; preds = %1057
  %.fca.0.extract45 = extractvalue { i64, i32 } %1062, 0
  %.fca.1.extract46 = extractvalue { i64, i32 } %1062, 1
  store i64 %.fca.0.extract45, ptr %81, align 8
  %.sroa.248.0..sroa_idx = getelementptr inbounds i8, ptr %81, i64 8
  store i32 %.fca.1.extract46, ptr %.sroa.248.0..sroa_idx, align 8
  %1064 = invoke { i64, i32 } @_ZNK7glslang11TConstUnionmiERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %80, ptr noundef nonnull align 8 dereferenceable(12) %81)
          to label %1065 unwind label %1079

1065:                                             ; preds = %1063
  %.fca.0.extract41 = extractvalue { i64, i32 } %1064, 0
  %.fca.1.extract42 = extractvalue { i64, i32 } %1064, 1
  %1066 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef 2)
  store i64 %.fca.0.extract41, ptr %1066, align 8, !tbaa !17
  %.sroa.554.0..sroa_idx = getelementptr inbounds i8, ptr %1066, i64 8
  store i32 %.fca.1.extract42, ptr %.sroa.554.0..sroa_idx, align 8, !tbaa !24
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %81) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %80) #9
  br label %.loopexit

1067:                                             ; preds = %1021
  %1068 = landingpad { ptr, i32 }
          cleanup
  br label %1071

1069:                                             ; preds = %1033, %1027
  %1070 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %77) #9
  br label %1071

1071:                                             ; preds = %1069, %1067
  %.pn305 = phi { ptr, i32 } [ %1070, %1069 ], [ %1068, %1067 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %76) #9
  br label %1201

1072:                                             ; preds = %1035
  %1073 = landingpad { ptr, i32 }
          cleanup
  br label %1076

1074:                                             ; preds = %1048, %1042
  %1075 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %79) #9
  br label %1076

1076:                                             ; preds = %1074, %1072
  %.pn307 = phi { ptr, i32 } [ %1075, %1074 ], [ %1073, %1072 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %78) #9
  br label %1201

1077:                                             ; preds = %1050
  %1078 = landingpad { ptr, i32 }
          cleanup
  br label %1081

1079:                                             ; preds = %1063, %1057
  %1080 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %81) #9
  br label %1081

1081:                                             ; preds = %1079, %1077
  %.pn309 = phi { ptr, i32 } [ %1080, %1079 ], [ %1078, %1077 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %80) #9
  br label %1201

1082:                                             ; preds = %1001
  %1083 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 1) #9
  %1084 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 2) #9
  %1085 = call noundef double @_ZN7glslang16TConstUnionArray3dotERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %1083, ptr noundef nonnull align 8 dereferenceable(16) %1084)
  %1086 = icmp sgt i32 %1000, 0
  br i1 %1086, label %.lr.ph351, label %.loopexit

.lr.ph351:                                        ; preds = %1082
  %1087 = fcmp olt double %1085, 0.000000e+00
  %wide.trip.count396 = zext nneg i32 %1000 to i64
  br i1 %1087, label %.lr.ph351.split.us, label %.lr.ph351.split

.lr.ph351.split.us:                               ; preds = %.lr.ph351, %.lr.ph351.split.us
  %indvars.iv393 = phi i64 [ %indvars.iv.next394, %.lr.ph351.split.us ], [ 0, %.lr.ph351 ]
  %1088 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0) #9
  %1089 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1088, i64 noundef %indvars.iv393)
  %1090 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %indvars.iv393)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(12) %1090, ptr noundef nonnull align 8 dereferenceable(12) %1089, i64 12, i1 false), !tbaa.struct !26
  %indvars.iv.next394 = add nuw nsw i64 %indvars.iv393, 1
  %exitcond397.not = icmp eq i64 %indvars.iv.next394, %wide.trip.count396
  br i1 %exitcond397.not, label %.loopexit, label %.lr.ph351.split.us, !llvm.loop !27

.lr.ph351.split:                                  ; preds = %.lr.ph351, %.lr.ph351.split
  %indvars.iv388 = phi i64 [ %indvars.iv.next389, %.lr.ph351.split ], [ 0, %.lr.ph351 ]
  %1091 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %indvars.iv388)
  %1092 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0) #9
  %1093 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1092, i64 noundef %indvars.iv388)
  %1094 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1093)
  %1095 = fneg double %1094
  call void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %1091, double noundef %1095)
  %indvars.iv.next389 = add nuw nsw i64 %indvars.iv388, 1
  %exitcond392.not = icmp eq i64 %indvars.iv.next389, %wide.trip.count396
  br i1 %exitcond392.not, label %.loopexit, label %.lr.ph351.split, !llvm.loop !27

1096:                                             ; preds = %1001
  %1097 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0) #9
  %1098 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 1) #9
  %1099 = call noundef double @_ZN7glslang16TConstUnionArray3dotERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %1097, ptr noundef nonnull align 8 dereferenceable(16) %1098)
  %1100 = icmp sgt i32 %1000, 0
  br i1 %1100, label %.lr.ph348, label %.loopexit

.lr.ph348:                                        ; preds = %1096
  %1101 = fmul double %1099, -2.000000e+00
  %wide.trip.count386 = zext nneg i32 %1000 to i64
  br label %1102

1102:                                             ; preds = %.lr.ph348, %1102
  %indvars.iv383 = phi i64 [ 0, %.lr.ph348 ], [ %indvars.iv.next384, %1102 ]
  %1103 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %indvars.iv383)
  %1104 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0) #9
  %1105 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1104, i64 noundef %indvars.iv383)
  %1106 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1105)
  %1107 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 1) #9
  %1108 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1107, i64 noundef %indvars.iv383)
  %1109 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1108)
  %1110 = call double @llvm.fmuladd.f64(double %1101, double %1109, double %1106)
  call void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %1103, double noundef %1110)
  %indvars.iv.next384 = add nuw nsw i64 %indvars.iv383, 1
  %exitcond387.not = icmp eq i64 %indvars.iv.next384, %wide.trip.count386
  br i1 %exitcond387.not, label %.loopexit, label %1102, !llvm.loop !28

1111:                                             ; preds = %1001
  %1112 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0) #9
  %1113 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 1) #9
  %1114 = call noundef double @_ZN7glslang16TConstUnionArray3dotERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %1112, ptr noundef nonnull align 8 dereferenceable(16) %1113)
  %1115 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 2) #9
  %1116 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1115, i64 noundef 0)
  %1117 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1116)
  %1118 = fneg double %1114
  %1119 = call double @llvm.fmuladd.f64(double %1118, double %1114, double 1.000000e+00)
  %1120 = fneg double %1117
  %1121 = fmul double %1117, %1120
  %1122 = call double @llvm.fmuladd.f64(double %1121, double %1119, double 1.000000e+00)
  %1123 = fcmp olt double %1122, 0.000000e+00
  %1124 = icmp sgt i32 %1000, 0
  br i1 %1123, label %.preheader329, label %.preheader331

.preheader331:                                    ; preds = %1111
  br i1 %1124, label %.lr.ph343.preheader, label %.loopexit

.lr.ph343.preheader:                              ; preds = %.preheader331
  %wide.trip.count376 = zext nneg i32 %1000 to i64
  br label %.lr.ph343

.preheader329:                                    ; preds = %1111
  br i1 %1124, label %.lr.ph345.preheader, label %.loopexit

.lr.ph345.preheader:                              ; preds = %.preheader329
  %wide.trip.count381 = zext nneg i32 %1000 to i64
  br label %.lr.ph345

.lr.ph345:                                        ; preds = %.lr.ph345.preheader, %.lr.ph345
  %indvars.iv378 = phi i64 [ 0, %.lr.ph345.preheader ], [ %indvars.iv.next379, %.lr.ph345 ]
  %1125 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %indvars.iv378)
  call void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %1125, double noundef 0.000000e+00)
  %indvars.iv.next379 = add nuw nsw i64 %indvars.iv378, 1
  %exitcond382.not = icmp eq i64 %indvars.iv.next379, %wide.trip.count381
  br i1 %exitcond382.not, label %.loopexit, label %.lr.ph345, !llvm.loop !29

.lr.ph343:                                        ; preds = %.lr.ph343.preheader, %.lr.ph343
  %indvars.iv373 = phi i64 [ 0, %.lr.ph343.preheader ], [ %indvars.iv.next374, %.lr.ph343 ]
  %1126 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %indvars.iv373)
  %1127 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0) #9
  %1128 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1127, i64 noundef %indvars.iv373)
  %1129 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1128)
  %1130 = call double @sqrt(double noundef %1122) #9
  %1131 = call double @llvm.fmuladd.f64(double %1117, double %1114, double %1130)
  %1132 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 1) #9
  %1133 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1132, i64 noundef %indvars.iv373)
  %1134 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1133)
  %1135 = fneg double %1131
  %1136 = fmul double %1134, %1135
  %1137 = call double @llvm.fmuladd.f64(double %1117, double %1129, double %1136)
  call void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %1126, double noundef %1137)
  %indvars.iv.next374 = add nuw nsw i64 %indvars.iv373, 1
  %exitcond377.not = icmp eq i64 %indvars.iv.next374, %wide.trip.count376
  br i1 %exitcond377.not, label %.loopexit, label %.lr.ph343, !llvm.loop !30

1138:                                             ; preds = %1001
  %1139 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11TIntermNodeN7glslang14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %93, i64 noundef 1) #9
  %1140 = load ptr, ptr %1139, align 8, !tbaa !8
  %1141 = load ptr, ptr %1140, align 8, !tbaa !5
  %1142 = getelementptr inbounds i8, ptr %1141, i64 40
  %1143 = load ptr, ptr %1142, align 8
  %1144 = invoke noundef ptr %1143(ptr noundef nonnull align 8 dereferenceable(32) %1140)
          to label %1145 unwind label %1166

1145:                                             ; preds = %1138
  %1146 = load ptr, ptr %1144, align 8, !tbaa !5
  %1147 = getelementptr inbounds i8, ptr %1146, i64 240
  %1148 = load ptr, ptr %1147, align 8
  %1149 = invoke noundef nonnull align 8 dereferenceable(144) ptr %1148(ptr noundef nonnull align 8 dereferenceable(176) %1144)
          to label %1150 unwind label %1166

1150:                                             ; preds = %1145
  %1151 = invoke noundef i32 @_ZNK7glslang5TType20computeNumComponentsEv(ptr noundef nonnull align 8 dereferenceable(144) %1149)
          to label %.preheader334 unwind label %1166

.preheader334:                                    ; preds = %1150
  %1152 = icmp sgt i32 %1000, 0
  %1153 = icmp sgt i32 %1151, 0
  %or.cond = and i1 %1152, %1153
  br i1 %or.cond, label %.preheader333.us.preheader, label %.loopexit

.preheader333.us.preheader:                       ; preds = %.preheader334
  %1154 = zext nneg i32 %1000 to i64
  %wide.trip.count = zext nneg i32 %1151 to i64
  br label %.preheader333.us

.preheader333.us:                                 ; preds = %.preheader333.us.preheader, %._crit_edge340.us
  %indvars.iv368 = phi i64 [ 0, %.preheader333.us.preheader ], [ %indvars.iv.next369, %._crit_edge340.us ]
  br label %1155

1155:                                             ; preds = %.preheader333.us, %1161
  %indvars.iv = phi i64 [ 0, %.preheader333.us ], [ %indvars.iv.next, %1161 ]
  %1156 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0) #9
  %1157 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1156, i64 noundef %indvars.iv368)
  %1158 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 1) #9
  %1159 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1158, i64 noundef %indvars.iv)
  %1160 = invoke { i64, i32 } @_ZNK7glslang11TConstUnionmlERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %1157, ptr noundef nonnull align 8 dereferenceable(12) %1159)
          to label %1161 unwind label %.split.us

1161:                                             ; preds = %1155
  %.fca.0.extract.us = extractvalue { i64, i32 } %1160, 0
  %.fca.1.extract.us = extractvalue { i64, i32 } %1160, 1
  %1162 = mul nuw nsw i64 %indvars.iv, %1154
  %1163 = add nuw nsw i64 %1162, %indvars.iv368
  %1164 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %1163)
  store i64 %.fca.0.extract.us, ptr %1164, align 8, !tbaa !17
  %.sroa.5.0..sroa_idx.us = getelementptr inbounds i8, ptr %1164, i64 8
  store i32 %.fca.1.extract.us, ptr %.sroa.5.0..sroa_idx.us, align 8, !tbaa !24
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge340.us, label %1155, !llvm.loop !31

._crit_edge340.us:                                ; preds = %1161
  %indvars.iv.next369 = add nuw nsw i64 %indvars.iv368, 1
  %exitcond372.not = icmp eq i64 %indvars.iv.next369, %1154
  br i1 %exitcond372.not, label %.loopexit, label %.preheader333.us, !llvm.loop !32

.split.us:                                        ; preds = %1155
  %1165 = landingpad { ptr, i32 }
          cleanup
  br label %1201

1166:                                             ; preds = %1150, %1145, %1138
  %1167 = landingpad { ptr, i32 }
          cleanup
  br label %1201

.loopexit:                                        ; preds = %._crit_edge340.us, %.lr.ph343, %.lr.ph345, %1102, %.lr.ph351.split, %.lr.ph351.split.us, %.preheader334, %.preheader331, %.preheader329, %1096, %1082, %._crit_edge359, %1065, %1016, %._crit_edge355
  %1168 = invoke noundef ptr @_ZN11TIntermNodenwEm(i64 noundef 200)
          to label %1169 unwind label %1197

1169:                                             ; preds = %.loopexit
  %1170 = load ptr, ptr %1, align 8, !tbaa !5
  %1171 = getelementptr inbounds i8, ptr %1170, i64 240
  %1172 = load ptr, ptr %1171, align 8
  %1173 = invoke noundef nonnull align 8 dereferenceable(144) ptr %1172(ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %1174 unwind label %1199

1174:                                             ; preds = %1169
  invoke void @_ZN7glslang20TIntermConstantUnionC2ERKNS_16TConstUnionArrayERKNS_5TTypeE(ptr noundef nonnull align 8 dereferenceable(193) %1168, ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull align 8 dereferenceable(144) %1173)
          to label %1175 unwind label %1199

1175:                                             ; preds = %1174
  %1176 = load ptr, ptr %1168, align 8, !tbaa !5
  %1177 = getelementptr inbounds i8, ptr %1176, i64 248
  %1178 = load ptr, ptr %1177, align 8
  %1179 = invoke noundef nonnull align 8 dereferenceable(144) ptr %1178(ptr noundef nonnull align 8 dereferenceable(176) %1168)
          to label %1180 unwind label %1197

1180:                                             ; preds = %1175
  %1181 = load ptr, ptr %1179, align 8, !tbaa !5
  %1182 = getelementptr inbounds i8, ptr %1181, i64 80
  %1183 = load ptr, ptr %1182, align 8
  %1184 = invoke noundef nonnull align 8 dereferenceable(72) ptr %1183(ptr noundef nonnull align 8 dereferenceable(144) %1179)
          to label %1185 unwind label %1197

1185:                                             ; preds = %1180
  %1186 = getelementptr inbounds i8, ptr %1184, i64 8
  %1187 = load i64, ptr %1186, align 8
  %1188 = and i64 %1187, -64
  %1189 = or disjoint i64 %1188, 2
  store i64 %1189, ptr %1186, align 8
  %1190 = load ptr, ptr %1, align 8, !tbaa !5
  %1191 = load ptr, ptr %1190, align 8
  %1192 = invoke noundef nonnull align 8 dereferenceable(24) ptr %1191(ptr noundef nonnull align 8 dereferenceable(32) %1)
          to label %1193 unwind label %1197

1193:                                             ; preds = %1185
  %1194 = load ptr, ptr %1168, align 8, !tbaa !5
  %1195 = getelementptr inbounds i8, ptr %1194, i64 8
  %1196 = load ptr, ptr %1195, align 8
  invoke void %1196(ptr noundef nonnull align 8 dereferenceable(32) %1168, ptr noundef nonnull align 8 dereferenceable(24) %1192)
          to label %.critedge unwind label %1197

1197:                                             ; preds = %1193, %1185, %1180, %1175, %.loopexit
  %1198 = landingpad { ptr, i32 }
          cleanup
  br label %1201

1199:                                             ; preds = %1174, %1169
  %1200 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN11TIntermNodedlEPv(ptr noundef %1168) #9
  br label %1201

.critedge:                                        ; preds = %.thread326, %1001, %1193
  %.4 = phi ptr [ %1168, %1193 ], [ %1, %1001 ], [ %1, %.thread326 ]
  call void @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #9
  call void @_ZN7glslang16TConstUnionArrayD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %7) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #9
  br label %1203

1201:                                             ; preds = %1197, %1199, %1004, %1166, %.split.us, %1081, %1076, %1071, %986, %229
  %.pn319 = phi { ptr, i32 } [ %230, %229 ], [ %.pn313.pn.pn, %986 ], [ %1005, %1004 ], [ %.pn309, %1081 ], [ %.pn307, %1076 ], [ %.pn305, %1071 ], [ %1165, %.split.us ], [ %1167, %1166 ], [ %1198, %1197 ], [ %1200, %1199 ]
  call void @_ZNSt6vectorIN7glslang16TConstUnionArrayENS0_14pool_allocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #9
  br label %1202

1202:                                             ; preds = %1201, %213
  %.pn319.pn = phi { ptr, i32 } [ %.pn319, %1201 ], [ %214, %213 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #9
  call void @_ZN7glslang16TConstUnionArrayD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %7) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #9
  resume { ptr, i32 } %.pn319.pn

1203:                                             ; preds = %.critedge, %89, %83, %2, %87
  %.6 = phi ptr [ %88, %87 ], [ null, %2 ], [ %1, %83 ], [ %.4, %.critedge ], [ %1, %89 ]
  ret ptr %.6
}

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

declare noundef zeroext i1 @_ZNK7glslang15TIntermOperator13isConstructorEv(ptr noundef nonnull align 8 dereferenceable(184)) local_unnamed_addr #7

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

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

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

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

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

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

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @atan2(double noundef, double noundef) local_unnamed_addr #6

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @pow(double noundef, double noundef) local_unnamed_addr #6

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZSt3minIaERKT_S2_S2_(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #8

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZSt3minIhERKT_S2_S2_(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #8

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZSt3maxIaERKT_S2_S2_(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #8

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZSt3maxIhERKT_S2_S2_(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #8

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZN7glslang16TConstUnionArray3dotERKS0_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #1 align 2

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #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 nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { mustprogress nofree nounwind willreturn memory(write) "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 #7 = { "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 #8 = { 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 #9 = { nounwind }
attributes #10 = { noreturn nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"vtable pointer", !7, i64 0}
!7 = !{!"Simple C++ TBAA"}
!8 = !{!9, !9, i64 0}
!9 = !{!"any pointer", !10, i64 0}
!10 = !{!"omnipotent char", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !10, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = !{!16, !16, i64 0}
!16 = !{!"double", !10, i64 0}
!17 = !{!10, !10, i64 0}
!18 = !{!19, !19, i64 0}
!19 = !{!"short", !10, i64 0}
!20 = !{!21, !21, i64 0}
!21 = !{!"long long", !10, i64 0}
!22 = distinct !{!22, !14}
!23 = distinct !{!23, !14}
!24 = !{!25, !25, i64 0}
!25 = !{!"_ZTSN7glslang10TBasicTypeE", !10, i64 0}
!26 = !{i64 0, i64 8, !17, i64 8, i64 4, !24}
!27 = distinct !{!27, !14}
!28 = distinct !{!28, !14}
!29 = distinct !{!29, !14}
!30 = distinct !{!30, !14}
!31 = distinct !{!31, !14}
!32 = distinct !{!32, !14}


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