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

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

%"struct.std::_Rb_tree_const_iterator" = type { ptr }
%"struct.std::_Rb_tree_iterator.213" = type { ptr }
%"struct.std::pair.214" = type <{ %"struct.std::_Rb_tree_iterator.213", i8, [7 x i8] }>
%"struct.std::_Rb_tree_const_iterator.216" = type { ptr }
%"struct.std::_Rb_tree_iterator.223" = type { ptr }
%"struct.std::pair.224" = type <{ %"struct.std::_Rb_tree_iterator.223", i8, [7 x i8] }>
%"class.glslang::TParseVersions" = type { ptr, i8, i32, ptr, i32, i32, %"struct.glslang::SpvVersion", ptr, %"class.glslang::TMap", %"class.glslang::TMap.0", i32, i32, ptr }
%"struct.glslang::SpvVersion" = type <{ i32, i32, i32, i32, i8, [3 x i8] }>
%"class.glslang::TMap" = type { %"class.std::map" }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, glslang::TExtensionBehavior>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, glslang::TExtensionBehavior>>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>>, glslang::pool_allocator<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, glslang::TExtensionBehavior>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, glslang::TExtensionBehavior>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, glslang::TExtensionBehavior>>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>>, glslang::pool_allocator<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, glslang::TExtensionBehavior>>>::_Rb_tree_impl" = type { %"class.glslang::pool_allocator", [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.glslang::pool_allocator" = type { ptr }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.glslang::TMap.0" = type { %"class.std::map.1" }
%"class.std::map.1" = type { %"class.std::_Rb_tree.2" }
%"class.std::_Rb_tree.2" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, unsigned int>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, unsigned int>>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>>, glslang::pool_allocator<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, unsigned int>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, unsigned int>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, unsigned int>>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>>, glslang::pool_allocator<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, unsigned int>>>::_Rb_tree_impl" = type { %"class.glslang::pool_allocator.3", [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.glslang::pool_allocator.3" = type { ptr }
%"class.glslang::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 }>
%"struct.glslang::TSpirvDecorate" = type { %"class.glslang::TMap.201", %"class.glslang::TMap.205", %"class.glslang::TMap.201" }
%"class.glslang::TMap.205" = type { %"class.std::map.206" }
%"class.std::map.206" = type { %"class.std::_Rb_tree.207" }
%"class.std::_Rb_tree.207" = type { %"struct.std::_Rb_tree<int, std::pair<const int, glslang::TVector<const glslang::TIntermTyped *>>, std::_Select1st<std::pair<const int, glslang::TVector<const glslang::TIntermTyped *>>>, std::less<int>, glslang::pool_allocator<std::pair<const int, glslang::TVector<const glslang::TIntermTyped *>>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<int, std::pair<const int, glslang::TVector<const glslang::TIntermTyped *>>, std::_Select1st<std::pair<const int, glslang::TVector<const glslang::TIntermTyped *>>>, std::less<int>, glslang::pool_allocator<std::pair<const int, glslang::TVector<const glslang::TIntermTyped *>>>>::_Rb_tree_impl" = type { %"class.glslang::pool_allocator.208", [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.glslang::pool_allocator.208" = type { ptr }
%"class.glslang::TMap.201" = type { %"class.std::map.202" }
%"class.std::map.202" = type { %"class.std::_Rb_tree.203" }
%"class.std::_Rb_tree.203" = type { %"struct.std::_Rb_tree<int, std::pair<const int, glslang::TVector<const glslang::TIntermConstantUnion *>>, std::_Select1st<std::pair<const int, glslang::TVector<const glslang::TIntermConstantUnion *>>>, std::less<int>, glslang::pool_allocator<std::pair<const int, glslang::TVector<const glslang::TIntermConstantUnion *>>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<int, std::pair<const int, glslang::TVector<const glslang::TIntermConstantUnion *>>, std::_Select1st<std::pair<const int, glslang::TVector<const glslang::TIntermConstantUnion *>>>, std::less<int>, glslang::pool_allocator<std::pair<const int, glslang::TVector<const glslang::TIntermConstantUnion *>>>>::_Rb_tree_impl" = type { %"class.glslang::pool_allocator.204", [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.glslang::pool_allocator.204" = type { ptr }
%"struct.std::pair" = type { i32, %"class.glslang::TVector.209" }
%"class.glslang::TVector.209" = type { %"class.std::vector.210" }
%"class.std::vector.210" = type { %"struct.std::_Vector_base.211" }
%"struct.std::_Vector_base.211" = type { %"struct.std::_Vector_base<const glslang::TIntermConstantUnion *, glslang::pool_allocator<const glslang::TIntermConstantUnion *>>::_Vector_impl" }
%"struct.std::_Vector_base<const glslang::TIntermConstantUnion *, glslang::pool_allocator<const glslang::TIntermConstantUnion *>>::_Vector_impl" = type { %"class.glslang::pool_allocator.212", %"struct.std::_Vector_base<const glslang::TIntermConstantUnion *, glslang::pool_allocator<const glslang::TIntermConstantUnion *>>::_Vector_impl_data" }
%"class.glslang::pool_allocator.212" = type { ptr }
%"struct.std::_Vector_base<const glslang::TIntermConstantUnion *, glslang::pool_allocator<const glslang::TIntermConstantUnion *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.std::pair.217" = type { i32, %"class.glslang::TVector.219" }
%"class.glslang::TVector.219" = type { %"class.std::vector.220" }
%"class.std::vector.220" = type { %"struct.std::_Vector_base.221" }
%"struct.std::_Vector_base.221" = type { %"struct.std::_Vector_base<const glslang::TIntermTyped *, glslang::pool_allocator<const glslang::TIntermTyped *>>::_Vector_impl" }
%"struct.std::_Vector_base<const glslang::TIntermTyped *, glslang::pool_allocator<const glslang::TIntermTyped *>>::_Vector_impl" = type { %"class.glslang::pool_allocator.222", %"struct.std::_Vector_base<const glslang::TIntermTyped *, glslang::pool_allocator<const glslang::TIntermTyped *>>::_Vector_impl_data" }
%"class.glslang::pool_allocator.222" = type { ptr }
%"struct.std::_Vector_base<const glslang::TIntermTyped *, glslang::pool_allocator<const glslang::TIntermTyped *>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@.str.2 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.94 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.414 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.415 = external hidden unnamed_addr constant [93 x i8], align 1
@.str.416 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.417 = external hidden unnamed_addr constant [89 x i8], align 1
@.str.418 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.419 = external hidden unnamed_addr constant [103 x i8], align 1
@.str.420 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.421 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.422 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.423 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.424 = external hidden unnamed_addr constant [125 x i8], align 1
@.str.425 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.426 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.427 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.428 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.429 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.430 = external hidden unnamed_addr constant [22 x i8], align 1

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN7glslang25GetStorageQualifierStringENS_17TStorageQualifierE(i32 noundef) #2

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN7glslang13TParseContext15mergeQualifiersERKNS_10TSourceLocERNS_10TQualifierERKS4_b(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(72) %2, ptr noundef nonnull align 8 dereferenceable(72) %3, i1 noundef zeroext %4) #3 align 2 {
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca i8, align 1
  %11 = alloca i8, align 1
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %16 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %17 = alloca ptr, align 8
  %18 = alloca %"struct.std::_Rb_tree_iterator.213", align 8
  %19 = alloca %"struct.std::_Rb_tree_iterator.213", align 8
  %20 = alloca %"struct.std::pair.214", align 8
  %21 = alloca ptr, align 8
  %22 = alloca %"struct.std::_Rb_tree_const_iterator.216", align 8
  %23 = alloca %"struct.std::_Rb_tree_const_iterator.216", align 8
  %24 = alloca ptr, align 8
  %25 = alloca %"struct.std::_Rb_tree_iterator.223", align 8
  %26 = alloca %"struct.std::_Rb_tree_iterator.223", align 8
  %27 = alloca %"struct.std::pair.224", align 8
  %28 = alloca ptr, align 8
  %29 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %30 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %31 = alloca ptr, align 8
  %32 = alloca %"struct.std::_Rb_tree_iterator.213", align 8
  %33 = alloca %"struct.std::_Rb_tree_iterator.213", align 8
  %34 = alloca %"struct.std::pair.214", align 8
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store ptr %2, ptr %8, align 8, !tbaa !5
  store ptr %3, ptr %9, align 8, !tbaa !5
  %35 = zext i1 %4 to i8
  store i8 %35, ptr %10, align 1, !tbaa !9
  %36 = load ptr, ptr %6, align 8
  %37 = load ptr, ptr %9, align 8, !tbaa !5
  %38 = call noundef zeroext i1 @_ZNK7glslang10TQualifier11isAuxiliaryEv(ptr noundef nonnull align 8 dereferenceable(72) %37)
  br i1 %38, label %39, label %47

39:                                               ; preds = %5
  %40 = load ptr, ptr %8, align 8, !tbaa !5
  %41 = call noundef zeroext i1 @_ZNK7glslang10TQualifier11isAuxiliaryEv(ptr noundef nonnull align 8 dereferenceable(72) %40)
  br i1 %41, label %42, label %47

42:                                               ; preds = %39
  %43 = load ptr, ptr %7, align 8, !tbaa !5
  %44 = load ptr, ptr %36, align 8, !tbaa !11
  %45 = getelementptr inbounds ptr, ptr %44, i64 42
  %46 = load ptr, ptr %45, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %46(ptr noundef nonnull align 8 dereferenceable(1176) %36, ptr noundef nonnull align 8 dereferenceable(24) %43, ptr noundef @.str.414, ptr noundef @.str.2, ptr noundef @.str.2)
  br label %47

47:                                               ; preds = %42, %39, %5
  %48 = load ptr, ptr %9, align 8, !tbaa !5
  %49 = call noundef zeroext i1 @_ZNK7glslang10TQualifier15isInterpolationEv(ptr noundef nonnull align 8 dereferenceable(72) %48)
  br i1 %49, label %50, label %58

50:                                               ; preds = %47
  %51 = load ptr, ptr %8, align 8, !tbaa !5
  %52 = call noundef zeroext i1 @_ZNK7glslang10TQualifier15isInterpolationEv(ptr noundef nonnull align 8 dereferenceable(72) %51)
  br i1 %52, label %53, label %58

53:                                               ; preds = %50
  %54 = load ptr, ptr %7, align 8, !tbaa !5
  %55 = load ptr, ptr %36, align 8, !tbaa !11
  %56 = getelementptr inbounds ptr, ptr %55, i64 42
  %57 = load ptr, ptr %56, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %57(ptr noundef nonnull align 8 dereferenceable(1176) %36, ptr noundef nonnull align 8 dereferenceable(24) %54, ptr noundef @.str.415, ptr noundef @.str.2, ptr noundef @.str.2)
  br label %58

58:                                               ; preds = %53, %50, %47
  %59 = load i8, ptr %10, align 1, !tbaa !9, !range !13, !noundef !14
  %60 = trunc i8 %59 to i1
  br i1 %60, label %275, label %61

61:                                               ; preds = %58
  %62 = call noundef zeroext i1 @_ZNK7glslang14TParseVersions11isEsProfileEv(ptr noundef nonnull align 8 dereferenceable(192) %36)
  br i1 %62, label %67, label %63

63:                                               ; preds = %61
  %64 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %36, i32 0, i32 4
  %65 = load i32, ptr %64, align 8, !tbaa !15
  %66 = icmp slt i32 %65, 420
  br i1 %66, label %73, label %67

67:                                               ; preds = %63, %61
  %68 = call noundef zeroext i1 @_ZNK7glslang14TParseVersions11isEsProfileEv(ptr noundef nonnull align 8 dereferenceable(192) %36)
  br i1 %68, label %69, label %275

69:                                               ; preds = %67
  %70 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %36, i32 0, i32 4
  %71 = load i32, ptr %70, align 8, !tbaa !15
  %72 = icmp slt i32 %71, 310
  br i1 %72, label %73, label %275

73:                                               ; preds = %69, %63
  %74 = load ptr, ptr %36, align 8, !tbaa !11
  %75 = getelementptr inbounds ptr, ptr %74, i64 8
  %76 = load ptr, ptr %75, align 8
  %77 = call noundef zeroext i1 %76(ptr noundef nonnull align 8 dereferenceable(192) %36, ptr noundef @.str.94)
  br i1 %77, label %275, label %78

78:                                               ; preds = %73
  %79 = load ptr, ptr %9, align 8, !tbaa !5
  %80 = call noundef zeroext i1 @_ZNK7glslang10TQualifier15isNoContractionEv(ptr noundef nonnull align 8 dereferenceable(72) %79)
  br i1 %80, label %81, label %114

81:                                               ; preds = %78
  %82 = load ptr, ptr %8, align 8, !tbaa !5
  %83 = getelementptr inbounds %"class.glslang::TQualifier", ptr %82, i32 0, i32 1
  %84 = load i64, ptr %83, align 8
  %85 = lshr i64 %84, 27
  %86 = and i64 %85, 1
  %87 = trunc i64 %86 to i1
  br i1 %87, label %109, label %88

88:                                               ; preds = %81
  %89 = load ptr, ptr %8, align 8, !tbaa !5
  %90 = call noundef zeroext i1 @_ZNK7glslang10TQualifier15isInterpolationEv(ptr noundef nonnull align 8 dereferenceable(72) %89)
  br i1 %90, label %109, label %91

91:                                               ; preds = %88
  %92 = load ptr, ptr %8, align 8, !tbaa !5
  %93 = call noundef zeroext i1 @_ZNK7glslang10TQualifier11isAuxiliaryEv(ptr noundef nonnull align 8 dereferenceable(72) %92)
  br i1 %93, label %109, label %94

94:                                               ; preds = %91
  %95 = load ptr, ptr %8, align 8, !tbaa !5
  %96 = getelementptr inbounds %"class.glslang::TQualifier", ptr %95, i32 0, i32 1
  %97 = load i64, ptr %96, align 8
  %98 = and i64 %97, 63
  %99 = trunc i64 %98 to i32
  %100 = icmp ne i32 %99, 0
  br i1 %100, label %109, label %101

101:                                              ; preds = %94
  %102 = load ptr, ptr %8, align 8, !tbaa !5
  %103 = getelementptr inbounds %"class.glslang::TQualifier", ptr %102, i32 0, i32 1
  %104 = load i64, ptr %103, align 8
  %105 = lshr i64 %104, 24
  %106 = and i64 %105, 7
  %107 = trunc i64 %106 to i32
  %108 = icmp ne i32 %107, 0
  br i1 %108, label %109, label %114

109:                                              ; preds = %101, %94, %91, %88, %81
  %110 = load ptr, ptr %7, align 8, !tbaa !5
  %111 = load ptr, ptr %36, align 8, !tbaa !11
  %112 = getelementptr inbounds ptr, ptr %111, i64 42
  %113 = load ptr, ptr %112, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %113(ptr noundef nonnull align 8 dereferenceable(1176) %36, ptr noundef nonnull align 8 dereferenceable(24) %110, ptr noundef @.str.416, ptr noundef @.str.2, ptr noundef @.str.2)
  br label %114

114:                                              ; preds = %109, %101, %78
  %115 = load ptr, ptr %9, align 8, !tbaa !5
  %116 = getelementptr inbounds %"class.glslang::TQualifier", ptr %115, i32 0, i32 1
  %117 = load i64, ptr %116, align 8
  %118 = lshr i64 %117, 27
  %119 = and i64 %118, 1
  %120 = trunc i64 %119 to i1
  br i1 %120, label %121, label %147

121:                                              ; preds = %114
  %122 = load ptr, ptr %8, align 8, !tbaa !5
  %123 = call noundef zeroext i1 @_ZNK7glslang10TQualifier15isInterpolationEv(ptr noundef nonnull align 8 dereferenceable(72) %122)
  br i1 %123, label %142, label %124

124:                                              ; preds = %121
  %125 = load ptr, ptr %8, align 8, !tbaa !5
  %126 = call noundef zeroext i1 @_ZNK7glslang10TQualifier11isAuxiliaryEv(ptr noundef nonnull align 8 dereferenceable(72) %125)
  br i1 %126, label %142, label %127

127:                                              ; preds = %124
  %128 = load ptr, ptr %8, align 8, !tbaa !5
  %129 = getelementptr inbounds %"class.glslang::TQualifier", ptr %128, i32 0, i32 1
  %130 = load i64, ptr %129, align 8
  %131 = and i64 %130, 63
  %132 = trunc i64 %131 to i32
  %133 = icmp ne i32 %132, 0
  br i1 %133, label %142, label %134

134:                                              ; preds = %127
  %135 = load ptr, ptr %8, align 8, !tbaa !5
  %136 = getelementptr inbounds %"class.glslang::TQualifier", ptr %135, i32 0, i32 1
  %137 = load i64, ptr %136, align 8
  %138 = lshr i64 %137, 24
  %139 = and i64 %138, 7
  %140 = trunc i64 %139 to i32
  %141 = icmp ne i32 %140, 0
  br i1 %141, label %142, label %147

142:                                              ; preds = %134, %127, %124, %121
  %143 = load ptr, ptr %7, align 8, !tbaa !5
  %144 = load ptr, ptr %36, align 8, !tbaa !11
  %145 = getelementptr inbounds ptr, ptr %144, i64 42
  %146 = load ptr, ptr %145, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %146(ptr noundef nonnull align 8 dereferenceable(1176) %36, ptr noundef nonnull align 8 dereferenceable(24) %143, ptr noundef @.str.417, ptr noundef @.str.2, ptr noundef @.str.2)
  br label %219

147:                                              ; preds = %134, %114
  %148 = load ptr, ptr %9, align 8, !tbaa !5
  %149 = call noundef zeroext i1 @_ZNK7glslang10TQualifier15isInterpolationEv(ptr noundef nonnull align 8 dereferenceable(72) %148)
  br i1 %149, label %150, label %173

150:                                              ; preds = %147
  %151 = load ptr, ptr %8, align 8, !tbaa !5
  %152 = call noundef zeroext i1 @_ZNK7glslang10TQualifier11isAuxiliaryEv(ptr noundef nonnull align 8 dereferenceable(72) %151)
  br i1 %152, label %168, label %153

153:                                              ; preds = %150
  %154 = load ptr, ptr %8, align 8, !tbaa !5
  %155 = getelementptr inbounds %"class.glslang::TQualifier", ptr %154, i32 0, i32 1
  %156 = load i64, ptr %155, align 8
  %157 = and i64 %156, 63
  %158 = trunc i64 %157 to i32
  %159 = icmp ne i32 %158, 0
  br i1 %159, label %168, label %160

160:                                              ; preds = %153
  %161 = load ptr, ptr %8, align 8, !tbaa !5
  %162 = getelementptr inbounds %"class.glslang::TQualifier", ptr %161, i32 0, i32 1
  %163 = load i64, ptr %162, align 8
  %164 = lshr i64 %163, 24
  %165 = and i64 %164, 7
  %166 = trunc i64 %165 to i32
  %167 = icmp ne i32 %166, 0
  br i1 %167, label %168, label %173

168:                                              ; preds = %160, %153, %150
  %169 = load ptr, ptr %7, align 8, !tbaa !5
  %170 = load ptr, ptr %36, align 8, !tbaa !11
  %171 = getelementptr inbounds ptr, ptr %170, i64 42
  %172 = load ptr, ptr %171, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %172(ptr noundef nonnull align 8 dereferenceable(1176) %36, ptr noundef nonnull align 8 dereferenceable(24) %169, ptr noundef @.str.418, ptr noundef @.str.2, ptr noundef @.str.2)
  br label %218

173:                                              ; preds = %160, %147
  %174 = load ptr, ptr %9, align 8, !tbaa !5
  %175 = call noundef zeroext i1 @_ZNK7glslang10TQualifier11isAuxiliaryEv(ptr noundef nonnull align 8 dereferenceable(72) %174)
  br i1 %175, label %176, label %196

176:                                              ; preds = %173
  %177 = load ptr, ptr %8, align 8, !tbaa !5
  %178 = getelementptr inbounds %"class.glslang::TQualifier", ptr %177, i32 0, i32 1
  %179 = load i64, ptr %178, align 8
  %180 = and i64 %179, 63
  %181 = trunc i64 %180 to i32
  %182 = icmp ne i32 %181, 0
  br i1 %182, label %191, label %183

183:                                              ; preds = %176
  %184 = load ptr, ptr %8, align 8, !tbaa !5
  %185 = getelementptr inbounds %"class.glslang::TQualifier", ptr %184, i32 0, i32 1
  %186 = load i64, ptr %185, align 8
  %187 = lshr i64 %186, 24
  %188 = and i64 %187, 7
  %189 = trunc i64 %188 to i32
  %190 = icmp ne i32 %189, 0
  br i1 %190, label %191, label %196

191:                                              ; preds = %183, %176
  %192 = load ptr, ptr %7, align 8, !tbaa !5
  %193 = load ptr, ptr %36, align 8, !tbaa !11
  %194 = getelementptr inbounds ptr, ptr %193, i64 42
  %195 = load ptr, ptr %194, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %195(ptr noundef nonnull align 8 dereferenceable(1176) %36, ptr noundef nonnull align 8 dereferenceable(24) %192, ptr noundef @.str.419, ptr noundef @.str.2, ptr noundef @.str.2)
  br label %217

196:                                              ; preds = %183, %173
  %197 = load ptr, ptr %9, align 8, !tbaa !5
  %198 = getelementptr inbounds %"class.glslang::TQualifier", ptr %197, i32 0, i32 1
  %199 = load i64, ptr %198, align 8
  %200 = and i64 %199, 63
  %201 = trunc i64 %200 to i32
  %202 = icmp ne i32 %201, 0
  br i1 %202, label %203, label %216

203:                                              ; preds = %196
  %204 = load ptr, ptr %8, align 8, !tbaa !5
  %205 = getelementptr inbounds %"class.glslang::TQualifier", ptr %204, i32 0, i32 1
  %206 = load i64, ptr %205, align 8
  %207 = lshr i64 %206, 24
  %208 = and i64 %207, 7
  %209 = trunc i64 %208 to i32
  %210 = icmp ne i32 %209, 0
  br i1 %210, label %211, label %216

211:                                              ; preds = %203
  %212 = load ptr, ptr %7, align 8, !tbaa !5
  %213 = load ptr, ptr %36, align 8, !tbaa !11
  %214 = getelementptr inbounds ptr, ptr %213, i64 42
  %215 = load ptr, ptr %214, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %215(ptr noundef nonnull align 8 dereferenceable(1176) %36, ptr noundef nonnull align 8 dereferenceable(24) %212, ptr noundef @.str.420, ptr noundef @.str.2, ptr noundef @.str.2)
  br label %216

216:                                              ; preds = %211, %203, %196
  br label %217

217:                                              ; preds = %216, %191
  br label %218

218:                                              ; preds = %217, %168
  br label %219

219:                                              ; preds = %218, %142
  %220 = load ptr, ptr %9, align 8, !tbaa !5
  %221 = call noundef zeroext i1 @_ZNK7glslang10TQualifier15isNoContractionEv(ptr noundef nonnull align 8 dereferenceable(72) %220)
  br i1 %221, label %222, label %248

222:                                              ; preds = %219
  %223 = load ptr, ptr %8, align 8, !tbaa !5
  %224 = getelementptr inbounds %"class.glslang::TQualifier", ptr %223, i32 0, i32 1
  %225 = load i64, ptr %224, align 8
  %226 = and i64 %225, 63
  %227 = trunc i64 %226 to i32
  %228 = icmp eq i32 %227, 2
  br i1 %228, label %243, label %229

229:                                              ; preds = %222
  %230 = load ptr, ptr %8, align 8, !tbaa !5
  %231 = getelementptr inbounds %"class.glslang::TQualifier", ptr %230, i32 0, i32 1
  %232 = load i64, ptr %231, align 8
  %233 = and i64 %232, 63
  %234 = trunc i64 %233 to i32
  %235 = icmp eq i32 %234, 14
  br i1 %235, label %243, label %236

236:                                              ; preds = %229
  %237 = load ptr, ptr %8, align 8, !tbaa !5
  %238 = getelementptr inbounds %"class.glslang::TQualifier", ptr %237, i32 0, i32 1
  %239 = load i64, ptr %238, align 8
  %240 = and i64 %239, 63
  %241 = trunc i64 %240 to i32
  %242 = icmp eq i32 %241, 15
  br i1 %242, label %243, label %248

243:                                              ; preds = %236, %229, %222
  %244 = load ptr, ptr %7, align 8, !tbaa !5
  %245 = load ptr, ptr %36, align 8, !tbaa !11
  %246 = getelementptr inbounds ptr, ptr %245, i64 42
  %247 = load ptr, ptr %246, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %247(ptr noundef nonnull align 8 dereferenceable(1176) %36, ptr noundef nonnull align 8 dereferenceable(24) %244, ptr noundef @.str.416, ptr noundef @.str.2, ptr noundef @.str.2)
  br label %248

248:                                              ; preds = %243, %236, %219
  %249 = load ptr, ptr %9, align 8, !tbaa !5
  %250 = getelementptr inbounds %"class.glslang::TQualifier", ptr %249, i32 0, i32 1
  %251 = load i64, ptr %250, align 8
  %252 = and i64 %251, 63
  %253 = trunc i64 %252 to i32
  %254 = icmp eq i32 %253, 2
  br i1 %254, label %255, label %274

255:                                              ; preds = %248
  %256 = load ptr, ptr %8, align 8, !tbaa !5
  %257 = getelementptr inbounds %"class.glslang::TQualifier", ptr %256, i32 0, i32 1
  %258 = load i64, ptr %257, align 8
  %259 = and i64 %258, 63
  %260 = trunc i64 %259 to i32
  %261 = icmp eq i32 %260, 14
  br i1 %261, label %269, label %262

262:                                              ; preds = %255
  %263 = load ptr, ptr %8, align 8, !tbaa !5
  %264 = getelementptr inbounds %"class.glslang::TQualifier", ptr %263, i32 0, i32 1
  %265 = load i64, ptr %264, align 8
  %266 = and i64 %265, 63
  %267 = trunc i64 %266 to i32
  %268 = icmp eq i32 %267, 15
  br i1 %268, label %269, label %274

269:                                              ; preds = %262, %255
  %270 = load ptr, ptr %7, align 8, !tbaa !5
  %271 = load ptr, ptr %36, align 8, !tbaa !11
  %272 = getelementptr inbounds ptr, ptr %271, i64 42
  %273 = load ptr, ptr %272, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %273(ptr noundef nonnull align 8 dereferenceable(1176) %36, ptr noundef nonnull align 8 dereferenceable(24) %270, ptr noundef @.str.421, ptr noundef @.str.2, ptr noundef @.str.2)
  br label %274

274:                                              ; preds = %269, %262, %248
  br label %275

275:                                              ; preds = %274, %73, %69, %67, %58
  %276 = load ptr, ptr %8, align 8, !tbaa !5
  %277 = getelementptr inbounds %"class.glslang::TQualifier", ptr %276, i32 0, i32 1
  %278 = load i64, ptr %277, align 8
  %279 = and i64 %278, 63
  %280 = trunc i64 %279 to i32
  %281 = icmp eq i32 %280, 0
  br i1 %281, label %289, label %282

282:                                              ; preds = %275
  %283 = load ptr, ptr %8, align 8, !tbaa !5
  %284 = getelementptr inbounds %"class.glslang::TQualifier", ptr %283, i32 0, i32 1
  %285 = load i64, ptr %284, align 8
  %286 = and i64 %285, 63
  %287 = trunc i64 %286 to i32
  %288 = icmp eq i32 %287, 1
  br i1 %288, label %289, label %302

289:                                              ; preds = %282, %275
  %290 = load ptr, ptr %9, align 8, !tbaa !5
  %291 = getelementptr inbounds %"class.glslang::TQualifier", ptr %290, i32 0, i32 1
  %292 = load i64, ptr %291, align 8
  %293 = and i64 %292, 63
  %294 = trunc i64 %293 to i32
  %295 = load ptr, ptr %8, align 8, !tbaa !5
  %296 = getelementptr inbounds %"class.glslang::TQualifier", ptr %295, i32 0, i32 1
  %297 = zext i32 %294 to i64
  %298 = load i64, ptr %296, align 8
  %299 = and i64 %297, 63
  %300 = and i64 %298, -64
  %301 = or i64 %300, %299
  store i64 %301, ptr %296, align 8
  br label %398

302:                                              ; preds = %282
  %303 = load ptr, ptr %8, align 8, !tbaa !5
  %304 = getelementptr inbounds %"class.glslang::TQualifier", ptr %303, i32 0, i32 1
  %305 = load i64, ptr %304, align 8
  %306 = and i64 %305, 63
  %307 = trunc i64 %306 to i32
  %308 = icmp eq i32 %307, 14
  br i1 %308, label %309, label %316

309:                                              ; preds = %302
  %310 = load ptr, ptr %9, align 8, !tbaa !5
  %311 = getelementptr inbounds %"class.glslang::TQualifier", ptr %310, i32 0, i32 1
  %312 = load i64, ptr %311, align 8
  %313 = and i64 %312, 63
  %314 = trunc i64 %313 to i32
  %315 = icmp eq i32 %314, 15
  br i1 %315, label %330, label %316

316:                                              ; preds = %309, %302
  %317 = load ptr, ptr %8, align 8, !tbaa !5
  %318 = getelementptr inbounds %"class.glslang::TQualifier", ptr %317, i32 0, i32 1
  %319 = load i64, ptr %318, align 8
  %320 = and i64 %319, 63
  %321 = trunc i64 %320 to i32
  %322 = icmp eq i32 %321, 15
  br i1 %322, label %323, label %336

323:                                              ; preds = %316
  %324 = load ptr, ptr %9, align 8, !tbaa !5
  %325 = getelementptr inbounds %"class.glslang::TQualifier", ptr %324, i32 0, i32 1
  %326 = load i64, ptr %325, align 8
  %327 = and i64 %326, 63
  %328 = trunc i64 %327 to i32
  %329 = icmp eq i32 %328, 14
  br i1 %329, label %330, label %336

330:                                              ; preds = %323, %309
  %331 = load ptr, ptr %8, align 8, !tbaa !5
  %332 = getelementptr inbounds %"class.glslang::TQualifier", ptr %331, i32 0, i32 1
  %333 = load i64, ptr %332, align 8
  %334 = and i64 %333, -64
  %335 = or i64 %334, 16
  store i64 %335, ptr %332, align 8
  br label %397

336:                                              ; preds = %323, %316
  %337 = load ptr, ptr %8, align 8, !tbaa !5
  %338 = getelementptr inbounds %"class.glslang::TQualifier", ptr %337, i32 0, i32 1
  %339 = load i64, ptr %338, align 8
  %340 = and i64 %339, 63
  %341 = trunc i64 %340 to i32
  %342 = icmp eq i32 %341, 14
  br i1 %342, label %343, label %350

343:                                              ; preds = %336
  %344 = load ptr, ptr %9, align 8, !tbaa !5
  %345 = getelementptr inbounds %"class.glslang::TQualifier", ptr %344, i32 0, i32 1
  %346 = load i64, ptr %345, align 8
  %347 = and i64 %346, 63
  %348 = trunc i64 %347 to i32
  %349 = icmp eq i32 %348, 2
  br i1 %349, label %364, label %350

350:                                              ; preds = %343, %336
  %351 = load ptr, ptr %8, align 8, !tbaa !5
  %352 = getelementptr inbounds %"class.glslang::TQualifier", ptr %351, i32 0, i32 1
  %353 = load i64, ptr %352, align 8
  %354 = and i64 %353, 63
  %355 = trunc i64 %354 to i32
  %356 = icmp eq i32 %355, 2
  br i1 %356, label %357, label %370

357:                                              ; preds = %350
  %358 = load ptr, ptr %9, align 8, !tbaa !5
  %359 = getelementptr inbounds %"class.glslang::TQualifier", ptr %358, i32 0, i32 1
  %360 = load i64, ptr %359, align 8
  %361 = and i64 %360, 63
  %362 = trunc i64 %361 to i32
  %363 = icmp eq i32 %362, 14
  br i1 %363, label %364, label %370

364:                                              ; preds = %357, %343
  %365 = load ptr, ptr %8, align 8, !tbaa !5
  %366 = getelementptr inbounds %"class.glslang::TQualifier", ptr %365, i32 0, i32 1
  %367 = load i64, ptr %366, align 8
  %368 = and i64 %367, -64
  %369 = or i64 %368, 17
  store i64 %369, ptr %366, align 8
  br label %396

370:                                              ; preds = %357, %350
  %371 = load ptr, ptr %9, align 8, !tbaa !5
  %372 = getelementptr inbounds %"class.glslang::TQualifier", ptr %371, i32 0, i32 1
  %373 = load i64, ptr %372, align 8
  %374 = and i64 %373, 63
  %375 = trunc i64 %374 to i32
  %376 = icmp ne i32 %375, 0
  br i1 %376, label %377, label %395

377:                                              ; preds = %370
  %378 = load ptr, ptr %9, align 8, !tbaa !5
  %379 = getelementptr inbounds %"class.glslang::TQualifier", ptr %378, i32 0, i32 1
  %380 = load i64, ptr %379, align 8
  %381 = and i64 %380, 63
  %382 = trunc i64 %381 to i32
  %383 = icmp ne i32 %382, 1
  br i1 %383, label %384, label %395

384:                                              ; preds = %377
  %385 = load ptr, ptr %7, align 8, !tbaa !5
  %386 = load ptr, ptr %9, align 8, !tbaa !5
  %387 = getelementptr inbounds %"class.glslang::TQualifier", ptr %386, i32 0, i32 1
  %388 = load i64, ptr %387, align 8
  %389 = and i64 %388, 63
  %390 = trunc i64 %389 to i32
  %391 = call noundef ptr @_ZN7glslang25GetStorageQualifierStringENS_17TStorageQualifierE(i32 noundef %390)
  %392 = load ptr, ptr %36, align 8, !tbaa !11
  %393 = getelementptr inbounds ptr, ptr %392, i64 42
  %394 = load ptr, ptr %393, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %394(ptr noundef nonnull align 8 dereferenceable(1176) %36, ptr noundef nonnull align 8 dereferenceable(24) %385, ptr noundef @.str.422, ptr noundef %391, ptr noundef @.str.2)
  br label %395

395:                                              ; preds = %384, %377, %370
  br label %396

396:                                              ; preds = %395, %364
  br label %397

397:                                              ; preds = %396, %330
  br label %398

398:                                              ; preds = %397, %289
  %399 = load i8, ptr %10, align 1, !tbaa !9, !range !13, !noundef !14
  %400 = trunc i8 %399 to i1
  br i1 %400, label %429, label %401

401:                                              ; preds = %398
  %402 = load ptr, ptr %9, align 8, !tbaa !5
  %403 = getelementptr inbounds %"class.glslang::TQualifier", ptr %402, i32 0, i32 1
  %404 = load i64, ptr %403, align 8
  %405 = lshr i64 %404, 24
  %406 = and i64 %405, 7
  %407 = trunc i64 %406 to i32
  %408 = icmp ne i32 %407, 0
  br i1 %408, label %409, label %429

409:                                              ; preds = %401
  %410 = load ptr, ptr %8, align 8, !tbaa !5
  %411 = getelementptr inbounds %"class.glslang::TQualifier", ptr %410, i32 0, i32 1
  %412 = load i64, ptr %411, align 8
  %413 = lshr i64 %412, 24
  %414 = and i64 %413, 7
  %415 = trunc i64 %414 to i32
  %416 = icmp ne i32 %415, 0
  br i1 %416, label %417, label %429

417:                                              ; preds = %409
  %418 = load ptr, ptr %7, align 8, !tbaa !5
  %419 = load ptr, ptr %9, align 8, !tbaa !5
  %420 = getelementptr inbounds %"class.glslang::TQualifier", ptr %419, i32 0, i32 1
  %421 = load i64, ptr %420, align 8
  %422 = lshr i64 %421, 24
  %423 = and i64 %422, 7
  %424 = trunc i64 %423 to i32
  %425 = call noundef ptr @_ZN7glslang27GetPrecisionQualifierStringENS_19TPrecisionQualifierE(i32 noundef %424)
  %426 = load ptr, ptr %36, align 8, !tbaa !11
  %427 = getelementptr inbounds ptr, ptr %426, i64 42
  %428 = load ptr, ptr %427, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %428(ptr noundef nonnull align 8 dereferenceable(1176) %36, ptr noundef nonnull align 8 dereferenceable(24) %418, ptr noundef @.str.423, ptr noundef %425, ptr noundef @.str.2)
  br label %429

429:                                              ; preds = %417, %409, %401, %398
  %430 = load ptr, ptr %8, align 8, !tbaa !5
  %431 = getelementptr inbounds %"class.glslang::TQualifier", ptr %430, i32 0, i32 1
  %432 = load i64, ptr %431, align 8
  %433 = lshr i64 %432, 24
  %434 = and i64 %433, 7
  %435 = trunc i64 %434 to i32
  %436 = icmp eq i32 %435, 0
  br i1 %436, label %448, label %437

437:                                              ; preds = %429
  %438 = load i8, ptr %10, align 1, !tbaa !9, !range !13, !noundef !14
  %439 = trunc i8 %438 to i1
  br i1 %439, label %440, label %463

440:                                              ; preds = %437
  %441 = load ptr, ptr %9, align 8, !tbaa !5
  %442 = getelementptr inbounds %"class.glslang::TQualifier", ptr %441, i32 0, i32 1
  %443 = load i64, ptr %442, align 8
  %444 = lshr i64 %443, 24
  %445 = and i64 %444, 7
  %446 = trunc i64 %445 to i32
  %447 = icmp ne i32 %446, 0
  br i1 %447, label %448, label %463

448:                                              ; preds = %440, %429
  %449 = load ptr, ptr %9, align 8, !tbaa !5
  %450 = getelementptr inbounds %"class.glslang::TQualifier", ptr %449, i32 0, i32 1
  %451 = load i64, ptr %450, align 8
  %452 = lshr i64 %451, 24
  %453 = and i64 %452, 7
  %454 = trunc i64 %453 to i32
  %455 = load ptr, ptr %8, align 8, !tbaa !5
  %456 = getelementptr inbounds %"class.glslang::TQualifier", ptr %455, i32 0, i32 1
  %457 = zext i32 %454 to i64
  %458 = load i64, ptr %456, align 8
  %459 = and i64 %457, 7
  %460 = shl i64 %459, 24
  %461 = and i64 %458, -117440513
  %462 = or i64 %461, %460
  store i64 %462, ptr %456, align 8
  br label %463

463:                                              ; preds = %448, %440, %437
  %464 = load i8, ptr %10, align 1, !tbaa !9, !range !13, !noundef !14
  %465 = trunc i8 %464 to i1
  br i1 %465, label %730, label %466

466:                                              ; preds = %463
  %467 = load ptr, ptr %9, align 8, !tbaa !5
  %468 = getelementptr inbounds %"class.glslang::TQualifier", ptr %467, i32 0, i32 1
  %469 = load i64, ptr %468, align 8
  %470 = lshr i64 %469, 48
  %471 = and i64 %470, 1
  %472 = trunc i64 %471 to i1
  br i1 %472, label %473, label %508

473:                                              ; preds = %466
  %474 = load ptr, ptr %8, align 8, !tbaa !5
  %475 = getelementptr inbounds %"class.glslang::TQualifier", ptr %474, i32 0, i32 1
  %476 = load i64, ptr %475, align 8
  %477 = lshr i64 %476, 50
  %478 = and i64 %477, 1
  %479 = trunc i64 %478 to i1
  br i1 %479, label %718, label %480

480:                                              ; preds = %473
  %481 = load ptr, ptr %8, align 8, !tbaa !5
  %482 = getelementptr inbounds %"class.glslang::TQualifier", ptr %481, i32 0, i32 1
  %483 = load i64, ptr %482, align 8
  %484 = lshr i64 %483, 51
  %485 = and i64 %484, 1
  %486 = trunc i64 %485 to i1
  br i1 %486, label %718, label %487

487:                                              ; preds = %480
  %488 = load ptr, ptr %8, align 8, !tbaa !5
  %489 = getelementptr inbounds %"class.glslang::TQualifier", ptr %488, i32 0, i32 1
  %490 = load i64, ptr %489, align 8
  %491 = lshr i64 %490, 52
  %492 = and i64 %491, 1
  %493 = trunc i64 %492 to i1
  br i1 %493, label %718, label %494

494:                                              ; preds = %487
  %495 = load ptr, ptr %8, align 8, !tbaa !5
  %496 = getelementptr inbounds %"class.glslang::TQualifier", ptr %495, i32 0, i32 1
  %497 = load i64, ptr %496, align 8
  %498 = lshr i64 %497, 53
  %499 = and i64 %498, 1
  %500 = trunc i64 %499 to i1
  br i1 %500, label %718, label %501

501:                                              ; preds = %494
  %502 = load ptr, ptr %8, align 8, !tbaa !5
  %503 = getelementptr inbounds %"class.glslang::TQualifier", ptr %502, i32 0, i32 1
  %504 = load i64, ptr %503, align 8
  %505 = lshr i64 %504, 54
  %506 = and i64 %505, 1
  %507 = trunc i64 %506 to i1
  br i1 %507, label %718, label %508

508:                                              ; preds = %501, %466
  %509 = load ptr, ptr %9, align 8, !tbaa !5
  %510 = getelementptr inbounds %"class.glslang::TQualifier", ptr %509, i32 0, i32 1
  %511 = load i64, ptr %510, align 8
  %512 = lshr i64 %511, 50
  %513 = and i64 %512, 1
  %514 = trunc i64 %513 to i1
  br i1 %514, label %515, label %550

515:                                              ; preds = %508
  %516 = load ptr, ptr %8, align 8, !tbaa !5
  %517 = getelementptr inbounds %"class.glslang::TQualifier", ptr %516, i32 0, i32 1
  %518 = load i64, ptr %517, align 8
  %519 = lshr i64 %518, 48
  %520 = and i64 %519, 1
  %521 = trunc i64 %520 to i1
  br i1 %521, label %718, label %522

522:                                              ; preds = %515
  %523 = load ptr, ptr %8, align 8, !tbaa !5
  %524 = getelementptr inbounds %"class.glslang::TQualifier", ptr %523, i32 0, i32 1
  %525 = load i64, ptr %524, align 8
  %526 = lshr i64 %525, 51
  %527 = and i64 %526, 1
  %528 = trunc i64 %527 to i1
  br i1 %528, label %718, label %529

529:                                              ; preds = %522
  %530 = load ptr, ptr %8, align 8, !tbaa !5
  %531 = getelementptr inbounds %"class.glslang::TQualifier", ptr %530, i32 0, i32 1
  %532 = load i64, ptr %531, align 8
  %533 = lshr i64 %532, 52
  %534 = and i64 %533, 1
  %535 = trunc i64 %534 to i1
  br i1 %535, label %718, label %536

536:                                              ; preds = %529
  %537 = load ptr, ptr %8, align 8, !tbaa !5
  %538 = getelementptr inbounds %"class.glslang::TQualifier", ptr %537, i32 0, i32 1
  %539 = load i64, ptr %538, align 8
  %540 = lshr i64 %539, 53
  %541 = and i64 %540, 1
  %542 = trunc i64 %541 to i1
  br i1 %542, label %718, label %543

543:                                              ; preds = %536
  %544 = load ptr, ptr %8, align 8, !tbaa !5
  %545 = getelementptr inbounds %"class.glslang::TQualifier", ptr %544, i32 0, i32 1
  %546 = load i64, ptr %545, align 8
  %547 = lshr i64 %546, 54
  %548 = and i64 %547, 1
  %549 = trunc i64 %548 to i1
  br i1 %549, label %718, label %550

550:                                              ; preds = %543, %508
  %551 = load ptr, ptr %9, align 8, !tbaa !5
  %552 = getelementptr inbounds %"class.glslang::TQualifier", ptr %551, i32 0, i32 1
  %553 = load i64, ptr %552, align 8
  %554 = lshr i64 %553, 51
  %555 = and i64 %554, 1
  %556 = trunc i64 %555 to i1
  br i1 %556, label %557, label %592

557:                                              ; preds = %550
  %558 = load ptr, ptr %8, align 8, !tbaa !5
  %559 = getelementptr inbounds %"class.glslang::TQualifier", ptr %558, i32 0, i32 1
  %560 = load i64, ptr %559, align 8
  %561 = lshr i64 %560, 48
  %562 = and i64 %561, 1
  %563 = trunc i64 %562 to i1
  br i1 %563, label %718, label %564

564:                                              ; preds = %557
  %565 = load ptr, ptr %8, align 8, !tbaa !5
  %566 = getelementptr inbounds %"class.glslang::TQualifier", ptr %565, i32 0, i32 1
  %567 = load i64, ptr %566, align 8
  %568 = lshr i64 %567, 50
  %569 = and i64 %568, 1
  %570 = trunc i64 %569 to i1
  br i1 %570, label %718, label %571

571:                                              ; preds = %564
  %572 = load ptr, ptr %8, align 8, !tbaa !5
  %573 = getelementptr inbounds %"class.glslang::TQualifier", ptr %572, i32 0, i32 1
  %574 = load i64, ptr %573, align 8
  %575 = lshr i64 %574, 52
  %576 = and i64 %575, 1
  %577 = trunc i64 %576 to i1
  br i1 %577, label %718, label %578

578:                                              ; preds = %571
  %579 = load ptr, ptr %8, align 8, !tbaa !5
  %580 = getelementptr inbounds %"class.glslang::TQualifier", ptr %579, i32 0, i32 1
  %581 = load i64, ptr %580, align 8
  %582 = lshr i64 %581, 53
  %583 = and i64 %582, 1
  %584 = trunc i64 %583 to i1
  br i1 %584, label %718, label %585

585:                                              ; preds = %578
  %586 = load ptr, ptr %8, align 8, !tbaa !5
  %587 = getelementptr inbounds %"class.glslang::TQualifier", ptr %586, i32 0, i32 1
  %588 = load i64, ptr %587, align 8
  %589 = lshr i64 %588, 54
  %590 = and i64 %589, 1
  %591 = trunc i64 %590 to i1
  br i1 %591, label %718, label %592

592:                                              ; preds = %585, %550
  %593 = load ptr, ptr %9, align 8, !tbaa !5
  %594 = getelementptr inbounds %"class.glslang::TQualifier", ptr %593, i32 0, i32 1
  %595 = load i64, ptr %594, align 8
  %596 = lshr i64 %595, 52
  %597 = and i64 %596, 1
  %598 = trunc i64 %597 to i1
  br i1 %598, label %599, label %634

599:                                              ; preds = %592
  %600 = load ptr, ptr %8, align 8, !tbaa !5
  %601 = getelementptr inbounds %"class.glslang::TQualifier", ptr %600, i32 0, i32 1
  %602 = load i64, ptr %601, align 8
  %603 = lshr i64 %602, 48
  %604 = and i64 %603, 1
  %605 = trunc i64 %604 to i1
  br i1 %605, label %718, label %606

606:                                              ; preds = %599
  %607 = load ptr, ptr %8, align 8, !tbaa !5
  %608 = getelementptr inbounds %"class.glslang::TQualifier", ptr %607, i32 0, i32 1
  %609 = load i64, ptr %608, align 8
  %610 = lshr i64 %609, 50
  %611 = and i64 %610, 1
  %612 = trunc i64 %611 to i1
  br i1 %612, label %718, label %613

613:                                              ; preds = %606
  %614 = load ptr, ptr %8, align 8, !tbaa !5
  %615 = getelementptr inbounds %"class.glslang::TQualifier", ptr %614, i32 0, i32 1
  %616 = load i64, ptr %615, align 8
  %617 = lshr i64 %616, 51
  %618 = and i64 %617, 1
  %619 = trunc i64 %618 to i1
  br i1 %619, label %718, label %620

620:                                              ; preds = %613
  %621 = load ptr, ptr %8, align 8, !tbaa !5
  %622 = getelementptr inbounds %"class.glslang::TQualifier", ptr %621, i32 0, i32 1
  %623 = load i64, ptr %622, align 8
  %624 = lshr i64 %623, 53
  %625 = and i64 %624, 1
  %626 = trunc i64 %625 to i1
  br i1 %626, label %718, label %627

627:                                              ; preds = %620
  %628 = load ptr, ptr %8, align 8, !tbaa !5
  %629 = getelementptr inbounds %"class.glslang::TQualifier", ptr %628, i32 0, i32 1
  %630 = load i64, ptr %629, align 8
  %631 = lshr i64 %630, 54
  %632 = and i64 %631, 1
  %633 = trunc i64 %632 to i1
  br i1 %633, label %718, label %634

634:                                              ; preds = %627, %592
  %635 = load ptr, ptr %9, align 8, !tbaa !5
  %636 = getelementptr inbounds %"class.glslang::TQualifier", ptr %635, i32 0, i32 1
  %637 = load i64, ptr %636, align 8
  %638 = lshr i64 %637, 53
  %639 = and i64 %638, 1
  %640 = trunc i64 %639 to i1
  br i1 %640, label %641, label %676

641:                                              ; preds = %634
  %642 = load ptr, ptr %8, align 8, !tbaa !5
  %643 = getelementptr inbounds %"class.glslang::TQualifier", ptr %642, i32 0, i32 1
  %644 = load i64, ptr %643, align 8
  %645 = lshr i64 %644, 48
  %646 = and i64 %645, 1
  %647 = trunc i64 %646 to i1
  br i1 %647, label %718, label %648

648:                                              ; preds = %641
  %649 = load ptr, ptr %8, align 8, !tbaa !5
  %650 = getelementptr inbounds %"class.glslang::TQualifier", ptr %649, i32 0, i32 1
  %651 = load i64, ptr %650, align 8
  %652 = lshr i64 %651, 50
  %653 = and i64 %652, 1
  %654 = trunc i64 %653 to i1
  br i1 %654, label %718, label %655

655:                                              ; preds = %648
  %656 = load ptr, ptr %8, align 8, !tbaa !5
  %657 = getelementptr inbounds %"class.glslang::TQualifier", ptr %656, i32 0, i32 1
  %658 = load i64, ptr %657, align 8
  %659 = lshr i64 %658, 51
  %660 = and i64 %659, 1
  %661 = trunc i64 %660 to i1
  br i1 %661, label %718, label %662

662:                                              ; preds = %655
  %663 = load ptr, ptr %8, align 8, !tbaa !5
  %664 = getelementptr inbounds %"class.glslang::TQualifier", ptr %663, i32 0, i32 1
  %665 = load i64, ptr %664, align 8
  %666 = lshr i64 %665, 52
  %667 = and i64 %666, 1
  %668 = trunc i64 %667 to i1
  br i1 %668, label %718, label %669

669:                                              ; preds = %662
  %670 = load ptr, ptr %8, align 8, !tbaa !5
  %671 = getelementptr inbounds %"class.glslang::TQualifier", ptr %670, i32 0, i32 1
  %672 = load i64, ptr %671, align 8
  %673 = lshr i64 %672, 54
  %674 = and i64 %673, 1
  %675 = trunc i64 %674 to i1
  br i1 %675, label %718, label %676

676:                                              ; preds = %669, %634
  %677 = load ptr, ptr %9, align 8, !tbaa !5
  %678 = getelementptr inbounds %"class.glslang::TQualifier", ptr %677, i32 0, i32 1
  %679 = load i64, ptr %678, align 8
  %680 = lshr i64 %679, 54
  %681 = and i64 %680, 1
  %682 = trunc i64 %681 to i1
  br i1 %682, label %683, label %730

683:                                              ; preds = %676
  %684 = load ptr, ptr %8, align 8, !tbaa !5
  %685 = getelementptr inbounds %"class.glslang::TQualifier", ptr %684, i32 0, i32 1
  %686 = load i64, ptr %685, align 8
  %687 = lshr i64 %686, 48
  %688 = and i64 %687, 1
  %689 = trunc i64 %688 to i1
  br i1 %689, label %718, label %690

690:                                              ; preds = %683
  %691 = load ptr, ptr %8, align 8, !tbaa !5
  %692 = getelementptr inbounds %"class.glslang::TQualifier", ptr %691, i32 0, i32 1
  %693 = load i64, ptr %692, align 8
  %694 = lshr i64 %693, 50
  %695 = and i64 %694, 1
  %696 = trunc i64 %695 to i1
  br i1 %696, label %718, label %697

697:                                              ; preds = %690
  %698 = load ptr, ptr %8, align 8, !tbaa !5
  %699 = getelementptr inbounds %"class.glslang::TQualifier", ptr %698, i32 0, i32 1
  %700 = load i64, ptr %699, align 8
  %701 = lshr i64 %700, 51
  %702 = and i64 %701, 1
  %703 = trunc i64 %702 to i1
  br i1 %703, label %718, label %704

704:                                              ; preds = %697
  %705 = load ptr, ptr %8, align 8, !tbaa !5
  %706 = getelementptr inbounds %"class.glslang::TQualifier", ptr %705, i32 0, i32 1
  %707 = load i64, ptr %706, align 8
  %708 = lshr i64 %707, 52
  %709 = and i64 %708, 1
  %710 = trunc i64 %709 to i1
  br i1 %710, label %718, label %711

711:                                              ; preds = %704
  %712 = load ptr, ptr %8, align 8, !tbaa !5
  %713 = getelementptr inbounds %"class.glslang::TQualifier", ptr %712, i32 0, i32 1
  %714 = load i64, ptr %713, align 8
  %715 = lshr i64 %714, 53
  %716 = and i64 %715, 1
  %717 = trunc i64 %716 to i1
  br i1 %717, label %718, label %730

718:                                              ; preds = %711, %704, %697, %690, %683, %669, %662, %655, %648, %641, %627, %620, %613, %606, %599, %585, %578, %571, %564, %557, %543, %536, %529, %522, %515, %501, %494, %487, %480, %473
  %719 = load ptr, ptr %7, align 8, !tbaa !5
  %720 = load ptr, ptr %9, align 8, !tbaa !5
  %721 = getelementptr inbounds %"class.glslang::TQualifier", ptr %720, i32 0, i32 1
  %722 = load i64, ptr %721, align 8
  %723 = lshr i64 %722, 24
  %724 = and i64 %723, 7
  %725 = trunc i64 %724 to i32
  %726 = call noundef ptr @_ZN7glslang27GetPrecisionQualifierStringENS_19TPrecisionQualifierE(i32 noundef %725)
  %727 = load ptr, ptr %36, align 8, !tbaa !11
  %728 = getelementptr inbounds ptr, ptr %727, i64 42
  %729 = load ptr, ptr %728, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %729(ptr noundef nonnull align 8 dereferenceable(1176) %36, ptr noundef nonnull align 8 dereferenceable(24) %719, ptr noundef @.str.424, ptr noundef %726, ptr noundef @.str.2)
  br label %730

730:                                              ; preds = %718, %711, %676, %463
  %731 = load ptr, ptr %8, align 8, !tbaa !5
  %732 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZN7glslang13TParseContext27mergeObjectLayoutQualifiersERNS_10TQualifierERKS1_b(ptr noundef nonnull align 8 dereferenceable(24912) %36, ptr noundef nonnull align 8 dereferenceable(72) %731, ptr noundef nonnull align 8 dereferenceable(72) %732, i1 noundef zeroext false)
  call void @llvm.lifetime.start.p0(i64 1, ptr %11) #4
  store i8 0, ptr %11, align 1, !tbaa !9
  %733 = load ptr, ptr %8, align 8, !tbaa !5
  %734 = getelementptr inbounds %"class.glslang::TQualifier", ptr %733, i32 0, i32 1
  %735 = load i64, ptr %734, align 8
  %736 = lshr i64 %735, 27
  %737 = and i64 %736, 1
  %738 = trunc i64 %737 to i1
  br i1 %738, label %739, label %746

739:                                              ; preds = %730
  %740 = load ptr, ptr %9, align 8, !tbaa !5
  %741 = getelementptr inbounds %"class.glslang::TQualifier", ptr %740, i32 0, i32 1
  %742 = load i64, ptr %741, align 8
  %743 = lshr i64 %742, 27
  %744 = and i64 %743, 1
  %745 = trunc i64 %744 to i1
  br label %746

746:                                              ; preds = %739, %730
  %747 = phi i1 [ false, %730 ], [ %745, %739 ]
  %748 = zext i1 %747 to i32
  %749 = load i8, ptr %11, align 1, !tbaa !9, !range !13, !noundef !14
  %750 = trunc i8 %749 to i1
  %751 = zext i1 %750 to i32
  %752 = or i32 %751, %748
  %753 = icmp ne i32 %752, 0
  %754 = zext i1 %753 to i8
  store i8 %754, ptr %11, align 1, !tbaa !9
  %755 = load ptr, ptr %9, align 8, !tbaa !5
  %756 = getelementptr inbounds %"class.glslang::TQualifier", ptr %755, i32 0, i32 1
  %757 = load i64, ptr %756, align 8
  %758 = lshr i64 %757, 27
  %759 = and i64 %758, 1
  %760 = trunc i64 %759 to i1
  %761 = zext i1 %760 to i32
  %762 = load ptr, ptr %8, align 8, !tbaa !5
  %763 = getelementptr inbounds %"class.glslang::TQualifier", ptr %762, i32 0, i32 1
  %764 = load i64, ptr %763, align 8
  %765 = lshr i64 %764, 27
  %766 = and i64 %765, 1
  %767 = trunc i64 %766 to i1
  %768 = zext i1 %767 to i32
  %769 = or i32 %768, %761
  %770 = icmp ne i32 %769, 0
  %771 = zext i1 %770 to i64
  %772 = load i64, ptr %763, align 8
  %773 = shl i64 %771, 27
  %774 = and i64 %772, -134217729
  %775 = or i64 %774, %773
  store i64 %775, ptr %763, align 8
  %776 = trunc i64 %771 to i8
  %777 = trunc i8 %776 to i1
  %778 = load ptr, ptr %8, align 8, !tbaa !5
  %779 = getelementptr inbounds %"class.glslang::TQualifier", ptr %778, i32 0, i32 1
  %780 = load i64, ptr %779, align 8
  %781 = lshr i64 %780, 28
  %782 = and i64 %781, 1
  %783 = trunc i64 %782 to i1
  br i1 %783, label %784, label %791

784:                                              ; preds = %746
  %785 = load ptr, ptr %9, align 8, !tbaa !5
  %786 = getelementptr inbounds %"class.glslang::TQualifier", ptr %785, i32 0, i32 1
  %787 = load i64, ptr %786, align 8
  %788 = lshr i64 %787, 28
  %789 = and i64 %788, 1
  %790 = trunc i64 %789 to i1
  br label %791

791:                                              ; preds = %784, %746
  %792 = phi i1 [ false, %746 ], [ %790, %784 ]
  %793 = zext i1 %792 to i32
  %794 = load i8, ptr %11, align 1, !tbaa !9, !range !13, !noundef !14
  %795 = trunc i8 %794 to i1
  %796 = zext i1 %795 to i32
  %797 = or i32 %796, %793
  %798 = icmp ne i32 %797, 0
  %799 = zext i1 %798 to i8
  store i8 %799, ptr %11, align 1, !tbaa !9
  %800 = load ptr, ptr %9, align 8, !tbaa !5
  %801 = getelementptr inbounds %"class.glslang::TQualifier", ptr %800, i32 0, i32 1
  %802 = load i64, ptr %801, align 8
  %803 = lshr i64 %802, 28
  %804 = and i64 %803, 1
  %805 = trunc i64 %804 to i1
  %806 = zext i1 %805 to i32
  %807 = load ptr, ptr %8, align 8, !tbaa !5
  %808 = getelementptr inbounds %"class.glslang::TQualifier", ptr %807, i32 0, i32 1
  %809 = load i64, ptr %808, align 8
  %810 = lshr i64 %809, 28
  %811 = and i64 %810, 1
  %812 = trunc i64 %811 to i1
  %813 = zext i1 %812 to i32
  %814 = or i32 %813, %806
  %815 = icmp ne i32 %814, 0
  %816 = zext i1 %815 to i64
  %817 = load i64, ptr %808, align 8
  %818 = shl i64 %816, 28
  %819 = and i64 %817, -268435457
  %820 = or i64 %819, %818
  store i64 %820, ptr %808, align 8
  %821 = trunc i64 %816 to i8
  %822 = trunc i8 %821 to i1
  %823 = load ptr, ptr %8, align 8, !tbaa !5
  %824 = getelementptr inbounds %"class.glslang::TQualifier", ptr %823, i32 0, i32 1
  %825 = load i64, ptr %824, align 8
  %826 = lshr i64 %825, 29
  %827 = and i64 %826, 1
  %828 = trunc i64 %827 to i1
  br i1 %828, label %829, label %836

829:                                              ; preds = %791
  %830 = load ptr, ptr %9, align 8, !tbaa !5
  %831 = getelementptr inbounds %"class.glslang::TQualifier", ptr %830, i32 0, i32 1
  %832 = load i64, ptr %831, align 8
  %833 = lshr i64 %832, 29
  %834 = and i64 %833, 1
  %835 = trunc i64 %834 to i1
  br label %836

836:                                              ; preds = %829, %791
  %837 = phi i1 [ false, %791 ], [ %835, %829 ]
  %838 = zext i1 %837 to i32
  %839 = load i8, ptr %11, align 1, !tbaa !9, !range !13, !noundef !14
  %840 = trunc i8 %839 to i1
  %841 = zext i1 %840 to i32
  %842 = or i32 %841, %838
  %843 = icmp ne i32 %842, 0
  %844 = zext i1 %843 to i8
  store i8 %844, ptr %11, align 1, !tbaa !9
  %845 = load ptr, ptr %9, align 8, !tbaa !5
  %846 = getelementptr inbounds %"class.glslang::TQualifier", ptr %845, i32 0, i32 1
  %847 = load i64, ptr %846, align 8
  %848 = lshr i64 %847, 29
  %849 = and i64 %848, 1
  %850 = trunc i64 %849 to i1
  %851 = zext i1 %850 to i32
  %852 = load ptr, ptr %8, align 8, !tbaa !5
  %853 = getelementptr inbounds %"class.glslang::TQualifier", ptr %852, i32 0, i32 1
  %854 = load i64, ptr %853, align 8
  %855 = lshr i64 %854, 29
  %856 = and i64 %855, 1
  %857 = trunc i64 %856 to i1
  %858 = zext i1 %857 to i32
  %859 = or i32 %858, %851
  %860 = icmp ne i32 %859, 0
  %861 = zext i1 %860 to i64
  %862 = load i64, ptr %853, align 8
  %863 = shl i64 %861, 29
  %864 = and i64 %862, -536870913
  %865 = or i64 %864, %863
  store i64 %865, ptr %853, align 8
  %866 = trunc i64 %861 to i8
  %867 = trunc i8 %866 to i1
  %868 = load ptr, ptr %8, align 8, !tbaa !5
  %869 = getelementptr inbounds %"class.glslang::TQualifier", ptr %868, i32 0, i32 1
  %870 = load i64, ptr %869, align 8
  %871 = lshr i64 %870, 30
  %872 = and i64 %871, 1
  %873 = trunc i64 %872 to i1
  br i1 %873, label %874, label %881

874:                                              ; preds = %836
  %875 = load ptr, ptr %9, align 8, !tbaa !5
  %876 = getelementptr inbounds %"class.glslang::TQualifier", ptr %875, i32 0, i32 1
  %877 = load i64, ptr %876, align 8
  %878 = lshr i64 %877, 30
  %879 = and i64 %878, 1
  %880 = trunc i64 %879 to i1
  br label %881

881:                                              ; preds = %874, %836
  %882 = phi i1 [ false, %836 ], [ %880, %874 ]
  %883 = zext i1 %882 to i32
  %884 = load i8, ptr %11, align 1, !tbaa !9, !range !13, !noundef !14
  %885 = trunc i8 %884 to i1
  %886 = zext i1 %885 to i32
  %887 = or i32 %886, %883
  %888 = icmp ne i32 %887, 0
  %889 = zext i1 %888 to i8
  store i8 %889, ptr %11, align 1, !tbaa !9
  %890 = load ptr, ptr %9, align 8, !tbaa !5
  %891 = getelementptr inbounds %"class.glslang::TQualifier", ptr %890, i32 0, i32 1
  %892 = load i64, ptr %891, align 8
  %893 = lshr i64 %892, 30
  %894 = and i64 %893, 1
  %895 = trunc i64 %894 to i1
  %896 = zext i1 %895 to i32
  %897 = load ptr, ptr %8, align 8, !tbaa !5
  %898 = getelementptr inbounds %"class.glslang::TQualifier", ptr %897, i32 0, i32 1
  %899 = load i64, ptr %898, align 8
  %900 = lshr i64 %899, 30
  %901 = and i64 %900, 1
  %902 = trunc i64 %901 to i1
  %903 = zext i1 %902 to i32
  %904 = or i32 %903, %896
  %905 = icmp ne i32 %904, 0
  %906 = zext i1 %905 to i64
  %907 = load i64, ptr %898, align 8
  %908 = shl i64 %906, 30
  %909 = and i64 %907, -1073741825
  %910 = or i64 %909, %908
  store i64 %910, ptr %898, align 8
  %911 = trunc i64 %906 to i8
  %912 = trunc i8 %911 to i1
  %913 = load ptr, ptr %8, align 8, !tbaa !5
  %914 = getelementptr inbounds %"class.glslang::TQualifier", ptr %913, i32 0, i32 1
  %915 = load i64, ptr %914, align 8
  %916 = lshr i64 %915, 31
  %917 = and i64 %916, 1
  %918 = trunc i64 %917 to i1
  br i1 %918, label %919, label %926

919:                                              ; preds = %881
  %920 = load ptr, ptr %9, align 8, !tbaa !5
  %921 = getelementptr inbounds %"class.glslang::TQualifier", ptr %920, i32 0, i32 1
  %922 = load i64, ptr %921, align 8
  %923 = lshr i64 %922, 31
  %924 = and i64 %923, 1
  %925 = trunc i64 %924 to i1
  br label %926

926:                                              ; preds = %919, %881
  %927 = phi i1 [ false, %881 ], [ %925, %919 ]
  %928 = zext i1 %927 to i32
  %929 = load i8, ptr %11, align 1, !tbaa !9, !range !13, !noundef !14
  %930 = trunc i8 %929 to i1
  %931 = zext i1 %930 to i32
  %932 = or i32 %931, %928
  %933 = icmp ne i32 %932, 0
  %934 = zext i1 %933 to i8
  store i8 %934, ptr %11, align 1, !tbaa !9
  %935 = load ptr, ptr %9, align 8, !tbaa !5
  %936 = getelementptr inbounds %"class.glslang::TQualifier", ptr %935, i32 0, i32 1
  %937 = load i64, ptr %936, align 8
  %938 = lshr i64 %937, 31
  %939 = and i64 %938, 1
  %940 = trunc i64 %939 to i1
  %941 = zext i1 %940 to i32
  %942 = load ptr, ptr %8, align 8, !tbaa !5
  %943 = getelementptr inbounds %"class.glslang::TQualifier", ptr %942, i32 0, i32 1
  %944 = load i64, ptr %943, align 8
  %945 = lshr i64 %944, 31
  %946 = and i64 %945, 1
  %947 = trunc i64 %946 to i1
  %948 = zext i1 %947 to i32
  %949 = or i32 %948, %941
  %950 = icmp ne i32 %949, 0
  %951 = zext i1 %950 to i64
  %952 = load i64, ptr %943, align 8
  %953 = shl i64 %951, 31
  %954 = and i64 %952, -2147483649
  %955 = or i64 %954, %953
  store i64 %955, ptr %943, align 8
  %956 = trunc i64 %951 to i8
  %957 = trunc i8 %956 to i1
  %958 = load ptr, ptr %8, align 8, !tbaa !5
  %959 = getelementptr inbounds %"class.glslang::TQualifier", ptr %958, i32 0, i32 1
  %960 = load i64, ptr %959, align 8
  %961 = lshr i64 %960, 35
  %962 = and i64 %961, 1
  %963 = trunc i64 %962 to i1
  br i1 %963, label %964, label %971

964:                                              ; preds = %926
  %965 = load ptr, ptr %9, align 8, !tbaa !5
  %966 = getelementptr inbounds %"class.glslang::TQualifier", ptr %965, i32 0, i32 1
  %967 = load i64, ptr %966, align 8
  %968 = lshr i64 %967, 35
  %969 = and i64 %968, 1
  %970 = trunc i64 %969 to i1
  br label %971

971:                                              ; preds = %964, %926
  %972 = phi i1 [ false, %926 ], [ %970, %964 ]
  %973 = zext i1 %972 to i32
  %974 = load i8, ptr %11, align 1, !tbaa !9, !range !13, !noundef !14
  %975 = trunc i8 %974 to i1
  %976 = zext i1 %975 to i32
  %977 = or i32 %976, %973
  %978 = icmp ne i32 %977, 0
  %979 = zext i1 %978 to i8
  store i8 %979, ptr %11, align 1, !tbaa !9
  %980 = load ptr, ptr %9, align 8, !tbaa !5
  %981 = getelementptr inbounds %"class.glslang::TQualifier", ptr %980, i32 0, i32 1
  %982 = load i64, ptr %981, align 8
  %983 = lshr i64 %982, 35
  %984 = and i64 %983, 1
  %985 = trunc i64 %984 to i1
  %986 = zext i1 %985 to i32
  %987 = load ptr, ptr %8, align 8, !tbaa !5
  %988 = getelementptr inbounds %"class.glslang::TQualifier", ptr %987, i32 0, i32 1
  %989 = load i64, ptr %988, align 8
  %990 = lshr i64 %989, 35
  %991 = and i64 %990, 1
  %992 = trunc i64 %991 to i1
  %993 = zext i1 %992 to i32
  %994 = or i32 %993, %986
  %995 = icmp ne i32 %994, 0
  %996 = zext i1 %995 to i64
  %997 = load i64, ptr %988, align 8
  %998 = shl i64 %996, 35
  %999 = and i64 %997, -34359738369
  %1000 = or i64 %999, %998
  store i64 %1000, ptr %988, align 8
  %1001 = trunc i64 %996 to i8
  %1002 = trunc i8 %1001 to i1
  %1003 = load ptr, ptr %8, align 8, !tbaa !5
  %1004 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1003, i32 0, i32 1
  %1005 = load i64, ptr %1004, align 8
  %1006 = lshr i64 %1005, 36
  %1007 = and i64 %1006, 1
  %1008 = trunc i64 %1007 to i1
  br i1 %1008, label %1009, label %1016

1009:                                             ; preds = %971
  %1010 = load ptr, ptr %9, align 8, !tbaa !5
  %1011 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1010, i32 0, i32 1
  %1012 = load i64, ptr %1011, align 8
  %1013 = lshr i64 %1012, 36
  %1014 = and i64 %1013, 1
  %1015 = trunc i64 %1014 to i1
  br label %1016

1016:                                             ; preds = %1009, %971
  %1017 = phi i1 [ false, %971 ], [ %1015, %1009 ]
  %1018 = zext i1 %1017 to i32
  %1019 = load i8, ptr %11, align 1, !tbaa !9, !range !13, !noundef !14
  %1020 = trunc i8 %1019 to i1
  %1021 = zext i1 %1020 to i32
  %1022 = or i32 %1021, %1018
  %1023 = icmp ne i32 %1022, 0
  %1024 = zext i1 %1023 to i8
  store i8 %1024, ptr %11, align 1, !tbaa !9
  %1025 = load ptr, ptr %9, align 8, !tbaa !5
  %1026 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1025, i32 0, i32 1
  %1027 = load i64, ptr %1026, align 8
  %1028 = lshr i64 %1027, 36
  %1029 = and i64 %1028, 1
  %1030 = trunc i64 %1029 to i1
  %1031 = zext i1 %1030 to i32
  %1032 = load ptr, ptr %8, align 8, !tbaa !5
  %1033 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1032, i32 0, i32 1
  %1034 = load i64, ptr %1033, align 8
  %1035 = lshr i64 %1034, 36
  %1036 = and i64 %1035, 1
  %1037 = trunc i64 %1036 to i1
  %1038 = zext i1 %1037 to i32
  %1039 = or i32 %1038, %1031
  %1040 = icmp ne i32 %1039, 0
  %1041 = zext i1 %1040 to i64
  %1042 = load i64, ptr %1033, align 8
  %1043 = shl i64 %1041, 36
  %1044 = and i64 %1042, -68719476737
  %1045 = or i64 %1044, %1043
  store i64 %1045, ptr %1033, align 8
  %1046 = trunc i64 %1041 to i8
  %1047 = trunc i8 %1046 to i1
  %1048 = load ptr, ptr %8, align 8, !tbaa !5
  %1049 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1048, i32 0, i32 1
  %1050 = load i64, ptr %1049, align 8
  %1051 = lshr i64 %1050, 37
  %1052 = and i64 %1051, 1
  %1053 = trunc i64 %1052 to i1
  br i1 %1053, label %1054, label %1061

1054:                                             ; preds = %1016
  %1055 = load ptr, ptr %9, align 8, !tbaa !5
  %1056 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1055, i32 0, i32 1
  %1057 = load i64, ptr %1056, align 8
  %1058 = lshr i64 %1057, 37
  %1059 = and i64 %1058, 1
  %1060 = trunc i64 %1059 to i1
  br label %1061

1061:                                             ; preds = %1054, %1016
  %1062 = phi i1 [ false, %1016 ], [ %1060, %1054 ]
  %1063 = zext i1 %1062 to i32
  %1064 = load i8, ptr %11, align 1, !tbaa !9, !range !13, !noundef !14
  %1065 = trunc i8 %1064 to i1
  %1066 = zext i1 %1065 to i32
  %1067 = or i32 %1066, %1063
  %1068 = icmp ne i32 %1067, 0
  %1069 = zext i1 %1068 to i8
  store i8 %1069, ptr %11, align 1, !tbaa !9
  %1070 = load ptr, ptr %9, align 8, !tbaa !5
  %1071 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1070, i32 0, i32 1
  %1072 = load i64, ptr %1071, align 8
  %1073 = lshr i64 %1072, 37
  %1074 = and i64 %1073, 1
  %1075 = trunc i64 %1074 to i1
  %1076 = zext i1 %1075 to i32
  %1077 = load ptr, ptr %8, align 8, !tbaa !5
  %1078 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1077, i32 0, i32 1
  %1079 = load i64, ptr %1078, align 8
  %1080 = lshr i64 %1079, 37
  %1081 = and i64 %1080, 1
  %1082 = trunc i64 %1081 to i1
  %1083 = zext i1 %1082 to i32
  %1084 = or i32 %1083, %1076
  %1085 = icmp ne i32 %1084, 0
  %1086 = zext i1 %1085 to i64
  %1087 = load i64, ptr %1078, align 8
  %1088 = shl i64 %1086, 37
  %1089 = and i64 %1087, -137438953473
  %1090 = or i64 %1089, %1088
  store i64 %1090, ptr %1078, align 8
  %1091 = trunc i64 %1086 to i8
  %1092 = trunc i8 %1091 to i1
  %1093 = load ptr, ptr %8, align 8, !tbaa !5
  %1094 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1093, i32 0, i32 1
  %1095 = load i64, ptr %1094, align 8
  %1096 = lshr i64 %1095, 40
  %1097 = and i64 %1096, 1
  %1098 = trunc i64 %1097 to i1
  br i1 %1098, label %1099, label %1106

1099:                                             ; preds = %1061
  %1100 = load ptr, ptr %9, align 8, !tbaa !5
  %1101 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1100, i32 0, i32 1
  %1102 = load i64, ptr %1101, align 8
  %1103 = lshr i64 %1102, 40
  %1104 = and i64 %1103, 1
  %1105 = trunc i64 %1104 to i1
  br label %1106

1106:                                             ; preds = %1099, %1061
  %1107 = phi i1 [ false, %1061 ], [ %1105, %1099 ]
  %1108 = zext i1 %1107 to i32
  %1109 = load i8, ptr %11, align 1, !tbaa !9, !range !13, !noundef !14
  %1110 = trunc i8 %1109 to i1
  %1111 = zext i1 %1110 to i32
  %1112 = or i32 %1111, %1108
  %1113 = icmp ne i32 %1112, 0
  %1114 = zext i1 %1113 to i8
  store i8 %1114, ptr %11, align 1, !tbaa !9
  %1115 = load ptr, ptr %9, align 8, !tbaa !5
  %1116 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1115, i32 0, i32 1
  %1117 = load i64, ptr %1116, align 8
  %1118 = lshr i64 %1117, 40
  %1119 = and i64 %1118, 1
  %1120 = trunc i64 %1119 to i1
  %1121 = zext i1 %1120 to i32
  %1122 = load ptr, ptr %8, align 8, !tbaa !5
  %1123 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1122, i32 0, i32 1
  %1124 = load i64, ptr %1123, align 8
  %1125 = lshr i64 %1124, 40
  %1126 = and i64 %1125, 1
  %1127 = trunc i64 %1126 to i1
  %1128 = zext i1 %1127 to i32
  %1129 = or i32 %1128, %1121
  %1130 = icmp ne i32 %1129, 0
  %1131 = zext i1 %1130 to i64
  %1132 = load i64, ptr %1123, align 8
  %1133 = shl i64 %1131, 40
  %1134 = and i64 %1132, -1099511627777
  %1135 = or i64 %1134, %1133
  store i64 %1135, ptr %1123, align 8
  %1136 = trunc i64 %1131 to i8
  %1137 = trunc i8 %1136 to i1
  %1138 = load ptr, ptr %8, align 8, !tbaa !5
  %1139 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1138, i32 0, i32 1
  %1140 = load i64, ptr %1139, align 8
  %1141 = lshr i64 %1140, 41
  %1142 = and i64 %1141, 1
  %1143 = trunc i64 %1142 to i1
  br i1 %1143, label %1144, label %1151

1144:                                             ; preds = %1106
  %1145 = load ptr, ptr %9, align 8, !tbaa !5
  %1146 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1145, i32 0, i32 1
  %1147 = load i64, ptr %1146, align 8
  %1148 = lshr i64 %1147, 41
  %1149 = and i64 %1148, 1
  %1150 = trunc i64 %1149 to i1
  br label %1151

1151:                                             ; preds = %1144, %1106
  %1152 = phi i1 [ false, %1106 ], [ %1150, %1144 ]
  %1153 = zext i1 %1152 to i32
  %1154 = load i8, ptr %11, align 1, !tbaa !9, !range !13, !noundef !14
  %1155 = trunc i8 %1154 to i1
  %1156 = zext i1 %1155 to i32
  %1157 = or i32 %1156, %1153
  %1158 = icmp ne i32 %1157, 0
  %1159 = zext i1 %1158 to i8
  store i8 %1159, ptr %11, align 1, !tbaa !9
  %1160 = load ptr, ptr %9, align 8, !tbaa !5
  %1161 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1160, i32 0, i32 1
  %1162 = load i64, ptr %1161, align 8
  %1163 = lshr i64 %1162, 41
  %1164 = and i64 %1163, 1
  %1165 = trunc i64 %1164 to i1
  %1166 = zext i1 %1165 to i32
  %1167 = load ptr, ptr %8, align 8, !tbaa !5
  %1168 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1167, i32 0, i32 1
  %1169 = load i64, ptr %1168, align 8
  %1170 = lshr i64 %1169, 41
  %1171 = and i64 %1170, 1
  %1172 = trunc i64 %1171 to i1
  %1173 = zext i1 %1172 to i32
  %1174 = or i32 %1173, %1166
  %1175 = icmp ne i32 %1174, 0
  %1176 = zext i1 %1175 to i64
  %1177 = load i64, ptr %1168, align 8
  %1178 = shl i64 %1176, 41
  %1179 = and i64 %1177, -2199023255553
  %1180 = or i64 %1179, %1178
  store i64 %1180, ptr %1168, align 8
  %1181 = trunc i64 %1176 to i8
  %1182 = trunc i8 %1181 to i1
  %1183 = load ptr, ptr %8, align 8, !tbaa !5
  %1184 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1183, i32 0, i32 1
  %1185 = load i64, ptr %1184, align 8
  %1186 = lshr i64 %1185, 42
  %1187 = and i64 %1186, 1
  %1188 = trunc i64 %1187 to i1
  br i1 %1188, label %1189, label %1196

1189:                                             ; preds = %1151
  %1190 = load ptr, ptr %9, align 8, !tbaa !5
  %1191 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1190, i32 0, i32 1
  %1192 = load i64, ptr %1191, align 8
  %1193 = lshr i64 %1192, 42
  %1194 = and i64 %1193, 1
  %1195 = trunc i64 %1194 to i1
  br label %1196

1196:                                             ; preds = %1189, %1151
  %1197 = phi i1 [ false, %1151 ], [ %1195, %1189 ]
  %1198 = zext i1 %1197 to i32
  %1199 = load i8, ptr %11, align 1, !tbaa !9, !range !13, !noundef !14
  %1200 = trunc i8 %1199 to i1
  %1201 = zext i1 %1200 to i32
  %1202 = or i32 %1201, %1198
  %1203 = icmp ne i32 %1202, 0
  %1204 = zext i1 %1203 to i8
  store i8 %1204, ptr %11, align 1, !tbaa !9
  %1205 = load ptr, ptr %9, align 8, !tbaa !5
  %1206 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1205, i32 0, i32 1
  %1207 = load i64, ptr %1206, align 8
  %1208 = lshr i64 %1207, 42
  %1209 = and i64 %1208, 1
  %1210 = trunc i64 %1209 to i1
  %1211 = zext i1 %1210 to i32
  %1212 = load ptr, ptr %8, align 8, !tbaa !5
  %1213 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1212, i32 0, i32 1
  %1214 = load i64, ptr %1213, align 8
  %1215 = lshr i64 %1214, 42
  %1216 = and i64 %1215, 1
  %1217 = trunc i64 %1216 to i1
  %1218 = zext i1 %1217 to i32
  %1219 = or i32 %1218, %1211
  %1220 = icmp ne i32 %1219, 0
  %1221 = zext i1 %1220 to i64
  %1222 = load i64, ptr %1213, align 8
  %1223 = shl i64 %1221, 42
  %1224 = and i64 %1222, -4398046511105
  %1225 = or i64 %1224, %1223
  store i64 %1225, ptr %1213, align 8
  %1226 = trunc i64 %1221 to i8
  %1227 = trunc i8 %1226 to i1
  %1228 = load ptr, ptr %8, align 8, !tbaa !5
  %1229 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1228, i32 0, i32 1
  %1230 = load i64, ptr %1229, align 8
  %1231 = lshr i64 %1230, 43
  %1232 = and i64 %1231, 1
  %1233 = trunc i64 %1232 to i1
  br i1 %1233, label %1234, label %1241

1234:                                             ; preds = %1196
  %1235 = load ptr, ptr %9, align 8, !tbaa !5
  %1236 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1235, i32 0, i32 1
  %1237 = load i64, ptr %1236, align 8
  %1238 = lshr i64 %1237, 43
  %1239 = and i64 %1238, 1
  %1240 = trunc i64 %1239 to i1
  br label %1241

1241:                                             ; preds = %1234, %1196
  %1242 = phi i1 [ false, %1196 ], [ %1240, %1234 ]
  %1243 = zext i1 %1242 to i32
  %1244 = load i8, ptr %11, align 1, !tbaa !9, !range !13, !noundef !14
  %1245 = trunc i8 %1244 to i1
  %1246 = zext i1 %1245 to i32
  %1247 = or i32 %1246, %1243
  %1248 = icmp ne i32 %1247, 0
  %1249 = zext i1 %1248 to i8
  store i8 %1249, ptr %11, align 1, !tbaa !9
  %1250 = load ptr, ptr %9, align 8, !tbaa !5
  %1251 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1250, i32 0, i32 1
  %1252 = load i64, ptr %1251, align 8
  %1253 = lshr i64 %1252, 43
  %1254 = and i64 %1253, 1
  %1255 = trunc i64 %1254 to i1
  %1256 = zext i1 %1255 to i32
  %1257 = load ptr, ptr %8, align 8, !tbaa !5
  %1258 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1257, i32 0, i32 1
  %1259 = load i64, ptr %1258, align 8
  %1260 = lshr i64 %1259, 43
  %1261 = and i64 %1260, 1
  %1262 = trunc i64 %1261 to i1
  %1263 = zext i1 %1262 to i32
  %1264 = or i32 %1263, %1256
  %1265 = icmp ne i32 %1264, 0
  %1266 = zext i1 %1265 to i64
  %1267 = load i64, ptr %1258, align 8
  %1268 = shl i64 %1266, 43
  %1269 = and i64 %1267, -8796093022209
  %1270 = or i64 %1269, %1268
  store i64 %1270, ptr %1258, align 8
  %1271 = trunc i64 %1266 to i8
  %1272 = trunc i8 %1271 to i1
  %1273 = load ptr, ptr %8, align 8, !tbaa !5
  %1274 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1273, i32 0, i32 1
  %1275 = load i64, ptr %1274, align 8
  %1276 = lshr i64 %1275, 44
  %1277 = and i64 %1276, 1
  %1278 = trunc i64 %1277 to i1
  br i1 %1278, label %1279, label %1286

1279:                                             ; preds = %1241
  %1280 = load ptr, ptr %9, align 8, !tbaa !5
  %1281 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1280, i32 0, i32 1
  %1282 = load i64, ptr %1281, align 8
  %1283 = lshr i64 %1282, 44
  %1284 = and i64 %1283, 1
  %1285 = trunc i64 %1284 to i1
  br label %1286

1286:                                             ; preds = %1279, %1241
  %1287 = phi i1 [ false, %1241 ], [ %1285, %1279 ]
  %1288 = zext i1 %1287 to i32
  %1289 = load i8, ptr %11, align 1, !tbaa !9, !range !13, !noundef !14
  %1290 = trunc i8 %1289 to i1
  %1291 = zext i1 %1290 to i32
  %1292 = or i32 %1291, %1288
  %1293 = icmp ne i32 %1292, 0
  %1294 = zext i1 %1293 to i8
  store i8 %1294, ptr %11, align 1, !tbaa !9
  %1295 = load ptr, ptr %9, align 8, !tbaa !5
  %1296 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1295, i32 0, i32 1
  %1297 = load i64, ptr %1296, align 8
  %1298 = lshr i64 %1297, 44
  %1299 = and i64 %1298, 1
  %1300 = trunc i64 %1299 to i1
  %1301 = zext i1 %1300 to i32
  %1302 = load ptr, ptr %8, align 8, !tbaa !5
  %1303 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1302, i32 0, i32 1
  %1304 = load i64, ptr %1303, align 8
  %1305 = lshr i64 %1304, 44
  %1306 = and i64 %1305, 1
  %1307 = trunc i64 %1306 to i1
  %1308 = zext i1 %1307 to i32
  %1309 = or i32 %1308, %1301
  %1310 = icmp ne i32 %1309, 0
  %1311 = zext i1 %1310 to i64
  %1312 = load i64, ptr %1303, align 8
  %1313 = shl i64 %1311, 44
  %1314 = and i64 %1312, -17592186044417
  %1315 = or i64 %1314, %1313
  store i64 %1315, ptr %1303, align 8
  %1316 = trunc i64 %1311 to i8
  %1317 = trunc i8 %1316 to i1
  %1318 = load ptr, ptr %8, align 8, !tbaa !5
  %1319 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1318, i32 0, i32 1
  %1320 = load i64, ptr %1319, align 8
  %1321 = lshr i64 %1320, 48
  %1322 = and i64 %1321, 1
  %1323 = trunc i64 %1322 to i1
  br i1 %1323, label %1324, label %1331

1324:                                             ; preds = %1286
  %1325 = load ptr, ptr %9, align 8, !tbaa !5
  %1326 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1325, i32 0, i32 1
  %1327 = load i64, ptr %1326, align 8
  %1328 = lshr i64 %1327, 48
  %1329 = and i64 %1328, 1
  %1330 = trunc i64 %1329 to i1
  br label %1331

1331:                                             ; preds = %1324, %1286
  %1332 = phi i1 [ false, %1286 ], [ %1330, %1324 ]
  %1333 = zext i1 %1332 to i32
  %1334 = load i8, ptr %11, align 1, !tbaa !9, !range !13, !noundef !14
  %1335 = trunc i8 %1334 to i1
  %1336 = zext i1 %1335 to i32
  %1337 = or i32 %1336, %1333
  %1338 = icmp ne i32 %1337, 0
  %1339 = zext i1 %1338 to i8
  store i8 %1339, ptr %11, align 1, !tbaa !9
  %1340 = load ptr, ptr %9, align 8, !tbaa !5
  %1341 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1340, i32 0, i32 1
  %1342 = load i64, ptr %1341, align 8
  %1343 = lshr i64 %1342, 48
  %1344 = and i64 %1343, 1
  %1345 = trunc i64 %1344 to i1
  %1346 = zext i1 %1345 to i32
  %1347 = load ptr, ptr %8, align 8, !tbaa !5
  %1348 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1347, i32 0, i32 1
  %1349 = load i64, ptr %1348, align 8
  %1350 = lshr i64 %1349, 48
  %1351 = and i64 %1350, 1
  %1352 = trunc i64 %1351 to i1
  %1353 = zext i1 %1352 to i32
  %1354 = or i32 %1353, %1346
  %1355 = icmp ne i32 %1354, 0
  %1356 = zext i1 %1355 to i64
  %1357 = load i64, ptr %1348, align 8
  %1358 = shl i64 %1356, 48
  %1359 = and i64 %1357, -281474976710657
  %1360 = or i64 %1359, %1358
  store i64 %1360, ptr %1348, align 8
  %1361 = trunc i64 %1356 to i8
  %1362 = trunc i8 %1361 to i1
  %1363 = load ptr, ptr %8, align 8, !tbaa !5
  %1364 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1363, i32 0, i32 1
  %1365 = load i64, ptr %1364, align 8
  %1366 = lshr i64 %1365, 50
  %1367 = and i64 %1366, 1
  %1368 = trunc i64 %1367 to i1
  br i1 %1368, label %1369, label %1376

1369:                                             ; preds = %1331
  %1370 = load ptr, ptr %9, align 8, !tbaa !5
  %1371 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1370, i32 0, i32 1
  %1372 = load i64, ptr %1371, align 8
  %1373 = lshr i64 %1372, 50
  %1374 = and i64 %1373, 1
  %1375 = trunc i64 %1374 to i1
  br label %1376

1376:                                             ; preds = %1369, %1331
  %1377 = phi i1 [ false, %1331 ], [ %1375, %1369 ]
  %1378 = zext i1 %1377 to i32
  %1379 = load i8, ptr %11, align 1, !tbaa !9, !range !13, !noundef !14
  %1380 = trunc i8 %1379 to i1
  %1381 = zext i1 %1380 to i32
  %1382 = or i32 %1381, %1378
  %1383 = icmp ne i32 %1382, 0
  %1384 = zext i1 %1383 to i8
  store i8 %1384, ptr %11, align 1, !tbaa !9
  %1385 = load ptr, ptr %9, align 8, !tbaa !5
  %1386 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1385, i32 0, i32 1
  %1387 = load i64, ptr %1386, align 8
  %1388 = lshr i64 %1387, 50
  %1389 = and i64 %1388, 1
  %1390 = trunc i64 %1389 to i1
  %1391 = zext i1 %1390 to i32
  %1392 = load ptr, ptr %8, align 8, !tbaa !5
  %1393 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1392, i32 0, i32 1
  %1394 = load i64, ptr %1393, align 8
  %1395 = lshr i64 %1394, 50
  %1396 = and i64 %1395, 1
  %1397 = trunc i64 %1396 to i1
  %1398 = zext i1 %1397 to i32
  %1399 = or i32 %1398, %1391
  %1400 = icmp ne i32 %1399, 0
  %1401 = zext i1 %1400 to i64
  %1402 = load i64, ptr %1393, align 8
  %1403 = shl i64 %1401, 50
  %1404 = and i64 %1402, -1125899906842625
  %1405 = or i64 %1404, %1403
  store i64 %1405, ptr %1393, align 8
  %1406 = trunc i64 %1401 to i8
  %1407 = trunc i8 %1406 to i1
  %1408 = load ptr, ptr %8, align 8, !tbaa !5
  %1409 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1408, i32 0, i32 1
  %1410 = load i64, ptr %1409, align 8
  %1411 = lshr i64 %1410, 51
  %1412 = and i64 %1411, 1
  %1413 = trunc i64 %1412 to i1
  br i1 %1413, label %1414, label %1421

1414:                                             ; preds = %1376
  %1415 = load ptr, ptr %9, align 8, !tbaa !5
  %1416 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1415, i32 0, i32 1
  %1417 = load i64, ptr %1416, align 8
  %1418 = lshr i64 %1417, 51
  %1419 = and i64 %1418, 1
  %1420 = trunc i64 %1419 to i1
  br label %1421

1421:                                             ; preds = %1414, %1376
  %1422 = phi i1 [ false, %1376 ], [ %1420, %1414 ]
  %1423 = zext i1 %1422 to i32
  %1424 = load i8, ptr %11, align 1, !tbaa !9, !range !13, !noundef !14
  %1425 = trunc i8 %1424 to i1
  %1426 = zext i1 %1425 to i32
  %1427 = or i32 %1426, %1423
  %1428 = icmp ne i32 %1427, 0
  %1429 = zext i1 %1428 to i8
  store i8 %1429, ptr %11, align 1, !tbaa !9
  %1430 = load ptr, ptr %9, align 8, !tbaa !5
  %1431 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1430, i32 0, i32 1
  %1432 = load i64, ptr %1431, align 8
  %1433 = lshr i64 %1432, 51
  %1434 = and i64 %1433, 1
  %1435 = trunc i64 %1434 to i1
  %1436 = zext i1 %1435 to i32
  %1437 = load ptr, ptr %8, align 8, !tbaa !5
  %1438 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1437, i32 0, i32 1
  %1439 = load i64, ptr %1438, align 8
  %1440 = lshr i64 %1439, 51
  %1441 = and i64 %1440, 1
  %1442 = trunc i64 %1441 to i1
  %1443 = zext i1 %1442 to i32
  %1444 = or i32 %1443, %1436
  %1445 = icmp ne i32 %1444, 0
  %1446 = zext i1 %1445 to i64
  %1447 = load i64, ptr %1438, align 8
  %1448 = shl i64 %1446, 51
  %1449 = and i64 %1447, -2251799813685249
  %1450 = or i64 %1449, %1448
  store i64 %1450, ptr %1438, align 8
  %1451 = trunc i64 %1446 to i8
  %1452 = trunc i8 %1451 to i1
  %1453 = load ptr, ptr %8, align 8, !tbaa !5
  %1454 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1453, i32 0, i32 1
  %1455 = load i64, ptr %1454, align 8
  %1456 = lshr i64 %1455, 52
  %1457 = and i64 %1456, 1
  %1458 = trunc i64 %1457 to i1
  br i1 %1458, label %1459, label %1466

1459:                                             ; preds = %1421
  %1460 = load ptr, ptr %9, align 8, !tbaa !5
  %1461 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1460, i32 0, i32 1
  %1462 = load i64, ptr %1461, align 8
  %1463 = lshr i64 %1462, 52
  %1464 = and i64 %1463, 1
  %1465 = trunc i64 %1464 to i1
  br label %1466

1466:                                             ; preds = %1459, %1421
  %1467 = phi i1 [ false, %1421 ], [ %1465, %1459 ]
  %1468 = zext i1 %1467 to i32
  %1469 = load i8, ptr %11, align 1, !tbaa !9, !range !13, !noundef !14
  %1470 = trunc i8 %1469 to i1
  %1471 = zext i1 %1470 to i32
  %1472 = or i32 %1471, %1468
  %1473 = icmp ne i32 %1472, 0
  %1474 = zext i1 %1473 to i8
  store i8 %1474, ptr %11, align 1, !tbaa !9
  %1475 = load ptr, ptr %9, align 8, !tbaa !5
  %1476 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1475, i32 0, i32 1
  %1477 = load i64, ptr %1476, align 8
  %1478 = lshr i64 %1477, 52
  %1479 = and i64 %1478, 1
  %1480 = trunc i64 %1479 to i1
  %1481 = zext i1 %1480 to i32
  %1482 = load ptr, ptr %8, align 8, !tbaa !5
  %1483 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1482, i32 0, i32 1
  %1484 = load i64, ptr %1483, align 8
  %1485 = lshr i64 %1484, 52
  %1486 = and i64 %1485, 1
  %1487 = trunc i64 %1486 to i1
  %1488 = zext i1 %1487 to i32
  %1489 = or i32 %1488, %1481
  %1490 = icmp ne i32 %1489, 0
  %1491 = zext i1 %1490 to i64
  %1492 = load i64, ptr %1483, align 8
  %1493 = shl i64 %1491, 52
  %1494 = and i64 %1492, -4503599627370497
  %1495 = or i64 %1494, %1493
  store i64 %1495, ptr %1483, align 8
  %1496 = trunc i64 %1491 to i8
  %1497 = trunc i8 %1496 to i1
  %1498 = load ptr, ptr %8, align 8, !tbaa !5
  %1499 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1498, i32 0, i32 1
  %1500 = load i64, ptr %1499, align 8
  %1501 = lshr i64 %1500, 53
  %1502 = and i64 %1501, 1
  %1503 = trunc i64 %1502 to i1
  br i1 %1503, label %1504, label %1511

1504:                                             ; preds = %1466
  %1505 = load ptr, ptr %9, align 8, !tbaa !5
  %1506 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1505, i32 0, i32 1
  %1507 = load i64, ptr %1506, align 8
  %1508 = lshr i64 %1507, 53
  %1509 = and i64 %1508, 1
  %1510 = trunc i64 %1509 to i1
  br label %1511

1511:                                             ; preds = %1504, %1466
  %1512 = phi i1 [ false, %1466 ], [ %1510, %1504 ]
  %1513 = zext i1 %1512 to i32
  %1514 = load i8, ptr %11, align 1, !tbaa !9, !range !13, !noundef !14
  %1515 = trunc i8 %1514 to i1
  %1516 = zext i1 %1515 to i32
  %1517 = or i32 %1516, %1513
  %1518 = icmp ne i32 %1517, 0
  %1519 = zext i1 %1518 to i8
  store i8 %1519, ptr %11, align 1, !tbaa !9
  %1520 = load ptr, ptr %9, align 8, !tbaa !5
  %1521 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1520, i32 0, i32 1
  %1522 = load i64, ptr %1521, align 8
  %1523 = lshr i64 %1522, 53
  %1524 = and i64 %1523, 1
  %1525 = trunc i64 %1524 to i1
  %1526 = zext i1 %1525 to i32
  %1527 = load ptr, ptr %8, align 8, !tbaa !5
  %1528 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1527, i32 0, i32 1
  %1529 = load i64, ptr %1528, align 8
  %1530 = lshr i64 %1529, 53
  %1531 = and i64 %1530, 1
  %1532 = trunc i64 %1531 to i1
  %1533 = zext i1 %1532 to i32
  %1534 = or i32 %1533, %1526
  %1535 = icmp ne i32 %1534, 0
  %1536 = zext i1 %1535 to i64
  %1537 = load i64, ptr %1528, align 8
  %1538 = shl i64 %1536, 53
  %1539 = and i64 %1537, -9007199254740993
  %1540 = or i64 %1539, %1538
  store i64 %1540, ptr %1528, align 8
  %1541 = trunc i64 %1536 to i8
  %1542 = trunc i8 %1541 to i1
  %1543 = load ptr, ptr %8, align 8, !tbaa !5
  %1544 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1543, i32 0, i32 1
  %1545 = load i64, ptr %1544, align 8
  %1546 = lshr i64 %1545, 54
  %1547 = and i64 %1546, 1
  %1548 = trunc i64 %1547 to i1
  br i1 %1548, label %1549, label %1556

1549:                                             ; preds = %1511
  %1550 = load ptr, ptr %9, align 8, !tbaa !5
  %1551 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1550, i32 0, i32 1
  %1552 = load i64, ptr %1551, align 8
  %1553 = lshr i64 %1552, 54
  %1554 = and i64 %1553, 1
  %1555 = trunc i64 %1554 to i1
  br label %1556

1556:                                             ; preds = %1549, %1511
  %1557 = phi i1 [ false, %1511 ], [ %1555, %1549 ]
  %1558 = zext i1 %1557 to i32
  %1559 = load i8, ptr %11, align 1, !tbaa !9, !range !13, !noundef !14
  %1560 = trunc i8 %1559 to i1
  %1561 = zext i1 %1560 to i32
  %1562 = or i32 %1561, %1558
  %1563 = icmp ne i32 %1562, 0
  %1564 = zext i1 %1563 to i8
  store i8 %1564, ptr %11, align 1, !tbaa !9
  %1565 = load ptr, ptr %9, align 8, !tbaa !5
  %1566 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1565, i32 0, i32 1
  %1567 = load i64, ptr %1566, align 8
  %1568 = lshr i64 %1567, 54
  %1569 = and i64 %1568, 1
  %1570 = trunc i64 %1569 to i1
  %1571 = zext i1 %1570 to i32
  %1572 = load ptr, ptr %8, align 8, !tbaa !5
  %1573 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1572, i32 0, i32 1
  %1574 = load i64, ptr %1573, align 8
  %1575 = lshr i64 %1574, 54
  %1576 = and i64 %1575, 1
  %1577 = trunc i64 %1576 to i1
  %1578 = zext i1 %1577 to i32
  %1579 = or i32 %1578, %1571
  %1580 = icmp ne i32 %1579, 0
  %1581 = zext i1 %1580 to i64
  %1582 = load i64, ptr %1573, align 8
  %1583 = shl i64 %1581, 54
  %1584 = and i64 %1582, -18014398509481985
  %1585 = or i64 %1584, %1583
  store i64 %1585, ptr %1573, align 8
  %1586 = trunc i64 %1581 to i8
  %1587 = trunc i8 %1586 to i1
  %1588 = load ptr, ptr %8, align 8, !tbaa !5
  %1589 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1588, i32 0, i32 1
  %1590 = load i64, ptr %1589, align 8
  %1591 = lshr i64 %1590, 55
  %1592 = and i64 %1591, 1
  %1593 = trunc i64 %1592 to i1
  br i1 %1593, label %1594, label %1601

1594:                                             ; preds = %1556
  %1595 = load ptr, ptr %9, align 8, !tbaa !5
  %1596 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1595, i32 0, i32 1
  %1597 = load i64, ptr %1596, align 8
  %1598 = lshr i64 %1597, 55
  %1599 = and i64 %1598, 1
  %1600 = trunc i64 %1599 to i1
  br label %1601

1601:                                             ; preds = %1594, %1556
  %1602 = phi i1 [ false, %1556 ], [ %1600, %1594 ]
  %1603 = zext i1 %1602 to i32
  %1604 = load i8, ptr %11, align 1, !tbaa !9, !range !13, !noundef !14
  %1605 = trunc i8 %1604 to i1
  %1606 = zext i1 %1605 to i32
  %1607 = or i32 %1606, %1603
  %1608 = icmp ne i32 %1607, 0
  %1609 = zext i1 %1608 to i8
  store i8 %1609, ptr %11, align 1, !tbaa !9
  %1610 = load ptr, ptr %9, align 8, !tbaa !5
  %1611 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1610, i32 0, i32 1
  %1612 = load i64, ptr %1611, align 8
  %1613 = lshr i64 %1612, 55
  %1614 = and i64 %1613, 1
  %1615 = trunc i64 %1614 to i1
  %1616 = zext i1 %1615 to i32
  %1617 = load ptr, ptr %8, align 8, !tbaa !5
  %1618 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1617, i32 0, i32 1
  %1619 = load i64, ptr %1618, align 8
  %1620 = lshr i64 %1619, 55
  %1621 = and i64 %1620, 1
  %1622 = trunc i64 %1621 to i1
  %1623 = zext i1 %1622 to i32
  %1624 = or i32 %1623, %1616
  %1625 = icmp ne i32 %1624, 0
  %1626 = zext i1 %1625 to i64
  %1627 = load i64, ptr %1618, align 8
  %1628 = shl i64 %1626, 55
  %1629 = and i64 %1627, -36028797018963969
  %1630 = or i64 %1629, %1628
  store i64 %1630, ptr %1618, align 8
  %1631 = trunc i64 %1626 to i8
  %1632 = trunc i8 %1631 to i1
  %1633 = load ptr, ptr %8, align 8, !tbaa !5
  %1634 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1633, i32 0, i32 1
  %1635 = load i64, ptr %1634, align 8
  %1636 = lshr i64 %1635, 49
  %1637 = and i64 %1636, 1
  %1638 = trunc i64 %1637 to i1
  br i1 %1638, label %1639, label %1646

1639:                                             ; preds = %1601
  %1640 = load ptr, ptr %9, align 8, !tbaa !5
  %1641 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1640, i32 0, i32 1
  %1642 = load i64, ptr %1641, align 8
  %1643 = lshr i64 %1642, 49
  %1644 = and i64 %1643, 1
  %1645 = trunc i64 %1644 to i1
  br label %1646

1646:                                             ; preds = %1639, %1601
  %1647 = phi i1 [ false, %1601 ], [ %1645, %1639 ]
  %1648 = zext i1 %1647 to i32
  %1649 = load i8, ptr %11, align 1, !tbaa !9, !range !13, !noundef !14
  %1650 = trunc i8 %1649 to i1
  %1651 = zext i1 %1650 to i32
  %1652 = or i32 %1651, %1648
  %1653 = icmp ne i32 %1652, 0
  %1654 = zext i1 %1653 to i8
  store i8 %1654, ptr %11, align 1, !tbaa !9
  %1655 = load ptr, ptr %9, align 8, !tbaa !5
  %1656 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1655, i32 0, i32 1
  %1657 = load i64, ptr %1656, align 8
  %1658 = lshr i64 %1657, 49
  %1659 = and i64 %1658, 1
  %1660 = trunc i64 %1659 to i1
  %1661 = zext i1 %1660 to i32
  %1662 = load ptr, ptr %8, align 8, !tbaa !5
  %1663 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1662, i32 0, i32 1
  %1664 = load i64, ptr %1663, align 8
  %1665 = lshr i64 %1664, 49
  %1666 = and i64 %1665, 1
  %1667 = trunc i64 %1666 to i1
  %1668 = zext i1 %1667 to i32
  %1669 = or i32 %1668, %1661
  %1670 = icmp ne i32 %1669, 0
  %1671 = zext i1 %1670 to i64
  %1672 = load i64, ptr %1663, align 8
  %1673 = shl i64 %1671, 49
  %1674 = and i64 %1672, -562949953421313
  %1675 = or i64 %1674, %1673
  store i64 %1675, ptr %1663, align 8
  %1676 = trunc i64 %1671 to i8
  %1677 = trunc i8 %1676 to i1
  %1678 = load ptr, ptr %8, align 8, !tbaa !5
  %1679 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1678, i32 0, i32 1
  %1680 = load i64, ptr %1679, align 8
  %1681 = lshr i64 %1680, 45
  %1682 = and i64 %1681, 1
  %1683 = trunc i64 %1682 to i1
  br i1 %1683, label %1684, label %1691

1684:                                             ; preds = %1646
  %1685 = load ptr, ptr %9, align 8, !tbaa !5
  %1686 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1685, i32 0, i32 1
  %1687 = load i64, ptr %1686, align 8
  %1688 = lshr i64 %1687, 45
  %1689 = and i64 %1688, 1
  %1690 = trunc i64 %1689 to i1
  br label %1691

1691:                                             ; preds = %1684, %1646
  %1692 = phi i1 [ false, %1646 ], [ %1690, %1684 ]
  %1693 = zext i1 %1692 to i32
  %1694 = load i8, ptr %11, align 1, !tbaa !9, !range !13, !noundef !14
  %1695 = trunc i8 %1694 to i1
  %1696 = zext i1 %1695 to i32
  %1697 = or i32 %1696, %1693
  %1698 = icmp ne i32 %1697, 0
  %1699 = zext i1 %1698 to i8
  store i8 %1699, ptr %11, align 1, !tbaa !9
  %1700 = load ptr, ptr %9, align 8, !tbaa !5
  %1701 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1700, i32 0, i32 1
  %1702 = load i64, ptr %1701, align 8
  %1703 = lshr i64 %1702, 45
  %1704 = and i64 %1703, 1
  %1705 = trunc i64 %1704 to i1
  %1706 = zext i1 %1705 to i32
  %1707 = load ptr, ptr %8, align 8, !tbaa !5
  %1708 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1707, i32 0, i32 1
  %1709 = load i64, ptr %1708, align 8
  %1710 = lshr i64 %1709, 45
  %1711 = and i64 %1710, 1
  %1712 = trunc i64 %1711 to i1
  %1713 = zext i1 %1712 to i32
  %1714 = or i32 %1713, %1706
  %1715 = icmp ne i32 %1714, 0
  %1716 = zext i1 %1715 to i64
  %1717 = load i64, ptr %1708, align 8
  %1718 = shl i64 %1716, 45
  %1719 = and i64 %1717, -35184372088833
  %1720 = or i64 %1719, %1718
  store i64 %1720, ptr %1708, align 8
  %1721 = trunc i64 %1716 to i8
  %1722 = trunc i8 %1721 to i1
  %1723 = load ptr, ptr %8, align 8, !tbaa !5
  %1724 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1723, i32 0, i32 1
  %1725 = load i64, ptr %1724, align 8
  %1726 = lshr i64 %1725, 46
  %1727 = and i64 %1726, 1
  %1728 = trunc i64 %1727 to i1
  br i1 %1728, label %1729, label %1736

1729:                                             ; preds = %1691
  %1730 = load ptr, ptr %9, align 8, !tbaa !5
  %1731 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1730, i32 0, i32 1
  %1732 = load i64, ptr %1731, align 8
  %1733 = lshr i64 %1732, 46
  %1734 = and i64 %1733, 1
  %1735 = trunc i64 %1734 to i1
  br label %1736

1736:                                             ; preds = %1729, %1691
  %1737 = phi i1 [ false, %1691 ], [ %1735, %1729 ]
  %1738 = zext i1 %1737 to i32
  %1739 = load i8, ptr %11, align 1, !tbaa !9, !range !13, !noundef !14
  %1740 = trunc i8 %1739 to i1
  %1741 = zext i1 %1740 to i32
  %1742 = or i32 %1741, %1738
  %1743 = icmp ne i32 %1742, 0
  %1744 = zext i1 %1743 to i8
  store i8 %1744, ptr %11, align 1, !tbaa !9
  %1745 = load ptr, ptr %9, align 8, !tbaa !5
  %1746 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1745, i32 0, i32 1
  %1747 = load i64, ptr %1746, align 8
  %1748 = lshr i64 %1747, 46
  %1749 = and i64 %1748, 1
  %1750 = trunc i64 %1749 to i1
  %1751 = zext i1 %1750 to i32
  %1752 = load ptr, ptr %8, align 8, !tbaa !5
  %1753 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1752, i32 0, i32 1
  %1754 = load i64, ptr %1753, align 8
  %1755 = lshr i64 %1754, 46
  %1756 = and i64 %1755, 1
  %1757 = trunc i64 %1756 to i1
  %1758 = zext i1 %1757 to i32
  %1759 = or i32 %1758, %1751
  %1760 = icmp ne i32 %1759, 0
  %1761 = zext i1 %1760 to i64
  %1762 = load i64, ptr %1753, align 8
  %1763 = shl i64 %1761, 46
  %1764 = and i64 %1762, -70368744177665
  %1765 = or i64 %1764, %1763
  store i64 %1765, ptr %1753, align 8
  %1766 = trunc i64 %1761 to i8
  %1767 = trunc i8 %1766 to i1
  %1768 = load ptr, ptr %8, align 8, !tbaa !5
  %1769 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1768, i32 0, i32 1
  %1770 = load i64, ptr %1769, align 8
  %1771 = lshr i64 %1770, 47
  %1772 = and i64 %1771, 1
  %1773 = trunc i64 %1772 to i1
  br i1 %1773, label %1774, label %1781

1774:                                             ; preds = %1736
  %1775 = load ptr, ptr %9, align 8, !tbaa !5
  %1776 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1775, i32 0, i32 1
  %1777 = load i64, ptr %1776, align 8
  %1778 = lshr i64 %1777, 47
  %1779 = and i64 %1778, 1
  %1780 = trunc i64 %1779 to i1
  br label %1781

1781:                                             ; preds = %1774, %1736
  %1782 = phi i1 [ false, %1736 ], [ %1780, %1774 ]
  %1783 = zext i1 %1782 to i32
  %1784 = load i8, ptr %11, align 1, !tbaa !9, !range !13, !noundef !14
  %1785 = trunc i8 %1784 to i1
  %1786 = zext i1 %1785 to i32
  %1787 = or i32 %1786, %1783
  %1788 = icmp ne i32 %1787, 0
  %1789 = zext i1 %1788 to i8
  store i8 %1789, ptr %11, align 1, !tbaa !9
  %1790 = load ptr, ptr %9, align 8, !tbaa !5
  %1791 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1790, i32 0, i32 1
  %1792 = load i64, ptr %1791, align 8
  %1793 = lshr i64 %1792, 47
  %1794 = and i64 %1793, 1
  %1795 = trunc i64 %1794 to i1
  %1796 = zext i1 %1795 to i32
  %1797 = load ptr, ptr %8, align 8, !tbaa !5
  %1798 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1797, i32 0, i32 1
  %1799 = load i64, ptr %1798, align 8
  %1800 = lshr i64 %1799, 47
  %1801 = and i64 %1800, 1
  %1802 = trunc i64 %1801 to i1
  %1803 = zext i1 %1802 to i32
  %1804 = or i32 %1803, %1796
  %1805 = icmp ne i32 %1804, 0
  %1806 = zext i1 %1805 to i64
  %1807 = load i64, ptr %1798, align 8
  %1808 = shl i64 %1806, 47
  %1809 = and i64 %1807, -140737488355329
  %1810 = or i64 %1809, %1808
  store i64 %1810, ptr %1798, align 8
  %1811 = trunc i64 %1806 to i8
  %1812 = trunc i8 %1811 to i1
  %1813 = load ptr, ptr %8, align 8, !tbaa !5
  %1814 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1813, i32 0, i32 1
  %1815 = load i64, ptr %1814, align 8
  %1816 = lshr i64 %1815, 32
  %1817 = and i64 %1816, 1
  %1818 = trunc i64 %1817 to i1
  br i1 %1818, label %1819, label %1826

1819:                                             ; preds = %1781
  %1820 = load ptr, ptr %9, align 8, !tbaa !5
  %1821 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1820, i32 0, i32 1
  %1822 = load i64, ptr %1821, align 8
  %1823 = lshr i64 %1822, 32
  %1824 = and i64 %1823, 1
  %1825 = trunc i64 %1824 to i1
  br label %1826

1826:                                             ; preds = %1819, %1781
  %1827 = phi i1 [ false, %1781 ], [ %1825, %1819 ]
  %1828 = zext i1 %1827 to i32
  %1829 = load i8, ptr %11, align 1, !tbaa !9, !range !13, !noundef !14
  %1830 = trunc i8 %1829 to i1
  %1831 = zext i1 %1830 to i32
  %1832 = or i32 %1831, %1828
  %1833 = icmp ne i32 %1832, 0
  %1834 = zext i1 %1833 to i8
  store i8 %1834, ptr %11, align 1, !tbaa !9
  %1835 = load ptr, ptr %9, align 8, !tbaa !5
  %1836 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1835, i32 0, i32 1
  %1837 = load i64, ptr %1836, align 8
  %1838 = lshr i64 %1837, 32
  %1839 = and i64 %1838, 1
  %1840 = trunc i64 %1839 to i1
  %1841 = zext i1 %1840 to i32
  %1842 = load ptr, ptr %8, align 8, !tbaa !5
  %1843 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1842, i32 0, i32 1
  %1844 = load i64, ptr %1843, align 8
  %1845 = lshr i64 %1844, 32
  %1846 = and i64 %1845, 1
  %1847 = trunc i64 %1846 to i1
  %1848 = zext i1 %1847 to i32
  %1849 = or i32 %1848, %1841
  %1850 = icmp ne i32 %1849, 0
  %1851 = zext i1 %1850 to i64
  %1852 = load i64, ptr %1843, align 8
  %1853 = shl i64 %1851, 32
  %1854 = and i64 %1852, -4294967297
  %1855 = or i64 %1854, %1853
  store i64 %1855, ptr %1843, align 8
  %1856 = trunc i64 %1851 to i8
  %1857 = trunc i8 %1856 to i1
  %1858 = load ptr, ptr %9, align 8, !tbaa !5
  %1859 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1858, i32 0, i32 17
  %1860 = load i32, ptr %1859, align 4, !tbaa !38
  %1861 = load ptr, ptr %8, align 8, !tbaa !5
  %1862 = getelementptr inbounds %"class.glslang::TQualifier", ptr %1861, i32 0, i32 17
  store i32 %1860, ptr %1862, align 4, !tbaa !38
  %1863 = load ptr, ptr %9, align 8, !tbaa !5
  %1864 = call noundef zeroext i1 @_ZNK7glslang10TQualifier16hasSprivDecorateEv(ptr noundef nonnull align 8 dereferenceable(72) %1863)
  br i1 %1864, label %1865, label %2015

1865:                                             ; preds = %1826
  %1866 = load ptr, ptr %8, align 8, !tbaa !5
  %1867 = call noundef zeroext i1 @_ZNK7glslang10TQualifier16hasSprivDecorateEv(ptr noundef nonnull align 8 dereferenceable(72) %1866)
  br i1 %1867, label %1868, label %2008

1868:                                             ; preds = %1865
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #4
  %1869 = load ptr, ptr %9, align 8, !tbaa !5
  %1870 = call noundef nonnull align 8 dereferenceable(168) ptr @_ZNK7glslang10TQualifier16getSpirvDecorateEv(ptr noundef nonnull align 8 dereferenceable(72) %1869)
  store ptr %1870, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #4
  %1871 = load ptr, ptr %8, align 8, !tbaa !5
  %1872 = call noundef nonnull align 8 dereferenceable(168) ptr @_ZN7glslang10TQualifier16getSpirvDecorateEv(ptr noundef nonnull align 8 dereferenceable(72) %1871)
  store ptr %1872, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #4
  %1873 = load ptr, ptr %12, align 8, !tbaa !5
  %1874 = getelementptr inbounds %"struct.glslang::TSpirvDecorate", ptr %1873, i32 0, i32 0
  store ptr %1874, ptr %14, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #4
  %1875 = load ptr, ptr %14, align 8, !tbaa !5
  %1876 = call ptr @_ZNKSt3mapIiN7glslang7TVectorIPKNS0_20TIntermConstantUnionEEESt4lessIiENS0_14pool_allocatorISt4pairIKiS5_EEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %1875) #4
  %1877 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %15, i32 0, i32 0
  store ptr %1876, ptr %1877, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #4
  %1878 = load ptr, ptr %14, align 8, !tbaa !5
  %1879 = call ptr @_ZNKSt3mapIiN7glslang7TVectorIPKNS0_20TIntermConstantUnionEEESt4lessIiENS0_14pool_allocatorISt4pairIKiS5_EEEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %1878) #4
  %1880 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %16, i32 0, i32 0
  store ptr %1879, ptr %1880, align 8
  br label %1881

1881:                                             ; preds = %1915, %1868
  %1882 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorISt4pairIKiN7glslang7TVectorIPKNS2_20TIntermConstantUnionEEEEESB_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %16) #4
  br i1 %1882, label %1884, label %1883

1883:                                             ; preds = %1881
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #4
  br label %1917

1884:                                             ; preds = %1881
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #4
  %1885 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKiN7glslang7TVectorIPKNS2_20TIntermConstantUnionEEEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %15) #4
  store ptr %1885, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #4
  %1886 = load ptr, ptr %13, align 8, !tbaa !5
  %1887 = getelementptr inbounds %"struct.glslang::TSpirvDecorate", ptr %1886, i32 0, i32 0
  %1888 = load ptr, ptr %17, align 8, !tbaa !5
  %1889 = getelementptr inbounds %"struct.std::pair", ptr %1888, i32 0, i32 0
  %1890 = call ptr @_ZNSt3mapIiN7glslang7TVectorIPKNS0_20TIntermConstantUnionEEESt4lessIiENS0_14pool_allocatorISt4pairIKiS5_EEEE4findERSA_(ptr noundef nonnull align 8 dereferenceable(56) %1887, ptr noundef nonnull align 4 dereferenceable(4) %1889)
  %1891 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.213", ptr %18, i32 0, i32 0
  store ptr %1890, ptr %1891, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #4
  %1892 = load ptr, ptr %13, align 8, !tbaa !5
  %1893 = getelementptr inbounds %"struct.glslang::TSpirvDecorate", ptr %1892, i32 0, i32 0
  %1894 = call ptr @_ZNSt3mapIiN7glslang7TVectorIPKNS0_20TIntermConstantUnionEEESt4lessIiENS0_14pool_allocatorISt4pairIKiS5_EEEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %1893) #4
  %1895 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.213", ptr %19, i32 0, i32 0
  store ptr %1894, ptr %1895, align 8
  %1896 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKiN7glslang7TVectorIPKNS2_20TIntermConstantUnionEEEEESB_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %19) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #4
  br i1 %1896, label %1897, label %1905

1897:                                             ; preds = %1884
  %1898 = load ptr, ptr %7, align 8, !tbaa !5
  %1899 = load ptr, ptr %17, align 8, !tbaa !5
  %1900 = getelementptr inbounds %"struct.std::pair", ptr %1899, i32 0, i32 0
  %1901 = load i32, ptr %1900, align 8, !tbaa !46
  %1902 = load ptr, ptr %36, align 8, !tbaa !11
  %1903 = getelementptr inbounds ptr, ptr %1902, i64 42
  %1904 = load ptr, ptr %1903, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %1904(ptr noundef nonnull align 8 dereferenceable(1176) %36, ptr noundef nonnull align 8 dereferenceable(24) %1898, ptr noundef @.str.425, ptr noundef @.str.426, ptr noundef @.str.427, i32 noundef %1901)
  br label %1914

1905:                                             ; preds = %1884
  %1906 = load ptr, ptr %13, align 8, !tbaa !5
  %1907 = getelementptr inbounds %"struct.glslang::TSpirvDecorate", ptr %1906, i32 0, i32 0
  %1908 = load ptr, ptr %17, align 8, !tbaa !5
  %1909 = call { ptr, i8 } @_ZNSt3mapIiN7glslang7TVectorIPKNS0_20TIntermConstantUnionEEESt4lessIiENS0_14pool_allocatorISt4pairIKiS5_EEEE6insertERKSB_(ptr noundef nonnull align 8 dereferenceable(56) %1907, ptr noundef nonnull align 8 dereferenceable(40) %1908)
  %1910 = getelementptr inbounds { ptr, i8 }, ptr %20, i32 0, i32 0
  %1911 = extractvalue { ptr, i8 } %1909, 0
  store ptr %1911, ptr %1910, align 8
  %1912 = getelementptr inbounds { ptr, i8 }, ptr %20, i32 0, i32 1
  %1913 = extractvalue { ptr, i8 } %1909, 1
  store i8 %1913, ptr %1912, align 8
  br label %1914

1914:                                             ; preds = %1905, %1897
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #4
  br label %1915

1915:                                             ; preds = %1914
  %1916 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt23_Rb_tree_const_iteratorISt4pairIKiN7glslang7TVectorIPKNS2_20TIntermConstantUnionEEEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %15) #4
  br label %1881

1917:                                             ; preds = %1883
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #4
  %1918 = load ptr, ptr %12, align 8, !tbaa !5
  %1919 = getelementptr inbounds %"struct.glslang::TSpirvDecorate", ptr %1918, i32 0, i32 1
  store ptr %1919, ptr %21, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #4
  %1920 = load ptr, ptr %21, align 8, !tbaa !5
  %1921 = call ptr @_ZNKSt3mapIiN7glslang7TVectorIPKNS0_12TIntermTypedEEESt4lessIiENS0_14pool_allocatorISt4pairIKiS5_EEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %1920) #4
  %1922 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator.216", ptr %22, i32 0, i32 0
  store ptr %1921, ptr %1922, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #4
  %1923 = load ptr, ptr %21, align 8, !tbaa !5
  %1924 = call ptr @_ZNKSt3mapIiN7glslang7TVectorIPKNS0_12TIntermTypedEEESt4lessIiENS0_14pool_allocatorISt4pairIKiS5_EEEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %1923) #4
  %1925 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator.216", ptr %23, i32 0, i32 0
  store ptr %1924, ptr %1925, align 8
  br label %1926

1926:                                             ; preds = %1960, %1917
  %1927 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorISt4pairIKiN7glslang7TVectorIPKNS2_12TIntermTypedEEEEESB_(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(8) %23) #4
  br i1 %1927, label %1929, label %1928

1928:                                             ; preds = %1926
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #4
  br label %1962

1929:                                             ; preds = %1926
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #4
  %1930 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKiN7glslang7TVectorIPKNS2_12TIntermTypedEEEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #4
  store ptr %1930, ptr %24, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #4
  %1931 = load ptr, ptr %13, align 8, !tbaa !5
  %1932 = getelementptr inbounds %"struct.glslang::TSpirvDecorate", ptr %1931, i32 0, i32 1
  %1933 = load ptr, ptr %24, align 8, !tbaa !5
  %1934 = getelementptr inbounds %"struct.std::pair.217", ptr %1933, i32 0, i32 0
  %1935 = call ptr @_ZNSt3mapIiN7glslang7TVectorIPKNS0_12TIntermTypedEEESt4lessIiENS0_14pool_allocatorISt4pairIKiS5_EEEE4findERSA_(ptr noundef nonnull align 8 dereferenceable(56) %1932, ptr noundef nonnull align 4 dereferenceable(4) %1934)
  %1936 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.223", ptr %25, i32 0, i32 0
  store ptr %1935, ptr %1936, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #4
  %1937 = load ptr, ptr %13, align 8, !tbaa !5
  %1938 = getelementptr inbounds %"struct.glslang::TSpirvDecorate", ptr %1937, i32 0, i32 1
  %1939 = call ptr @_ZNSt3mapIiN7glslang7TVectorIPKNS0_12TIntermTypedEEESt4lessIiENS0_14pool_allocatorISt4pairIKiS5_EEEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %1938) #4
  %1940 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.223", ptr %26, i32 0, i32 0
  store ptr %1939, ptr %1940, align 8
  %1941 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKiN7glslang7TVectorIPKNS2_12TIntermTypedEEEEESB_(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %26) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #4
  br i1 %1941, label %1942, label %1950

1942:                                             ; preds = %1929
  %1943 = load ptr, ptr %7, align 8, !tbaa !5
  %1944 = load ptr, ptr %24, align 8, !tbaa !5
  %1945 = getelementptr inbounds %"struct.std::pair.217", ptr %1944, i32 0, i32 0
  %1946 = load i32, ptr %1945, align 8, !tbaa !54
  %1947 = load ptr, ptr %36, align 8, !tbaa !11
  %1948 = getelementptr inbounds ptr, ptr %1947, i64 42
  %1949 = load ptr, ptr %1948, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %1949(ptr noundef nonnull align 8 dereferenceable(1176) %36, ptr noundef nonnull align 8 dereferenceable(24) %1943, ptr noundef @.str.425, ptr noundef @.str.428, ptr noundef @.str.427, i32 noundef %1946)
  br label %1959

1950:                                             ; preds = %1929
  %1951 = load ptr, ptr %13, align 8, !tbaa !5
  %1952 = getelementptr inbounds %"struct.glslang::TSpirvDecorate", ptr %1951, i32 0, i32 1
  %1953 = load ptr, ptr %24, align 8, !tbaa !5
  %1954 = call { ptr, i8 } @_ZNSt3mapIiN7glslang7TVectorIPKNS0_12TIntermTypedEEESt4lessIiENS0_14pool_allocatorISt4pairIKiS5_EEEE6insertERKSB_(ptr noundef nonnull align 8 dereferenceable(56) %1952, ptr noundef nonnull align 8 dereferenceable(40) %1953)
  %1955 = getelementptr inbounds { ptr, i8 }, ptr %27, i32 0, i32 0
  %1956 = extractvalue { ptr, i8 } %1954, 0
  store ptr %1956, ptr %1955, align 8
  %1957 = getelementptr inbounds { ptr, i8 }, ptr %27, i32 0, i32 1
  %1958 = extractvalue { ptr, i8 } %1954, 1
  store i8 %1958, ptr %1957, align 8
  br label %1959

1959:                                             ; preds = %1950, %1942
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #4
  br label %1960

1960:                                             ; preds = %1959
  %1961 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt23_Rb_tree_const_iteratorISt4pairIKiN7glslang7TVectorIPKNS2_12TIntermTypedEEEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #4
  br label %1926

1962:                                             ; preds = %1928
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #4
  %1963 = load ptr, ptr %12, align 8, !tbaa !5
  %1964 = getelementptr inbounds %"struct.glslang::TSpirvDecorate", ptr %1963, i32 0, i32 2
  store ptr %1964, ptr %28, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #4
  %1965 = load ptr, ptr %28, align 8, !tbaa !5
  %1966 = call ptr @_ZNKSt3mapIiN7glslang7TVectorIPKNS0_20TIntermConstantUnionEEESt4lessIiENS0_14pool_allocatorISt4pairIKiS5_EEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %1965) #4
  %1967 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %29, i32 0, i32 0
  store ptr %1966, ptr %1967, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #4
  %1968 = load ptr, ptr %28, align 8, !tbaa !5
  %1969 = call ptr @_ZNKSt3mapIiN7glslang7TVectorIPKNS0_20TIntermConstantUnionEEESt4lessIiENS0_14pool_allocatorISt4pairIKiS5_EEEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %1968) #4
  %1970 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %30, i32 0, i32 0
  store ptr %1969, ptr %1970, align 8
  br label %1971

1971:                                             ; preds = %2005, %1962
  %1972 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorISt4pairIKiN7glslang7TVectorIPKNS2_20TIntermConstantUnionEEEEESB_(ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull align 8 dereferenceable(8) %30) #4
  br i1 %1972, label %1974, label %1973

1973:                                             ; preds = %1971
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #4
  br label %2007

1974:                                             ; preds = %1971
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #4
  %1975 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKiN7glslang7TVectorIPKNS2_20TIntermConstantUnionEEEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %29) #4
  store ptr %1975, ptr %31, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #4
  %1976 = load ptr, ptr %13, align 8, !tbaa !5
  %1977 = getelementptr inbounds %"struct.glslang::TSpirvDecorate", ptr %1976, i32 0, i32 0
  %1978 = load ptr, ptr %31, align 8, !tbaa !5
  %1979 = getelementptr inbounds %"struct.std::pair", ptr %1978, i32 0, i32 0
  %1980 = call ptr @_ZNSt3mapIiN7glslang7TVectorIPKNS0_20TIntermConstantUnionEEESt4lessIiENS0_14pool_allocatorISt4pairIKiS5_EEEE4findERSA_(ptr noundef nonnull align 8 dereferenceable(56) %1977, ptr noundef nonnull align 4 dereferenceable(4) %1979)
  %1981 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.213", ptr %32, i32 0, i32 0
  store ptr %1980, ptr %1981, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #4
  %1982 = load ptr, ptr %13, align 8, !tbaa !5
  %1983 = getelementptr inbounds %"struct.glslang::TSpirvDecorate", ptr %1982, i32 0, i32 0
  %1984 = call ptr @_ZNSt3mapIiN7glslang7TVectorIPKNS0_20TIntermConstantUnionEEESt4lessIiENS0_14pool_allocatorISt4pairIKiS5_EEEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %1983) #4
  %1985 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.213", ptr %33, i32 0, i32 0
  store ptr %1984, ptr %1985, align 8
  %1986 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKiN7glslang7TVectorIPKNS2_20TIntermConstantUnionEEEEESB_(ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 8 dereferenceable(8) %33) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #4
  br i1 %1986, label %1987, label %1995

1987:                                             ; preds = %1974
  %1988 = load ptr, ptr %7, align 8, !tbaa !5
  %1989 = load ptr, ptr %31, align 8, !tbaa !5
  %1990 = getelementptr inbounds %"struct.std::pair", ptr %1989, i32 0, i32 0
  %1991 = load i32, ptr %1990, align 8, !tbaa !46
  %1992 = load ptr, ptr %36, align 8, !tbaa !11
  %1993 = getelementptr inbounds ptr, ptr %1992, i64 42
  %1994 = load ptr, ptr %1993, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %1994(ptr noundef nonnull align 8 dereferenceable(1176) %36, ptr noundef nonnull align 8 dereferenceable(24) %1988, ptr noundef @.str.425, ptr noundef @.str.429, ptr noundef @.str.427, i32 noundef %1991)
  br label %2004

1995:                                             ; preds = %1974
  %1996 = load ptr, ptr %13, align 8, !tbaa !5
  %1997 = getelementptr inbounds %"struct.glslang::TSpirvDecorate", ptr %1996, i32 0, i32 0
  %1998 = load ptr, ptr %31, align 8, !tbaa !5
  %1999 = call { ptr, i8 } @_ZNSt3mapIiN7glslang7TVectorIPKNS0_20TIntermConstantUnionEEESt4lessIiENS0_14pool_allocatorISt4pairIKiS5_EEEE6insertERKSB_(ptr noundef nonnull align 8 dereferenceable(56) %1997, ptr noundef nonnull align 8 dereferenceable(40) %1998)
  %2000 = getelementptr inbounds { ptr, i8 }, ptr %34, i32 0, i32 0
  %2001 = extractvalue { ptr, i8 } %1999, 0
  store ptr %2001, ptr %2000, align 8
  %2002 = getelementptr inbounds { ptr, i8 }, ptr %34, i32 0, i32 1
  %2003 = extractvalue { ptr, i8 } %1999, 1
  store i8 %2003, ptr %2002, align 8
  br label %2004

2004:                                             ; preds = %1995, %1987
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #4
  br label %2005

2005:                                             ; preds = %2004
  %2006 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt23_Rb_tree_const_iteratorISt4pairIKiN7glslang7TVectorIPKNS2_20TIntermConstantUnionEEEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %29) #4
  br label %1971

2007:                                             ; preds = %1973
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #4
  br label %2014

2008:                                             ; preds = %1865
  %2009 = load ptr, ptr %9, align 8, !tbaa !5
  %2010 = getelementptr inbounds %"class.glslang::TQualifier", ptr %2009, i32 0, i32 18
  %2011 = load ptr, ptr %2010, align 8, !tbaa !62
  %2012 = load ptr, ptr %8, align 8, !tbaa !5
  %2013 = getelementptr inbounds %"class.glslang::TQualifier", ptr %2012, i32 0, i32 18
  store ptr %2011, ptr %2013, align 8, !tbaa !62
  br label %2014

2014:                                             ; preds = %2008, %2007
  br label %2015

2015:                                             ; preds = %2014, %1826
  %2016 = load i8, ptr %11, align 1, !tbaa !9, !range !13, !noundef !14
  %2017 = trunc i8 %2016 to i1
  br i1 %2017, label %2018, label %2023

2018:                                             ; preds = %2015
  %2019 = load ptr, ptr %7, align 8, !tbaa !5
  %2020 = load ptr, ptr %36, align 8, !tbaa !11
  %2021 = getelementptr inbounds ptr, ptr %2020, i64 42
  %2022 = load ptr, ptr %2021, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %2022(ptr noundef nonnull align 8 dereferenceable(1176) %36, ptr noundef nonnull align 8 dereferenceable(24) %2019, ptr noundef @.str.430, ptr noundef @.str.2, ptr noundef @.str.2)
  br label %2023

2023:                                             ; preds = %2018, %2015
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #4
  ret void
}

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN7glslang27GetPrecisionQualifierStringENS_19TPrecisionQualifierE(i32 noundef) #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang13TParseContext27mergeObjectLayoutQualifiersERNS_10TQualifierERKS1_b(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(72), ptr noundef nonnull align 8 dereferenceable(72), i1 noundef zeroext) #3 align 2

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local ptr @_ZNSt3mapIiN7glslang7TVectorIPKNS0_20TIntermConstantUnionEEESt4lessIiENS0_14pool_allocatorISt4pairIKiS5_EEEE4findERSA_(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 4 dereferenceable(4)) #3 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i8 } @_ZNSt3mapIiN7glslang7TVectorIPKNS0_20TIntermConstantUnionEEESt4lessIiENS0_14pool_allocatorISt4pairIKiS5_EEEE6insertERKSB_(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(40)) #3 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local ptr @_ZNSt3mapIiN7glslang7TVectorIPKNS0_12TIntermTypedEEESt4lessIiENS0_14pool_allocatorISt4pairIKiS5_EEEE4findERSA_(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 4 dereferenceable(4)) #3 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i8 } @_ZNSt3mapIiN7glslang7TVectorIPKNS0_12TIntermTypedEEESt4lessIiENS0_14pool_allocatorISt4pairIKiS5_EEEE6insertERKSB_(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(40)) #3 align 2

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"bool", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"vtable pointer", !8, i64 0}
!13 = !{i8 0, i8 2}
!14 = !{}
!15 = !{!16, !18, i64 24}
!16 = !{!"_ZTSN7glslang14TParseVersionsE", !10, i64 8, !17, i64 12, !6, i64 16, !18, i64 24, !19, i64 28, !20, i64 32, !6, i64 56, !21, i64 64, !32, i64 120, !37, i64 176, !18, i64 180, !6, i64 184}
!17 = !{!"_ZTS8EProfile", !7, i64 0}
!18 = !{!"int", !7, i64 0}
!19 = !{!"_ZTS11EShLanguage", !7, i64 0}
!20 = !{!"_ZTSN7glslang10SpvVersionE", !18, i64 0, !18, i64 4, !18, i64 8, !18, i64 12, !10, i64 16}
!21 = !{!"_ZTSN7glslang4TMapINSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEENS_18TExtensionBehaviorESt4lessIS7_EEE", !22, i64 0}
!22 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEENS4_18TExtensionBehaviorESt4lessIS7_ENS5_ISt4pairIKS7_S8_EEEE", !23, i64 0}
!23 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_NS4_18TExtensionBehaviorEESt10_Select1stISB_ESt4lessIS7_ENS5_ISB_EEE", !24, i64 0}
!24 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_NS4_18TExtensionBehaviorEESt10_Select1stISB_ESt4lessIS7_ENS5_ISB_EEE13_Rb_tree_implISF_Lb1EEE", !25, i64 0, !26, i64 8, !28, i64 16}
!25 = !{!"_ZTSN7glslang14pool_allocatorISt13_Rb_tree_nodeISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_IcEEEENS_18TExtensionBehaviorEEEEE", !6, i64 0}
!26 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEEE", !27, i64 0}
!27 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEE"}
!28 = !{!"_ZTSSt15_Rb_tree_header", !29, i64 0, !31, i64 32}
!29 = !{!"_ZTSSt18_Rb_tree_node_base", !30, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!30 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!31 = !{!"long", !7, i64 0}
!32 = !{!"_ZTSN7glslang4TMapINSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEEjSt4lessIS7_EEE", !33, i64 0}
!33 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEjSt4lessIS7_ENS5_ISt4pairIKS7_jEEEE", !34, i64 0}
!34 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_jESt10_Select1stISA_ESt4lessIS7_ENS5_ISA_EEE", !35, i64 0}
!35 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_jESt10_Select1stISA_ESt4lessIS7_ENS5_ISA_EEE13_Rb_tree_implISE_Lb1EEE", !36, i64 0, !26, i64 8, !28, i64 16}
!36 = !{!"_ZTSN7glslang14pool_allocatorISt13_Rb_tree_nodeISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_IcEEEEjEEEE", !6, i64 0}
!37 = !{!"_ZTS11EShMessages", !7, i64 0}
!38 = !{!39, !18, i64 60}
!39 = !{!"_ZTSN7glslang10TQualifierE", !6, i64 0, !40, i64 8, !41, i64 8, !41, i64 9, !42, i64 11, !10, i64 11, !10, i64 11, !10, i64 11, !10, i64 11, !10, i64 11, !10, i64 12, !10, i64 12, !10, i64 12, !10, i64 12, !10, i64 12, !10, i64 12, !10, i64 12, !10, i64 12, !10, i64 13, !10, i64 13, !10, i64 13, !10, i64 13, !10, i64 13, !10, i64 13, !10, i64 13, !10, i64 13, !10, i64 14, !10, i64 14, !10, i64 14, !10, i64 14, !10, i64 14, !10, i64 14, !10, i64 14, !10, i64 14, !10, i64 15, !10, i64 15, !10, i64 15, !43, i64 15, !44, i64 16, !18, i64 20, !18, i64 24, !18, i64 28, !18, i64 29, !18, i64 29, !18, i64 32, !18, i64 34, !18, i64 35, !18, i64 36, !18, i64 36, !18, i64 38, !18, i64 40, !18, i64 41, !18, i64 42, !45, i64 44, !10, i64 45, !10, i64 46, !10, i64 47, !10, i64 48, !18, i64 52, !10, i64 56, !18, i64 60, !6, i64 64}
!40 = !{!"_ZTSN7glslang17TStorageQualifierE", !7, i64 0}
!41 = !{!"_ZTSN7glslang16TBuiltInVariableE", !7, i64 0}
!42 = !{!"_ZTSN7glslang19TPrecisionQualifierE", !7, i64 0}
!43 = !{!"_ZTSN7glslang13TLayoutMatrixE", !7, i64 0}
!44 = !{!"_ZTSN7glslang14TLayoutPackingE", !7, i64 0}
!45 = !{!"_ZTSN7glslang13TLayoutFormatE", !7, i64 0}
!46 = !{!47, !18, i64 0}
!47 = !{!"_ZTSSt4pairIKiN7glslang7TVectorIPKNS1_20TIntermConstantUnionEEEE", !18, i64 0, !48, i64 8}
!48 = !{!"_ZTSN7glslang7TVectorIPKNS_20TIntermConstantUnionEEE", !49, i64 0}
!49 = !{!"_ZTSSt6vectorIPKN7glslang20TIntermConstantUnionENS0_14pool_allocatorIS3_EEE", !50, i64 0}
!50 = !{!"_ZTSSt12_Vector_baseIPKN7glslang20TIntermConstantUnionENS0_14pool_allocatorIS3_EEE", !51, i64 0}
!51 = !{!"_ZTSNSt12_Vector_baseIPKN7glslang20TIntermConstantUnionENS0_14pool_allocatorIS3_EEE12_Vector_implE", !52, i64 0, !53, i64 8}
!52 = !{!"_ZTSN7glslang14pool_allocatorIPKNS_20TIntermConstantUnionEEE", !6, i64 0}
!53 = !{!"_ZTSNSt12_Vector_baseIPKN7glslang20TIntermConstantUnionENS0_14pool_allocatorIS3_EEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!54 = !{!55, !18, i64 0}
!55 = !{!"_ZTSSt4pairIKiN7glslang7TVectorIPKNS1_12TIntermTypedEEEE", !18, i64 0, !56, i64 8}
!56 = !{!"_ZTSN7glslang7TVectorIPKNS_12TIntermTypedEEE", !57, i64 0}
!57 = !{!"_ZTSSt6vectorIPKN7glslang12TIntermTypedENS0_14pool_allocatorIS3_EEE", !58, i64 0}
!58 = !{!"_ZTSSt12_Vector_baseIPKN7glslang12TIntermTypedENS0_14pool_allocatorIS3_EEE", !59, i64 0}
!59 = !{!"_ZTSNSt12_Vector_baseIPKN7glslang12TIntermTypedENS0_14pool_allocatorIS3_EEE12_Vector_implE", !60, i64 0, !61, i64 8}
!60 = !{!"_ZTSN7glslang14pool_allocatorIPKNS_12TIntermTypedEEE", !6, i64 0}
!61 = !{!"_ZTSNSt12_Vector_baseIPKN7glslang12TIntermTypedENS0_14pool_allocatorIS3_EEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!62 = !{!39, !6, i64 64}


; 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"

%"struct.std::_Rb_tree_const_iterator" = type { ptr }
%"struct.std::_Rb_tree_iterator.213" = type { ptr }
%"struct.std::_Rb_tree_const_iterator.216" = type { ptr }
%"struct.std::_Rb_tree_iterator.223" = type { ptr }

@.str.2 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.94 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.414 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.415 = external hidden unnamed_addr constant [93 x i8], align 1
@.str.416 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.417 = external hidden unnamed_addr constant [89 x i8], align 1
@.str.418 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.419 = external hidden unnamed_addr constant [103 x i8], align 1
@.str.420 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.421 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.422 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.423 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.424 = external hidden unnamed_addr constant [125 x i8], align 1
@.str.425 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.426 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.427 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.428 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.429 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.430 = external hidden unnamed_addr constant [22 x i8], align 1

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN7glslang25GetStorageQualifierStringENS_17TStorageQualifierE(i32 noundef) local_unnamed_addr #2

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN7glslang13TParseContext15mergeQualifiersERKNS_10TSourceLocERNS_10TQualifierERKS4_b(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(72) %2, ptr noundef nonnull align 8 dereferenceable(72) %3, i1 noundef zeroext %4) local_unnamed_addr #3 align 2 {
  %6 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %7 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %8 = alloca %"struct.std::_Rb_tree_iterator.213", align 8
  %9 = alloca %"struct.std::_Rb_tree_iterator.213", align 8
  %10 = alloca %"struct.std::_Rb_tree_const_iterator.216", align 8
  %11 = alloca %"struct.std::_Rb_tree_const_iterator.216", align 8
  %12 = alloca %"struct.std::_Rb_tree_iterator.223", align 8
  %13 = alloca %"struct.std::_Rb_tree_iterator.223", align 8
  %14 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %15 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %16 = alloca %"struct.std::_Rb_tree_iterator.213", align 8
  %17 = alloca %"struct.std::_Rb_tree_iterator.213", align 8
  %18 = tail call noundef zeroext i1 @_ZNK7glslang10TQualifier11isAuxiliaryEv(ptr noundef nonnull align 8 dereferenceable(72) %3)
  br i1 %18, label %19, label %25

19:                                               ; preds = %5
  %20 = tail call noundef zeroext i1 @_ZNK7glslang10TQualifier11isAuxiliaryEv(ptr noundef nonnull align 8 dereferenceable(72) %2)
  br i1 %20, label %21, label %25

21:                                               ; preds = %19
  %22 = load ptr, ptr %0, align 8, !tbaa !5
  %23 = getelementptr inbounds i8, ptr %22, i64 336
  %24 = load ptr, ptr %23, align 8
  tail call void (ptr, ptr, ptr, ptr, ptr, ...) %24(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.414, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.2)
  br label %25

25:                                               ; preds = %21, %19, %5
  %26 = tail call noundef zeroext i1 @_ZNK7glslang10TQualifier15isInterpolationEv(ptr noundef nonnull align 8 dereferenceable(72) %3)
  br i1 %26, label %27, label %33

27:                                               ; preds = %25
  %28 = tail call noundef zeroext i1 @_ZNK7glslang10TQualifier15isInterpolationEv(ptr noundef nonnull align 8 dereferenceable(72) %2)
  br i1 %28, label %29, label %33

29:                                               ; preds = %27
  %30 = load ptr, ptr %0, align 8, !tbaa !5
  %31 = getelementptr inbounds i8, ptr %30, i64 336
  %32 = load ptr, ptr %31, align 8
  tail call void (ptr, ptr, ptr, ptr, ptr, ...) %32(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.415, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.2)
  br label %33

33:                                               ; preds = %29, %27, %25
  br i1 %4, label %124, label %34

34:                                               ; preds = %33
  %35 = tail call noundef zeroext i1 @_ZNK7glslang14TParseVersions11isEsProfileEv(ptr noundef nonnull align 8 dereferenceable(192) %0)
  %36 = getelementptr inbounds i8, ptr %0, i64 24
  %37 = load i32, ptr %36, align 8
  %38 = icmp sgt i32 %37, 419
  %or.cond.not = select i1 %35, i1 true, i1 %38
  br i1 %or.cond.not, label %39, label %43

39:                                               ; preds = %34
  %40 = tail call noundef zeroext i1 @_ZNK7glslang14TParseVersions11isEsProfileEv(ptr noundef nonnull align 8 dereferenceable(192) %0)
  %41 = load i32, ptr %36, align 8
  %42 = icmp slt i32 %41, 310
  %or.cond366 = select i1 %40, i1 %42, i1 false
  br i1 %or.cond366, label %43, label %124

43:                                               ; preds = %39, %34
  %44 = load ptr, ptr %0, align 8, !tbaa !5
  %45 = getelementptr inbounds i8, ptr %44, i64 64
  %46 = load ptr, ptr %45, align 8
  %47 = tail call noundef zeroext i1 %46(ptr noundef nonnull align 8 dereferenceable(192) %0, ptr noundef nonnull @.str.94)
  br i1 %47, label %124, label %48

48:                                               ; preds = %43
  %49 = tail call noundef zeroext i1 @_ZNK7glslang10TQualifier15isNoContractionEv(ptr noundef nonnull align 8 dereferenceable(72) %3)
  br i1 %49, label %50, label %65

50:                                               ; preds = %48
  %51 = getelementptr inbounds i8, ptr %2, i64 8
  %52 = load i64, ptr %51, align 8
  %53 = and i64 %52, 134217728
  %.not = icmp eq i64 %53, 0
  br i1 %.not, label %54, label %61

54:                                               ; preds = %50
  %55 = tail call noundef zeroext i1 @_ZNK7glslang10TQualifier15isInterpolationEv(ptr noundef nonnull align 8 dereferenceable(72) %2)
  br i1 %55, label %61, label %56

56:                                               ; preds = %54
  %57 = tail call noundef zeroext i1 @_ZNK7glslang10TQualifier11isAuxiliaryEv(ptr noundef nonnull align 8 dereferenceable(72) %2)
  br i1 %57, label %61, label %58

58:                                               ; preds = %56
  %59 = load i64, ptr %51, align 8
  %60 = and i64 %59, 117440575
  %or.cond367 = icmp eq i64 %60, 0
  br i1 %or.cond367, label %65, label %61

61:                                               ; preds = %58, %56, %54, %50
  %62 = load ptr, ptr %0, align 8, !tbaa !5
  %63 = getelementptr inbounds i8, ptr %62, i64 336
  %64 = load ptr, ptr %63, align 8
  tail call void (ptr, ptr, ptr, ptr, ptr, ...) %64(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.416, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.2)
  br label %65

65:                                               ; preds = %58, %61, %48
  %66 = getelementptr inbounds i8, ptr %3, i64 8
  %67 = load i64, ptr %66, align 8
  %68 = and i64 %67, 134217728
  %.not285 = icmp eq i64 %68, 0
  br i1 %.not285, label %77, label %69

69:                                               ; preds = %65
  %70 = tail call noundef zeroext i1 @_ZNK7glslang10TQualifier15isInterpolationEv(ptr noundef nonnull align 8 dereferenceable(72) %2)
  br i1 %70, label %.sink.split, label %71

71:                                               ; preds = %69
  %72 = tail call noundef zeroext i1 @_ZNK7glslang10TQualifier11isAuxiliaryEv(ptr noundef nonnull align 8 dereferenceable(72) %2)
  br i1 %72, label %.sink.split, label %73

73:                                               ; preds = %71
  %74 = getelementptr inbounds i8, ptr %2, i64 8
  %75 = load i64, ptr %74, align 8
  %76 = and i64 %75, 117440575
  %or.cond368 = icmp eq i64 %76, 0
  br i1 %or.cond368, label %77, label %.sink.split

77:                                               ; preds = %73, %65
  %78 = tail call noundef zeroext i1 @_ZNK7glslang10TQualifier15isInterpolationEv(ptr noundef nonnull align 8 dereferenceable(72) %3)
  br i1 %78, label %79, label %85

79:                                               ; preds = %77
  %80 = tail call noundef zeroext i1 @_ZNK7glslang10TQualifier11isAuxiliaryEv(ptr noundef nonnull align 8 dereferenceable(72) %2)
  br i1 %80, label %.sink.split, label %81

81:                                               ; preds = %79
  %82 = getelementptr inbounds i8, ptr %2, i64 8
  %83 = load i64, ptr %82, align 8
  %84 = and i64 %83, 117440575
  %or.cond369 = icmp eq i64 %84, 0
  br i1 %or.cond369, label %85, label %.sink.split

85:                                               ; preds = %81, %77
  %86 = tail call noundef zeroext i1 @_ZNK7glslang10TQualifier11isAuxiliaryEv(ptr noundef nonnull align 8 dereferenceable(72) %3)
  br i1 %86, label %87, label %91

87:                                               ; preds = %85
  %88 = getelementptr inbounds i8, ptr %2, i64 8
  %89 = load i64, ptr %88, align 8
  %90 = and i64 %89, 117440575
  %or.cond370 = icmp eq i64 %90, 0
  br i1 %or.cond370, label %91, label %.sink.split

91:                                               ; preds = %87, %85
  %92 = load i64, ptr %66, align 8
  %93 = and i64 %92, 63
  %.not292 = icmp eq i64 %93, 0
  br i1 %.not292, label %101, label %94

94:                                               ; preds = %91
  %95 = getelementptr inbounds i8, ptr %2, i64 8
  %96 = load i64, ptr %95, align 8
  %97 = and i64 %96, 117440512
  %.not293 = icmp eq i64 %97, 0
  br i1 %.not293, label %101, label %.sink.split

.sink.split:                                      ; preds = %94, %87, %79, %81, %69, %71, %73
  %.str.418.sink = phi ptr [ @.str.417, %73 ], [ @.str.417, %71 ], [ @.str.417, %69 ], [ @.str.418, %81 ], [ @.str.418, %79 ], [ @.str.419, %87 ], [ @.str.420, %94 ]
  %98 = load ptr, ptr %0, align 8, !tbaa !5
  %99 = getelementptr inbounds i8, ptr %98, i64 336
  %100 = load ptr, ptr %99, align 8
  tail call void (ptr, ptr, ptr, ptr, ptr, ...) %100(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull %.str.418.sink, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.2)
  br label %101

101:                                              ; preds = %.sink.split, %91, %94
  %102 = tail call noundef zeroext i1 @_ZNK7glslang10TQualifier15isNoContractionEv(ptr noundef nonnull align 8 dereferenceable(72) %3)
  br i1 %102, label %103, label %112

103:                                              ; preds = %101
  %104 = getelementptr inbounds i8, ptr %2, i64 8
  %105 = load i64, ptr %104, align 8
  %106 = trunc i64 %105 to i32
  %107 = and i32 %106, 63
  switch i32 %107, label %112 [
    i32 2, label %108
    i32 14, label %108
    i32 15, label %108
  ]

108:                                              ; preds = %103, %103, %103
  %109 = load ptr, ptr %0, align 8, !tbaa !5
  %110 = getelementptr inbounds i8, ptr %109, i64 336
  %111 = load ptr, ptr %110, align 8
  tail call void (ptr, ptr, ptr, ptr, ptr, ...) %111(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.416, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.2)
  br label %112

112:                                              ; preds = %103, %108, %101
  %113 = load i64, ptr %66, align 8
  %114 = and i64 %113, 63
  %115 = icmp eq i64 %114, 2
  br i1 %115, label %116, label %124

116:                                              ; preds = %112
  %117 = getelementptr inbounds i8, ptr %2, i64 8
  %118 = load i64, ptr %117, align 8
  %119 = and i64 %118, 62
  %switch = icmp eq i64 %119, 14
  br i1 %switch, label %120, label %124

120:                                              ; preds = %116
  %121 = load ptr, ptr %0, align 8, !tbaa !5
  %122 = getelementptr inbounds i8, ptr %121, i64 336
  %123 = load ptr, ptr %122, align 8
  tail call void (ptr, ptr, ptr, ptr, ptr, ...) %123(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.421, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.2)
  br label %124

124:                                              ; preds = %116, %112, %120, %43, %39, %33
  %125 = getelementptr inbounds i8, ptr %2, i64 8
  %126 = load i64, ptr %125, align 8
  %127 = trunc i64 %126 to i32
  %128 = and i32 %127, 63
  switch i32 %128, label %140 [
    i32 0, label %129
    i32 1, label %129
    i32 14, label %135
  ]

129:                                              ; preds = %124, %124
  %130 = getelementptr inbounds i8, ptr %3, i64 8
  %131 = load i64, ptr %130, align 8
  %132 = and i64 %131, 63
  %133 = and i64 %126, -64
  %134 = or disjoint i64 %132, %133
  store i64 %134, ptr %125, align 8
  br label %164

135:                                              ; preds = %124
  %136 = getelementptr inbounds i8, ptr %3, i64 8
  %137 = load i64, ptr %136, align 8
  %138 = and i64 %137, 63
  %139 = icmp eq i64 %138, 15
  br i1 %139, label %145, label %140

140:                                              ; preds = %124, %135
  %141 = and i64 %126, 63
  %.phi.trans.insert = getelementptr inbounds i8, ptr %3, i64 8
  %.pre = load i64, ptr %.phi.trans.insert, align 8
  switch i64 %141, label %.thread396 [
    i64 15, label %142
    i64 14, label %148
    i64 2, label %151
  ]

142:                                              ; preds = %140
  %143 = and i64 %.pre, 63
  %144 = icmp eq i64 %143, 14
  br i1 %144, label %145, label %.thread396

145:                                              ; preds = %142, %135
  %146 = and i64 %126, -64
  %147 = or disjoint i64 %146, 16
  store i64 %147, ptr %125, align 8
  br label %164

148:                                              ; preds = %140
  %149 = and i64 %.pre, 63
  %150 = icmp eq i64 %149, 2
  br i1 %150, label %154, label %.thread396

151:                                              ; preds = %140
  %152 = and i64 %.pre, 63
  %153 = icmp eq i64 %152, 14
  br i1 %153, label %154, label %.thread396

154:                                              ; preds = %151, %148
  %155 = and i64 %126, -64
  %156 = or disjoint i64 %155, 17
  store i64 %156, ptr %125, align 8
  br label %164

.thread396:                                       ; preds = %140, %142, %148, %151
  %157 = trunc i64 %.pre to i32
  %158 = and i32 %157, 63
  %switch395 = icmp ult i32 %158, 2
  br i1 %switch395, label %164, label %159

159:                                              ; preds = %.thread396
  %160 = tail call noundef ptr @_ZN7glslang25GetStorageQualifierStringENS_17TStorageQualifierE(i32 noundef %158)
  %161 = load ptr, ptr %0, align 8, !tbaa !5
  %162 = getelementptr inbounds i8, ptr %161, i64 336
  %163 = load ptr, ptr %162, align 8
  tail call void (ptr, ptr, ptr, ptr, ptr, ...) %163(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.422, ptr noundef %160, ptr noundef nonnull @.str.2)
  br label %164

164:                                              ; preds = %.thread396, %145, %159, %154, %129
  br i1 %4, label %.thread397, label %165

165:                                              ; preds = %164
  %166 = getelementptr inbounds i8, ptr %3, i64 8
  %167 = load i64, ptr %166, align 8
  %168 = trunc i64 %167 to i32
  %169 = lshr i32 %168, 24
  %170 = and i32 %169, 7
  %.not296 = icmp eq i32 %170, 0
  %.pre410 = load i64, ptr %125, align 8
  %171 = and i64 %.pre410, 117440512
  %.not297 = icmp eq i64 %171, 0
  %or.cond = select i1 %.not296, i1 true, i1 %.not297
  br i1 %or.cond, label %177, label %172

172:                                              ; preds = %165
  %173 = tail call noundef ptr @_ZN7glslang27GetPrecisionQualifierStringENS_19TPrecisionQualifierE(i32 noundef %170)
  %174 = load ptr, ptr %0, align 8, !tbaa !5
  %175 = getelementptr inbounds i8, ptr %174, i64 336
  %176 = load ptr, ptr %175, align 8
  tail call void (ptr, ptr, ptr, ptr, ptr, ...) %176(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.423, ptr noundef %173, ptr noundef nonnull @.str.2)
  %.pre409 = load i64, ptr %125, align 8
  br label %177

177:                                              ; preds = %172, %165
  %178 = phi i64 [ %.pre409, %172 ], [ %.pre410, %165 ]
  %179 = and i64 %178, 117440512
  %180 = icmp eq i64 %179, 0
  br i1 %180, label %186, label %.critedge

.thread397:                                       ; preds = %164
  %181 = load i64, ptr %125, align 8
  %182 = and i64 %181, 117440512
  %183 = icmp ne i64 %182, 0
  %.phi.trans.insert411 = getelementptr inbounds i8, ptr %3, i64 8
  %.pre412 = load i64, ptr %.phi.trans.insert411, align 8
  %.pre413 = and i64 %.pre412, 117440512
  %.not298 = icmp eq i64 %.pre413, 0
  %or.cond415 = select i1 %183, i1 %.not298, i1 false
  br i1 %or.cond415, label %.thread399, label %.thread401

.thread401:                                       ; preds = %.thread397
  %184 = and i64 %181, -117440513
  %185 = or disjoint i64 %.pre413, %184
  store i64 %185, ptr %125, align 8
  br label %.thread399

186:                                              ; preds = %177
  %187 = load i64, ptr %166, align 8
  %188 = and i64 %187, 117440512
  %189 = or disjoint i64 %188, %178
  store i64 %189, ptr %125, align 8
  br label %.critedge

.critedge:                                        ; preds = %177, %186
  %190 = phi i64 [ %189, %186 ], [ %178, %177 ]
  %191 = load i64, ptr %166, align 8
  %192 = and i64 %191, 281474976710656
  %.not299 = icmp eq i64 %192, 0
  %193 = and i64 %190, 34902897112121344
  %or.cond374 = icmp eq i64 %193, 0
  %or.cond416 = select i1 %.not299, i1 true, i1 %or.cond374
  br i1 %or.cond416, label %194, label %209

194:                                              ; preds = %.critedge
  %195 = and i64 %191, 1125899906842624
  %.not305 = icmp eq i64 %195, 0
  %196 = and i64 %190, 34058472181989376
  %or.cond378 = icmp eq i64 %196, 0
  %or.cond417 = select i1 %.not305, i1 true, i1 %or.cond378
  br i1 %or.cond417, label %197, label %209

197:                                              ; preds = %194
  %198 = and i64 %191, 2251799813685248
  %.not311 = icmp eq i64 %198, 0
  %199 = and i64 %190, 32932572275146752
  %or.cond382 = icmp eq i64 %199, 0
  %or.cond418 = select i1 %.not311, i1 true, i1 %or.cond382
  br i1 %or.cond418, label %200, label %209

200:                                              ; preds = %197
  %201 = and i64 %191, 4503599627370496
  %.not317 = icmp eq i64 %201, 0
  %202 = and i64 %190, 30680772461461504
  %or.cond386 = icmp eq i64 %202, 0
  %or.cond419 = select i1 %.not317, i1 true, i1 %or.cond386
  br i1 %or.cond419, label %203, label %209

203:                                              ; preds = %200
  %204 = and i64 %191, 9007199254740992
  %.not323 = icmp eq i64 %204, 0
  %205 = and i64 %190, 26177172834091008
  %or.cond390 = icmp eq i64 %205, 0
  %or.cond420 = select i1 %.not323, i1 true, i1 %or.cond390
  br i1 %or.cond420, label %206, label %209

206:                                              ; preds = %203
  %207 = and i64 %191, 18014398509481984
  %.not329 = icmp eq i64 %207, 0
  %208 = and i64 %190, 17169973579350016
  %or.cond394 = icmp eq i64 %208, 0
  %or.cond421 = select i1 %.not329, i1 true, i1 %or.cond394
  br i1 %or.cond421, label %.thread399, label %209

209:                                              ; preds = %206, %203, %200, %197, %194, %.critedge
  %210 = trunc i64 %191 to i32
  %211 = lshr i32 %210, 24
  %212 = and i32 %211, 7
  %213 = tail call noundef ptr @_ZN7glslang27GetPrecisionQualifierStringENS_19TPrecisionQualifierE(i32 noundef %212)
  %214 = load ptr, ptr %0, align 8, !tbaa !5
  %215 = getelementptr inbounds i8, ptr %214, i64 336
  %216 = load ptr, ptr %215, align 8
  tail call void (ptr, ptr, ptr, ptr, ptr, ...) %216(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.424, ptr noundef %213, ptr noundef nonnull @.str.2)
  br label %.thread399

.thread399:                                       ; preds = %.thread397, %.thread401, %209, %206
  tail call void @_ZN7glslang13TParseContext27mergeObjectLayoutQualifiersERNS_10TQualifierERKS1_b(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(72) %2, ptr noundef nonnull align 8 dereferenceable(72) %3, i1 noundef zeroext false)
  %217 = load i64, ptr %125, align 8
  %218 = and i64 %217, 134217728
  %.not335 = icmp ne i64 %218, 0
  %219 = getelementptr inbounds i8, ptr %3, i64 8
  %220 = load i64, ptr %219, align 8
  %221 = and i64 %220, 134217728
  %222 = icmp ne i64 %221, 0
  %223 = select i1 %.not335, i1 %222, i1 false
  %224 = or i64 %221, %217
  store i64 %224, ptr %125, align 8
  %225 = and i64 %217, 268435456
  %.not336 = icmp ne i64 %225, 0
  %226 = load i64, ptr %219, align 8
  %227 = and i64 %226, 268435456
  %228 = icmp ne i64 %227, 0
  %229 = select i1 %.not336, i1 %228, i1 false
  %230 = or i1 %223, %229
  %231 = or i64 %227, %224
  store i64 %231, ptr %125, align 8
  %232 = and i64 %217, 536870912
  %.not337 = icmp ne i64 %232, 0
  %233 = load i64, ptr %219, align 8
  %234 = and i64 %233, 536870912
  %235 = icmp ne i64 %234, 0
  %236 = select i1 %.not337, i1 %235, i1 false
  %237 = or i1 %230, %236
  %238 = or i64 %234, %231
  store i64 %238, ptr %125, align 8
  %239 = and i64 %217, 1073741824
  %.not338 = icmp ne i64 %239, 0
  %240 = load i64, ptr %219, align 8
  %241 = and i64 %240, 1073741824
  %242 = icmp ne i64 %241, 0
  %243 = select i1 %.not338, i1 %242, i1 false
  %244 = or i1 %237, %243
  %245 = or i64 %241, %238
  store i64 %245, ptr %125, align 8
  %246 = and i64 %217, 2147483648
  %.not339 = icmp ne i64 %246, 0
  %247 = load i64, ptr %219, align 8
  %248 = and i64 %247, 2147483648
  %249 = icmp ne i64 %248, 0
  %250 = select i1 %.not339, i1 %249, i1 false
  %251 = or i1 %244, %250
  %252 = or i64 %248, %245
  store i64 %252, ptr %125, align 8
  %253 = and i64 %217, 34359738368
  %.not340 = icmp ne i64 %253, 0
  %254 = load i64, ptr %219, align 8
  %255 = and i64 %254, 34359738368
  %256 = icmp ne i64 %255, 0
  %257 = select i1 %.not340, i1 %256, i1 false
  %258 = or i1 %251, %257
  %259 = or i64 %255, %252
  store i64 %259, ptr %125, align 8
  %260 = and i64 %217, 68719476736
  %.not341 = icmp ne i64 %260, 0
  %261 = load i64, ptr %219, align 8
  %262 = and i64 %261, 68719476736
  %263 = icmp ne i64 %262, 0
  %264 = select i1 %.not341, i1 %263, i1 false
  %265 = or i1 %258, %264
  %266 = or i64 %262, %259
  store i64 %266, ptr %125, align 8
  %267 = and i64 %217, 137438953472
  %.not342 = icmp ne i64 %267, 0
  %268 = load i64, ptr %219, align 8
  %269 = and i64 %268, 137438953472
  %270 = icmp ne i64 %269, 0
  %271 = select i1 %.not342, i1 %270, i1 false
  %272 = or i1 %265, %271
  %273 = or i64 %269, %266
  store i64 %273, ptr %125, align 8
  %274 = and i64 %217, 1099511627776
  %.not343 = icmp ne i64 %274, 0
  %275 = load i64, ptr %219, align 8
  %276 = and i64 %275, 1099511627776
  %277 = icmp ne i64 %276, 0
  %278 = select i1 %.not343, i1 %277, i1 false
  %279 = or i1 %272, %278
  %280 = or i64 %276, %273
  store i64 %280, ptr %125, align 8
  %281 = and i64 %217, 2199023255552
  %.not344 = icmp ne i64 %281, 0
  %282 = load i64, ptr %219, align 8
  %283 = and i64 %282, 2199023255552
  %284 = icmp ne i64 %283, 0
  %285 = select i1 %.not344, i1 %284, i1 false
  %286 = or i1 %279, %285
  %287 = or i64 %283, %280
  store i64 %287, ptr %125, align 8
  %288 = and i64 %217, 4398046511104
  %.not345 = icmp ne i64 %288, 0
  %289 = load i64, ptr %219, align 8
  %290 = and i64 %289, 4398046511104
  %291 = icmp ne i64 %290, 0
  %292 = select i1 %.not345, i1 %291, i1 false
  %293 = or i1 %286, %292
  %294 = or i64 %290, %287
  store i64 %294, ptr %125, align 8
  %295 = and i64 %217, 8796093022208
  %.not346 = icmp ne i64 %295, 0
  %296 = load i64, ptr %219, align 8
  %297 = and i64 %296, 8796093022208
  %298 = icmp ne i64 %297, 0
  %299 = select i1 %.not346, i1 %298, i1 false
  %300 = or i1 %293, %299
  %301 = or i64 %297, %294
  store i64 %301, ptr %125, align 8
  %302 = and i64 %217, 17592186044416
  %.not347 = icmp ne i64 %302, 0
  %303 = load i64, ptr %219, align 8
  %304 = and i64 %303, 17592186044416
  %305 = icmp ne i64 %304, 0
  %306 = select i1 %.not347, i1 %305, i1 false
  %307 = or i1 %300, %306
  %308 = or i64 %304, %301
  store i64 %308, ptr %125, align 8
  %309 = and i64 %217, 281474976710656
  %.not348 = icmp ne i64 %309, 0
  %310 = load i64, ptr %219, align 8
  %311 = and i64 %310, 281474976710656
  %312 = icmp ne i64 %311, 0
  %313 = select i1 %.not348, i1 %312, i1 false
  %314 = or i1 %307, %313
  %315 = or i64 %311, %308
  store i64 %315, ptr %125, align 8
  %316 = and i64 %217, 1125899906842624
  %.not349 = icmp ne i64 %316, 0
  %317 = load i64, ptr %219, align 8
  %318 = and i64 %317, 1125899906842624
  %319 = icmp ne i64 %318, 0
  %320 = select i1 %.not349, i1 %319, i1 false
  %321 = or i1 %314, %320
  %322 = or i64 %318, %315
  store i64 %322, ptr %125, align 8
  %323 = and i64 %217, 2251799813685248
  %.not350 = icmp ne i64 %323, 0
  %324 = load i64, ptr %219, align 8
  %325 = and i64 %324, 2251799813685248
  %326 = icmp ne i64 %325, 0
  %327 = select i1 %.not350, i1 %326, i1 false
  %328 = or i1 %321, %327
  %329 = or i64 %325, %322
  store i64 %329, ptr %125, align 8
  %330 = and i64 %217, 4503599627370496
  %.not351 = icmp ne i64 %330, 0
  %331 = load i64, ptr %219, align 8
  %332 = and i64 %331, 4503599627370496
  %333 = icmp ne i64 %332, 0
  %334 = select i1 %.not351, i1 %333, i1 false
  %335 = or i1 %328, %334
  %336 = or i64 %332, %329
  store i64 %336, ptr %125, align 8
  %337 = and i64 %217, 9007199254740992
  %.not352 = icmp ne i64 %337, 0
  %338 = load i64, ptr %219, align 8
  %339 = and i64 %338, 9007199254740992
  %340 = icmp ne i64 %339, 0
  %341 = select i1 %.not352, i1 %340, i1 false
  %342 = or i1 %335, %341
  %343 = or i64 %339, %336
  store i64 %343, ptr %125, align 8
  %344 = and i64 %217, 18014398509481984
  %.not353 = icmp ne i64 %344, 0
  %345 = load i64, ptr %219, align 8
  %346 = and i64 %345, 18014398509481984
  %347 = icmp ne i64 %346, 0
  %348 = select i1 %.not353, i1 %347, i1 false
  %349 = or i1 %342, %348
  %350 = or i64 %346, %343
  store i64 %350, ptr %125, align 8
  %351 = and i64 %217, 36028797018963968
  %.not354 = icmp ne i64 %351, 0
  %352 = load i64, ptr %219, align 8
  %353 = and i64 %352, 36028797018963968
  %354 = icmp ne i64 %353, 0
  %355 = select i1 %.not354, i1 %354, i1 false
  %356 = or i1 %349, %355
  %357 = or i64 %353, %350
  store i64 %357, ptr %125, align 8
  %358 = and i64 %217, 562949953421312
  %.not355 = icmp ne i64 %358, 0
  %359 = load i64, ptr %219, align 8
  %360 = and i64 %359, 562949953421312
  %361 = icmp ne i64 %360, 0
  %362 = select i1 %.not355, i1 %361, i1 false
  %363 = or i1 %356, %362
  %364 = or i64 %360, %357
  store i64 %364, ptr %125, align 8
  %365 = and i64 %217, 35184372088832
  %.not356 = icmp eq i64 %365, 0
  %366 = load i64, ptr %219, align 8
  %367 = lshr i64 %366, 45
  %368 = trunc nuw nsw i64 %367 to i32
  %369 = and i32 %368, 1
  %370 = select i1 %.not356, i32 0, i32 %369
  %371 = zext i1 %363 to i32
  %372 = or i32 %370, %371
  %373 = and i64 %366, 35184372088832
  %374 = or i64 %373, %364
  store i64 %374, ptr %125, align 8
  %375 = and i64 %217, 70368744177664
  %.not357 = icmp eq i64 %375, 0
  %376 = load i64, ptr %219, align 8
  %377 = lshr i64 %376, 46
  %378 = trunc nuw nsw i64 %377 to i32
  %379 = and i32 %378, 1
  %380 = select i1 %.not357, i32 0, i32 %379
  %381 = or i32 %372, %380
  %382 = and i64 %376, 70368744177664
  %383 = or i64 %382, %374
  store i64 %383, ptr %125, align 8
  %384 = and i64 %217, 140737488355328
  %.not358 = icmp eq i64 %384, 0
  %385 = load i64, ptr %219, align 8
  %386 = lshr i64 %385, 47
  %387 = trunc nuw nsw i64 %386 to i32
  %388 = and i32 %387, 1
  %389 = select i1 %.not358, i32 0, i32 %388
  %390 = or i32 %381, %389
  %391 = and i64 %385, 140737488355328
  %392 = or i64 %391, %383
  store i64 %392, ptr %125, align 8
  %393 = and i64 %217, 4294967296
  %.not359 = icmp eq i64 %393, 0
  %394 = load i64, ptr %219, align 8
  %395 = lshr i64 %394, 32
  %396 = trunc nuw i64 %395 to i32
  %397 = and i32 %396, 1
  %398 = select i1 %.not359, i32 0, i32 %397
  %399 = or i32 %390, %398
  %.not360 = icmp eq i32 %399, 0
  %400 = and i64 %394, 4294967296
  %401 = or i64 %400, %392
  store i64 %401, ptr %125, align 8
  %402 = getelementptr inbounds i8, ptr %3, i64 60
  %403 = load i32, ptr %402, align 4, !tbaa !8
  %404 = getelementptr inbounds i8, ptr %2, i64 60
  store i32 %403, ptr %404, align 4, !tbaa !8
  %405 = tail call noundef zeroext i1 @_ZNK7glslang10TQualifier16hasSprivDecorateEv(ptr noundef nonnull align 8 dereferenceable(72) %3)
  br i1 %405, label %406, label %470

406:                                              ; preds = %.thread399
  %407 = tail call noundef zeroext i1 @_ZNK7glslang10TQualifier16hasSprivDecorateEv(ptr noundef nonnull align 8 dereferenceable(72) %2)
  br i1 %407, label %408, label %466

408:                                              ; preds = %406
  %409 = tail call noundef nonnull align 8 dereferenceable(168) ptr @_ZNK7glslang10TQualifier16getSpirvDecorateEv(ptr noundef nonnull align 8 dereferenceable(72) %3)
  %410 = tail call noundef nonnull align 8 dereferenceable(168) ptr @_ZN7glslang10TQualifier16getSpirvDecorateEv(ptr noundef nonnull align 8 dereferenceable(72) %2)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #4
  %411 = tail call ptr @_ZNKSt3mapIiN7glslang7TVectorIPKNS0_20TIntermConstantUnionEEESt4lessIiENS0_14pool_allocatorISt4pairIKiS5_EEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %409) #4
  store ptr %411, ptr %6, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #4
  %412 = tail call ptr @_ZNKSt3mapIiN7glslang7TVectorIPKNS0_20TIntermConstantUnionEEESt4lessIiENS0_14pool_allocatorISt4pairIKiS5_EEEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %409) #4
  store ptr %412, ptr %7, align 8
  %413 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorISt4pairIKiN7glslang7TVectorIPKNS2_20TIntermConstantUnionEEEEESB_(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %7) #4
  br i1 %413, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %430, %408
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #4
  %414 = getelementptr inbounds i8, ptr %409, i64 56
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #4
  %415 = call ptr @_ZNKSt3mapIiN7glslang7TVectorIPKNS0_12TIntermTypedEEESt4lessIiENS0_14pool_allocatorISt4pairIKiS5_EEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %414) #4
  store ptr %415, ptr %10, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #4
  %416 = call ptr @_ZNKSt3mapIiN7glslang7TVectorIPKNS0_12TIntermTypedEEESt4lessIiENS0_14pool_allocatorISt4pairIKiS5_EEEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %414) #4
  store ptr %416, ptr %11, align 8
  %417 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorISt4pairIKiN7glslang7TVectorIPKNS2_12TIntermTypedEEEEESB_(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef nonnull align 8 dereferenceable(8) %11) #4
  br i1 %417, label %.lr.ph404, label %._crit_edge405

.lr.ph404:                                        ; preds = %._crit_edge
  %418 = getelementptr inbounds i8, ptr %410, i64 56
  br label %437

.lr.ph:                                           ; preds = %408, %430
  %419 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKiN7glslang7TVectorIPKNS2_20TIntermConstantUnionEEEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %6) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #4
  %420 = call ptr @_ZNSt3mapIiN7glslang7TVectorIPKNS0_20TIntermConstantUnionEEESt4lessIiENS0_14pool_allocatorISt4pairIKiS5_EEEE4findERSA_(ptr noundef nonnull align 8 dereferenceable(56) %410, ptr noundef nonnull align 4 dereferenceable(4) %419)
  store ptr %420, ptr %8, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #4
  %421 = call ptr @_ZNSt3mapIiN7glslang7TVectorIPKNS0_20TIntermConstantUnionEEESt4lessIiENS0_14pool_allocatorISt4pairIKiS5_EEEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %410) #4
  store ptr %421, ptr %9, align 8
  %422 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKiN7glslang7TVectorIPKNS2_20TIntermConstantUnionEEEEESB_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %9) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #4
  br i1 %422, label %423, label %428

423:                                              ; preds = %.lr.ph
  %424 = load i32, ptr %419, align 8, !tbaa !20
  %425 = load ptr, ptr %0, align 8, !tbaa !5
  %426 = getelementptr inbounds i8, ptr %425, i64 336
  %427 = load ptr, ptr %426, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %427(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.425, ptr noundef nonnull @.str.426, ptr noundef nonnull @.str.427, i32 noundef %424)
  br label %430

428:                                              ; preds = %.lr.ph
  %429 = call { ptr, i8 } @_ZNSt3mapIiN7glslang7TVectorIPKNS0_20TIntermConstantUnionEEESt4lessIiENS0_14pool_allocatorISt4pairIKiS5_EEEE6insertERKSB_(ptr noundef nonnull align 8 dereferenceable(56) %410, ptr noundef nonnull align 8 dereferenceable(40) %419)
  br label %430

430:                                              ; preds = %428, %423
  %431 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt23_Rb_tree_const_iteratorISt4pairIKiN7glslang7TVectorIPKNS2_20TIntermConstantUnionEEEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %6) #4
  %432 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorISt4pairIKiN7glslang7TVectorIPKNS2_20TIntermConstantUnionEEEEESB_(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %7) #4
  br i1 %432, label %.lr.ph, label %._crit_edge

._crit_edge405:                                   ; preds = %449, %._crit_edge
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #4
  %433 = getelementptr inbounds i8, ptr %409, i64 112
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #4
  %434 = call ptr @_ZNKSt3mapIiN7glslang7TVectorIPKNS0_20TIntermConstantUnionEEESt4lessIiENS0_14pool_allocatorISt4pairIKiS5_EEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %433) #4
  store ptr %434, ptr %14, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #4
  %435 = call ptr @_ZNKSt3mapIiN7glslang7TVectorIPKNS0_20TIntermConstantUnionEEESt4lessIiENS0_14pool_allocatorISt4pairIKiS5_EEEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %433) #4
  store ptr %435, ptr %15, align 8
  %436 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorISt4pairIKiN7glslang7TVectorIPKNS2_20TIntermConstantUnionEEEEESB_(ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef nonnull align 8 dereferenceable(8) %15) #4
  br i1 %436, label %.lr.ph407, label %._crit_edge408

437:                                              ; preds = %.lr.ph404, %449
  %438 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKiN7glslang7TVectorIPKNS2_12TIntermTypedEEEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %10) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #4
  %439 = call ptr @_ZNSt3mapIiN7glslang7TVectorIPKNS0_12TIntermTypedEEESt4lessIiENS0_14pool_allocatorISt4pairIKiS5_EEEE4findERSA_(ptr noundef nonnull align 8 dereferenceable(56) %418, ptr noundef nonnull align 4 dereferenceable(4) %438)
  store ptr %439, ptr %12, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #4
  %440 = call ptr @_ZNSt3mapIiN7glslang7TVectorIPKNS0_12TIntermTypedEEESt4lessIiENS0_14pool_allocatorISt4pairIKiS5_EEEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %418) #4
  store ptr %440, ptr %13, align 8
  %441 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKiN7glslang7TVectorIPKNS2_12TIntermTypedEEEEESB_(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(8) %13) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #4
  br i1 %441, label %442, label %447

442:                                              ; preds = %437
  %443 = load i32, ptr %438, align 8, !tbaa !28
  %444 = load ptr, ptr %0, align 8, !tbaa !5
  %445 = getelementptr inbounds i8, ptr %444, i64 336
  %446 = load ptr, ptr %445, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %446(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.425, ptr noundef nonnull @.str.428, ptr noundef nonnull @.str.427, i32 noundef %443)
  br label %449

447:                                              ; preds = %437
  %448 = call { ptr, i8 } @_ZNSt3mapIiN7glslang7TVectorIPKNS0_12TIntermTypedEEESt4lessIiENS0_14pool_allocatorISt4pairIKiS5_EEEE6insertERKSB_(ptr noundef nonnull align 8 dereferenceable(56) %418, ptr noundef nonnull align 8 dereferenceable(40) %438)
  br label %449

449:                                              ; preds = %447, %442
  %450 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt23_Rb_tree_const_iteratorISt4pairIKiN7glslang7TVectorIPKNS2_12TIntermTypedEEEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %10) #4
  %451 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorISt4pairIKiN7glslang7TVectorIPKNS2_12TIntermTypedEEEEESB_(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef nonnull align 8 dereferenceable(8) %11) #4
  br i1 %451, label %437, label %._crit_edge405

._crit_edge408:                                   ; preds = %463, %._crit_edge405
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #4
  br label %470

.lr.ph407:                                        ; preds = %._crit_edge405, %463
  %452 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKiN7glslang7TVectorIPKNS2_20TIntermConstantUnionEEEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %14) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #4
  %453 = call ptr @_ZNSt3mapIiN7glslang7TVectorIPKNS0_20TIntermConstantUnionEEESt4lessIiENS0_14pool_allocatorISt4pairIKiS5_EEEE4findERSA_(ptr noundef nonnull align 8 dereferenceable(56) %410, ptr noundef nonnull align 4 dereferenceable(4) %452)
  store ptr %453, ptr %16, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #4
  %454 = call ptr @_ZNSt3mapIiN7glslang7TVectorIPKNS0_20TIntermConstantUnionEEESt4lessIiENS0_14pool_allocatorISt4pairIKiS5_EEEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %410) #4
  store ptr %454, ptr %17, align 8
  %455 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKiN7glslang7TVectorIPKNS2_20TIntermConstantUnionEEEEESB_(ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %17) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #4
  br i1 %455, label %456, label %461

456:                                              ; preds = %.lr.ph407
  %457 = load i32, ptr %452, align 8, !tbaa !20
  %458 = load ptr, ptr %0, align 8, !tbaa !5
  %459 = getelementptr inbounds i8, ptr %458, i64 336
  %460 = load ptr, ptr %459, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %460(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.425, ptr noundef nonnull @.str.429, ptr noundef nonnull @.str.427, i32 noundef %457)
  br label %463

461:                                              ; preds = %.lr.ph407
  %462 = call { ptr, i8 } @_ZNSt3mapIiN7glslang7TVectorIPKNS0_20TIntermConstantUnionEEESt4lessIiENS0_14pool_allocatorISt4pairIKiS5_EEEE6insertERKSB_(ptr noundef nonnull align 8 dereferenceable(56) %410, ptr noundef nonnull align 8 dereferenceable(40) %452)
  br label %463

463:                                              ; preds = %461, %456
  %464 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt23_Rb_tree_const_iteratorISt4pairIKiN7glslang7TVectorIPKNS2_20TIntermConstantUnionEEEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %14) #4
  %465 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorISt4pairIKiN7glslang7TVectorIPKNS2_20TIntermConstantUnionEEEEESB_(ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef nonnull align 8 dereferenceable(8) %15) #4
  br i1 %465, label %.lr.ph407, label %._crit_edge408

466:                                              ; preds = %406
  %467 = getelementptr inbounds i8, ptr %3, i64 64
  %468 = load ptr, ptr %467, align 8, !tbaa !36
  %469 = getelementptr inbounds i8, ptr %2, i64 64
  store ptr %468, ptr %469, align 8, !tbaa !36
  br label %470

470:                                              ; preds = %._crit_edge408, %466, %.thread399
  br i1 %.not360, label %475, label %471

471:                                              ; preds = %470
  %472 = load ptr, ptr %0, align 8, !tbaa !5
  %473 = getelementptr inbounds i8, ptr %472, i64 336
  %474 = load ptr, ptr %473, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %474(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.430, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.2)
  br label %475

475:                                              ; preds = %471, %470
  ret void
}

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN7glslang27GetPrecisionQualifierStringENS_19TPrecisionQualifierE(i32 noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local ptr @_ZNSt3mapIiN7glslang7TVectorIPKNS0_20TIntermConstantUnionEEESt4lessIiENS0_14pool_allocatorISt4pairIKiS5_EEEE4findERSA_(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #3 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i8 } @_ZNSt3mapIiN7glslang7TVectorIPKNS0_20TIntermConstantUnionEEESt4lessIiENS0_14pool_allocatorISt4pairIKiS5_EEEE6insertERKSB_(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #3 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local ptr @_ZNSt3mapIiN7glslang7TVectorIPKNS0_12TIntermTypedEEESt4lessIiENS0_14pool_allocatorISt4pairIKiS5_EEEE4findERSA_(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #3 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i8 } @_ZNSt3mapIiN7glslang7TVectorIPKNS0_12TIntermTypedEEESt4lessIiENS0_14pool_allocatorISt4pairIKiS5_EEEE6insertERKSB_(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #3 align 2

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"vtable pointer", !7, i64 0}
!7 = !{!"Simple C++ TBAA"}
!8 = !{!9, !18, i64 60}
!9 = !{!"_ZTSN7glslang10TQualifierE", !10, i64 0, !12, i64 8, !13, i64 8, !13, i64 9, !14, i64 11, !15, i64 11, !15, i64 11, !15, i64 11, !15, i64 11, !15, i64 11, !15, i64 12, !15, i64 12, !15, i64 12, !15, i64 12, !15, i64 12, !15, i64 12, !15, i64 12, !15, i64 12, !15, i64 13, !15, i64 13, !15, i64 13, !15, i64 13, !15, i64 13, !15, i64 13, !15, i64 13, !15, i64 13, !15, i64 14, !15, i64 14, !15, i64 14, !15, i64 14, !15, i64 14, !15, i64 14, !15, i64 14, !15, i64 14, !15, i64 15, !15, i64 15, !15, i64 15, !16, i64 15, !17, i64 16, !18, i64 20, !18, i64 24, !18, i64 28, !18, i64 29, !18, i64 29, !18, i64 32, !18, i64 34, !18, i64 35, !18, i64 36, !18, i64 36, !18, i64 38, !18, i64 40, !18, i64 41, !18, i64 42, !19, i64 44, !15, i64 45, !15, i64 46, !15, i64 47, !15, i64 48, !18, i64 52, !15, i64 56, !18, i64 60, !10, i64 64}
!10 = !{!"any pointer", !11, i64 0}
!11 = !{!"omnipotent char", !7, i64 0}
!12 = !{!"_ZTSN7glslang17TStorageQualifierE", !11, i64 0}
!13 = !{!"_ZTSN7glslang16TBuiltInVariableE", !11, i64 0}
!14 = !{!"_ZTSN7glslang19TPrecisionQualifierE", !11, i64 0}
!15 = !{!"bool", !11, i64 0}
!16 = !{!"_ZTSN7glslang13TLayoutMatrixE", !11, i64 0}
!17 = !{!"_ZTSN7glslang14TLayoutPackingE", !11, i64 0}
!18 = !{!"int", !11, i64 0}
!19 = !{!"_ZTSN7glslang13TLayoutFormatE", !11, i64 0}
!20 = !{!21, !18, i64 0}
!21 = !{!"_ZTSSt4pairIKiN7glslang7TVectorIPKNS1_20TIntermConstantUnionEEEE", !18, i64 0, !22, i64 8}
!22 = !{!"_ZTSN7glslang7TVectorIPKNS_20TIntermConstantUnionEEE", !23, i64 0}
!23 = !{!"_ZTSSt6vectorIPKN7glslang20TIntermConstantUnionENS0_14pool_allocatorIS3_EEE", !24, i64 0}
!24 = !{!"_ZTSSt12_Vector_baseIPKN7glslang20TIntermConstantUnionENS0_14pool_allocatorIS3_EEE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIPKN7glslang20TIntermConstantUnionENS0_14pool_allocatorIS3_EEE12_Vector_implE", !26, i64 0, !27, i64 8}
!26 = !{!"_ZTSN7glslang14pool_allocatorIPKNS_20TIntermConstantUnionEEE", !10, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIPKN7glslang20TIntermConstantUnionENS0_14pool_allocatorIS3_EEE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!28 = !{!29, !18, i64 0}
!29 = !{!"_ZTSSt4pairIKiN7glslang7TVectorIPKNS1_12TIntermTypedEEEE", !18, i64 0, !30, i64 8}
!30 = !{!"_ZTSN7glslang7TVectorIPKNS_12TIntermTypedEEE", !31, i64 0}
!31 = !{!"_ZTSSt6vectorIPKN7glslang12TIntermTypedENS0_14pool_allocatorIS3_EEE", !32, i64 0}
!32 = !{!"_ZTSSt12_Vector_baseIPKN7glslang12TIntermTypedENS0_14pool_allocatorIS3_EEE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseIPKN7glslang12TIntermTypedENS0_14pool_allocatorIS3_EEE12_Vector_implE", !34, i64 0, !35, i64 8}
!34 = !{!"_ZTSN7glslang14pool_allocatorIPKNS_12TIntermTypedEEE", !10, i64 0}
!35 = !{!"_ZTSNSt12_Vector_baseIPKN7glslang12TIntermTypedENS0_14pool_allocatorIS3_EEE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!36 = !{!9, !10, i64 64}


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