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

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

%"class.glslang::TIntermediate" = type { i32, %"class.std::__cxx11::basic_string.1", %"class.std::__cxx11::basic_string.1", %"class.std::__cxx11::list", i32, i32, %"struct.glslang::SpvVersion", ptr, %"class.std::set", %"class.glslang::MustBeAssigned", i32, i32, i32, i8, i8, i8, i8, i8, i8, i8, i8, [3 x i32], [3 x i8], [3 x i32], i64, %"class.std::__cxx11::basic_string.1", %"class.std::__cxx11::basic_string.1", i32, i32, i32, ptr, ptr, i32, i8, i32, i32, i32, i32, i8, i8, i8, i32, i32, i32, i8, i8, i8, i32, i8, i32, i8, %"class.std::vector", i8, i8, i8, i32, i32, i32, i32, i8, %"struct.std::array", %"struct.std::array.12", %"class.std::vector.18", i8, i8, i8, i8, i8, i8, i8, %"class.std::set.23", i32, i8, i8, i8, i8, ptr, ptr, %"class.std::unordered_map", i32, %"class.glslang::TNumericFeatures", %"class.std::unordered_map.34", %"class.std::unordered_set", %"class.std::vector.67", [4 x %"class.std::vector.72"], [2 x %"class.std::vector.77"], %"class.std::set.23", %"class.std::__cxx11::basic_string.1", %"class.std::__cxx11::basic_string.1", %"class.std::map.82", %"class.glslang::TProcesses" }
%"class.std::__cxx11::list" = type { %"class.std::__cxx11::_List_base" }
%"class.std::__cxx11::_List_base" = type { %"struct.std::__cxx11::_List_base<glslang::TCall, std::allocator<glslang::TCall>>::_List_impl" }
%"struct.std::__cxx11::_List_base<glslang::TCall, std::allocator<glslang::TCall>>::_List_impl" = type { %"struct.std::__detail::_List_node_header" }
%"struct.std::__detail::_List_node_header" = type { %"struct.std::__detail::_List_node_base", i64 }
%"struct.std::__detail::_List_node_base" = type { ptr, ptr }
%"struct.glslang::SpvVersion" = type <{ i32, i32, i32, i32, i8, [3 x i8] }>
%"class.std::set" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, std::_Identity<std::__cxx11::basic_string<char>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, std::_Identity<std::__cxx11::basic_string<char>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"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::MustBeAssigned" = type <{ %struct.TBuiltInResource, i8, [3 x i8] }>
%struct.TBuiltInResource = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, %struct.TLimits }
%struct.TLimits = type { i8, i8, i8, i8, i8, i8, i8, i8, i8 }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<glslang::TXfbBuffer, std::allocator<glslang::TXfbBuffer>>::_Vector_impl" }
%"struct.std::_Vector_base<glslang::TXfbBuffer, std::allocator<glslang::TXfbBuffer>>::_Vector_impl" = type { %"struct.std::_Vector_base<glslang::TXfbBuffer, std::allocator<glslang::TXfbBuffer>>::_Vector_impl_data" }
%"struct.std::_Vector_base<glslang::TXfbBuffer, std::allocator<glslang::TXfbBuffer>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.std::array" = type { [6 x i32] }
%"struct.std::array.12" = type { [6 x %"class.std::map"] }
%"class.std::map" = type { %"class.std::_Rb_tree.13" }
%"class.std::_Rb_tree.13" = type { %"struct.std::_Rb_tree<int, std::pair<const int, int>, std::_Select1st<std::pair<const int, int>>, std::less<int>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<int, std::pair<const int, int>, std::_Select1st<std::pair<const int, int>>, std::less<int>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::vector.18" = type { %"struct.std::_Vector_base.19" }
%"struct.std::_Vector_base.19" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::unordered_map" = type { %"class.std::_Hashtable" }
%"class.std::_Hashtable" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"class.glslang::TNumericFeatures" = type { i32 }
%"class.std::unordered_map.34" = type { %"class.std::_Hashtable.35" }
%"class.std::_Hashtable.35" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_set" = type { %"class.std::_Hashtable.48" }
%"class.std::_Hashtable.48" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::vector.67" = type { %"struct.std::_Vector_base.68" }
%"struct.std::_Vector_base.68" = type { %"struct.std::_Vector_base<glslang::TOffsetRange, std::allocator<glslang::TOffsetRange>>::_Vector_impl" }
%"struct.std::_Vector_base<glslang::TOffsetRange, std::allocator<glslang::TOffsetRange>>::_Vector_impl" = type { %"struct.std::_Vector_base<glslang::TOffsetRange, std::allocator<glslang::TOffsetRange>>::_Vector_impl_data" }
%"struct.std::_Vector_base<glslang::TOffsetRange, std::allocator<glslang::TOffsetRange>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.72" = type { %"struct.std::_Vector_base.73" }
%"struct.std::_Vector_base.73" = type { %"struct.std::_Vector_base<glslang::TIoRange, std::allocator<glslang::TIoRange>>::_Vector_impl" }
%"struct.std::_Vector_base<glslang::TIoRange, std::allocator<glslang::TIoRange>>::_Vector_impl" = type { %"struct.std::_Vector_base<glslang::TIoRange, std::allocator<glslang::TIoRange>>::_Vector_impl_data" }
%"struct.std::_Vector_base<glslang::TIoRange, std::allocator<glslang::TIoRange>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.77" = type { %"struct.std::_Vector_base.78" }
%"struct.std::_Vector_base.78" = type { %"struct.std::_Vector_base<glslang::TRange, std::allocator<glslang::TRange>>::_Vector_impl" }
%"struct.std::_Vector_base<glslang::TRange, std::allocator<glslang::TRange>>::_Vector_impl" = type { %"struct.std::_Vector_base<glslang::TRange, std::allocator<glslang::TRange>>::_Vector_impl_data" }
%"struct.std::_Vector_base<glslang::TRange, std::allocator<glslang::TRange>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::set.23" = type { %"class.std::_Rb_tree.24" }
%"class.std::_Rb_tree.24" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, std::_Identity<std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, std::_Identity<std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::__cxx11::basic_string.1" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon.2 }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon.2 = type { i64, [8 x i8] }
%"class.std::map.82" = type { %"class.std::_Rb_tree.83" }
%"class.std::_Rb_tree.83" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.glslang::TProcesses" = type { %"class.std::vector.18" }

@.str.3 = external hidden unnamed_addr constant [19 x i8], align 1

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZNK7glslang13TIntermediate20canImplicitlyPromoteENS_10TBasicTypeES1_NS_9TOperatorE(ptr noundef nonnull align 8 dereferenceable(1784) %0, i32 noundef %1, i32 noundef %2, i32 noundef %3) #2 align 2 {
  %5 = alloca i1, align 1
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i8, align 1
  %11 = alloca i8, align 1
  %12 = alloca i32, align 4
  store ptr %0, ptr %6, align 8, !tbaa !5
  store i32 %1, ptr %7, align 4, !tbaa !9
  store i32 %2, ptr %8, align 4, !tbaa !9
  store i32 %3, ptr %9, align 4, !tbaa !11
  %13 = load ptr, ptr %6, align 8
  %14 = call noundef zeroext i1 @_ZNK7glslang13TIntermediate11isEsProfileEv(ptr noundef nonnull align 8 dereferenceable(1784) %13)
  br i1 %14, label %15, label %19

15:                                               ; preds = %4
  %16 = getelementptr inbounds %"class.glslang::TIntermediate", ptr %13, i32 0, i32 5
  %17 = load i32, ptr %16, align 4, !tbaa !13
  %18 = icmp slt i32 %17, 310
  br i1 %18, label %23, label %19

19:                                               ; preds = %15, %4
  %20 = getelementptr inbounds %"class.glslang::TIntermediate", ptr %13, i32 0, i32 5
  %21 = load i32, ptr %20, align 4, !tbaa !13
  %22 = icmp eq i32 %21, 110
  br i1 %22, label %23, label %24

23:                                               ; preds = %19, %15
  store i1 false, ptr %5, align 1
  br label %276

24:                                               ; preds = %19
  %25 = load i32, ptr %7, align 4, !tbaa !9
  %26 = load i32, ptr %8, align 4, !tbaa !9
  %27 = icmp eq i32 %25, %26
  br i1 %27, label %28, label %29

28:                                               ; preds = %24
  store i1 true, ptr %5, align 1
  br label %276

29:                                               ; preds = %24
  %30 = call noundef i32 @_ZNK7glslang13TIntermediate9getSourceEv(ptr noundef nonnull align 8 dereferenceable(1784) %13)
  %31 = icmp eq i32 %30, 2
  br i1 %31, label %32, label %81

32:                                               ; preds = %29
  call void @llvm.lifetime.start.p0(i64 1, ptr %10) #3
  %33 = load i32, ptr %7, align 4, !tbaa !9
  %34 = icmp eq i32 %33, 1
  br i1 %34, label %47, label %35

35:                                               ; preds = %32
  %36 = load i32, ptr %7, align 4, !tbaa !9
  %37 = icmp eq i32 %36, 2
  br i1 %37, label %47, label %38

38:                                               ; preds = %35
  %39 = load i32, ptr %7, align 4, !tbaa !9
  %40 = icmp eq i32 %39, 8
  br i1 %40, label %47, label %41

41:                                               ; preds = %38
  %42 = load i32, ptr %7, align 4, !tbaa !9
  %43 = icmp eq i32 %42, 9
  br i1 %43, label %47, label %44

44:                                               ; preds = %41
  %45 = load i32, ptr %7, align 4, !tbaa !9
  %46 = icmp eq i32 %45, 12
  br label %47

47:                                               ; preds = %44, %41, %38, %35, %32
  %48 = phi i1 [ true, %41 ], [ true, %38 ], [ true, %35 ], [ true, %32 ], [ %46, %44 ]
  %49 = zext i1 %48 to i8
  store i8 %49, ptr %10, align 1, !tbaa !81
  call void @llvm.lifetime.start.p0(i64 1, ptr %11) #3
  %50 = load i32, ptr %8, align 4, !tbaa !9
  %51 = icmp eq i32 %50, 1
  br i1 %51, label %64, label %52

52:                                               ; preds = %47
  %53 = load i32, ptr %8, align 4, !tbaa !9
  %54 = icmp eq i32 %53, 2
  br i1 %54, label %64, label %55

55:                                               ; preds = %52
  %56 = load i32, ptr %8, align 4, !tbaa !9
  %57 = icmp eq i32 %56, 8
  br i1 %57, label %64, label %58

58:                                               ; preds = %55
  %59 = load i32, ptr %8, align 4, !tbaa !9
  %60 = icmp eq i32 %59, 9
  br i1 %60, label %64, label %61

61:                                               ; preds = %58
  %62 = load i32, ptr %8, align 4, !tbaa !9
  %63 = icmp eq i32 %62, 12
  br label %64

64:                                               ; preds = %61, %58, %55, %52, %47
  %65 = phi i1 [ true, %58 ], [ true, %55 ], [ true, %52 ], [ true, %47 ], [ %63, %61 ]
  %66 = zext i1 %65 to i8
  store i8 %66, ptr %11, align 1, !tbaa !81
  %67 = load i8, ptr %10, align 1, !tbaa !81, !range !82, !noundef !83
  %68 = trunc i8 %67 to i1
  br i1 %68, label %69, label %77

69:                                               ; preds = %64
  %70 = load i8, ptr %11, align 1, !tbaa !81, !range !82, !noundef !83
  %71 = trunc i8 %70 to i1
  br i1 %71, label %72, label %77

72:                                               ; preds = %69
  %73 = load i32, ptr %9, align 4, !tbaa !11
  switch i32 %73, label %75 [
    i32 585, label %74
    i32 586, label %74
    i32 587, label %74
    i32 575, label %74
    i32 576, label %74
    i32 577, label %74
    i32 578, label %74
    i32 580, label %74
    i32 581, label %74
    i32 583, label %74
    i32 584, label %74
    i32 460, label %74
    i32 3, label %74
    i32 8, label %74
    i32 179, label %74
    i32 177, label %74
    i32 178, label %74
    i32 568, label %74
  ]

74:                                               ; preds = %72, %72, %72, %72, %72, %72, %72, %72, %72, %72, %72, %72, %72, %72, %72, %72, %72, %72
  store i1 true, ptr %5, align 1
  store i32 1, ptr %12, align 4
  br label %78

75:                                               ; preds = %72
  br label %76

76:                                               ; preds = %75
  br label %77

77:                                               ; preds = %76, %69, %64
  store i32 0, ptr %12, align 4
  br label %78

78:                                               ; preds = %77, %74
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #3
  %79 = load i32, ptr %12, align 4
  switch i32 %79, label %278 [
    i32 0, label %80
    i32 1, label %276
  ]

80:                                               ; preds = %78
  br label %81

81:                                               ; preds = %80, %29
  %82 = call noundef i32 @_ZNK7glslang13TIntermediate9getSourceEv(ptr noundef nonnull align 8 dereferenceable(1784) %13)
  %83 = icmp eq i32 %82, 2
  br i1 %83, label %84, label %98

84:                                               ; preds = %81
  %85 = load i32, ptr %7, align 4, !tbaa !9
  %86 = icmp eq i32 %85, 12
  br i1 %86, label %87, label %97

87:                                               ; preds = %84
  %88 = load i32, ptr %8, align 4, !tbaa !9
  %89 = icmp eq i32 %88, 8
  br i1 %89, label %96, label %90

90:                                               ; preds = %87
  %91 = load i32, ptr %8, align 4, !tbaa !9
  %92 = icmp eq i32 %91, 9
  br i1 %92, label %96, label %93

93:                                               ; preds = %90
  %94 = load i32, ptr %8, align 4, !tbaa !9
  %95 = icmp eq i32 %94, 1
  br i1 %95, label %96, label %97

96:                                               ; preds = %93, %90, %87
  store i1 true, ptr %5, align 1
  br label %276

97:                                               ; preds = %93, %84
  br label %145

98:                                               ; preds = %81
  %99 = load i32, ptr %7, align 4, !tbaa !9
  %100 = load i32, ptr %8, align 4, !tbaa !9
  %101 = call noundef zeroext i1 @_ZNK7glslang13TIntermediate19isIntegralPromotionENS_10TBasicTypeES1_(ptr noundef nonnull align 8 dereferenceable(1784) %13, i32 noundef %99, i32 noundef %100)
  br i1 %101, label %118, label %102

102:                                              ; preds = %98
  %103 = load i32, ptr %7, align 4, !tbaa !9
  %104 = load i32, ptr %8, align 4, !tbaa !9
  %105 = call noundef zeroext i1 @_ZNK7glslang13TIntermediate13isFPPromotionENS_10TBasicTypeES1_(ptr noundef nonnull align 8 dereferenceable(1784) %13, i32 noundef %103, i32 noundef %104)
  br i1 %105, label %118, label %106

106:                                              ; preds = %102
  %107 = load i32, ptr %7, align 4, !tbaa !9
  %108 = load i32, ptr %8, align 4, !tbaa !9
  %109 = call noundef zeroext i1 @_ZNK7glslang13TIntermediate20isIntegralConversionENS_10TBasicTypeES1_(ptr noundef nonnull align 8 dereferenceable(1784) %13, i32 noundef %107, i32 noundef %108)
  br i1 %109, label %118, label %110

110:                                              ; preds = %106
  %111 = load i32, ptr %7, align 4, !tbaa !9
  %112 = load i32, ptr %8, align 4, !tbaa !9
  %113 = call noundef zeroext i1 @_ZNK7glslang13TIntermediate14isFPConversionENS_10TBasicTypeES1_(ptr noundef nonnull align 8 dereferenceable(1784) %13, i32 noundef %111, i32 noundef %112)
  br i1 %113, label %118, label %114

114:                                              ; preds = %110
  %115 = load i32, ptr %7, align 4, !tbaa !9
  %116 = load i32, ptr %8, align 4, !tbaa !9
  %117 = call noundef zeroext i1 @_ZNK7glslang13TIntermediate22isFPIntegralConversionENS_10TBasicTypeES1_(ptr noundef nonnull align 8 dereferenceable(1784) %13, i32 noundef %115, i32 noundef %116)
  br i1 %117, label %118, label %144

118:                                              ; preds = %114, %110, %106, %102, %98
  %119 = getelementptr inbounds %"class.glslang::TIntermediate", ptr %13, i32 0, i32 80
  %120 = call noundef zeroext i1 @_ZNK7glslang16TNumericFeatures8containsENS0_7featureE(ptr noundef nonnull align 4 dereferenceable(4) %119, i32 noundef 1)
  br i1 %120, label %142, label %121

121:                                              ; preds = %118
  %122 = getelementptr inbounds %"class.glslang::TIntermediate", ptr %13, i32 0, i32 80
  %123 = call noundef zeroext i1 @_ZNK7glslang16TNumericFeatures8containsENS0_7featureE(ptr noundef nonnull align 4 dereferenceable(4) %122, i32 noundef 2)
  br i1 %123, label %142, label %124

124:                                              ; preds = %121
  %125 = getelementptr inbounds %"class.glslang::TIntermediate", ptr %13, i32 0, i32 80
  %126 = call noundef zeroext i1 @_ZNK7glslang16TNumericFeatures8containsENS0_7featureE(ptr noundef nonnull align 4 dereferenceable(4) %125, i32 noundef 4)
  br i1 %126, label %142, label %127

127:                                              ; preds = %124
  %128 = getelementptr inbounds %"class.glslang::TIntermediate", ptr %13, i32 0, i32 80
  %129 = call noundef zeroext i1 @_ZNK7glslang16TNumericFeatures8containsENS0_7featureE(ptr noundef nonnull align 4 dereferenceable(4) %128, i32 noundef 8)
  br i1 %129, label %142, label %130

130:                                              ; preds = %127
  %131 = getelementptr inbounds %"class.glslang::TIntermediate", ptr %13, i32 0, i32 80
  %132 = call noundef zeroext i1 @_ZNK7glslang16TNumericFeatures8containsENS0_7featureE(ptr noundef nonnull align 4 dereferenceable(4) %131, i32 noundef 16)
  br i1 %132, label %142, label %133

133:                                              ; preds = %130
  %134 = getelementptr inbounds %"class.glslang::TIntermediate", ptr %13, i32 0, i32 80
  %135 = call noundef zeroext i1 @_ZNK7glslang16TNumericFeatures8containsENS0_7featureE(ptr noundef nonnull align 4 dereferenceable(4) %134, i32 noundef 32)
  br i1 %135, label %142, label %136

136:                                              ; preds = %133
  %137 = getelementptr inbounds %"class.glslang::TIntermediate", ptr %13, i32 0, i32 80
  %138 = call noundef zeroext i1 @_ZNK7glslang16TNumericFeatures8containsENS0_7featureE(ptr noundef nonnull align 4 dereferenceable(4) %137, i32 noundef 64)
  br i1 %138, label %142, label %139

139:                                              ; preds = %136
  %140 = getelementptr inbounds %"class.glslang::TIntermediate", ptr %13, i32 0, i32 80
  %141 = call noundef zeroext i1 @_ZNK7glslang16TNumericFeatures8containsENS0_7featureE(ptr noundef nonnull align 4 dereferenceable(4) %140, i32 noundef 128)
  br i1 %141, label %142, label %143

142:                                              ; preds = %139, %136, %133, %130, %127, %124, %121, %118
  store i1 true, ptr %5, align 1
  br label %276

143:                                              ; preds = %139
  br label %144

144:                                              ; preds = %143, %114
  br label %145

145:                                              ; preds = %144, %97
  %146 = call noundef zeroext i1 @_ZNK7glslang13TIntermediate11isEsProfileEv(ptr noundef nonnull align 8 dereferenceable(1784) %13)
  br i1 %146, label %147, label %162

147:                                              ; preds = %145
  %148 = load i32, ptr %8, align 4, !tbaa !9
  switch i32 %148, label %161 [
    i32 1, label %149
    i32 9, label %155
  ]

149:                                              ; preds = %147
  %150 = load i32, ptr %7, align 4, !tbaa !9
  switch i32 %150, label %154 [
    i32 8, label %151
    i32 9, label %151
  ]

151:                                              ; preds = %149, %149
  %152 = getelementptr inbounds %"class.glslang::TIntermediate", ptr %13, i32 0, i32 80
  %153 = call noundef zeroext i1 @_ZNK7glslang16TNumericFeatures8containsENS0_7featureE(ptr noundef nonnull align 4 dereferenceable(4) %152, i32 noundef 256)
  store i1 %153, ptr %5, align 1
  br label %276

154:                                              ; preds = %149
  store i1 false, ptr %5, align 1
  br label %276

155:                                              ; preds = %147
  %156 = load i32, ptr %7, align 4, !tbaa !9
  switch i32 %156, label %160 [
    i32 8, label %157
  ]

157:                                              ; preds = %155
  %158 = getelementptr inbounds %"class.glslang::TIntermediate", ptr %13, i32 0, i32 80
  %159 = call noundef zeroext i1 @_ZNK7glslang16TNumericFeatures8containsENS0_7featureE(ptr noundef nonnull align 4 dereferenceable(4) %158, i32 noundef 256)
  store i1 %159, ptr %5, align 1
  br label %276

160:                                              ; preds = %155
  store i1 false, ptr %5, align 1
  br label %276

161:                                              ; preds = %147
  store i1 false, ptr %5, align 1
  br label %276

162:                                              ; preds = %145
  %163 = load i32, ptr %8, align 4, !tbaa !9
  switch i32 %163, label %275 [
    i32 2, label %164
    i32 1, label %200
    i32 9, label %218
    i32 8, label %238
    i32 11, label %247
    i32 10, label %254
    i32 3, label %261
    i32 7, label %268
  ]

164:                                              ; preds = %162
  %165 = load i32, ptr %7, align 4, !tbaa !9
  switch i32 %165, label %199 [
    i32 8, label %166
    i32 9, label %166
    i32 10, label %166
    i32 11, label %166
    i32 1, label %166
    i32 6, label %175
    i32 7, label %175
    i32 3, label %187
  ]

166:                                              ; preds = %164, %164, %164, %164, %164
  %167 = getelementptr inbounds %"class.glslang::TIntermediate", ptr %13, i32 0, i32 5
  %168 = load i32, ptr %167, align 4, !tbaa !13
  %169 = icmp sge i32 %168, 400
  br i1 %169, label %173, label %170

170:                                              ; preds = %166
  %171 = getelementptr inbounds %"class.glslang::TIntermediate", ptr %13, i32 0, i32 80
  %172 = call noundef zeroext i1 @_ZNK7glslang16TNumericFeatures8containsENS0_7featureE(ptr noundef nonnull align 4 dereferenceable(4) %171, i32 noundef 512)
  br label %173

173:                                              ; preds = %170, %166
  %174 = phi i1 [ true, %166 ], [ %172, %170 ]
  store i1 %174, ptr %5, align 1
  br label %276

175:                                              ; preds = %164, %164
  %176 = getelementptr inbounds %"class.glslang::TIntermediate", ptr %13, i32 0, i32 5
  %177 = load i32, ptr %176, align 4, !tbaa !13
  %178 = icmp sge i32 %177, 400
  br i1 %178, label %182, label %179

179:                                              ; preds = %175
  %180 = getelementptr inbounds %"class.glslang::TIntermediate", ptr %13, i32 0, i32 80
  %181 = call noundef zeroext i1 @_ZNK7glslang16TNumericFeatures8containsENS0_7featureE(ptr noundef nonnull align 4 dereferenceable(4) %180, i32 noundef 512)
  br i1 %181, label %182, label %185

182:                                              ; preds = %179, %175
  %183 = getelementptr inbounds %"class.glslang::TIntermediate", ptr %13, i32 0, i32 80
  %184 = call noundef zeroext i1 @_ZNK7glslang16TNumericFeatures8containsENS0_7featureE(ptr noundef nonnull align 4 dereferenceable(4) %183, i32 noundef 1024)
  br label %185

185:                                              ; preds = %182, %179
  %186 = phi i1 [ false, %179 ], [ %184, %182 ]
  store i1 %186, ptr %5, align 1
  br label %276

187:                                              ; preds = %164
  %188 = getelementptr inbounds %"class.glslang::TIntermediate", ptr %13, i32 0, i32 5
  %189 = load i32, ptr %188, align 4, !tbaa !13
  %190 = icmp sge i32 %189, 400
  br i1 %190, label %194, label %191

191:                                              ; preds = %187
  %192 = getelementptr inbounds %"class.glslang::TIntermediate", ptr %13, i32 0, i32 80
  %193 = call noundef zeroext i1 @_ZNK7glslang16TNumericFeatures8containsENS0_7featureE(ptr noundef nonnull align 4 dereferenceable(4) %192, i32 noundef 512)
  br i1 %193, label %194, label %197

194:                                              ; preds = %191, %187
  %195 = getelementptr inbounds %"class.glslang::TIntermediate", ptr %13, i32 0, i32 80
  %196 = call noundef zeroext i1 @_ZNK7glslang16TNumericFeatures8containsENS0_7featureE(ptr noundef nonnull align 4 dereferenceable(4) %195, i32 noundef 2048)
  br label %197

197:                                              ; preds = %194, %191
  %198 = phi i1 [ false, %191 ], [ %196, %194 ]
  store i1 %198, ptr %5, align 1
  br label %276

199:                                              ; preds = %164
  store i1 false, ptr %5, align 1
  br label %276

200:                                              ; preds = %162
  %201 = load i32, ptr %7, align 4, !tbaa !9
  switch i32 %201, label %217 [
    i32 8, label %202
    i32 9, label %202
    i32 12, label %203
    i32 6, label %206
    i32 7, label %206
    i32 3, label %209
  ]

202:                                              ; preds = %200, %200
  store i1 true, ptr %5, align 1
  br label %276

203:                                              ; preds = %200
  %204 = call noundef i32 @_ZNK7glslang13TIntermediate9getSourceEv(ptr noundef nonnull align 8 dereferenceable(1784) %13)
  %205 = icmp eq i32 %204, 2
  store i1 %205, ptr %5, align 1
  br label %276

206:                                              ; preds = %200, %200
  %207 = getelementptr inbounds %"class.glslang::TIntermediate", ptr %13, i32 0, i32 80
  %208 = call noundef zeroext i1 @_ZNK7glslang16TNumericFeatures8containsENS0_7featureE(ptr noundef nonnull align 4 dereferenceable(4) %207, i32 noundef 1024)
  store i1 %208, ptr %5, align 1
  br label %276

209:                                              ; preds = %200
  %210 = getelementptr inbounds %"class.glslang::TIntermediate", ptr %13, i32 0, i32 80
  %211 = call noundef zeroext i1 @_ZNK7glslang16TNumericFeatures8containsENS0_7featureE(ptr noundef nonnull align 4 dereferenceable(4) %210, i32 noundef 2048)
  br i1 %211, label %215, label %212

212:                                              ; preds = %209
  %213 = call noundef i32 @_ZNK7glslang13TIntermediate9getSourceEv(ptr noundef nonnull align 8 dereferenceable(1784) %13)
  %214 = icmp eq i32 %213, 2
  br label %215

215:                                              ; preds = %212, %209
  %216 = phi i1 [ true, %209 ], [ %214, %212 ]
  store i1 %216, ptr %5, align 1
  br label %276

217:                                              ; preds = %200
  store i1 false, ptr %5, align 1
  br label %276

218:                                              ; preds = %162
  %219 = load i32, ptr %7, align 4, !tbaa !9
  switch i32 %219, label %237 [
    i32 8, label %220
    i32 12, label %231
    i32 6, label %234
    i32 7, label %234
  ]

220:                                              ; preds = %218
  %221 = getelementptr inbounds %"class.glslang::TIntermediate", ptr %13, i32 0, i32 5
  %222 = load i32, ptr %221, align 4, !tbaa !13
  %223 = icmp sge i32 %222, 400
  br i1 %223, label %229, label %224

224:                                              ; preds = %220
  %225 = call noundef i32 @_ZNK7glslang13TIntermediate9getSourceEv(ptr noundef nonnull align 8 dereferenceable(1784) %13)
  %226 = icmp eq i32 %225, 2
  br i1 %226, label %229, label %227

227:                                              ; preds = %224
  %228 = call noundef zeroext i1 @_ZNK7glslang13TIntermediate20IsRequestedExtensionEPKc(ptr noundef nonnull align 8 dereferenceable(1784) %13, ptr noundef @.str.3)
  br label %229

229:                                              ; preds = %227, %224, %220
  %230 = phi i1 [ true, %224 ], [ true, %220 ], [ %228, %227 ]
  store i1 %230, ptr %5, align 1
  br label %276

231:                                              ; preds = %218
  %232 = call noundef i32 @_ZNK7glslang13TIntermediate9getSourceEv(ptr noundef nonnull align 8 dereferenceable(1784) %13)
  %233 = icmp eq i32 %232, 2
  store i1 %233, ptr %5, align 1
  br label %276

234:                                              ; preds = %218, %218
  %235 = getelementptr inbounds %"class.glslang::TIntermediate", ptr %13, i32 0, i32 80
  %236 = call noundef zeroext i1 @_ZNK7glslang16TNumericFeatures8containsENS0_7featureE(ptr noundef nonnull align 4 dereferenceable(4) %235, i32 noundef 1024)
  store i1 %236, ptr %5, align 1
  br label %276

237:                                              ; preds = %218
  store i1 false, ptr %5, align 1
  br label %276

238:                                              ; preds = %162
  %239 = load i32, ptr %7, align 4, !tbaa !9
  switch i32 %239, label %246 [
    i32 12, label %240
    i32 6, label %243
  ]

240:                                              ; preds = %238
  %241 = call noundef i32 @_ZNK7glslang13TIntermediate9getSourceEv(ptr noundef nonnull align 8 dereferenceable(1784) %13)
  %242 = icmp eq i32 %241, 2
  store i1 %242, ptr %5, align 1
  br label %276

243:                                              ; preds = %238
  %244 = getelementptr inbounds %"class.glslang::TIntermediate", ptr %13, i32 0, i32 80
  %245 = call noundef zeroext i1 @_ZNK7glslang16TNumericFeatures8containsENS0_7featureE(ptr noundef nonnull align 4 dereferenceable(4) %244, i32 noundef 1024)
  store i1 %245, ptr %5, align 1
  br label %276

246:                                              ; preds = %238
  store i1 false, ptr %5, align 1
  br label %276

247:                                              ; preds = %162
  %248 = load i32, ptr %7, align 4, !tbaa !9
  switch i32 %248, label %253 [
    i32 8, label %249
    i32 9, label %249
    i32 10, label %249
    i32 6, label %250
    i32 7, label %250
  ]

249:                                              ; preds = %247, %247, %247
  store i1 true, ptr %5, align 1
  br label %276

250:                                              ; preds = %247, %247
  %251 = getelementptr inbounds %"class.glslang::TIntermediate", ptr %13, i32 0, i32 80
  %252 = call noundef zeroext i1 @_ZNK7glslang16TNumericFeatures8containsENS0_7featureE(ptr noundef nonnull align 4 dereferenceable(4) %251, i32 noundef 1024)
  store i1 %252, ptr %5, align 1
  br label %276

253:                                              ; preds = %247
  store i1 false, ptr %5, align 1
  br label %276

254:                                              ; preds = %162
  %255 = load i32, ptr %7, align 4, !tbaa !9
  switch i32 %255, label %260 [
    i32 8, label %256
    i32 6, label %257
  ]

256:                                              ; preds = %254
  store i1 true, ptr %5, align 1
  br label %276

257:                                              ; preds = %254
  %258 = getelementptr inbounds %"class.glslang::TIntermediate", ptr %13, i32 0, i32 80
  %259 = call noundef zeroext i1 @_ZNK7glslang16TNumericFeatures8containsENS0_7featureE(ptr noundef nonnull align 4 dereferenceable(4) %258, i32 noundef 1024)
  store i1 %259, ptr %5, align 1
  br label %276

260:                                              ; preds = %254
  store i1 false, ptr %5, align 1
  br label %276

261:                                              ; preds = %162
  %262 = load i32, ptr %7, align 4, !tbaa !9
  switch i32 %262, label %266 [
    i32 6, label %263
    i32 7, label %263
  ]

263:                                              ; preds = %261, %261
  %264 = getelementptr inbounds %"class.glslang::TIntermediate", ptr %13, i32 0, i32 80
  %265 = call noundef zeroext i1 @_ZNK7glslang16TNumericFeatures8containsENS0_7featureE(ptr noundef nonnull align 4 dereferenceable(4) %264, i32 noundef 1024)
  store i1 %265, ptr %5, align 1
  br label %276

266:                                              ; preds = %261
  br label %267

267:                                              ; preds = %266
  store i1 false, ptr %5, align 1
  br label %276

268:                                              ; preds = %162
  %269 = load i32, ptr %7, align 4, !tbaa !9
  switch i32 %269, label %273 [
    i32 6, label %270
  ]

270:                                              ; preds = %268
  %271 = getelementptr inbounds %"class.glslang::TIntermediate", ptr %13, i32 0, i32 80
  %272 = call noundef zeroext i1 @_ZNK7glslang16TNumericFeatures8containsENS0_7featureE(ptr noundef nonnull align 4 dereferenceable(4) %271, i32 noundef 1024)
  store i1 %272, ptr %5, align 1
  br label %276

273:                                              ; preds = %268
  br label %274

274:                                              ; preds = %273
  store i1 false, ptr %5, align 1
  br label %276

275:                                              ; preds = %162
  store i1 false, ptr %5, align 1
  br label %276

276:                                              ; preds = %275, %274, %270, %267, %263, %260, %257, %256, %253, %250, %249, %246, %243, %240, %237, %234, %231, %229, %217, %215, %206, %203, %202, %199, %197, %185, %173, %161, %160, %157, %154, %151, %142, %96, %78, %28, %23
  %277 = load i1, ptr %5, align 1
  ret i1 %277

278:                                              ; preds = %78
  unreachable
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK7glslang16TNumericFeatures8containsENS0_7featureE(ptr noundef nonnull align 4 dereferenceable(4), i32 noundef) #1 align 2

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

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

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

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

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

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

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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 = !{!"_ZTSN7glslang10TBasicTypeE", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"_ZTSN7glslang9TOperatorE", !7, i64 0}
!13 = !{!14, !25, i64 100}
!14 = !{!"_ZTSN7glslang13TIntermediateE", !15, i64 0, !16, i64 8, !16, i64 40, !19, i64 72, !24, i64 96, !25, i64 100, !26, i64 104, !6, i64 128, !28, i64 136, !36, i64 184, !25, i64 572, !25, i64 576, !25, i64 580, !27, i64 584, !27, i64 585, !27, i64 586, !27, i64 587, !27, i64 588, !27, i64 589, !27, i64 590, !27, i64 591, !7, i64 592, !7, i64 604, !7, i64 608, !39, i64 624, !16, i64 632, !16, i64 664, !25, i64 696, !25, i64 700, !25, i64 704, !6, i64 712, !6, i64 720, !40, i64 728, !27, i64 732, !25, i64 736, !25, i64 740, !41, i64 744, !41, i64 748, !27, i64 752, !27, i64 753, !27, i64 754, !42, i64 756, !43, i64 760, !44, i64 764, !27, i64 768, !27, i64 769, !27, i64 770, !45, i64 772, !27, i64 776, !25, i64 780, !27, i64 784, !46, i64 792, !27, i64 816, !27, i64 817, !27, i64 818, !25, i64 820, !50, i64 824, !25, i64 828, !25, i64 832, !27, i64 836, !51, i64 840, !52, i64 864, !53, i64 1152, !27, i64 1176, !27, i64 1177, !27, i64 1178, !27, i64 1179, !27, i64 1180, !27, i64 1181, !27, i64 1182, !57, i64 1184, !62, i64 1232, !27, i64 1236, !27, i64 1237, !27, i64 1238, !27, i64 1239, !6, i64 1240, !6, i64 1248, !63, i64 1256, !25, i64 1312, !68, i64 1316, !69, i64 1320, !71, i64 1376, !73, i64 1432, !7, i64 1456, !7, i64 1552, !57, i64 1600, !16, i64 1648, !16, i64 1680, !77, i64 1712, !80, i64 1760}
!15 = !{!"_ZTS11EShLanguage", !7, i64 0}
!16 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !17, i64 0, !18, i64 8, !7, i64 16}
!17 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!18 = !{!"long", !7, i64 0}
!19 = !{!"_ZTSNSt7__cxx114listIN7glslang5TCallESaIS2_EEE", !20, i64 0}
!20 = !{!"_ZTSNSt7__cxx1110_List_baseIN7glslang5TCallESaIS2_EEE", !21, i64 0}
!21 = !{!"_ZTSNSt7__cxx1110_List_baseIN7glslang5TCallESaIS2_EE10_List_implE", !22, i64 0}
!22 = !{!"_ZTSNSt8__detail17_List_node_headerE", !23, i64 0, !18, i64 16}
!23 = !{!"_ZTSNSt8__detail15_List_node_baseE", !6, i64 0, !6, i64 8}
!24 = !{!"_ZTS8EProfile", !7, i64 0}
!25 = !{!"int", !7, i64 0}
!26 = !{!"_ZTSN7glslang10SpvVersionE", !25, i64 0, !25, i64 4, !25, i64 8, !25, i64 12, !27, i64 16}
!27 = !{!"bool", !7, i64 0}
!28 = !{!"_ZTSSt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIS5_ESaIS5_EE", !29, i64 0}
!29 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St9_IdentityIS5_ESt4lessIS5_ESaIS5_EE", !30, i64 0}
!30 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St9_IdentityIS5_ESt4lessIS5_ESaIS5_EE13_Rb_tree_implIS9_Lb1EEE", !31, i64 0, !33, i64 8}
!31 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !32, i64 0}
!32 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!33 = !{!"_ZTSSt15_Rb_tree_header", !34, i64 0, !18, i64 32}
!34 = !{!"_ZTSSt18_Rb_tree_node_base", !35, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!35 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!36 = !{!"_ZTSN7glslang14MustBeAssignedI16TBuiltInResourceEE", !37, i64 0, !27, i64 384}
!37 = !{!"_ZTS16TBuiltInResource", !25, i64 0, !25, i64 4, !25, i64 8, !25, i64 12, !25, i64 16, !25, i64 20, !25, i64 24, !25, i64 28, !25, i64 32, !25, i64 36, !25, i64 40, !25, i64 44, !25, i64 48, !25, i64 52, !25, i64 56, !25, i64 60, !25, i64 64, !25, i64 68, !25, i64 72, !25, i64 76, !25, i64 80, !25, i64 84, !25, i64 88, !25, i64 92, !25, i64 96, !25, i64 100, !25, i64 104, !25, i64 108, !25, i64 112, !25, i64 116, !25, i64 120, !25, i64 124, !25, i64 128, !25, i64 132, !25, i64 136, !25, i64 140, !25, i64 144, !25, i64 148, !25, i64 152, !25, i64 156, !25, i64 160, !25, i64 164, !25, i64 168, !25, i64 172, !25, i64 176, !25, i64 180, !25, i64 184, !25, i64 188, !25, i64 192, !25, i64 196, !25, i64 200, !25, i64 204, !25, i64 208, !25, i64 212, !25, i64 216, !25, i64 220, !25, i64 224, !25, i64 228, !25, i64 232, !25, i64 236, !25, i64 240, !25, i64 244, !25, i64 248, !25, i64 252, !25, i64 256, !25, i64 260, !25, i64 264, !25, i64 268, !25, i64 272, !25, i64 276, !25, i64 280, !25, i64 284, !25, i64 288, !25, i64 292, !25, i64 296, !25, i64 300, !25, i64 304, !25, i64 308, !25, i64 312, !25, i64 316, !25, i64 320, !25, i64 324, !25, i64 328, !25, i64 332, !25, i64 336, !25, i64 340, !25, i64 344, !25, i64 348, !25, i64 352, !25, i64 356, !25, i64 360, !25, i64 364, !25, i64 368, !38, i64 372}
!38 = !{!"_ZTS7TLimits", !27, i64 0, !27, i64 1, !27, i64 2, !27, i64 3, !27, i64 4, !27, i64 5, !27, i64 6, !27, i64 7, !27, i64 8}
!39 = !{!"long long", !7, i64 0}
!40 = !{!"_ZTSN7glslang9EShSourceE", !7, i64 0}
!41 = !{!"_ZTSN7glslang15TLayoutGeometryE", !7, i64 0}
!42 = !{!"_ZTSN7glslang14TVertexSpacingE", !7, i64 0}
!43 = !{!"_ZTSN7glslang12TVertexOrderE", !7, i64 0}
!44 = !{!"_ZTSN7glslang18TInterlockOrderingE", !7, i64 0}
!45 = !{!"_ZTSN7glslang12TLayoutDepthE", !7, i64 0}
!46 = !{!"_ZTSSt6vectorIN7glslang10TXfbBufferESaIS1_EE", !47, i64 0}
!47 = !{!"_ZTSSt12_Vector_baseIN7glslang10TXfbBufferESaIS1_EE", !48, i64 0}
!48 = !{!"_ZTSNSt12_Vector_baseIN7glslang10TXfbBufferESaIS1_EE12_Vector_implE", !49, i64 0}
!49 = !{!"_ZTSNSt12_Vector_baseIN7glslang10TXfbBufferESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!50 = !{!"_ZTSN7glslang21ComputeDerivativeModeE", !7, i64 0}
!51 = !{!"_ZTSSt5arrayIjLm6EE", !7, i64 0}
!52 = !{!"_ZTSSt5arrayISt3mapIiiSt4lessIiESaISt4pairIKiiEEELm6EE", !7, i64 0}
!53 = !{!"_ZTSSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !54, i64 0}
!54 = !{!"_ZTSSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !55, i64 0}
!55 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_Vector_implE", !56, i64 0}
!56 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!57 = !{!"_ZTSSt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4lessIS7_ESaIS7_EE", !58, i64 0}
!58 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEES7_St9_IdentityIS7_ESt4lessIS7_ESaIS7_EE", !59, i64 0}
!59 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEES7_St9_IdentityIS7_ESt4lessIS7_ESaIS7_EE13_Rb_tree_implISB_Lb1EEE", !60, i64 0, !33, i64 8}
!60 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEEE", !61, i64 0}
!61 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEE"}
!62 = !{!"_ZTS30EShTextureSamplerTransformMode", !7, i64 0}
!63 = !{!"_ZTSSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiSt4hashIS5_ESt8equal_toIS5_ESaISt4pairIKS5_iEEE", !64, i64 0}
!64 = !{!"_ZTSSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_iESaIS8_ENSt8__detail10_Select1stESt8equal_toIS5_ESt4hashIS5_ENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE", !6, i64 0, !18, i64 8, !65, i64 16, !18, i64 24, !66, i64 32, !6, i64 48}
!65 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!66 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !67, i64 0, !18, i64 8}
!67 = !{!"float", !7, i64 0}
!68 = !{!"_ZTSN7glslang16TNumericFeaturesE", !25, i64 0}
!69 = !{!"_ZTSSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN7glslang18TBlockStorageClassESt4hashIS5_ESt8equal_toIS5_ESaISt4pairIKS5_S7_EEE", !70, i64 0}
!70 = !{!"_ZTSSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N7glslang18TBlockStorageClassEESaISA_ENSt8__detail10_Select1stESt8equal_toIS5_ESt4hashIS5_ENSC_18_Mod_range_hashingENSC_20_Default_ranged_hashENSC_20_Prime_rehash_policyENSC_17_Hashtable_traitsILb1ELb0ELb1EEEE", !6, i64 0, !18, i64 8, !65, i64 16, !18, i64 24, !66, i64 32, !6, i64 48}
!71 = !{!"_ZTSSt13unordered_setIiSt4hashIiESt8equal_toIiESaIiEE", !72, i64 0}
!72 = !{!"_ZTSSt10_HashtableIiiSaIiENSt8__detail9_IdentityESt8equal_toIiESt4hashIiENS1_18_Mod_range_hashingENS1_20_Default_ranged_hashENS1_20_Prime_rehash_policyENS1_17_Hashtable_traitsILb0ELb1ELb1EEEE", !6, i64 0, !18, i64 8, !65, i64 16, !18, i64 24, !66, i64 32, !6, i64 48}
!73 = !{!"_ZTSSt6vectorIN7glslang12TOffsetRangeESaIS1_EE", !74, i64 0}
!74 = !{!"_ZTSSt12_Vector_baseIN7glslang12TOffsetRangeESaIS1_EE", !75, i64 0}
!75 = !{!"_ZTSNSt12_Vector_baseIN7glslang12TOffsetRangeESaIS1_EE12_Vector_implE", !76, i64 0}
!76 = !{!"_ZTSNSt12_Vector_baseIN7glslang12TOffsetRangeESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!77 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEE", !78, i64 0}
!78 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_S5_ESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE", !79, i64 0}
!79 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_S5_ESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE13_Rb_tree_implISC_Lb1EEE", !31, i64 0, !33, i64 8}
!80 = !{!"_ZTSN7glslang10TProcessesE", !53, i64 0}
!81 = !{!27, !27, i64 0}
!82 = !{i8 0, i8 2}
!83 = !{}


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

@.str.3 = external hidden unnamed_addr constant [19 x i8], align 1

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZNK7glslang13TIntermediate20canImplicitlyPromoteENS_10TBasicTypeES1_NS_9TOperatorE(ptr noundef nonnull align 8 dereferenceable(1784) %0, i32 noundef %1, i32 noundef %2, i32 noundef %3) local_unnamed_addr #1 align 2 {
  %5 = tail call noundef zeroext i1 @_ZNK7glslang13TIntermediate11isEsProfileEv(ptr noundef nonnull align 8 dereferenceable(1784) %0)
  %6 = getelementptr inbounds i8, ptr %0, i64 100
  %7 = load i32, ptr %6, align 4
  %8 = icmp slt i32 %7, 310
  %or.cond64 = select i1 %5, i1 %8, i1 false
  %9 = icmp eq i32 %7, 110
  %or.cond = select i1 %or.cond64, i1 true, i1 %9
  br i1 %or.cond, label %142, label %10

10:                                               ; preds = %4
  %11 = icmp eq i32 %1, %2
  br i1 %11, label %142, label %12

12:                                               ; preds = %10
  %13 = tail call noundef i32 @_ZNK7glslang13TIntermediate9getSourceEv(ptr noundef nonnull align 8 dereferenceable(1784) %0)
  %14 = icmp eq i32 %13, 2
  br i1 %14, label %switch.edge, label %.thread

switch.edge:                                      ; preds = %12
  switch i32 %2, label %.thread [
    i32 9, label %switch.edge65
    i32 8, label %switch.edge65
    i32 2, label %switch.edge65
    i32 1, label %switch.edge65
    i32 12, label %switch.edge65
  ]

switch.edge65:                                    ; preds = %switch.edge, %switch.edge, %switch.edge, %switch.edge, %switch.edge
  %15 = icmp ugt i32 %1, 12
  %switch.cast = trunc i32 %1 to i13
  %switch.downshift = lshr i13 3321, %switch.cast
  %switch.masked = trunc i13 %switch.downshift to i1
  %.not = select i1 %15, i1 true, i1 %switch.masked
  br i1 %.not, label %.thread, label %16

16:                                               ; preds = %switch.edge65
  switch i32 %3, label %.thread [
    i32 585, label %142
    i32 586, label %142
    i32 587, label %142
    i32 575, label %142
    i32 576, label %142
    i32 577, label %142
    i32 578, label %142
    i32 580, label %142
    i32 581, label %142
    i32 583, label %142
    i32 584, label %142
    i32 460, label %142
    i32 3, label %142
    i32 8, label %142
    i32 179, label %142
    i32 177, label %142
    i32 178, label %142
    i32 568, label %142
  ]

.thread:                                          ; preds = %switch.edge, %switch.edge65, %16, %12
  %17 = tail call noundef i32 @_ZNK7glslang13TIntermediate9getSourceEv(ptr noundef nonnull align 8 dereferenceable(1784) %0)
  %18 = icmp eq i32 %17, 2
  br i1 %18, label %19, label %22

19:                                               ; preds = %.thread
  %20 = icmp eq i32 %1, 12
  br i1 %20, label %21, label %49

21:                                               ; preds = %19
  switch i32 %2, label %49 [
    i32 9, label %142
    i32 8, label %142
    i32 1, label %142
  ]

22:                                               ; preds = %.thread
  %23 = tail call noundef zeroext i1 @_ZNK7glslang13TIntermediate19isIntegralPromotionENS_10TBasicTypeES1_(ptr noundef nonnull align 8 dereferenceable(1784) %0, i32 noundef %1, i32 noundef %2)
  br i1 %23, label %32, label %24

24:                                               ; preds = %22
  %25 = tail call noundef zeroext i1 @_ZNK7glslang13TIntermediate13isFPPromotionENS_10TBasicTypeES1_(ptr noundef nonnull align 8 dereferenceable(1784) %0, i32 noundef %1, i32 noundef %2)
  br i1 %25, label %32, label %26

26:                                               ; preds = %24
  %27 = tail call noundef zeroext i1 @_ZNK7glslang13TIntermediate20isIntegralConversionENS_10TBasicTypeES1_(ptr noundef nonnull align 8 dereferenceable(1784) %0, i32 noundef %1, i32 noundef %2)
  br i1 %27, label %32, label %28

28:                                               ; preds = %26
  %29 = tail call noundef zeroext i1 @_ZNK7glslang13TIntermediate14isFPConversionENS_10TBasicTypeES1_(ptr noundef nonnull align 8 dereferenceable(1784) %0, i32 noundef %1, i32 noundef %2)
  br i1 %29, label %32, label %30

30:                                               ; preds = %28
  %31 = tail call noundef zeroext i1 @_ZNK7glslang13TIntermediate22isFPIntegralConversionENS_10TBasicTypeES1_(ptr noundef nonnull align 8 dereferenceable(1784) %0, i32 noundef %1, i32 noundef %2)
  br i1 %31, label %32, label %49

32:                                               ; preds = %30, %28, %26, %24, %22
  %33 = getelementptr inbounds i8, ptr %0, i64 1316
  %34 = tail call noundef zeroext i1 @_ZNK7glslang16TNumericFeatures8containsENS0_7featureE(ptr noundef nonnull align 4 dereferenceable(4) %33, i32 noundef 1)
  br i1 %34, label %142, label %35

35:                                               ; preds = %32
  %36 = tail call noundef zeroext i1 @_ZNK7glslang16TNumericFeatures8containsENS0_7featureE(ptr noundef nonnull align 4 dereferenceable(4) %33, i32 noundef 2)
  br i1 %36, label %142, label %37

37:                                               ; preds = %35
  %38 = tail call noundef zeroext i1 @_ZNK7glslang16TNumericFeatures8containsENS0_7featureE(ptr noundef nonnull align 4 dereferenceable(4) %33, i32 noundef 4)
  br i1 %38, label %142, label %39

39:                                               ; preds = %37
  %40 = tail call noundef zeroext i1 @_ZNK7glslang16TNumericFeatures8containsENS0_7featureE(ptr noundef nonnull align 4 dereferenceable(4) %33, i32 noundef 8)
  br i1 %40, label %142, label %41

41:                                               ; preds = %39
  %42 = tail call noundef zeroext i1 @_ZNK7glslang16TNumericFeatures8containsENS0_7featureE(ptr noundef nonnull align 4 dereferenceable(4) %33, i32 noundef 16)
  br i1 %42, label %142, label %43

43:                                               ; preds = %41
  %44 = tail call noundef zeroext i1 @_ZNK7glslang16TNumericFeatures8containsENS0_7featureE(ptr noundef nonnull align 4 dereferenceable(4) %33, i32 noundef 32)
  br i1 %44, label %142, label %45

45:                                               ; preds = %43
  %46 = tail call noundef zeroext i1 @_ZNK7glslang16TNumericFeatures8containsENS0_7featureE(ptr noundef nonnull align 4 dereferenceable(4) %33, i32 noundef 64)
  br i1 %46, label %142, label %47

47:                                               ; preds = %45
  %48 = tail call noundef zeroext i1 @_ZNK7glslang16TNumericFeatures8containsENS0_7featureE(ptr noundef nonnull align 4 dereferenceable(4) %33, i32 noundef 128)
  br i1 %48, label %142, label %49

49:                                               ; preds = %21, %30, %47, %19
  %50 = tail call noundef zeroext i1 @_ZNK7glslang13TIntermediate11isEsProfileEv(ptr noundef nonnull align 8 dereferenceable(1784) %0)
  br i1 %50, label %51, label %61

51:                                               ; preds = %49
  switch i32 %2, label %142 [
    i32 1, label %52
    i32 9, label %57
  ]

52:                                               ; preds = %51
  %53 = and i32 %1, -2
  %switch67 = icmp eq i32 %53, 8
  br i1 %switch67, label %54, label %142

54:                                               ; preds = %52
  %55 = getelementptr inbounds i8, ptr %0, i64 1316
  %56 = tail call noundef zeroext i1 @_ZNK7glslang16TNumericFeatures8containsENS0_7featureE(ptr noundef nonnull align 4 dereferenceable(4) %55, i32 noundef 256)
  br label %142

57:                                               ; preds = %51
  %cond1 = icmp eq i32 %1, 8
  br i1 %cond1, label %58, label %142

58:                                               ; preds = %57
  %59 = getelementptr inbounds i8, ptr %0, i64 1316
  %60 = tail call noundef zeroext i1 @_ZNK7glslang16TNumericFeatures8containsENS0_7featureE(ptr noundef nonnull align 4 dereferenceable(4) %59, i32 noundef 256)
  br label %142

61:                                               ; preds = %49
  switch i32 %2, label %142 [
    i32 2, label %62
    i32 1, label %87
    i32 9, label %101
    i32 8, label %116
    i32 11, label %123
    i32 10, label %128
    i32 3, label %133
    i32 7, label %138
  ]

62:                                               ; preds = %61
  switch i32 %1, label %142 [
    i32 8, label %63
    i32 9, label %63
    i32 10, label %63
    i32 11, label %63
    i32 1, label %63
    i32 6, label %69
    i32 7, label %69
    i32 3, label %78
  ]

63:                                               ; preds = %62, %62, %62, %62, %62
  %64 = load i32, ptr %6, align 4, !tbaa !5
  %65 = icmp sgt i32 %64, 399
  br i1 %65, label %142, label %66

66:                                               ; preds = %63
  %67 = getelementptr inbounds i8, ptr %0, i64 1316
  %68 = tail call noundef zeroext i1 @_ZNK7glslang16TNumericFeatures8containsENS0_7featureE(ptr noundef nonnull align 4 dereferenceable(4) %67, i32 noundef 512)
  br label %142

69:                                               ; preds = %62, %62
  %70 = load i32, ptr %6, align 4, !tbaa !5
  %71 = icmp sgt i32 %70, 399
  br i1 %71, label %75, label %72

72:                                               ; preds = %69
  %73 = getelementptr inbounds i8, ptr %0, i64 1316
  %74 = tail call noundef zeroext i1 @_ZNK7glslang16TNumericFeatures8containsENS0_7featureE(ptr noundef nonnull align 4 dereferenceable(4) %73, i32 noundef 512)
  br i1 %74, label %75, label %142

75:                                               ; preds = %72, %69
  %76 = getelementptr inbounds i8, ptr %0, i64 1316
  %77 = tail call noundef zeroext i1 @_ZNK7glslang16TNumericFeatures8containsENS0_7featureE(ptr noundef nonnull align 4 dereferenceable(4) %76, i32 noundef 1024)
  br label %142

78:                                               ; preds = %62
  %79 = load i32, ptr %6, align 4, !tbaa !5
  %80 = icmp sgt i32 %79, 399
  br i1 %80, label %84, label %81

81:                                               ; preds = %78
  %82 = getelementptr inbounds i8, ptr %0, i64 1316
  %83 = tail call noundef zeroext i1 @_ZNK7glslang16TNumericFeatures8containsENS0_7featureE(ptr noundef nonnull align 4 dereferenceable(4) %82, i32 noundef 512)
  br i1 %83, label %84, label %142

84:                                               ; preds = %81, %78
  %85 = getelementptr inbounds i8, ptr %0, i64 1316
  %86 = tail call noundef zeroext i1 @_ZNK7glslang16TNumericFeatures8containsENS0_7featureE(ptr noundef nonnull align 4 dereferenceable(4) %85, i32 noundef 2048)
  br label %142

87:                                               ; preds = %61
  switch i32 %1, label %100 [
    i32 8, label %142
    i32 9, label %142
    i32 12, label %88
    i32 6, label %91
    i32 7, label %91
    i32 3, label %94
  ]

88:                                               ; preds = %87
  %89 = tail call noundef i32 @_ZNK7glslang13TIntermediate9getSourceEv(ptr noundef nonnull align 8 dereferenceable(1784) %0)
  %90 = icmp eq i32 %89, 2
  br label %142

91:                                               ; preds = %87, %87
  %92 = getelementptr inbounds i8, ptr %0, i64 1316
  %93 = tail call noundef zeroext i1 @_ZNK7glslang16TNumericFeatures8containsENS0_7featureE(ptr noundef nonnull align 4 dereferenceable(4) %92, i32 noundef 1024)
  br label %142

94:                                               ; preds = %87
  %95 = getelementptr inbounds i8, ptr %0, i64 1316
  %96 = tail call noundef zeroext i1 @_ZNK7glslang16TNumericFeatures8containsENS0_7featureE(ptr noundef nonnull align 4 dereferenceable(4) %95, i32 noundef 2048)
  br i1 %96, label %142, label %97

97:                                               ; preds = %94
  %98 = tail call noundef i32 @_ZNK7glslang13TIntermediate9getSourceEv(ptr noundef nonnull align 8 dereferenceable(1784) %0)
  %99 = icmp eq i32 %98, 2
  br label %142

100:                                              ; preds = %87
  br label %142

101:                                              ; preds = %61
  switch i32 %1, label %142 [
    i32 8, label %102
    i32 12, label %110
    i32 6, label %113
    i32 7, label %113
  ]

102:                                              ; preds = %101
  %103 = load i32, ptr %6, align 4, !tbaa !5
  %104 = icmp sgt i32 %103, 399
  br i1 %104, label %142, label %105

105:                                              ; preds = %102
  %106 = tail call noundef i32 @_ZNK7glslang13TIntermediate9getSourceEv(ptr noundef nonnull align 8 dereferenceable(1784) %0)
  %107 = icmp eq i32 %106, 2
  br i1 %107, label %142, label %108

108:                                              ; preds = %105
  %109 = tail call noundef zeroext i1 @_ZNK7glslang13TIntermediate20IsRequestedExtensionEPKc(ptr noundef nonnull align 8 dereferenceable(1784) %0, ptr noundef nonnull @.str.3)
  br label %142

110:                                              ; preds = %101
  %111 = tail call noundef i32 @_ZNK7glslang13TIntermediate9getSourceEv(ptr noundef nonnull align 8 dereferenceable(1784) %0)
  %112 = icmp eq i32 %111, 2
  br label %142

113:                                              ; preds = %101, %101
  %114 = getelementptr inbounds i8, ptr %0, i64 1316
  %115 = tail call noundef zeroext i1 @_ZNK7glslang16TNumericFeatures8containsENS0_7featureE(ptr noundef nonnull align 4 dereferenceable(4) %114, i32 noundef 1024)
  br label %142

116:                                              ; preds = %61
  switch i32 %1, label %142 [
    i32 12, label %117
    i32 6, label %120
  ]

117:                                              ; preds = %116
  %118 = tail call noundef i32 @_ZNK7glslang13TIntermediate9getSourceEv(ptr noundef nonnull align 8 dereferenceable(1784) %0)
  %119 = icmp eq i32 %118, 2
  br label %142

120:                                              ; preds = %116
  %121 = getelementptr inbounds i8, ptr %0, i64 1316
  %122 = tail call noundef zeroext i1 @_ZNK7glslang16TNumericFeatures8containsENS0_7featureE(ptr noundef nonnull align 4 dereferenceable(4) %121, i32 noundef 1024)
  br label %142

123:                                              ; preds = %61
  switch i32 %1, label %127 [
    i32 8, label %142
    i32 9, label %142
    i32 10, label %142
    i32 6, label %124
    i32 7, label %124
  ]

124:                                              ; preds = %123, %123
  %125 = getelementptr inbounds i8, ptr %0, i64 1316
  %126 = tail call noundef zeroext i1 @_ZNK7glslang16TNumericFeatures8containsENS0_7featureE(ptr noundef nonnull align 4 dereferenceable(4) %125, i32 noundef 1024)
  br label %142

127:                                              ; preds = %123
  br label %142

128:                                              ; preds = %61
  switch i32 %1, label %132 [
    i32 8, label %142
    i32 6, label %129
  ]

129:                                              ; preds = %128
  %130 = getelementptr inbounds i8, ptr %0, i64 1316
  %131 = tail call noundef zeroext i1 @_ZNK7glslang16TNumericFeatures8containsENS0_7featureE(ptr noundef nonnull align 4 dereferenceable(4) %130, i32 noundef 1024)
  br label %142

132:                                              ; preds = %128
  br label %142

133:                                              ; preds = %61
  %134 = and i32 %1, -2
  %switch69 = icmp eq i32 %134, 6
  br i1 %switch69, label %135, label %142

135:                                              ; preds = %133
  %136 = getelementptr inbounds i8, ptr %0, i64 1316
  %137 = tail call noundef zeroext i1 @_ZNK7glslang16TNumericFeatures8containsENS0_7featureE(ptr noundef nonnull align 4 dereferenceable(4) %136, i32 noundef 1024)
  br label %142

138:                                              ; preds = %61
  %cond = icmp eq i32 %1, 6
  br i1 %cond, label %139, label %142

139:                                              ; preds = %138
  %140 = getelementptr inbounds i8, ptr %0, i64 1316
  %141 = tail call noundef zeroext i1 @_ZNK7glslang16TNumericFeatures8containsENS0_7featureE(ptr noundef nonnull align 4 dereferenceable(4) %140, i32 noundef 1024)
  br label %142

142:                                              ; preds = %16, %16, %16, %16, %16, %16, %16, %16, %16, %16, %16, %16, %16, %16, %16, %16, %16, %16, %61, %138, %133, %128, %123, %123, %123, %116, %101, %102, %105, %108, %94, %97, %87, %87, %62, %81, %84, %72, %75, %63, %66, %51, %57, %52, %32, %35, %37, %39, %41, %43, %45, %47, %21, %21, %21, %10, %4, %139, %135, %132, %129, %127, %124, %120, %117, %113, %110, %100, %91, %88, %58, %54
  %.1 = phi i1 [ %60, %58 ], [ %56, %54 ], [ %141, %139 ], [ %137, %135 ], [ false, %132 ], [ %131, %129 ], [ false, %127 ], [ %126, %124 ], [ %122, %120 ], [ %119, %117 ], [ %115, %113 ], [ %112, %110 ], [ false, %100 ], [ %93, %91 ], [ %90, %88 ], [ false, %4 ], [ true, %10 ], [ true, %21 ], [ true, %21 ], [ true, %21 ], [ true, %47 ], [ true, %45 ], [ true, %43 ], [ true, %41 ], [ true, %39 ], [ true, %37 ], [ true, %35 ], [ true, %32 ], [ false, %52 ], [ false, %57 ], [ false, %51 ], [ true, %63 ], [ %68, %66 ], [ false, %72 ], [ %77, %75 ], [ false, %81 ], [ %86, %84 ], [ false, %62 ], [ true, %87 ], [ true, %87 ], [ true, %94 ], [ %99, %97 ], [ true, %105 ], [ true, %102 ], [ %109, %108 ], [ false, %101 ], [ false, %116 ], [ true, %123 ], [ true, %123 ], [ true, %123 ], [ true, %128 ], [ false, %133 ], [ false, %138 ], [ false, %61 ], [ true, %16 ], [ true, %16 ], [ true, %16 ], [ true, %16 ], [ true, %16 ], [ true, %16 ], [ true, %16 ], [ true, %16 ], [ true, %16 ], [ true, %16 ], [ true, %16 ], [ true, %16 ], [ true, %16 ], [ true, %16 ], [ true, %16 ], [ true, %16 ], [ true, %16 ], [ true, %16 ]
  ret i1 %.1
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK7glslang16TNumericFeatures8containsENS0_7featureE(ptr noundef nonnull align 4 dereferenceable(4), i32 noundef) local_unnamed_addr #0 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK7glslang13TIntermediate20IsRequestedExtensionEPKc(ptr noundef nonnull align 8 dereferenceable(1784), ptr noundef) local_unnamed_addr #1 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 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" }

!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, !20, i64 100}
!6 = !{!"_ZTSN7glslang13TIntermediateE", !7, i64 0, !10, i64 8, !10, i64 40, !14, i64 72, !19, i64 96, !20, i64 100, !21, i64 104, !12, i64 128, !23, i64 136, !31, i64 184, !20, i64 572, !20, i64 576, !20, i64 580, !22, i64 584, !22, i64 585, !22, i64 586, !22, i64 587, !22, i64 588, !22, i64 589, !22, i64 590, !22, i64 591, !8, i64 592, !8, i64 604, !8, i64 608, !34, i64 624, !10, i64 632, !10, i64 664, !20, i64 696, !20, i64 700, !20, i64 704, !12, i64 712, !12, i64 720, !35, i64 728, !22, i64 732, !20, i64 736, !20, i64 740, !36, i64 744, !36, i64 748, !22, i64 752, !22, i64 753, !22, i64 754, !37, i64 756, !38, i64 760, !39, i64 764, !22, i64 768, !22, i64 769, !22, i64 770, !40, i64 772, !22, i64 776, !20, i64 780, !22, i64 784, !41, i64 792, !22, i64 816, !22, i64 817, !22, i64 818, !20, i64 820, !45, i64 824, !20, i64 828, !20, i64 832, !22, i64 836, !46, i64 840, !47, i64 864, !48, i64 1152, !22, i64 1176, !22, i64 1177, !22, i64 1178, !22, i64 1179, !22, i64 1180, !22, i64 1181, !22, i64 1182, !52, i64 1184, !57, i64 1232, !22, i64 1236, !22, i64 1237, !22, i64 1238, !22, i64 1239, !12, i64 1240, !12, i64 1248, !58, i64 1256, !20, i64 1312, !63, i64 1316, !64, i64 1320, !66, i64 1376, !68, i64 1432, !8, i64 1456, !8, i64 1552, !52, i64 1600, !10, i64 1648, !10, i64 1680, !72, i64 1712, !75, i64 1760}
!7 = !{!"_ZTS11EShLanguage", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !11, i64 0, !13, i64 8, !8, i64 16}
!11 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !12, i64 0}
!12 = !{!"any pointer", !8, i64 0}
!13 = !{!"long", !8, i64 0}
!14 = !{!"_ZTSNSt7__cxx114listIN7glslang5TCallESaIS2_EEE", !15, i64 0}
!15 = !{!"_ZTSNSt7__cxx1110_List_baseIN7glslang5TCallESaIS2_EEE", !16, i64 0}
!16 = !{!"_ZTSNSt7__cxx1110_List_baseIN7glslang5TCallESaIS2_EE10_List_implE", !17, i64 0}
!17 = !{!"_ZTSNSt8__detail17_List_node_headerE", !18, i64 0, !13, i64 16}
!18 = !{!"_ZTSNSt8__detail15_List_node_baseE", !12, i64 0, !12, i64 8}
!19 = !{!"_ZTS8EProfile", !8, i64 0}
!20 = !{!"int", !8, i64 0}
!21 = !{!"_ZTSN7glslang10SpvVersionE", !20, i64 0, !20, i64 4, !20, i64 8, !20, i64 12, !22, i64 16}
!22 = !{!"bool", !8, i64 0}
!23 = !{!"_ZTSSt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIS5_ESaIS5_EE", !24, i64 0}
!24 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St9_IdentityIS5_ESt4lessIS5_ESaIS5_EE", !25, i64 0}
!25 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St9_IdentityIS5_ESt4lessIS5_ESaIS5_EE13_Rb_tree_implIS9_Lb1EEE", !26, i64 0, !28, i64 8}
!26 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !27, i64 0}
!27 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!28 = !{!"_ZTSSt15_Rb_tree_header", !29, i64 0, !13, i64 32}
!29 = !{!"_ZTSSt18_Rb_tree_node_base", !30, i64 0, !12, i64 8, !12, i64 16, !12, i64 24}
!30 = !{!"_ZTSSt14_Rb_tree_color", !8, i64 0}
!31 = !{!"_ZTSN7glslang14MustBeAssignedI16TBuiltInResourceEE", !32, i64 0, !22, i64 384}
!32 = !{!"_ZTS16TBuiltInResource", !20, i64 0, !20, i64 4, !20, i64 8, !20, i64 12, !20, i64 16, !20, i64 20, !20, i64 24, !20, i64 28, !20, i64 32, !20, i64 36, !20, i64 40, !20, i64 44, !20, i64 48, !20, i64 52, !20, i64 56, !20, i64 60, !20, i64 64, !20, i64 68, !20, i64 72, !20, i64 76, !20, i64 80, !20, i64 84, !20, i64 88, !20, i64 92, !20, i64 96, !20, i64 100, !20, i64 104, !20, i64 108, !20, i64 112, !20, i64 116, !20, i64 120, !20, i64 124, !20, i64 128, !20, i64 132, !20, i64 136, !20, i64 140, !20, i64 144, !20, i64 148, !20, i64 152, !20, i64 156, !20, i64 160, !20, i64 164, !20, i64 168, !20, i64 172, !20, i64 176, !20, i64 180, !20, i64 184, !20, i64 188, !20, i64 192, !20, i64 196, !20, i64 200, !20, i64 204, !20, i64 208, !20, i64 212, !20, i64 216, !20, i64 220, !20, i64 224, !20, i64 228, !20, i64 232, !20, i64 236, !20, i64 240, !20, i64 244, !20, i64 248, !20, i64 252, !20, i64 256, !20, i64 260, !20, i64 264, !20, i64 268, !20, i64 272, !20, i64 276, !20, i64 280, !20, i64 284, !20, i64 288, !20, i64 292, !20, i64 296, !20, i64 300, !20, i64 304, !20, i64 308, !20, i64 312, !20, i64 316, !20, i64 320, !20, i64 324, !20, i64 328, !20, i64 332, !20, i64 336, !20, i64 340, !20, i64 344, !20, i64 348, !20, i64 352, !20, i64 356, !20, i64 360, !20, i64 364, !20, i64 368, !33, i64 372}
!33 = !{!"_ZTS7TLimits", !22, i64 0, !22, i64 1, !22, i64 2, !22, i64 3, !22, i64 4, !22, i64 5, !22, i64 6, !22, i64 7, !22, i64 8}
!34 = !{!"long long", !8, i64 0}
!35 = !{!"_ZTSN7glslang9EShSourceE", !8, i64 0}
!36 = !{!"_ZTSN7glslang15TLayoutGeometryE", !8, i64 0}
!37 = !{!"_ZTSN7glslang14TVertexSpacingE", !8, i64 0}
!38 = !{!"_ZTSN7glslang12TVertexOrderE", !8, i64 0}
!39 = !{!"_ZTSN7glslang18TInterlockOrderingE", !8, i64 0}
!40 = !{!"_ZTSN7glslang12TLayoutDepthE", !8, i64 0}
!41 = !{!"_ZTSSt6vectorIN7glslang10TXfbBufferESaIS1_EE", !42, i64 0}
!42 = !{!"_ZTSSt12_Vector_baseIN7glslang10TXfbBufferESaIS1_EE", !43, i64 0}
!43 = !{!"_ZTSNSt12_Vector_baseIN7glslang10TXfbBufferESaIS1_EE12_Vector_implE", !44, i64 0}
!44 = !{!"_ZTSNSt12_Vector_baseIN7glslang10TXfbBufferESaIS1_EE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!45 = !{!"_ZTSN7glslang21ComputeDerivativeModeE", !8, i64 0}
!46 = !{!"_ZTSSt5arrayIjLm6EE", !8, i64 0}
!47 = !{!"_ZTSSt5arrayISt3mapIiiSt4lessIiESaISt4pairIKiiEEELm6EE", !8, i64 0}
!48 = !{!"_ZTSSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !49, i64 0}
!49 = !{!"_ZTSSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !50, i64 0}
!50 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_Vector_implE", !51, i64 0}
!51 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!52 = !{!"_ZTSSt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4lessIS7_ESaIS7_EE", !53, i64 0}
!53 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEES7_St9_IdentityIS7_ESt4lessIS7_ESaIS7_EE", !54, i64 0}
!54 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEES7_St9_IdentityIS7_ESt4lessIS7_ESaIS7_EE13_Rb_tree_implISB_Lb1EEE", !55, i64 0, !28, i64 8}
!55 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEEE", !56, i64 0}
!56 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEE"}
!57 = !{!"_ZTS30EShTextureSamplerTransformMode", !8, i64 0}
!58 = !{!"_ZTSSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiSt4hashIS5_ESt8equal_toIS5_ESaISt4pairIKS5_iEEE", !59, i64 0}
!59 = !{!"_ZTSSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_iESaIS8_ENSt8__detail10_Select1stESt8equal_toIS5_ESt4hashIS5_ENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE", !12, i64 0, !13, i64 8, !60, i64 16, !13, i64 24, !61, i64 32, !12, i64 48}
!60 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !12, i64 0}
!61 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !62, i64 0, !13, i64 8}
!62 = !{!"float", !8, i64 0}
!63 = !{!"_ZTSN7glslang16TNumericFeaturesE", !20, i64 0}
!64 = !{!"_ZTSSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN7glslang18TBlockStorageClassESt4hashIS5_ESt8equal_toIS5_ESaISt4pairIKS5_S7_EEE", !65, i64 0}
!65 = !{!"_ZTSSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N7glslang18TBlockStorageClassEESaISA_ENSt8__detail10_Select1stESt8equal_toIS5_ESt4hashIS5_ENSC_18_Mod_range_hashingENSC_20_Default_ranged_hashENSC_20_Prime_rehash_policyENSC_17_Hashtable_traitsILb1ELb0ELb1EEEE", !12, i64 0, !13, i64 8, !60, i64 16, !13, i64 24, !61, i64 32, !12, i64 48}
!66 = !{!"_ZTSSt13unordered_setIiSt4hashIiESt8equal_toIiESaIiEE", !67, i64 0}
!67 = !{!"_ZTSSt10_HashtableIiiSaIiENSt8__detail9_IdentityESt8equal_toIiESt4hashIiENS1_18_Mod_range_hashingENS1_20_Default_ranged_hashENS1_20_Prime_rehash_policyENS1_17_Hashtable_traitsILb0ELb1ELb1EEEE", !12, i64 0, !13, i64 8, !60, i64 16, !13, i64 24, !61, i64 32, !12, i64 48}
!68 = !{!"_ZTSSt6vectorIN7glslang12TOffsetRangeESaIS1_EE", !69, i64 0}
!69 = !{!"_ZTSSt12_Vector_baseIN7glslang12TOffsetRangeESaIS1_EE", !70, i64 0}
!70 = !{!"_ZTSNSt12_Vector_baseIN7glslang12TOffsetRangeESaIS1_EE12_Vector_implE", !71, i64 0}
!71 = !{!"_ZTSNSt12_Vector_baseIN7glslang12TOffsetRangeESaIS1_EE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!72 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEE", !73, i64 0}
!73 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_S5_ESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE", !74, i64 0}
!74 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_S5_ESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE13_Rb_tree_implISC_Lb1EEE", !26, i64 0, !28, i64 8}
!75 = !{!"_ZTSN7glslang10TProcessesE", !48, i64 0}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,SROAPass,SimplifyCFGPass,TailCallElimPass