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

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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>::_Alloc_hider" = type { %"class.glslang::pool_allocator.14", ptr }
%"class.glslang::pool_allocator.14" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"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 }>
%"class.glslang::TParseVersions" = type { ptr, i8, i32, ptr, i32, i32, %"struct.glslang::SpvVersion", ptr, %"class.glslang::TMap", %"class.glslang::TMap.0", i32, i32, ptr }
%"struct.glslang::SpvVersion" = type <{ i32, i32, i32, i32, i8, [3 x i8] }>
%"class.glslang::TMap" = type { %"class.std::map" }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, glslang::TExtensionBehavior>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, glslang::TExtensionBehavior>>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>>, glslang::pool_allocator<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, glslang::TExtensionBehavior>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, glslang::TExtensionBehavior>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, glslang::TExtensionBehavior>>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>>, glslang::pool_allocator<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, glslang::TExtensionBehavior>>>::_Rb_tree_impl" = type { %"class.glslang::pool_allocator", [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.glslang::pool_allocator" = type { ptr }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.glslang::TMap.0" = type { %"class.std::map.1" }
%"class.std::map.1" = type { %"class.std::_Rb_tree.2" }
%"class.std::_Rb_tree.2" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, unsigned int>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, unsigned int>>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>>, glslang::pool_allocator<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, unsigned int>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, unsigned int>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, unsigned int>>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>>, glslang::pool_allocator<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>, unsigned int>>>::_Rb_tree_impl" = type { %"class.glslang::pool_allocator.3", [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.glslang::pool_allocator.3" = type { ptr }
%"struct.glslang::TParameter" = type { ptr, ptr, ptr }

@.str.2 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.326 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.327 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.328 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.329 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.330 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.331 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.332 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.333 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.334 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.335 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.336 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.337 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.338 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.339 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.340 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.341 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.342 = external hidden unnamed_addr constant [79 x i8], align 1
@.str.343 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.344 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.345 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.346 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.347 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.348 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.349 = external hidden unnamed_addr constant [22 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef, ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #0 align 2

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

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

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

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

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

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

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

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

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

declare void @_ZN7glslang14TParseVersions15profileRequiresERKNS_10TSourceLocEiiPKcS5_(ptr noundef nonnull align 8 dereferenceable(192), ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, i32 noundef, ptr noundef, ptr noundef) #3

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK7glslang5TType17getCompleteStringEbbbbNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEES7_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(144), i1 noundef zeroext, i1 noundef zeroext, i1 noundef zeroext, i1 noundef zeroext, ptr noundef, ptr noundef) #0 align 2

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN7glslang13TParseContext16constructorErrorERKNS_10TSourceLocEP11TIntermNodeRNS_9TFunctionENS_9TOperatorERNS_5TTypeE(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef %2, ptr noundef nonnull align 8 dereferenceable(328) %3, i32 noundef %4, ptr noundef nonnull align 8 dereferenceable(144) %5) #0 align 2 personality ptr @__gxx_personality_v0 {
  %7 = alloca i1, align 1
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca ptr, align 8
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca ptr, align 8
  %16 = alloca i32, align 4
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.glslang::pool_allocator.14", align 8
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %"class.glslang::pool_allocator.14", align 8
  %22 = alloca i8, align 1
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i8, align 1
  %26 = alloca i8, align 1
  %27 = alloca i8, align 1
  %28 = alloca i8, align 1
  %29 = alloca i8, align 1
  %30 = alloca i8, align 1
  %31 = alloca i8, align 1
  %32 = alloca i8, align 1
  %33 = alloca i32, align 4
  %34 = alloca i8, align 1
  %35 = alloca ptr, align 8
  %36 = alloca i32, align 4
  %37 = alloca ptr, align 8
  store ptr %0, ptr %8, align 8, !tbaa !5
  store ptr %1, ptr %9, align 8, !tbaa !5
  store ptr %2, ptr %10, align 8, !tbaa !5
  store ptr %3, ptr %11, align 8, !tbaa !5
  store i32 %4, ptr %12, align 4, !tbaa !9
  store ptr %5, ptr %13, align 8, !tbaa !5
  %38 = load ptr, ptr %8, align 8
  %39 = load i32, ptr %12, align 4, !tbaa !9
  switch i32 %39, label %76 [
    i32 570, label %40
  ]

40:                                               ; preds = %6
  %41 = load ptr, ptr %10, align 8, !tbaa !5
  %42 = icmp ne ptr %41, null
  br i1 %42, label %43, label %75

43:                                               ; preds = %40
  %44 = load ptr, ptr %10, align 8, !tbaa !5
  %45 = load ptr, ptr %44, align 8, !tbaa !11
  %46 = getelementptr inbounds ptr, ptr %45, i64 3
  %47 = load ptr, ptr %46, align 8
  %48 = call noundef ptr %47(ptr noundef nonnull align 8 dereferenceable(32) %44)
  %49 = icmp ne ptr %48, null
  br i1 %49, label %50, label %75

50:                                               ; preds = %43
  %51 = load ptr, ptr %13, align 8, !tbaa !5
  %52 = load ptr, ptr %10, align 8, !tbaa !5
  %53 = load ptr, ptr %52, align 8, !tbaa !11
  %54 = getelementptr inbounds ptr, ptr %53, i64 3
  %55 = load ptr, ptr %54, align 8
  %56 = call noundef ptr %55(ptr noundef nonnull align 8 dereferenceable(32) %52)
  %57 = load ptr, ptr %56, align 8, !tbaa !11
  %58 = getelementptr inbounds ptr, ptr %57, i64 30
  %59 = load ptr, ptr %58, align 8
  %60 = call noundef nonnull align 8 dereferenceable(144) ptr %59(ptr noundef nonnull align 8 dereferenceable(176) %56)
  call void @_ZN7glslang5TType11shallowCopyERKS0_(ptr noundef nonnull align 8 dereferenceable(144) %51, ptr noundef nonnull align 8 dereferenceable(144) %60)
  %61 = load ptr, ptr %13, align 8, !tbaa !5
  %62 = load ptr, ptr %61, align 8, !tbaa !11
  %63 = getelementptr inbounds ptr, ptr %62, i64 10
  %64 = load ptr, ptr %63, align 8
  %65 = call noundef nonnull align 8 dereferenceable(72) ptr %64(ptr noundef nonnull align 8 dereferenceable(144) %61)
  call void @_ZN7glslang10TQualifier13makeTemporaryEv(ptr noundef nonnull align 8 dereferenceable(72) %65)
  %66 = load ptr, ptr %13, align 8, !tbaa !5
  %67 = load ptr, ptr %66, align 8, !tbaa !11
  %68 = getelementptr inbounds ptr, ptr %67, i64 10
  %69 = load ptr, ptr %68, align 8
  %70 = call noundef nonnull align 8 dereferenceable(72) ptr %69(ptr noundef nonnull align 8 dereferenceable(144) %66)
  %71 = getelementptr inbounds %"class.glslang::TQualifier", ptr %70, i32 0, i32 1
  %72 = load i64, ptr %71, align 8
  %73 = and i64 %72, -4294967297
  %74 = or i64 %73, 4294967296
  store i64 %74, ptr %71, align 8
  br label %75

75:                                               ; preds = %50, %43, %40
  br label %83

76:                                               ; preds = %6
  %77 = load ptr, ptr %13, align 8, !tbaa !5
  %78 = load ptr, ptr %11, align 8, !tbaa !5
  %79 = load ptr, ptr %78, align 8, !tbaa !11
  %80 = getelementptr inbounds ptr, ptr %79, i64 12
  %81 = load ptr, ptr %80, align 8
  %82 = call noundef nonnull align 8 dereferenceable(144) ptr %81(ptr noundef nonnull align 8 dereferenceable(328) %78)
  call void @_ZN7glslang5TType11shallowCopyERKS0_(ptr noundef nonnull align 8 dereferenceable(144) %77, ptr noundef nonnull align 8 dereferenceable(144) %82)
  br label %83

83:                                               ; preds = %76, %75
  call void @llvm.lifetime.start.p0(i64 40, ptr %14) #4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %14)
  %84 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %38, i32 0, i32 7
  %85 = load ptr, ptr %84, align 8, !tbaa !13
  %86 = invoke noundef zeroext i1 @_ZNK7glslang13TIntermediate15getEnhancedMsgsEv(ptr noundef nonnull align 8 dereferenceable(1784) %85)
          to label %87 unwind label %99

87:                                               ; preds = %83
  br i1 %86, label %88, label %122

88:                                               ; preds = %87
  call void @llvm.lifetime.start.p0(i64 40, ptr %17) #4
  %89 = load ptr, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #4
  invoke void @_ZN7glslang14pool_allocatorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %19)
          to label %90 unwind label %103

90:                                               ; preds = %88
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(40) %18, ptr noundef @.str.2, ptr noundef nonnull align 8 dereferenceable(8) %19)
          to label %91 unwind label %103

91:                                               ; preds = %90
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #4
  invoke void @_ZN7glslang14pool_allocatorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %21)
          to label %92 unwind label %107

92:                                               ; preds = %91
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(40) %20, ptr noundef @.str.2, ptr noundef nonnull align 8 dereferenceable(8) %21)
          to label %93 unwind label %107

93:                                               ; preds = %92
  invoke void @_ZNK7glslang5TType17getCompleteStringEbbbbNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEES7_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %17, ptr noundef nonnull align 8 dereferenceable(144) %89, i1 noundef zeroext true, i1 noundef zeroext false, i1 noundef zeroext false, i1 noundef zeroext true, ptr noundef %18, ptr noundef %20)
          to label %94 unwind label %111

94:                                               ; preds = %93
  %95 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE6appendERKS6_(ptr noundef nonnull align 8 dereferenceable(40) %14, ptr noundef nonnull align 8 dereferenceable(40) %17)
          to label %96 unwind label %115

96:                                               ; preds = %94
  %97 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE6appendEPKc(ptr noundef nonnull align 8 dereferenceable(40) %95, ptr noundef @.str.326)
          to label %98 unwind label %115

98:                                               ; preds = %96
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %17) #4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %20) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %18) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 40, ptr %17) #4
  br label %125

99:                                               ; preds = %122, %83
  %100 = landingpad { ptr, i32 }
          cleanup
  %101 = extractvalue { ptr, i32 } %100, 0
  store ptr %101, ptr %15, align 8
  %102 = extractvalue { ptr, i32 } %100, 1
  store i32 %102, ptr %16, align 4
  br label %998

103:                                              ; preds = %90, %88
  %104 = landingpad { ptr, i32 }
          cleanup
  %105 = extractvalue { ptr, i32 } %104, 0
  store ptr %105, ptr %15, align 8
  %106 = extractvalue { ptr, i32 } %104, 1
  store i32 %106, ptr %16, align 4
  br label %121

107:                                              ; preds = %92, %91
  %108 = landingpad { ptr, i32 }
          cleanup
  %109 = extractvalue { ptr, i32 } %108, 0
  store ptr %109, ptr %15, align 8
  %110 = extractvalue { ptr, i32 } %108, 1
  store i32 %110, ptr %16, align 4
  br label %120

111:                                              ; preds = %93
  %112 = landingpad { ptr, i32 }
          cleanup
  %113 = extractvalue { ptr, i32 } %112, 0
  store ptr %113, ptr %15, align 8
  %114 = extractvalue { ptr, i32 } %112, 1
  store i32 %114, ptr %16, align 4
  br label %119

115:                                              ; preds = %96, %94
  %116 = landingpad { ptr, i32 }
          cleanup
  %117 = extractvalue { ptr, i32 } %116, 0
  store ptr %117, ptr %15, align 8
  %118 = extractvalue { ptr, i32 } %116, 1
  store i32 %118, ptr %16, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %17) #4
  br label %119

119:                                              ; preds = %115, %111
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %20) #4
  br label %120

120:                                              ; preds = %119, %107
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %18) #4
  br label %121

121:                                              ; preds = %120, %103
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 40, ptr %17) #4
  br label %998

122:                                              ; preds = %87
  %123 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE6appendEPKc(ptr noundef nonnull align 8 dereferenceable(40) %14, ptr noundef @.str.327)
          to label %124 unwind label %99

124:                                              ; preds = %122
  br label %125

125:                                              ; preds = %124, %98
  call void @llvm.lifetime.start.p0(i64 1, ptr %22) #4
  store i8 0, ptr %22, align 1, !tbaa !37
  %126 = load i32, ptr %12, align 4, !tbaa !9
  switch i32 %126, label %137 [
    i32 569, label %127
    i32 480, label %136
    i32 481, label %136
    i32 482, label %136
    i32 483, label %136
    i32 484, label %136
    i32 485, label %136
    i32 486, label %136
    i32 487, label %136
    i32 488, label %136
    i32 519, label %136
    i32 520, label %136
    i32 521, label %136
    i32 522, label %136
    i32 523, label %136
    i32 524, label %136
    i32 525, label %136
    i32 526, label %136
    i32 527, label %136
    i32 559, label %136
    i32 560, label %136
    i32 561, label %136
    i32 562, label %136
    i32 563, label %136
    i32 564, label %136
    i32 565, label %136
    i32 566, label %136
    i32 567, label %136
  ]

127:                                              ; preds = %125
  %128 = load ptr, ptr %9, align 8, !tbaa !5
  %129 = load ptr, ptr %11, align 8, !tbaa !5
  %130 = invoke noundef zeroext i1 @_ZN7glslang13TParseContext30constructorTextureSamplerErrorERKNS_10TSourceLocERKNS_9TFunctionE(ptr noundef nonnull align 8 dereferenceable(24912) %38, ptr noundef nonnull align 8 dereferenceable(24) %128, ptr noundef nonnull align 8 dereferenceable(328) %129)
          to label %131 unwind label %132

131:                                              ; preds = %127
  store i1 %130, ptr %7, align 1
  store i32 1, ptr %23, align 4
  br label %995

132:                                              ; preds = %127
  %133 = landingpad { ptr, i32 }
          cleanup
  %134 = extractvalue { ptr, i32 } %133, 0
  store ptr %134, ptr %15, align 8
  %135 = extractvalue { ptr, i32 } %133, 1
  store i32 %135, ptr %16, align 4
  br label %997

136:                                              ; preds = %125, %125, %125, %125, %125, %125, %125, %125, %125, %125, %125, %125, %125, %125, %125, %125, %125, %125, %125, %125, %125, %125, %125, %125, %125, %125, %125
  store i8 1, ptr %22, align 1, !tbaa !37
  br label %138

137:                                              ; preds = %125
  br label %138

138:                                              ; preds = %137, %136
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #4
  store i32 0, ptr %24, align 4, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #4
  store i8 1, ptr %25, align 1, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #4
  store i8 0, ptr %26, align 1, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #4
  store i8 0, ptr %27, align 1, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 1, ptr %28) #4
  store i8 0, ptr %28, align 1, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 1, ptr %29) #4
  store i8 0, ptr %29, align 1, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 1, ptr %30) #4
  store i8 0, ptr %30, align 1, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 1, ptr %31) #4
  store i8 0, ptr %31, align 1, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 1, ptr %32) #4
  store i8 0, ptr %32, align 1, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #4
  store i32 0, ptr %33, align 4, !tbaa !38
  br label %139

139:                                              ; preds = %378, %138
  %140 = load i32, ptr %33, align 4, !tbaa !38
  %141 = load ptr, ptr %11, align 8, !tbaa !5
  %142 = load ptr, ptr %141, align 8, !tbaa !11
  %143 = getelementptr inbounds ptr, ptr %142, i64 36
  %144 = load ptr, ptr %143, align 8
  %145 = invoke noundef i32 %144(ptr noundef nonnull align 8 dereferenceable(328) %141)
          to label %146 unwind label %149

146:                                              ; preds = %139
  %147 = icmp slt i32 %140, %145
  br i1 %147, label %153, label %148

148:                                              ; preds = %146
  store i32 4, ptr %23, align 4
  br label %381

149:                                              ; preds = %369, %364, %357, %350, %345, %338, %331, %326, %319, %312, %303, %296, %287, %280, %276, %269, %262, %258, %251, %244, %237, %230, %221, %214, %201, %194, %183, %175, %168, %160, %153, %139
  %150 = landingpad { ptr, i32 }
          cleanup
  %151 = extractvalue { ptr, i32 } %150, 0
  store ptr %151, ptr %15, align 8
  %152 = extractvalue { ptr, i32 } %150, 1
  store i32 %152, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #4
  br label %994

153:                                              ; preds = %146
  %154 = load ptr, ptr %11, align 8, !tbaa !5
  %155 = load i32, ptr %33, align 4, !tbaa !38
  %156 = load ptr, ptr %154, align 8, !tbaa !11
  %157 = getelementptr inbounds ptr, ptr %156, i64 39
  %158 = load ptr, ptr %157, align 8
  %159 = invoke noundef nonnull align 8 dereferenceable(24) ptr %158(ptr noundef nonnull align 8 dereferenceable(328) %154, i32 noundef %155)
          to label %160 unwind label %149

160:                                              ; preds = %153
  %161 = getelementptr inbounds %"struct.glslang::TParameter", ptr %159, i32 0, i32 1
  %162 = load ptr, ptr %161, align 8, !tbaa !39
  %163 = load ptr, ptr %162, align 8, !tbaa !11
  %164 = getelementptr inbounds ptr, ptr %163, i64 29
  %165 = load ptr, ptr %164, align 8
  %166 = invoke noundef zeroext i1 %165(ptr noundef nonnull align 8 dereferenceable(144) %162)
          to label %167 unwind label %149

167:                                              ; preds = %160
  br i1 %166, label %168, label %191

168:                                              ; preds = %167
  %169 = load ptr, ptr %11, align 8, !tbaa !5
  %170 = load i32, ptr %33, align 4, !tbaa !38
  %171 = load ptr, ptr %169, align 8, !tbaa !11
  %172 = getelementptr inbounds ptr, ptr %171, i64 39
  %173 = load ptr, ptr %172, align 8
  %174 = invoke noundef nonnull align 8 dereferenceable(24) ptr %173(ptr noundef nonnull align 8 dereferenceable(328) %169, i32 noundef %170)
          to label %175 unwind label %149

175:                                              ; preds = %168
  %176 = getelementptr inbounds %"struct.glslang::TParameter", ptr %174, i32 0, i32 1
  %177 = load ptr, ptr %176, align 8, !tbaa !39
  %178 = load ptr, ptr %177, align 8, !tbaa !11
  %179 = getelementptr inbounds ptr, ptr %178, i64 31
  %180 = load ptr, ptr %179, align 8
  %181 = invoke noundef zeroext i1 %180(ptr noundef nonnull align 8 dereferenceable(144) %177)
          to label %182 unwind label %149

182:                                              ; preds = %175
  br i1 %181, label %183, label %190

183:                                              ; preds = %182
  %184 = load ptr, ptr %9, align 8, !tbaa !5
  %185 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %14) #4
  %186 = load ptr, ptr %38, align 8, !tbaa !11
  %187 = getelementptr inbounds ptr, ptr %186, i64 42
  %188 = load ptr, ptr %187, align 8
  invoke void (ptr, ptr, ptr, ptr, ptr, ...) %188(ptr noundef nonnull align 8 dereferenceable(1176) %38, ptr noundef nonnull align 8 dereferenceable(24) %184, ptr noundef @.str.328, ptr noundef %185, ptr noundef @.str.2)
          to label %189 unwind label %149

189:                                              ; preds = %183
  store i1 true, ptr %7, align 1
  store i32 1, ptr %23, align 4
  br label %381

190:                                              ; preds = %182
  store i8 1, ptr %30, align 1, !tbaa !37
  br label %191

191:                                              ; preds = %190, %167
  %192 = load i8, ptr %22, align 1, !tbaa !37, !range !41, !noundef !42
  %193 = trunc i8 %192 to i1
  br i1 %193, label %194, label %210

194:                                              ; preds = %191
  %195 = load ptr, ptr %11, align 8, !tbaa !5
  %196 = load i32, ptr %33, align 4, !tbaa !38
  %197 = load ptr, ptr %195, align 8, !tbaa !11
  %198 = getelementptr inbounds ptr, ptr %197, i64 39
  %199 = load ptr, ptr %198, align 8
  %200 = invoke noundef nonnull align 8 dereferenceable(24) ptr %199(ptr noundef nonnull align 8 dereferenceable(328) %195, i32 noundef %196)
          to label %201 unwind label %149

201:                                              ; preds = %194
  %202 = getelementptr inbounds %"struct.glslang::TParameter", ptr %200, i32 0, i32 1
  %203 = load ptr, ptr %202, align 8, !tbaa !39
  %204 = load ptr, ptr %203, align 8, !tbaa !11
  %205 = getelementptr inbounds ptr, ptr %204, i64 28
  %206 = load ptr, ptr %205, align 8
  %207 = invoke noundef zeroext i1 %206(ptr noundef nonnull align 8 dereferenceable(144) %203)
          to label %208 unwind label %149

208:                                              ; preds = %201
  br i1 %207, label %209, label %210

209:                                              ; preds = %208
  store i8 1, ptr %29, align 1, !tbaa !37
  br label %210

210:                                              ; preds = %209, %208, %191
  %211 = load i8, ptr %27, align 1, !tbaa !37, !range !41, !noundef !42
  %212 = trunc i8 %211 to i1
  br i1 %212, label %213, label %214

213:                                              ; preds = %210
  store i8 1, ptr %28, align 1, !tbaa !37
  br label %214

214:                                              ; preds = %213, %210
  %215 = load ptr, ptr %11, align 8, !tbaa !5
  %216 = load i32, ptr %33, align 4, !tbaa !38
  %217 = load ptr, ptr %215, align 8, !tbaa !11
  %218 = getelementptr inbounds ptr, ptr %217, i64 39
  %219 = load ptr, ptr %218, align 8
  %220 = invoke noundef nonnull align 8 dereferenceable(24) ptr %219(ptr noundef nonnull align 8 dereferenceable(328) %215, i32 noundef %216)
          to label %221 unwind label %149

221:                                              ; preds = %214
  %222 = getelementptr inbounds %"struct.glslang::TParameter", ptr %220, i32 0, i32 1
  %223 = load ptr, ptr %222, align 8, !tbaa !39
  %224 = invoke noundef i32 @_ZNK7glslang5TType20computeNumComponentsEv(ptr noundef nonnull align 8 dereferenceable(144) %223)
          to label %225 unwind label %149

225:                                              ; preds = %221
  %226 = load i32, ptr %24, align 4, !tbaa !38
  %227 = add nsw i32 %226, %224
  store i32 %227, ptr %24, align 4, !tbaa !38
  %228 = load i32, ptr %12, align 4, !tbaa !9
  %229 = icmp ne i32 %228, 568
  br i1 %229, label %230, label %244

230:                                              ; preds = %225
  %231 = load ptr, ptr %13, align 8, !tbaa !5
  %232 = load ptr, ptr %231, align 8, !tbaa !11
  %233 = getelementptr inbounds ptr, ptr %232, i64 29
  %234 = load ptr, ptr %233, align 8
  %235 = invoke noundef zeroext i1 %234(ptr noundef nonnull align 8 dereferenceable(144) %231)
          to label %236 unwind label %149

236:                                              ; preds = %230
  br i1 %235, label %244, label %237

237:                                              ; preds = %236
  %238 = load i32, ptr %24, align 4, !tbaa !38
  %239 = load ptr, ptr %13, align 8, !tbaa !5
  %240 = invoke noundef i32 @_ZNK7glslang5TType20computeNumComponentsEv(ptr noundef nonnull align 8 dereferenceable(144) %239)
          to label %241 unwind label %149

241:                                              ; preds = %237
  %242 = icmp sge i32 %238, %240
  br i1 %242, label %243, label %244

243:                                              ; preds = %241
  store i8 1, ptr %27, align 1, !tbaa !37
  br label %244

244:                                              ; preds = %243, %241, %236, %225
  %245 = load ptr, ptr %11, align 8, !tbaa !5
  %246 = load i32, ptr %33, align 4, !tbaa !38
  %247 = load ptr, ptr %245, align 8, !tbaa !11
  %248 = getelementptr inbounds ptr, ptr %247, i64 39
  %249 = load ptr, ptr %248, align 8
  %250 = invoke noundef nonnull align 8 dereferenceable(24) ptr %249(ptr noundef nonnull align 8 dereferenceable(328) %245, i32 noundef %246)
          to label %251 unwind label %149

251:                                              ; preds = %244
  %252 = getelementptr inbounds %"struct.glslang::TParameter", ptr %250, i32 0, i32 1
  %253 = load ptr, ptr %252, align 8, !tbaa !39
  %254 = load ptr, ptr %253, align 8, !tbaa !11
  %255 = getelementptr inbounds ptr, ptr %254, i64 10
  %256 = load ptr, ptr %255, align 8
  %257 = invoke noundef nonnull align 8 dereferenceable(72) ptr %256(ptr noundef nonnull align 8 dereferenceable(144) %253)
          to label %258 unwind label %149

258:                                              ; preds = %251
  %259 = invoke noundef zeroext i1 @_ZNK7glslang10TQualifier10isConstantEv(ptr noundef nonnull align 8 dereferenceable(72) %257)
          to label %260 unwind label %149

260:                                              ; preds = %258
  br i1 %259, label %262, label %261

261:                                              ; preds = %260
  store i8 0, ptr %25, align 1, !tbaa !37
  br label %262

262:                                              ; preds = %261, %260
  %263 = load ptr, ptr %11, align 8, !tbaa !5
  %264 = load i32, ptr %33, align 4, !tbaa !38
  %265 = load ptr, ptr %263, align 8, !tbaa !11
  %266 = getelementptr inbounds ptr, ptr %265, i64 39
  %267 = load ptr, ptr %266, align 8
  %268 = invoke noundef nonnull align 8 dereferenceable(24) ptr %267(ptr noundef nonnull align 8 dereferenceable(328) %263, i32 noundef %264)
          to label %269 unwind label %149

269:                                              ; preds = %262
  %270 = getelementptr inbounds %"struct.glslang::TParameter", ptr %268, i32 0, i32 1
  %271 = load ptr, ptr %270, align 8, !tbaa !39
  %272 = load ptr, ptr %271, align 8, !tbaa !11
  %273 = getelementptr inbounds ptr, ptr %272, i64 10
  %274 = load ptr, ptr %273, align 8
  %275 = invoke noundef nonnull align 8 dereferenceable(72) ptr %274(ptr noundef nonnull align 8 dereferenceable(144) %271)
          to label %276 unwind label %149

276:                                              ; preds = %269
  %277 = invoke noundef zeroext i1 @_ZNK7glslang10TQualifier14isSpecConstantEv(ptr noundef nonnull align 8 dereferenceable(72) %275)
          to label %278 unwind label %149

278:                                              ; preds = %276
  br i1 %277, label %279, label %280

279:                                              ; preds = %278
  store i8 1, ptr %26, align 1, !tbaa !37
  br label %280

280:                                              ; preds = %279, %278
  %281 = load ptr, ptr %11, align 8, !tbaa !5
  %282 = load i32, ptr %33, align 4, !tbaa !38
  %283 = load ptr, ptr %281, align 8, !tbaa !11
  %284 = getelementptr inbounds ptr, ptr %283, i64 39
  %285 = load ptr, ptr %284, align 8
  %286 = invoke noundef nonnull align 8 dereferenceable(24) ptr %285(ptr noundef nonnull align 8 dereferenceable(328) %281, i32 noundef %282)
          to label %287 unwind label %149

287:                                              ; preds = %280
  %288 = getelementptr inbounds %"struct.glslang::TParameter", ptr %286, i32 0, i32 1
  %289 = load ptr, ptr %288, align 8, !tbaa !39
  %290 = load ptr, ptr %289, align 8, !tbaa !11
  %291 = getelementptr inbounds ptr, ptr %290, i64 36
  %292 = load ptr, ptr %291, align 8
  %293 = invoke noundef zeroext i1 %292(ptr noundef nonnull align 8 dereferenceable(144) %289)
          to label %294 unwind label %149

294:                                              ; preds = %287
  br i1 %293, label %295, label %296

295:                                              ; preds = %294
  store i8 1, ptr %31, align 1, !tbaa !37
  br label %296

296:                                              ; preds = %295, %294
  %297 = load ptr, ptr %11, align 8, !tbaa !5
  %298 = load i32, ptr %33, align 4, !tbaa !38
  %299 = load ptr, ptr %297, align 8, !tbaa !11
  %300 = getelementptr inbounds ptr, ptr %299, i64 39
  %301 = load ptr, ptr %300, align 8
  %302 = invoke noundef nonnull align 8 dereferenceable(24) ptr %301(ptr noundef nonnull align 8 dereferenceable(328) %297, i32 noundef %298)
          to label %303 unwind label %149

303:                                              ; preds = %296
  %304 = getelementptr inbounds %"struct.glslang::TParameter", ptr %302, i32 0, i32 1
  %305 = load ptr, ptr %304, align 8, !tbaa !39
  %306 = load ptr, ptr %305, align 8, !tbaa !11
  %307 = getelementptr inbounds ptr, ptr %306, i64 37
  %308 = load ptr, ptr %307, align 8
  %309 = invoke noundef zeroext i1 %308(ptr noundef nonnull align 8 dereferenceable(144) %305)
          to label %310 unwind label %149

310:                                              ; preds = %303
  br i1 %309, label %311, label %312

311:                                              ; preds = %310
  store i8 1, ptr %32, align 1, !tbaa !37
  br label %312

312:                                              ; preds = %311, %310
  %313 = load ptr, ptr %13, align 8, !tbaa !5
  %314 = load ptr, ptr %313, align 8, !tbaa !11
  %315 = getelementptr inbounds ptr, ptr %314, i64 35
  %316 = load ptr, ptr %315, align 8
  %317 = invoke noundef zeroext i1 %316(ptr noundef nonnull align 8 dereferenceable(144) %313)
          to label %318 unwind label %149

318:                                              ; preds = %312
  br i1 %317, label %319, label %377

319:                                              ; preds = %318
  %320 = load ptr, ptr %11, align 8, !tbaa !5
  %321 = load i32, ptr %33, align 4, !tbaa !38
  %322 = load ptr, ptr %320, align 8, !tbaa !11
  %323 = getelementptr inbounds ptr, ptr %322, i64 39
  %324 = load ptr, ptr %323, align 8
  %325 = invoke noundef nonnull align 8 dereferenceable(24) ptr %324(ptr noundef nonnull align 8 dereferenceable(328) %320, i32 noundef %321)
          to label %326 unwind label %149

326:                                              ; preds = %319
  %327 = getelementptr inbounds %"struct.glslang::TParameter", ptr %325, i32 0, i32 1
  %328 = load ptr, ptr %327, align 8, !tbaa !39
  %329 = invoke noundef zeroext i1 @_ZNK7glslang5TType18contains16BitFloatEv(ptr noundef nonnull align 8 dereferenceable(144) %328)
          to label %330 unwind label %149

330:                                              ; preds = %326
  br i1 %329, label %331, label %338

331:                                              ; preds = %330
  %332 = load ptr, ptr %9, align 8, !tbaa !5
  %333 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %14) #4
  %334 = load ptr, ptr %38, align 8, !tbaa !11
  %335 = getelementptr inbounds ptr, ptr %334, i64 21
  %336 = load ptr, ptr %335, align 8
  invoke void %336(ptr noundef nonnull align 8 dereferenceable(192) %38, ptr noundef nonnull align 8 dereferenceable(24) %332, ptr noundef %333, ptr noundef @.str.329)
          to label %337 unwind label %149

337:                                              ; preds = %331
  br label %338

338:                                              ; preds = %337, %330
  %339 = load ptr, ptr %11, align 8, !tbaa !5
  %340 = load i32, ptr %33, align 4, !tbaa !38
  %341 = load ptr, ptr %339, align 8, !tbaa !11
  %342 = getelementptr inbounds ptr, ptr %341, i64 39
  %343 = load ptr, ptr %342, align 8
  %344 = invoke noundef nonnull align 8 dereferenceable(24) ptr %343(ptr noundef nonnull align 8 dereferenceable(328) %339, i32 noundef %340)
          to label %345 unwind label %149

345:                                              ; preds = %338
  %346 = getelementptr inbounds %"struct.glslang::TParameter", ptr %344, i32 0, i32 1
  %347 = load ptr, ptr %346, align 8, !tbaa !39
  %348 = invoke noundef zeroext i1 @_ZNK7glslang5TType16contains16BitIntEv(ptr noundef nonnull align 8 dereferenceable(144) %347)
          to label %349 unwind label %149

349:                                              ; preds = %345
  br i1 %348, label %350, label %357

350:                                              ; preds = %349
  %351 = load ptr, ptr %9, align 8, !tbaa !5
  %352 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %14) #4
  %353 = load ptr, ptr %38, align 8, !tbaa !11
  %354 = getelementptr inbounds ptr, ptr %353, i64 24
  %355 = load ptr, ptr %354, align 8
  invoke void %355(ptr noundef nonnull align 8 dereferenceable(192) %38, ptr noundef nonnull align 8 dereferenceable(24) %351, ptr noundef %352, ptr noundef @.str.329)
          to label %356 unwind label %149

356:                                              ; preds = %350
  br label %357

357:                                              ; preds = %356, %349
  %358 = load ptr, ptr %11, align 8, !tbaa !5
  %359 = load i32, ptr %33, align 4, !tbaa !38
  %360 = load ptr, ptr %358, align 8, !tbaa !11
  %361 = getelementptr inbounds ptr, ptr %360, i64 39
  %362 = load ptr, ptr %361, align 8
  %363 = invoke noundef nonnull align 8 dereferenceable(24) ptr %362(ptr noundef nonnull align 8 dereferenceable(328) %358, i32 noundef %359)
          to label %364 unwind label %149

364:                                              ; preds = %357
  %365 = getelementptr inbounds %"struct.glslang::TParameter", ptr %363, i32 0, i32 1
  %366 = load ptr, ptr %365, align 8, !tbaa !39
  %367 = invoke noundef zeroext i1 @_ZNK7glslang5TType15contains8BitIntEv(ptr noundef nonnull align 8 dereferenceable(144) %366)
          to label %368 unwind label %149

368:                                              ; preds = %364
  br i1 %367, label %369, label %376

369:                                              ; preds = %368
  %370 = load ptr, ptr %9, align 8, !tbaa !5
  %371 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %14) #4
  %372 = load ptr, ptr %38, align 8, !tbaa !11
  %373 = getelementptr inbounds ptr, ptr %372, i64 27
  %374 = load ptr, ptr %373, align 8
  invoke void %374(ptr noundef nonnull align 8 dereferenceable(192) %38, ptr noundef nonnull align 8 dereferenceable(24) %370, ptr noundef %371, ptr noundef @.str.330)
          to label %375 unwind label %149

375:                                              ; preds = %369
  br label %376

376:                                              ; preds = %375, %368
  br label %377

377:                                              ; preds = %376, %318
  br label %378

378:                                              ; preds = %377
  %379 = load i32, ptr %33, align 4, !tbaa !38
  %380 = add nsw i32 %379, 1
  store i32 %380, ptr %33, align 4, !tbaa !38
  br label %139, !llvm.loop !43

381:                                              ; preds = %189, %148
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #4
  %382 = load i32, ptr %23, align 4
  switch i32 %382, label %993 [
    i32 4, label %383
  ]

383:                                              ; preds = %381
  %384 = load i32, ptr %12, align 4, !tbaa !9
  %385 = icmp eq i32 %384, 570
  br i1 %385, label %386, label %387

386:                                              ; preds = %383
  store i8 0, ptr %25, align 1, !tbaa !37
  br label %387

387:                                              ; preds = %386, %383
  %388 = load i32, ptr %12, align 4, !tbaa !9
  switch i32 %388, label %504 [
    i32 555, label %389
    i32 556, label %389
    i32 557, label %389
    i32 558, label %389
    i32 471, label %430
    i32 504, label %430
    i32 505, label %430
    i32 506, label %430
    i32 470, label %430
    i32 501, label %430
    i32 502, label %430
    i32 503, label %430
    i32 469, label %467
    i32 498, label %467
    i32 499, label %467
    i32 500, label %467
    i32 468, label %467
    i32 495, label %467
    i32 496, label %467
    i32 497, label %467
  ]

389:                                              ; preds = %387, %387, %387, %387
  %390 = load ptr, ptr %13, align 8, !tbaa !5
  %391 = load ptr, ptr %390, align 8, !tbaa !11
  %392 = getelementptr inbounds ptr, ptr %391, i64 29
  %393 = load ptr, ptr %392, align 8
  %394 = invoke noundef zeroext i1 %393(ptr noundef nonnull align 8 dereferenceable(144) %390)
          to label %395 unwind label %403

395:                                              ; preds = %389
  br i1 %394, label %396, label %407

396:                                              ; preds = %395
  %397 = load ptr, ptr %9, align 8, !tbaa !5
  %398 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %14) #4
  %399 = load ptr, ptr %38, align 8, !tbaa !11
  %400 = getelementptr inbounds ptr, ptr %399, i64 21
  %401 = load ptr, ptr %400, align 8
  invoke void %401(ptr noundef nonnull align 8 dereferenceable(192) %38, ptr noundef nonnull align 8 dereferenceable(24) %397, ptr noundef %398, ptr noundef @.str.331)
          to label %402 unwind label %403

402:                                              ; preds = %396
  br label %407

403:                                              ; preds = %914, %909, %903, %895, %889, %885, %878, %870, %866, %859, %853, %844, %831, %821, %818, %811, %801, %790, %782, %780, %773, %763, %759, %643, %635, %627, %621, %619, %612, %605, %598, %590, %583, %496, %488, %481, %474, %467, %459, %451, %444, %437, %430, %422, %414, %407, %396, %389
  %404 = landingpad { ptr, i32 }
          cleanup
  %405 = extractvalue { ptr, i32 } %404, 0
  store ptr %405, ptr %15, align 8
  %406 = extractvalue { ptr, i32 } %404, 1
  store i32 %406, ptr %16, align 4
  br label %994

407:                                              ; preds = %402, %395
  %408 = load ptr, ptr %13, align 8, !tbaa !5
  %409 = load ptr, ptr %408, align 8, !tbaa !11
  %410 = getelementptr inbounds ptr, ptr %409, i64 27
  %411 = load ptr, ptr %410, align 8
  %412 = invoke noundef zeroext i1 %411(ptr noundef nonnull align 8 dereferenceable(144) %408)
          to label %413 unwind label %403

413:                                              ; preds = %407
  br i1 %412, label %414, label %429

414:                                              ; preds = %413
  %415 = load ptr, ptr %11, align 8, !tbaa !5
  %416 = load ptr, ptr %415, align 8, !tbaa !11
  %417 = getelementptr inbounds ptr, ptr %416, i64 36
  %418 = load ptr, ptr %417, align 8
  %419 = invoke noundef i32 %418(ptr noundef nonnull align 8 dereferenceable(328) %415)
          to label %420 unwind label %403

420:                                              ; preds = %414
  %421 = icmp ne i32 %419, 1
  br i1 %421, label %422, label %429

422:                                              ; preds = %420
  %423 = load ptr, ptr %9, align 8, !tbaa !5
  %424 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %14) #4
  %425 = load ptr, ptr %38, align 8, !tbaa !11
  %426 = getelementptr inbounds ptr, ptr %425, i64 21
  %427 = load ptr, ptr %426, align 8
  invoke void %427(ptr noundef nonnull align 8 dereferenceable(192) %38, ptr noundef nonnull align 8 dereferenceable(24) %423, ptr noundef %424, ptr noundef @.str.332)
          to label %428 unwind label %403

428:                                              ; preds = %422
  br label %429

429:                                              ; preds = %428, %420, %413
  br label %505

430:                                              ; preds = %387, %387, %387, %387, %387, %387, %387, %387
  %431 = load ptr, ptr %13, align 8, !tbaa !5
  %432 = load ptr, ptr %431, align 8, !tbaa !11
  %433 = getelementptr inbounds ptr, ptr %432, i64 29
  %434 = load ptr, ptr %433, align 8
  %435 = invoke noundef zeroext i1 %434(ptr noundef nonnull align 8 dereferenceable(144) %431)
          to label %436 unwind label %403

436:                                              ; preds = %430
  br i1 %435, label %437, label %444

437:                                              ; preds = %436
  %438 = load ptr, ptr %9, align 8, !tbaa !5
  %439 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %14) #4
  %440 = load ptr, ptr %38, align 8, !tbaa !11
  %441 = getelementptr inbounds ptr, ptr %440, i64 24
  %442 = load ptr, ptr %441, align 8
  invoke void %442(ptr noundef nonnull align 8 dereferenceable(192) %38, ptr noundef nonnull align 8 dereferenceable(24) %438, ptr noundef %439, ptr noundef @.str.331)
          to label %443 unwind label %403

443:                                              ; preds = %437
  br label %444

444:                                              ; preds = %443, %436
  %445 = load ptr, ptr %13, align 8, !tbaa !5
  %446 = load ptr, ptr %445, align 8, !tbaa !11
  %447 = getelementptr inbounds ptr, ptr %446, i64 27
  %448 = load ptr, ptr %447, align 8
  %449 = invoke noundef zeroext i1 %448(ptr noundef nonnull align 8 dereferenceable(144) %445)
          to label %450 unwind label %403

450:                                              ; preds = %444
  br i1 %449, label %451, label %466

451:                                              ; preds = %450
  %452 = load ptr, ptr %11, align 8, !tbaa !5
  %453 = load ptr, ptr %452, align 8, !tbaa !11
  %454 = getelementptr inbounds ptr, ptr %453, i64 36
  %455 = load ptr, ptr %454, align 8
  %456 = invoke noundef i32 %455(ptr noundef nonnull align 8 dereferenceable(328) %452)
          to label %457 unwind label %403

457:                                              ; preds = %451
  %458 = icmp ne i32 %456, 1
  br i1 %458, label %459, label %466

459:                                              ; preds = %457
  %460 = load ptr, ptr %9, align 8, !tbaa !5
  %461 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %14) #4
  %462 = load ptr, ptr %38, align 8, !tbaa !11
  %463 = getelementptr inbounds ptr, ptr %462, i64 24
  %464 = load ptr, ptr %463, align 8
  invoke void %464(ptr noundef nonnull align 8 dereferenceable(192) %38, ptr noundef nonnull align 8 dereferenceable(24) %460, ptr noundef %461, ptr noundef @.str.332)
          to label %465 unwind label %403

465:                                              ; preds = %459
  br label %466

466:                                              ; preds = %465, %457, %450
  br label %505

467:                                              ; preds = %387, %387, %387, %387, %387, %387, %387, %387
  %468 = load ptr, ptr %13, align 8, !tbaa !5
  %469 = load ptr, ptr %468, align 8, !tbaa !11
  %470 = getelementptr inbounds ptr, ptr %469, i64 29
  %471 = load ptr, ptr %470, align 8
  %472 = invoke noundef zeroext i1 %471(ptr noundef nonnull align 8 dereferenceable(144) %468)
          to label %473 unwind label %403

473:                                              ; preds = %467
  br i1 %472, label %474, label %481

474:                                              ; preds = %473
  %475 = load ptr, ptr %9, align 8, !tbaa !5
  %476 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %14) #4
  %477 = load ptr, ptr %38, align 8, !tbaa !11
  %478 = getelementptr inbounds ptr, ptr %477, i64 27
  %479 = load ptr, ptr %478, align 8
  invoke void %479(ptr noundef nonnull align 8 dereferenceable(192) %38, ptr noundef nonnull align 8 dereferenceable(24) %475, ptr noundef %476, ptr noundef @.str.333)
          to label %480 unwind label %403

480:                                              ; preds = %474
  br label %481

481:                                              ; preds = %480, %473
  %482 = load ptr, ptr %13, align 8, !tbaa !5
  %483 = load ptr, ptr %482, align 8, !tbaa !11
  %484 = getelementptr inbounds ptr, ptr %483, i64 27
  %485 = load ptr, ptr %484, align 8
  %486 = invoke noundef zeroext i1 %485(ptr noundef nonnull align 8 dereferenceable(144) %482)
          to label %487 unwind label %403

487:                                              ; preds = %481
  br i1 %486, label %488, label %503

488:                                              ; preds = %487
  %489 = load ptr, ptr %11, align 8, !tbaa !5
  %490 = load ptr, ptr %489, align 8, !tbaa !11
  %491 = getelementptr inbounds ptr, ptr %490, i64 36
  %492 = load ptr, ptr %491, align 8
  %493 = invoke noundef i32 %492(ptr noundef nonnull align 8 dereferenceable(328) %489)
          to label %494 unwind label %403

494:                                              ; preds = %488
  %495 = icmp ne i32 %493, 1
  br i1 %495, label %496, label %503

496:                                              ; preds = %494
  %497 = load ptr, ptr %9, align 8, !tbaa !5
  %498 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %14) #4
  %499 = load ptr, ptr %38, align 8, !tbaa !11
  %500 = getelementptr inbounds ptr, ptr %499, i64 27
  %501 = load ptr, ptr %500, align 8
  invoke void %501(ptr noundef nonnull align 8 dereferenceable(192) %38, ptr noundef nonnull align 8 dereferenceable(24) %497, ptr noundef %498, ptr noundef @.str.334)
          to label %502 unwind label %403

502:                                              ; preds = %496
  br label %503

503:                                              ; preds = %502, %494, %487
  br label %505

504:                                              ; preds = %387
  br label %505

505:                                              ; preds = %504, %503, %466, %429
  %506 = load i8, ptr %25, align 1, !tbaa !37, !range !41, !noundef !42
  %507 = trunc i8 %506 to i1
  br i1 %507, label %508, label %583

508:                                              ; preds = %505
  call void @llvm.lifetime.start.p0(i64 1, ptr %34) #4
  %509 = load i8, ptr %26, align 1, !tbaa !37, !range !41, !noundef !42
  %510 = trunc i8 %509 to i1
  br i1 %510, label %511, label %547

511:                                              ; preds = %508
  %512 = load i32, ptr %12, align 4, !tbaa !9
  switch i32 %512, label %545 [
    i32 468, label %513
    i32 466, label %513
    i32 467, label %513
    i32 474, label %513
    i32 492, label %513
    i32 493, label %513
    i32 494, label %513
    i32 507, label %513
    i32 508, label %513
    i32 509, label %513
    i32 510, label %513
    i32 511, label %513
    i32 512, label %513
    i32 469, label %513
    i32 470, label %513
    i32 471, label %513
    i32 472, label %513
    i32 473, label %513
    i32 495, label %513
    i32 496, label %513
    i32 497, label %513
    i32 498, label %513
    i32 499, label %513
    i32 500, label %513
    i32 501, label %513
    i32 502, label %513
    i32 503, label %513
    i32 504, label %513
    i32 505, label %513
    i32 506, label %513
    i32 513, label %513
    i32 514, label %513
    i32 515, label %513
    i32 516, label %513
    i32 517, label %513
    i32 518, label %513
    i32 477, label %531
    i32 478, label %531
    i32 479, label %531
  ]

513:                                              ; preds = %511, %511, %511, %511, %511, %511, %511, %511, %511, %511, %511, %511, %511, %511, %511, %511, %511, %511, %511, %511, %511, %511, %511, %511, %511, %511, %511, %511, %511, %511, %511, %511, %511, %511, %511, %511
  %514 = load i8, ptr %31, align 1, !tbaa !37, !range !41, !noundef !42
  %515 = trunc i8 %514 to i1
  br i1 %515, label %524, label %516

516:                                              ; preds = %513
  %517 = load ptr, ptr %13, align 8, !tbaa !5
  %518 = load ptr, ptr %517, align 8, !tbaa !11
  %519 = getelementptr inbounds ptr, ptr %518, i64 29
  %520 = load ptr, ptr %519, align 8
  %521 = invoke noundef zeroext i1 %520(ptr noundef nonnull align 8 dereferenceable(144) %517)
          to label %522 unwind label %527

522:                                              ; preds = %516
  %523 = xor i1 %521, true
  br label %524

524:                                              ; preds = %522, %513
  %525 = phi i1 [ false, %513 ], [ %523, %522 ]
  %526 = zext i1 %525 to i8
  store i8 %526, ptr %34, align 1, !tbaa !37
  br label %546

527:                                              ; preds = %570, %568, %562, %557, %551, %534, %516
  %528 = landingpad { ptr, i32 }
          cleanup
  %529 = extractvalue { ptr, i32 } %528, 0
  store ptr %529, ptr %15, align 8
  %530 = extractvalue { ptr, i32 } %528, 1
  store i32 %530, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #4
  br label %994

531:                                              ; preds = %511, %511, %511
  %532 = load i8, ptr %32, align 1, !tbaa !37, !range !41, !noundef !42
  %533 = trunc i8 %532 to i1
  br i1 %533, label %542, label %534

534:                                              ; preds = %531
  %535 = load ptr, ptr %13, align 8, !tbaa !5
  %536 = load ptr, ptr %535, align 8, !tbaa !11
  %537 = getelementptr inbounds ptr, ptr %536, i64 29
  %538 = load ptr, ptr %537, align 8
  %539 = invoke noundef zeroext i1 %538(ptr noundef nonnull align 8 dereferenceable(144) %535)
          to label %540 unwind label %527

540:                                              ; preds = %534
  %541 = xor i1 %539, true
  br label %542

542:                                              ; preds = %540, %531
  %543 = phi i1 [ false, %531 ], [ %541, %540 ]
  %544 = zext i1 %543 to i8
  store i8 %544, ptr %34, align 1, !tbaa !37
  br label %546

545:                                              ; preds = %511
  store i8 0, ptr %34, align 1, !tbaa !37
  br label %546

546:                                              ; preds = %545, %542, %524
  br label %548

547:                                              ; preds = %508
  store i8 0, ptr %34, align 1, !tbaa !37
  br label %548

548:                                              ; preds = %547, %546
  %549 = load i8, ptr %34, align 1, !tbaa !37, !range !41, !noundef !42
  %550 = trunc i8 %549 to i1
  br i1 %550, label %551, label %559

551:                                              ; preds = %548
  %552 = load ptr, ptr %13, align 8, !tbaa !5
  %553 = load ptr, ptr %552, align 8, !tbaa !11
  %554 = getelementptr inbounds ptr, ptr %553, i64 10
  %555 = load ptr, ptr %554, align 8
  %556 = invoke noundef nonnull align 8 dereferenceable(72) ptr %555(ptr noundef nonnull align 8 dereferenceable(144) %552)
          to label %557 unwind label %527

557:                                              ; preds = %551
  invoke void @_ZN7glslang10TQualifier16makeSpecConstantEv(ptr noundef nonnull align 8 dereferenceable(72) %556)
          to label %558 unwind label %527

558:                                              ; preds = %557
  br label %582

559:                                              ; preds = %548
  %560 = load i8, ptr %26, align 1, !tbaa !37, !range !41, !noundef !42
  %561 = trunc i8 %560 to i1
  br i1 %561, label %562, label %570

562:                                              ; preds = %559
  %563 = load ptr, ptr %13, align 8, !tbaa !5
  %564 = load ptr, ptr %563, align 8, !tbaa !11
  %565 = getelementptr inbounds ptr, ptr %564, i64 10
  %566 = load ptr, ptr %565, align 8
  %567 = invoke noundef nonnull align 8 dereferenceable(72) ptr %566(ptr noundef nonnull align 8 dereferenceable(144) %563)
          to label %568 unwind label %527

568:                                              ; preds = %562
  invoke void @_ZN7glslang10TQualifier13makeTemporaryEv(ptr noundef nonnull align 8 dereferenceable(72) %567)
          to label %569 unwind label %527

569:                                              ; preds = %568
  br label %581

570:                                              ; preds = %559
  %571 = load ptr, ptr %13, align 8, !tbaa !5
  %572 = load ptr, ptr %571, align 8, !tbaa !11
  %573 = getelementptr inbounds ptr, ptr %572, i64 10
  %574 = load ptr, ptr %573, align 8
  %575 = invoke noundef nonnull align 8 dereferenceable(72) ptr %574(ptr noundef nonnull align 8 dereferenceable(144) %571)
          to label %576 unwind label %527

576:                                              ; preds = %570
  %577 = getelementptr inbounds %"class.glslang::TQualifier", ptr %575, i32 0, i32 1
  %578 = load i64, ptr %577, align 8
  %579 = and i64 %578, -64
  %580 = or i64 %579, 2
  store i64 %580, ptr %577, align 8
  br label %581

581:                                              ; preds = %576, %569
  br label %582

582:                                              ; preds = %581, %558
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #4
  br label %583

583:                                              ; preds = %582, %505
  %584 = load ptr, ptr %13, align 8, !tbaa !5
  %585 = load ptr, ptr %584, align 8, !tbaa !11
  %586 = getelementptr inbounds ptr, ptr %585, i64 29
  %587 = load ptr, ptr %586, align 8
  %588 = invoke noundef zeroext i1 %587(ptr noundef nonnull align 8 dereferenceable(144) %584)
          to label %589 unwind label %403

589:                                              ; preds = %583
  br i1 %588, label %590, label %753

590:                                              ; preds = %589
  %591 = load ptr, ptr %11, align 8, !tbaa !5
  %592 = load ptr, ptr %591, align 8, !tbaa !11
  %593 = getelementptr inbounds ptr, ptr %592, i64 36
  %594 = load ptr, ptr %593, align 8
  %595 = invoke noundef i32 %594(ptr noundef nonnull align 8 dereferenceable(328) %591)
          to label %596 unwind label %403

596:                                              ; preds = %590
  %597 = icmp eq i32 %595, 0
  br i1 %597, label %598, label %605

598:                                              ; preds = %596
  %599 = load ptr, ptr %9, align 8, !tbaa !5
  %600 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %14) #4
  %601 = load ptr, ptr %38, align 8, !tbaa !11
  %602 = getelementptr inbounds ptr, ptr %601, i64 42
  %603 = load ptr, ptr %602, align 8
  invoke void (ptr, ptr, ptr, ptr, ptr, ...) %603(ptr noundef nonnull align 8 dereferenceable(1176) %38, ptr noundef nonnull align 8 dereferenceable(24) %599, ptr noundef @.str.335, ptr noundef %600, ptr noundef @.str.2)
          to label %604 unwind label %403

604:                                              ; preds = %598
  store i1 true, ptr %7, align 1
  store i32 1, ptr %23, align 4
  br label %993

605:                                              ; preds = %596
  %606 = load ptr, ptr %13, align 8, !tbaa !5
  %607 = load ptr, ptr %606, align 8, !tbaa !11
  %608 = getelementptr inbounds ptr, ptr %607, i64 31
  %609 = load ptr, ptr %608, align 8
  %610 = invoke noundef zeroext i1 %609(ptr noundef nonnull align 8 dereferenceable(144) %606)
          to label %611 unwind label %403

611:                                              ; preds = %605
  br i1 %610, label %612, label %621

612:                                              ; preds = %611
  %613 = load ptr, ptr %13, align 8, !tbaa !5
  %614 = load ptr, ptr %11, align 8, !tbaa !5
  %615 = load ptr, ptr %614, align 8, !tbaa !11
  %616 = getelementptr inbounds ptr, ptr %615, i64 36
  %617 = load ptr, ptr %616, align 8
  %618 = invoke noundef i32 %617(ptr noundef nonnull align 8 dereferenceable(328) %614)
          to label %619 unwind label %403

619:                                              ; preds = %612
  invoke void @_ZN7glslang5TType20changeOuterArraySizeEi(ptr noundef nonnull align 8 dereferenceable(144) %613, i32 noundef %618)
          to label %620 unwind label %403

620:                                              ; preds = %619
  br label %643

621:                                              ; preds = %611
  %622 = load ptr, ptr %13, align 8, !tbaa !5
  %623 = load ptr, ptr %622, align 8, !tbaa !11
  %624 = getelementptr inbounds ptr, ptr %623, i64 15
  %625 = load ptr, ptr %624, align 8
  %626 = invoke noundef i32 %625(ptr noundef nonnull align 8 dereferenceable(144) %622)
          to label %627 unwind label %403

627:                                              ; preds = %621
  %628 = load ptr, ptr %11, align 8, !tbaa !5
  %629 = load ptr, ptr %628, align 8, !tbaa !11
  %630 = getelementptr inbounds ptr, ptr %629, i64 36
  %631 = load ptr, ptr %630, align 8
  %632 = invoke noundef i32 %631(ptr noundef nonnull align 8 dereferenceable(328) %628)
          to label %633 unwind label %403

633:                                              ; preds = %627
  %634 = icmp ne i32 %626, %632
  br i1 %634, label %635, label %642

635:                                              ; preds = %633
  %636 = load ptr, ptr %9, align 8, !tbaa !5
  %637 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %14) #4
  %638 = load ptr, ptr %38, align 8, !tbaa !11
  %639 = getelementptr inbounds ptr, ptr %638, i64 42
  %640 = load ptr, ptr %639, align 8
  invoke void (ptr, ptr, ptr, ptr, ptr, ...) %640(ptr noundef nonnull align 8 dereferenceable(1176) %38, ptr noundef nonnull align 8 dereferenceable(24) %636, ptr noundef @.str.336, ptr noundef %637, ptr noundef @.str.2)
          to label %641 unwind label %403

641:                                              ; preds = %635
  store i1 true, ptr %7, align 1
  store i32 1, ptr %23, align 4
  br label %993

642:                                              ; preds = %633
  br label %643

643:                                              ; preds = %642, %620
  %644 = load ptr, ptr %13, align 8, !tbaa !5
  %645 = invoke noundef zeroext i1 @_ZNK7glslang5TType15isArrayOfArraysEv(ptr noundef nonnull align 8 dereferenceable(144) %644)
          to label %646 unwind label %403

646:                                              ; preds = %643
  br i1 %645, label %647, label %752

647:                                              ; preds = %646
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #4
  %648 = load ptr, ptr %13, align 8, !tbaa !5
  %649 = load ptr, ptr %648, align 8, !tbaa !11
  %650 = getelementptr inbounds ptr, ptr %649, i64 20
  %651 = load ptr, ptr %650, align 8
  %652 = invoke noundef ptr %651(ptr noundef nonnull align 8 dereferenceable(144) %648)
          to label %653 unwind label %695

653:                                              ; preds = %647
  store ptr %652, ptr %35, align 8, !tbaa !5
  %654 = load ptr, ptr %11, align 8, !tbaa !5
  %655 = load ptr, ptr %654, align 8, !tbaa !11
  %656 = getelementptr inbounds ptr, ptr %655, i64 39
  %657 = load ptr, ptr %656, align 8
  %658 = invoke noundef nonnull align 8 dereferenceable(24) ptr %657(ptr noundef nonnull align 8 dereferenceable(328) %654, i32 noundef 0)
          to label %659 unwind label %695

659:                                              ; preds = %653
  %660 = getelementptr inbounds %"struct.glslang::TParameter", ptr %658, i32 0, i32 1
  %661 = load ptr, ptr %660, align 8, !tbaa !39
  %662 = load ptr, ptr %661, align 8, !tbaa !11
  %663 = getelementptr inbounds ptr, ptr %662, i64 29
  %664 = load ptr, ptr %663, align 8
  %665 = invoke noundef zeroext i1 %664(ptr noundef nonnull align 8 dereferenceable(144) %661)
          to label %666 unwind label %695

666:                                              ; preds = %659
  br i1 %665, label %667, label %688

667:                                              ; preds = %666
  %668 = load ptr, ptr %35, align 8, !tbaa !5
  %669 = invoke noundef i32 @_ZNK7glslang11TArraySizes10getNumDimsEv(ptr noundef nonnull align 8 dereferenceable(21) %668)
          to label %670 unwind label %695

670:                                              ; preds = %667
  %671 = load ptr, ptr %11, align 8, !tbaa !5
  %672 = load ptr, ptr %671, align 8, !tbaa !11
  %673 = getelementptr inbounds ptr, ptr %672, i64 39
  %674 = load ptr, ptr %673, align 8
  %675 = invoke noundef nonnull align 8 dereferenceable(24) ptr %674(ptr noundef nonnull align 8 dereferenceable(328) %671, i32 noundef 0)
          to label %676 unwind label %695

676:                                              ; preds = %670
  %677 = getelementptr inbounds %"struct.glslang::TParameter", ptr %675, i32 0, i32 1
  %678 = load ptr, ptr %677, align 8, !tbaa !39
  %679 = load ptr, ptr %678, align 8, !tbaa !11
  %680 = getelementptr inbounds ptr, ptr %679, i64 20
  %681 = load ptr, ptr %680, align 8
  %682 = invoke noundef ptr %681(ptr noundef nonnull align 8 dereferenceable(144) %678)
          to label %683 unwind label %695

683:                                              ; preds = %676
  %684 = invoke noundef i32 @_ZNK7glslang11TArraySizes10getNumDimsEv(ptr noundef nonnull align 8 dereferenceable(21) %682)
          to label %685 unwind label %695

685:                                              ; preds = %683
  %686 = add nsw i32 %684, 1
  %687 = icmp ne i32 %669, %686
  br i1 %687, label %688, label %699

688:                                              ; preds = %685, %666
  %689 = load ptr, ptr %9, align 8, !tbaa !5
  %690 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %14) #4
  %691 = load ptr, ptr %38, align 8, !tbaa !11
  %692 = getelementptr inbounds ptr, ptr %691, i64 42
  %693 = load ptr, ptr %692, align 8
  invoke void (ptr, ptr, ptr, ptr, ptr, ...) %693(ptr noundef nonnull align 8 dereferenceable(1176) %38, ptr noundef nonnull align 8 dereferenceable(24) %689, ptr noundef @.str.337, ptr noundef %690, ptr noundef @.str.2)
          to label %694 unwind label %695

694:                                              ; preds = %688
  store i1 true, ptr %7, align 1
  store i32 1, ptr %23, align 4
  br label %748

695:                                              ; preds = %699, %688, %683, %676, %670, %667, %659, %653, %647
  %696 = landingpad { ptr, i32 }
          cleanup
  %697 = extractvalue { ptr, i32 } %696, 0
  store ptr %697, ptr %15, align 8
  %698 = extractvalue { ptr, i32 } %696, 1
  store i32 %698, ptr %16, align 4
  br label %751

699:                                              ; preds = %685
  %700 = load ptr, ptr %35, align 8, !tbaa !5
  %701 = invoke noundef zeroext i1 @_ZNK7glslang11TArraySizes14isInnerUnsizedEv(ptr noundef nonnull align 8 dereferenceable(21) %700)
          to label %702 unwind label %695

702:                                              ; preds = %699
  br i1 %701, label %703, label %747

703:                                              ; preds = %702
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #4
  store i32 1, ptr %36, align 4, !tbaa !38
  br label %704

704:                                              ; preds = %743, %703
  %705 = load i32, ptr %36, align 4, !tbaa !38
  %706 = load ptr, ptr %35, align 8, !tbaa !5
  %707 = invoke noundef i32 @_ZNK7glslang11TArraySizes10getNumDimsEv(ptr noundef nonnull align 8 dereferenceable(21) %706)
          to label %708 unwind label %711

708:                                              ; preds = %704
  %709 = icmp slt i32 %705, %707
  br i1 %709, label %715, label %710

710:                                              ; preds = %708
  store i32 9, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #4
  br label %746

711:                                              ; preds = %740, %736, %729, %721, %715, %704
  %712 = landingpad { ptr, i32 }
          cleanup
  %713 = extractvalue { ptr, i32 } %712, 0
  store ptr %713, ptr %15, align 8
  %714 = extractvalue { ptr, i32 } %712, 1
  store i32 %714, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #4
  br label %751

715:                                              ; preds = %708
  %716 = load ptr, ptr %35, align 8, !tbaa !5
  %717 = load i32, ptr %36, align 4, !tbaa !38
  %718 = invoke noundef i32 @_ZNK7glslang11TArraySizes10getDimSizeEi(ptr noundef nonnull align 8 dereferenceable(21) %716, i32 noundef %717)
          to label %719 unwind label %711

719:                                              ; preds = %715
  %720 = icmp eq i32 %718, 0
  br i1 %720, label %721, label %742

721:                                              ; preds = %719
  %722 = load ptr, ptr %35, align 8, !tbaa !5
  %723 = load i32, ptr %36, align 4, !tbaa !38
  %724 = load ptr, ptr %11, align 8, !tbaa !5
  %725 = load ptr, ptr %724, align 8, !tbaa !11
  %726 = getelementptr inbounds ptr, ptr %725, i64 39
  %727 = load ptr, ptr %726, align 8
  %728 = invoke noundef nonnull align 8 dereferenceable(24) ptr %727(ptr noundef nonnull align 8 dereferenceable(328) %724, i32 noundef 0)
          to label %729 unwind label %711

729:                                              ; preds = %721
  %730 = getelementptr inbounds %"struct.glslang::TParameter", ptr %728, i32 0, i32 1
  %731 = load ptr, ptr %730, align 8, !tbaa !39
  %732 = load ptr, ptr %731, align 8, !tbaa !11
  %733 = getelementptr inbounds ptr, ptr %732, i64 20
  %734 = load ptr, ptr %733, align 8
  %735 = invoke noundef ptr %734(ptr noundef nonnull align 8 dereferenceable(144) %731)
          to label %736 unwind label %711

736:                                              ; preds = %729
  %737 = load i32, ptr %36, align 4, !tbaa !38
  %738 = sub nsw i32 %737, 1
  %739 = invoke noundef i32 @_ZNK7glslang11TArraySizes10getDimSizeEi(ptr noundef nonnull align 8 dereferenceable(21) %735, i32 noundef %738)
          to label %740 unwind label %711

740:                                              ; preds = %736
  invoke void @_ZN7glslang11TArraySizes10setDimSizeEii(ptr noundef nonnull align 8 dereferenceable(21) %722, i32 noundef %723, i32 noundef %739)
          to label %741 unwind label %711

741:                                              ; preds = %740
  br label %742

742:                                              ; preds = %741, %719
  br label %743

743:                                              ; preds = %742
  %744 = load i32, ptr %36, align 4, !tbaa !38
  %745 = add nsw i32 %744, 1
  store i32 %745, ptr %36, align 4, !tbaa !38
  br label %704, !llvm.loop !45

746:                                              ; preds = %710
  br label %747

747:                                              ; preds = %746, %702
  store i32 0, ptr %23, align 4
  br label %748

748:                                              ; preds = %747, %694
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #4
  %749 = load i32, ptr %23, align 4
  switch i32 %749, label %993 [
    i32 0, label %750
  ]

750:                                              ; preds = %748
  br label %752

751:                                              ; preds = %711, %695
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #4
  br label %994

752:                                              ; preds = %750, %646
  br label %753

753:                                              ; preds = %752, %589
  %754 = load i8, ptr %30, align 1, !tbaa !37, !range !41, !noundef !42
  %755 = trunc i8 %754 to i1
  br i1 %755, label %756, label %770

756:                                              ; preds = %753
  %757 = load i32, ptr %12, align 4, !tbaa !9
  %758 = icmp ne i32 %757, 568
  br i1 %758, label %759, label %770

759:                                              ; preds = %756
  %760 = load ptr, ptr %13, align 8, !tbaa !5
  %761 = invoke noundef zeroext i1 @_ZNK7glslang5TType15isArrayOfArraysEv(ptr noundef nonnull align 8 dereferenceable(144) %760)
          to label %762 unwind label %403

762:                                              ; preds = %759
  br i1 %761, label %770, label %763

763:                                              ; preds = %762
  %764 = load ptr, ptr %9, align 8, !tbaa !5
  %765 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %14) #4
  %766 = load ptr, ptr %38, align 8, !tbaa !11
  %767 = getelementptr inbounds ptr, ptr %766, i64 42
  %768 = load ptr, ptr %767, align 8
  invoke void (ptr, ptr, ptr, ptr, ptr, ...) %768(ptr noundef nonnull align 8 dereferenceable(1176) %38, ptr noundef nonnull align 8 dereferenceable(24) %764, ptr noundef @.str.338, ptr noundef %765, ptr noundef @.str.2)
          to label %769 unwind label %403

769:                                              ; preds = %763
  store i1 true, ptr %7, align 1
  store i32 1, ptr %23, align 4
  br label %993

770:                                              ; preds = %762, %756, %753
  %771 = load i8, ptr %29, align 1, !tbaa !37, !range !41, !noundef !42
  %772 = trunc i8 %771 to i1
  br i1 %772, label %773, label %798

773:                                              ; preds = %770
  %774 = load ptr, ptr %13, align 8, !tbaa !5
  %775 = load ptr, ptr %774, align 8, !tbaa !11
  %776 = getelementptr inbounds ptr, ptr %775, i64 29
  %777 = load ptr, ptr %776, align 8
  %778 = invoke noundef zeroext i1 %777(ptr noundef nonnull align 8 dereferenceable(144) %774)
          to label %779 unwind label %403

779:                                              ; preds = %773
  br i1 %778, label %798, label %780

780:                                              ; preds = %779
  %781 = load ptr, ptr %9, align 8, !tbaa !5
  invoke void @_ZN7glslang14TParseVersions15profileRequiresERKNS_10TSourceLocEiiPKcS5_(ptr noundef nonnull align 8 dereferenceable(192) %38, ptr noundef nonnull align 8 dereferenceable(24) %781, i32 noundef 1, i32 noundef 120, ptr noundef null, ptr noundef @.str.339)
          to label %782 unwind label %403

782:                                              ; preds = %780
  %783 = load ptr, ptr %11, align 8, !tbaa !5
  %784 = load ptr, ptr %783, align 8, !tbaa !11
  %785 = getelementptr inbounds ptr, ptr %784, i64 36
  %786 = load ptr, ptr %785, align 8
  %787 = invoke noundef i32 %786(ptr noundef nonnull align 8 dereferenceable(328) %783)
          to label %788 unwind label %403

788:                                              ; preds = %782
  %789 = icmp ne i32 %787, 1
  br i1 %789, label %790, label %797

790:                                              ; preds = %788
  %791 = load ptr, ptr %9, align 8, !tbaa !5
  %792 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %14) #4
  %793 = load ptr, ptr %38, align 8, !tbaa !11
  %794 = getelementptr inbounds ptr, ptr %793, i64 42
  %795 = load ptr, ptr %794, align 8
  invoke void (ptr, ptr, ptr, ptr, ptr, ...) %795(ptr noundef nonnull align 8 dereferenceable(1176) %38, ptr noundef nonnull align 8 dereferenceable(24) %791, ptr noundef @.str.340, ptr noundef %792, ptr noundef @.str.2)
          to label %796 unwind label %403

796:                                              ; preds = %790
  br label %797

797:                                              ; preds = %796, %788
  store i1 false, ptr %7, align 1
  store i32 1, ptr %23, align 4
  br label %993

798:                                              ; preds = %779, %770
  %799 = load i8, ptr %28, align 1, !tbaa !37, !range !41, !noundef !42
  %800 = trunc i8 %799 to i1
  br i1 %800, label %801, label %808

801:                                              ; preds = %798
  %802 = load ptr, ptr %9, align 8, !tbaa !5
  %803 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %14) #4
  %804 = load ptr, ptr %38, align 8, !tbaa !11
  %805 = getelementptr inbounds ptr, ptr %804, i64 42
  %806 = load ptr, ptr %805, align 8
  invoke void (ptr, ptr, ptr, ptr, ptr, ...) %806(ptr noundef nonnull align 8 dereferenceable(1176) %38, ptr noundef nonnull align 8 dereferenceable(24) %802, ptr noundef @.str.341, ptr noundef %803, ptr noundef @.str.2)
          to label %807 unwind label %403

807:                                              ; preds = %801
  store i1 true, ptr %7, align 1
  store i32 1, ptr %23, align 4
  br label %993

808:                                              ; preds = %798
  %809 = load i32, ptr %12, align 4, !tbaa !9
  %810 = icmp eq i32 %809, 568
  br i1 %810, label %811, label %838

811:                                              ; preds = %808
  %812 = load ptr, ptr %13, align 8, !tbaa !5
  %813 = load ptr, ptr %812, align 8, !tbaa !11
  %814 = getelementptr inbounds ptr, ptr %813, i64 29
  %815 = load ptr, ptr %814, align 8
  %816 = invoke noundef zeroext i1 %815(ptr noundef nonnull align 8 dereferenceable(144) %812)
          to label %817 unwind label %403

817:                                              ; preds = %811
  br i1 %816, label %838, label %818

818:                                              ; preds = %817
  %819 = load ptr, ptr %13, align 8, !tbaa !5
  %820 = invoke noundef ptr @_ZNK7glslang5TType9getStructEv(ptr noundef nonnull align 8 dereferenceable(144) %819)
          to label %821 unwind label %403

821:                                              ; preds = %818
  %822 = call noundef i64 @_ZNKSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %820) #4
  %823 = trunc i64 %822 to i32
  %824 = load ptr, ptr %11, align 8, !tbaa !5
  %825 = load ptr, ptr %824, align 8, !tbaa !11
  %826 = getelementptr inbounds ptr, ptr %825, i64 36
  %827 = load ptr, ptr %826, align 8
  %828 = invoke noundef i32 %827(ptr noundef nonnull align 8 dereferenceable(328) %824)
          to label %829 unwind label %403

829:                                              ; preds = %821
  %830 = icmp ne i32 %823, %828
  br i1 %830, label %831, label %838

831:                                              ; preds = %829
  %832 = load ptr, ptr %9, align 8, !tbaa !5
  %833 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %14) #4
  %834 = load ptr, ptr %38, align 8, !tbaa !11
  %835 = getelementptr inbounds ptr, ptr %834, i64 42
  %836 = load ptr, ptr %835, align 8
  invoke void (ptr, ptr, ptr, ptr, ptr, ...) %836(ptr noundef nonnull align 8 dereferenceable(1176) %38, ptr noundef nonnull align 8 dereferenceable(24) %832, ptr noundef @.str.342, ptr noundef %833, ptr noundef @.str.2)
          to label %837 unwind label %403

837:                                              ; preds = %831
  store i1 true, ptr %7, align 1
  store i32 1, ptr %23, align 4
  br label %993

838:                                              ; preds = %829, %817, %808
  %839 = load i32, ptr %12, align 4, !tbaa !9
  %840 = icmp ne i32 %839, 568
  br i1 %840, label %841, label %850

841:                                              ; preds = %838
  %842 = load i32, ptr %24, align 4, !tbaa !38
  %843 = icmp ne i32 %842, 1
  br i1 %843, label %844, label %850

844:                                              ; preds = %841
  %845 = load i32, ptr %24, align 4, !tbaa !38
  %846 = load ptr, ptr %13, align 8, !tbaa !5
  %847 = invoke noundef i32 @_ZNK7glslang5TType20computeNumComponentsEv(ptr noundef nonnull align 8 dereferenceable(144) %846)
          to label %848 unwind label %403

848:                                              ; preds = %844
  %849 = icmp slt i32 %845, %847
  br i1 %849, label %859, label %850

850:                                              ; preds = %848, %841, %838
  %851 = load i32, ptr %12, align 4, !tbaa !9
  %852 = icmp eq i32 %851, 568
  br i1 %852, label %853, label %866

853:                                              ; preds = %850
  %854 = load i32, ptr %24, align 4, !tbaa !38
  %855 = load ptr, ptr %13, align 8, !tbaa !5
  %856 = invoke noundef i32 @_ZNK7glslang5TType20computeNumComponentsEv(ptr noundef nonnull align 8 dereferenceable(144) %855)
          to label %857 unwind label %403

857:                                              ; preds = %853
  %858 = icmp slt i32 %854, %856
  br i1 %858, label %859, label %866

859:                                              ; preds = %857, %848
  %860 = load ptr, ptr %9, align 8, !tbaa !5
  %861 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %14) #4
  %862 = load ptr, ptr %38, align 8, !tbaa !11
  %863 = getelementptr inbounds ptr, ptr %862, i64 42
  %864 = load ptr, ptr %863, align 8
  invoke void (ptr, ptr, ptr, ptr, ptr, ...) %864(ptr noundef nonnull align 8 dereferenceable(1176) %38, ptr noundef nonnull align 8 dereferenceable(24) %860, ptr noundef @.str.343, ptr noundef %861, ptr noundef @.str.2)
          to label %865 unwind label %403

865:                                              ; preds = %859
  store i1 true, ptr %7, align 1
  store i32 1, ptr %23, align 4
  br label %993

866:                                              ; preds = %857, %850
  %867 = load ptr, ptr %13, align 8, !tbaa !5
  %868 = invoke noundef zeroext i1 @_ZNK7glslang5TType9isCoopMatEv(ptr noundef nonnull align 8 dereferenceable(144) %867)
          to label %869 unwind label %403

869:                                              ; preds = %866
  br i1 %868, label %870, label %885

870:                                              ; preds = %869
  %871 = load ptr, ptr %11, align 8, !tbaa !5
  %872 = load ptr, ptr %871, align 8, !tbaa !11
  %873 = getelementptr inbounds ptr, ptr %872, i64 36
  %874 = load ptr, ptr %873, align 8
  %875 = invoke noundef i32 %874(ptr noundef nonnull align 8 dereferenceable(328) %871)
          to label %876 unwind label %403

876:                                              ; preds = %870
  %877 = icmp ne i32 %875, 1
  br i1 %877, label %878, label %885

878:                                              ; preds = %876
  %879 = load ptr, ptr %9, align 8, !tbaa !5
  %880 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %14) #4
  %881 = load ptr, ptr %38, align 8, !tbaa !11
  %882 = getelementptr inbounds ptr, ptr %881, i64 42
  %883 = load ptr, ptr %882, align 8
  invoke void (ptr, ptr, ptr, ptr, ptr, ...) %883(ptr noundef nonnull align 8 dereferenceable(1176) %38, ptr noundef nonnull align 8 dereferenceable(24) %879, ptr noundef @.str.344, ptr noundef %880, ptr noundef @.str.2)
          to label %884 unwind label %403

884:                                              ; preds = %878
  store i1 true, ptr %7, align 1
  store i32 1, ptr %23, align 4
  br label %993

885:                                              ; preds = %876, %869
  %886 = load ptr, ptr %13, align 8, !tbaa !5
  %887 = invoke noundef zeroext i1 @_ZNK7glslang5TType9isCoopMatEv(ptr noundef nonnull align 8 dereferenceable(144) %886)
          to label %888 unwind label %403

888:                                              ; preds = %885
  br i1 %887, label %889, label %921

889:                                              ; preds = %888
  %890 = load ptr, ptr %11, align 8, !tbaa !5
  %891 = load ptr, ptr %890, align 8, !tbaa !11
  %892 = getelementptr inbounds ptr, ptr %891, i64 39
  %893 = load ptr, ptr %892, align 8
  %894 = invoke noundef nonnull align 8 dereferenceable(24) ptr %893(ptr noundef nonnull align 8 dereferenceable(328) %890, i32 noundef 0)
          to label %895 unwind label %403

895:                                              ; preds = %889
  %896 = getelementptr inbounds %"struct.glslang::TParameter", ptr %894, i32 0, i32 1
  %897 = load ptr, ptr %896, align 8, !tbaa !39
  %898 = load ptr, ptr %897, align 8, !tbaa !11
  %899 = getelementptr inbounds ptr, ptr %898, i64 24
  %900 = load ptr, ptr %899, align 8
  %901 = invoke noundef zeroext i1 %900(ptr noundef nonnull align 8 dereferenceable(144) %897)
          to label %902 unwind label %403

902:                                              ; preds = %895
  br i1 %901, label %921, label %903

903:                                              ; preds = %902
  %904 = load ptr, ptr %11, align 8, !tbaa !5
  %905 = load ptr, ptr %904, align 8, !tbaa !11
  %906 = getelementptr inbounds ptr, ptr %905, i64 39
  %907 = load ptr, ptr %906, align 8
  %908 = invoke noundef nonnull align 8 dereferenceable(24) ptr %907(ptr noundef nonnull align 8 dereferenceable(328) %904, i32 noundef 0)
          to label %909 unwind label %403

909:                                              ; preds = %903
  %910 = getelementptr inbounds %"struct.glslang::TParameter", ptr %908, i32 0, i32 1
  %911 = load ptr, ptr %910, align 8, !tbaa !39
  %912 = invoke noundef zeroext i1 @_ZNK7glslang5TType9isCoopMatEv(ptr noundef nonnull align 8 dereferenceable(144) %911)
          to label %913 unwind label %403

913:                                              ; preds = %909
  br i1 %912, label %921, label %914

914:                                              ; preds = %913
  %915 = load ptr, ptr %9, align 8, !tbaa !5
  %916 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %14) #4
  %917 = load ptr, ptr %38, align 8, !tbaa !11
  %918 = getelementptr inbounds ptr, ptr %917, i64 42
  %919 = load ptr, ptr %918, align 8
  invoke void (ptr, ptr, ptr, ptr, ptr, ...) %919(ptr noundef nonnull align 8 dereferenceable(1176) %38, ptr noundef nonnull align 8 dereferenceable(24) %915, ptr noundef @.str.345, ptr noundef %916, ptr noundef @.str.2)
          to label %920 unwind label %403

920:                                              ; preds = %914
  store i1 true, ptr %7, align 1
  store i32 1, ptr %23, align 4
  br label %993

921:                                              ; preds = %913, %902, %888
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #4
  %922 = load ptr, ptr %10, align 8, !tbaa !5
  %923 = load ptr, ptr %922, align 8, !tbaa !11
  %924 = getelementptr inbounds ptr, ptr %923, i64 3
  %925 = load ptr, ptr %924, align 8
  %926 = invoke noundef ptr %925(ptr noundef nonnull align 8 dereferenceable(32) %922)
          to label %927 unwind label %937

927:                                              ; preds = %921
  store ptr %926, ptr %37, align 8, !tbaa !5
  %928 = load ptr, ptr %37, align 8, !tbaa !5
  %929 = icmp eq ptr %928, null
  br i1 %929, label %930, label %941

930:                                              ; preds = %927
  %931 = load ptr, ptr %9, align 8, !tbaa !5
  %932 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %14) #4
  %933 = load ptr, ptr %38, align 8, !tbaa !11
  %934 = getelementptr inbounds ptr, ptr %933, i64 42
  %935 = load ptr, ptr %934, align 8
  invoke void (ptr, ptr, ptr, ptr, ptr, ...) %935(ptr noundef nonnull align 8 dereferenceable(1176) %38, ptr noundef nonnull align 8 dereferenceable(24) %931, ptr noundef @.str.346, ptr noundef %932, ptr noundef @.str.2)
          to label %936 unwind label %937

936:                                              ; preds = %930
  store i1 true, ptr %7, align 1
  store i32 1, ptr %23, align 4
  br label %992

937:                                              ; preds = %984, %976, %969, %965, %955, %947, %930, %921
  %938 = landingpad { ptr, i32 }
          cleanup
  %939 = extractvalue { ptr, i32 } %938, 0
  store ptr %939, ptr %15, align 8
  %940 = extractvalue { ptr, i32 } %938, 1
  store i32 %940, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  br label %994

941:                                              ; preds = %927
  %942 = load i32, ptr %12, align 4, !tbaa !9
  %943 = icmp ne i32 %942, 568
  br i1 %943, label %944, label %962

944:                                              ; preds = %941
  %945 = load i32, ptr %12, align 4, !tbaa !9
  %946 = icmp ne i32 %945, 570
  br i1 %946, label %947, label %962

947:                                              ; preds = %944
  %948 = load ptr, ptr %37, align 8, !tbaa !5
  %949 = load ptr, ptr %948, align 8, !tbaa !11
  %950 = getelementptr inbounds ptr, ptr %949, i64 32
  %951 = load ptr, ptr %950, align 8
  %952 = invoke noundef i32 %951(ptr noundef nonnull align 8 dereferenceable(176) %948)
          to label %953 unwind label %937

953:                                              ; preds = %947
  %954 = icmp eq i32 %952, 14
  br i1 %954, label %955, label %962

955:                                              ; preds = %953
  %956 = load ptr, ptr %9, align 8, !tbaa !5
  %957 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %14) #4
  %958 = load ptr, ptr %38, align 8, !tbaa !11
  %959 = getelementptr inbounds ptr, ptr %958, i64 42
  %960 = load ptr, ptr %959, align 8
  invoke void (ptr, ptr, ptr, ptr, ptr, ...) %960(ptr noundef nonnull align 8 dereferenceable(1176) %38, ptr noundef nonnull align 8 dereferenceable(24) %956, ptr noundef @.str.347, ptr noundef %957, ptr noundef @.str.2)
          to label %961 unwind label %937

961:                                              ; preds = %955
  store i1 true, ptr %7, align 1
  store i32 1, ptr %23, align 4
  br label %992

962:                                              ; preds = %953, %944, %941
  %963 = load i32, ptr %12, align 4, !tbaa !9
  %964 = icmp ne i32 %963, 568
  br i1 %964, label %965, label %976

965:                                              ; preds = %962
  %966 = load ptr, ptr %37, align 8, !tbaa !5
  %967 = invoke noundef zeroext i1 @_ZNK7glslang12TIntermTyped8isAtomicEv(ptr noundef nonnull align 8 dereferenceable(176) %966)
          to label %968 unwind label %937

968:                                              ; preds = %965
  br i1 %967, label %969, label %976

969:                                              ; preds = %968
  %970 = load ptr, ptr %9, align 8, !tbaa !5
  %971 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %14) #4
  %972 = load ptr, ptr %38, align 8, !tbaa !11
  %973 = getelementptr inbounds ptr, ptr %972, i64 42
  %974 = load ptr, ptr %973, align 8
  invoke void (ptr, ptr, ptr, ptr, ptr, ...) %974(ptr noundef nonnull align 8 dereferenceable(1176) %38, ptr noundef nonnull align 8 dereferenceable(24) %970, ptr noundef @.str.348, ptr noundef %971, ptr noundef @.str.2)
          to label %975 unwind label %937

975:                                              ; preds = %969
  store i1 true, ptr %7, align 1
  store i32 1, ptr %23, align 4
  br label %992

976:                                              ; preds = %968, %962
  %977 = load ptr, ptr %37, align 8, !tbaa !5
  %978 = load ptr, ptr %977, align 8, !tbaa !11
  %979 = getelementptr inbounds ptr, ptr %978, i64 32
  %980 = load ptr, ptr %979, align 8
  %981 = invoke noundef i32 %980(ptr noundef nonnull align 8 dereferenceable(176) %977)
          to label %982 unwind label %937

982:                                              ; preds = %976
  %983 = icmp eq i32 %981, 0
  br i1 %983, label %984, label %991

984:                                              ; preds = %982
  %985 = load ptr, ptr %9, align 8, !tbaa !5
  %986 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %14) #4
  %987 = load ptr, ptr %38, align 8, !tbaa !11
  %988 = getelementptr inbounds ptr, ptr %987, i64 42
  %989 = load ptr, ptr %988, align 8
  invoke void (ptr, ptr, ptr, ptr, ptr, ...) %989(ptr noundef nonnull align 8 dereferenceable(1176) %38, ptr noundef nonnull align 8 dereferenceable(24) %985, ptr noundef @.str.349, ptr noundef %986, ptr noundef @.str.2)
          to label %990 unwind label %937

990:                                              ; preds = %984
  store i1 true, ptr %7, align 1
  store i32 1, ptr %23, align 4
  br label %992

991:                                              ; preds = %982
  store i1 false, ptr %7, align 1
  store i32 1, ptr %23, align 4
  br label %992

992:                                              ; preds = %991, %990, %975, %961, %936
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  br label %993

993:                                              ; preds = %992, %920, %884, %865, %837, %807, %797, %769, %748, %641, %604, %381
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #4
  br label %995

994:                                              ; preds = %937, %751, %527, %403, %149
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #4
  br label %997

995:                                              ; preds = %993, %131
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %14) #4
  call void @llvm.lifetime.end.p0(i64 40, ptr %14) #4
  %996 = load i1, ptr %7, align 1
  ret i1 %996

997:                                              ; preds = %994, %132
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #4
  br label %998

998:                                              ; preds = %997, %121, %99
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %14) #4
  call void @llvm.lifetime.end.p0(i64 40, ptr %14) #4
  br label %999

999:                                              ; preds = %998
  %1000 = load ptr, ptr %15, align 8
  %1001 = load i32, ptr %16, align 4
  %1002 = insertvalue { ptr, i32 } poison, ptr %1000, 0
  %1003 = insertvalue { ptr, i32 } %1002, i32 %1001, 1
  resume { ptr, i32 } %1003
}

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

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

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

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

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

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

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

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

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


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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>::_Alloc_hider" = type { %"class.glslang::pool_allocator.14", ptr }
%"class.glslang::pool_allocator.14" = type { ptr }
%union.anon = type { i64, [8 x i8] }

@.str.2 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.326 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.327 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.328 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.329 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.330 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.331 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.332 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.333 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.334 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.335 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.336 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.337 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.338 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.339 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.340 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.341 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.342 = external hidden unnamed_addr constant [79 x i8], align 1
@.str.343 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.344 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.345 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.346 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.347 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.348 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.349 = external hidden unnamed_addr constant [22 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef, ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #0 align 2

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

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

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

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

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

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

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

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

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

declare void @_ZN7glslang14TParseVersions15profileRequiresERKNS_10TSourceLocEiiPKcS5_(ptr noundef nonnull align 8 dereferenceable(192), ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK7glslang5TType17getCompleteStringEbbbbNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEES7_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(144), i1 noundef zeroext, i1 noundef zeroext, i1 noundef zeroext, i1 noundef zeroext, ptr noundef, ptr noundef) local_unnamed_addr #0 align 2

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN7glslang13TParseContext16constructorErrorERKNS_10TSourceLocEP11TIntermNodeRNS_9TFunctionENS_9TOperatorERNS_5TTypeE(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef %2, ptr noundef nonnull align 8 dereferenceable(328) %3, i32 noundef %4, ptr noundef nonnull align 8 dereferenceable(144) %5) local_unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca %"class.glslang::pool_allocator.14", align 8
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.glslang::pool_allocator.14", align 8
  %cond = icmp ne i32 %4, 570
  br i1 %cond, label %39, label %13

13:                                               ; preds = %6
  %.not = icmp eq ptr %2, null
  br i1 %.not, label %44, label %14

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

19:                                               ; preds = %14
  %20 = load ptr, ptr %2, align 8, !tbaa !5
  %21 = getelementptr inbounds i8, ptr %20, i64 24
  %22 = load ptr, ptr %21, align 8
  %23 = tail call noundef ptr %22(ptr noundef nonnull align 8 dereferenceable(32) %2)
  %24 = load ptr, ptr %23, align 8, !tbaa !5
  %25 = getelementptr inbounds i8, ptr %24, i64 240
  %26 = load ptr, ptr %25, align 8
  %27 = tail call noundef nonnull align 8 dereferenceable(144) ptr %26(ptr noundef nonnull align 8 dereferenceable(176) %23)
  tail call void @_ZN7glslang5TType11shallowCopyERKS0_(ptr noundef nonnull align 8 dereferenceable(144) %5, ptr noundef nonnull align 8 dereferenceable(144) %27)
  %28 = load ptr, ptr %5, align 8, !tbaa !5
  %29 = getelementptr inbounds i8, ptr %28, i64 80
  %30 = load ptr, ptr %29, align 8
  %31 = tail call noundef nonnull align 8 dereferenceable(72) ptr %30(ptr noundef nonnull align 8 dereferenceable(144) %5)
  tail call void @_ZN7glslang10TQualifier13makeTemporaryEv(ptr noundef nonnull align 8 dereferenceable(72) %31)
  %32 = load ptr, ptr %5, align 8, !tbaa !5
  %33 = getelementptr inbounds i8, ptr %32, i64 80
  %34 = load ptr, ptr %33, align 8
  %35 = tail call noundef nonnull align 8 dereferenceable(72) ptr %34(ptr noundef nonnull align 8 dereferenceable(144) %5)
  %36 = getelementptr inbounds i8, ptr %35, i64 8
  %37 = load i64, ptr %36, align 8
  %38 = or i64 %37, 4294967296
  store i64 %38, ptr %36, align 8
  br label %44

39:                                               ; preds = %6
  %40 = load ptr, ptr %3, align 8, !tbaa !5
  %41 = getelementptr inbounds i8, ptr %40, i64 96
  %42 = load ptr, ptr %41, align 8
  %43 = tail call noundef nonnull align 8 dereferenceable(144) ptr %42(ptr noundef nonnull align 8 dereferenceable(328) %3)
  tail call void @_ZN7glslang5TType11shallowCopyERKS0_(ptr noundef nonnull align 8 dereferenceable(144) %5, ptr noundef nonnull align 8 dereferenceable(144) %43)
  br label %44

44:                                               ; preds = %13, %14, %19, %39
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %7) #4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %7)
  %45 = getelementptr inbounds i8, ptr %0, i64 56
  %46 = load ptr, ptr %45, align 8, !tbaa !8
  %47 = invoke noundef zeroext i1 @_ZNK7glslang13TIntermediate15getEnhancedMsgsEv(ptr noundef nonnull align 8 dereferenceable(1784) %46)
          to label %48 unwind label %59

48:                                               ; preds = %44
  br i1 %47, label %49, label %72

49:                                               ; preds = %48
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %8) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #4
  invoke void @_ZN7glslang14pool_allocatorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10)
          to label %50 unwind label %61

50:                                               ; preds = %49
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(40) %9, ptr noundef nonnull @.str.2, ptr noundef nonnull align 8 dereferenceable(8) %10)
          to label %51 unwind label %61

51:                                               ; preds = %50
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #4
  invoke void @_ZN7glslang14pool_allocatorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %12)
          to label %52 unwind label %63

52:                                               ; preds = %51
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(40) %11, ptr noundef nonnull @.str.2, ptr noundef nonnull align 8 dereferenceable(8) %12)
          to label %53 unwind label %63

53:                                               ; preds = %52
  invoke void @_ZNK7glslang5TType17getCompleteStringEbbbbNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEES7_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %8, ptr noundef nonnull align 8 dereferenceable(144) %5, i1 noundef zeroext true, i1 noundef zeroext false, i1 noundef zeroext false, i1 noundef zeroext true, ptr noundef nonnull %9, ptr noundef nonnull %11)
          to label %54 unwind label %65

54:                                               ; preds = %53
  %55 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE6appendERKS6_(ptr noundef nonnull align 8 dereferenceable(40) %7, ptr noundef nonnull align 8 dereferenceable(40) %8)
          to label %56 unwind label %67

56:                                               ; preds = %54
  %57 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE6appendEPKc(ptr noundef nonnull align 8 dereferenceable(40) %55, ptr noundef nonnull @.str.326)
          to label %58 unwind label %67

58:                                               ; preds = %56
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %8) #4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %11) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %9) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #4
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %8) #4
  br label %74

59:                                               ; preds = %72, %44
  %60 = landingpad { ptr, i32 }
          cleanup
  br label %595

61:                                               ; preds = %50, %49
  %62 = landingpad { ptr, i32 }
          cleanup
  br label %71

63:                                               ; preds = %52, %51
  %64 = landingpad { ptr, i32 }
          cleanup
  br label %70

65:                                               ; preds = %53
  %66 = landingpad { ptr, i32 }
          cleanup
  br label %69

67:                                               ; preds = %56, %54
  %68 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %8) #4
  br label %69

69:                                               ; preds = %67, %65
  %.pn = phi { ptr, i32 } [ %68, %67 ], [ %66, %65 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %11) #4
  br label %70

70:                                               ; preds = %69, %63
  %.pn.pn = phi { ptr, i32 } [ %.pn, %69 ], [ %64, %63 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %9) #4
  br label %71

71:                                               ; preds = %70, %61
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %70 ], [ %62, %61 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #4
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %8) #4
  br label %595

72:                                               ; preds = %48
  %73 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE6appendEPKc(ptr noundef nonnull align 8 dereferenceable(40) %7, ptr noundef nonnull @.str.327)
          to label %74 unwind label %59

74:                                               ; preds = %72, %58
  switch i32 %4, label %80 [
    i32 569, label %75
    i32 480, label %79
    i32 481, label %79
    i32 482, label %79
    i32 483, label %79
    i32 484, label %79
    i32 485, label %79
    i32 486, label %79
    i32 487, label %79
    i32 488, label %79
    i32 519, label %79
    i32 520, label %79
    i32 521, label %79
    i32 522, label %79
    i32 523, label %79
    i32 524, label %79
    i32 525, label %79
    i32 526, label %79
    i32 527, label %79
    i32 559, label %79
    i32 560, label %79
    i32 561, label %79
    i32 562, label %79
    i32 563, label %79
    i32 564, label %79
    i32 565, label %79
    i32 566, label %79
    i32 567, label %79
  ]

75:                                               ; preds = %74
  %76 = invoke noundef zeroext i1 @_ZN7glslang13TParseContext30constructorTextureSamplerErrorERKNS_10TSourceLocERKNS_9TFunctionE(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(328) %3)
          to label %.critedge228 unwind label %77

77:                                               ; preds = %75
  %78 = landingpad { ptr, i32 }
          cleanup
  br label %595

79:                                               ; preds = %74, %74, %74, %74, %74, %74, %74, %74, %74, %74, %74, %74, %74, %74, %74, %74, %74, %74, %74, %74, %74, %74, %74, %74, %74, %74, %74
  br label %80

80:                                               ; preds = %74, %79
  %.0187 = phi i1 [ false, %74 ], [ true, %79 ]
  %.not200 = icmp eq i32 %4, 568
  br label %81

81:                                               ; preds = %254, %80
  %.0184 = phi i32 [ 0, %80 ], [ %142, %254 ]
  %.0181 = phi i1 [ true, %80 ], [ %spec.select219, %254 ]
  %.0179 = phi i1 [ false, %80 ], [ %spec.select220, %254 ]
  %.0177 = phi i1 [ false, %80 ], [ %.1178, %254 ]
  %.0175 = phi i1 [ false, %80 ], [ %spec.select217, %254 ]
  %.0173 = phi i1 [ false, %80 ], [ %.1174, %254 ]
  %.0171 = phi i1 [ false, %80 ], [ %.1172, %254 ]
  %.0169 = phi i1 [ false, %80 ], [ %spec.select221, %254 ]
  %.0167 = phi i1 [ false, %80 ], [ %spec.select222, %254 ]
  %.0166 = phi i32 [ 0, %80 ], [ %255, %254 ]
  %82 = load ptr, ptr %3, align 8, !tbaa !5
  %83 = getelementptr inbounds i8, ptr %82, i64 288
  %84 = load ptr, ptr %83, align 8
  %85 = invoke noundef i32 %84(ptr noundef nonnull align 8 dereferenceable(328) %3)
          to label %86 unwind label %.loopexit234

86:                                               ; preds = %81
  %.not202 = icmp slt i32 %.0166, %85
  br i1 %.not202, label %87, label %.critedge

.loopexit234:                                     ; preds = %81, %87, %92, %100, %105, %119, %124, %132, %137, %143, %149, %152, %157, %164, %166, %171, %178, %184, %191, %196, %203, %209, %214, %219, %224, %229, %234, %239, %244, %249
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %595

.loopexit.split-lp:                               ; preds = %113
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %595

87:                                               ; preds = %86
  %88 = load ptr, ptr %3, align 8, !tbaa !5
  %89 = getelementptr inbounds i8, ptr %88, i64 312
  %90 = load ptr, ptr %89, align 8
  %91 = invoke noundef nonnull align 8 dereferenceable(24) ptr %90(ptr noundef nonnull align 8 dereferenceable(328) %3, i32 noundef %.0166)
          to label %92 unwind label %.loopexit234

92:                                               ; preds = %87
  %93 = getelementptr inbounds i8, ptr %91, i64 8
  %94 = load ptr, ptr %93, align 8, !tbaa !34
  %95 = load ptr, ptr %94, align 8, !tbaa !5
  %96 = getelementptr inbounds i8, ptr %95, i64 232
  %97 = load ptr, ptr %96, align 8
  %98 = invoke noundef zeroext i1 %97(ptr noundef nonnull align 8 dereferenceable(144) %94)
          to label %99 unwind label %.loopexit234

99:                                               ; preds = %92
  br i1 %98, label %100, label %118

100:                                              ; preds = %99
  %101 = load ptr, ptr %3, align 8, !tbaa !5
  %102 = getelementptr inbounds i8, ptr %101, i64 312
  %103 = load ptr, ptr %102, align 8
  %104 = invoke noundef nonnull align 8 dereferenceable(24) ptr %103(ptr noundef nonnull align 8 dereferenceable(328) %3, i32 noundef %.0166)
          to label %105 unwind label %.loopexit234

105:                                              ; preds = %100
  %106 = getelementptr inbounds i8, ptr %104, i64 8
  %107 = load ptr, ptr %106, align 8, !tbaa !34
  %108 = load ptr, ptr %107, align 8, !tbaa !5
  %109 = getelementptr inbounds i8, ptr %108, i64 248
  %110 = load ptr, ptr %109, align 8
  %111 = invoke noundef zeroext i1 %110(ptr noundef nonnull align 8 dereferenceable(144) %107)
          to label %112 unwind label %.loopexit234

112:                                              ; preds = %105
  br i1 %111, label %113, label %118

113:                                              ; preds = %112
  %114 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %7) #4
  %115 = load ptr, ptr %0, align 8, !tbaa !5
  %116 = getelementptr inbounds i8, ptr %115, i64 336
  %117 = load ptr, ptr %116, align 8
  invoke void (ptr, ptr, ptr, ptr, ptr, ...) %117(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.328, ptr noundef %114, ptr noundef nonnull @.str.2)
          to label %.critedge228 unwind label %.loopexit.split-lp

118:                                              ; preds = %112, %99
  %.1172 = phi i1 [ %.0171, %99 ], [ true, %112 ]
  br i1 %.0187, label %119, label %132

119:                                              ; preds = %118
  %120 = load ptr, ptr %3, align 8, !tbaa !5
  %121 = getelementptr inbounds i8, ptr %120, i64 312
  %122 = load ptr, ptr %121, align 8
  %123 = invoke noundef nonnull align 8 dereferenceable(24) ptr %122(ptr noundef nonnull align 8 dereferenceable(328) %3, i32 noundef %.0166)
          to label %124 unwind label %.loopexit234

124:                                              ; preds = %119
  %125 = getelementptr inbounds i8, ptr %123, i64 8
  %126 = load ptr, ptr %125, align 8, !tbaa !34
  %127 = load ptr, ptr %126, align 8, !tbaa !5
  %128 = getelementptr inbounds i8, ptr %127, i64 224
  %129 = load ptr, ptr %128, align 8
  %130 = invoke noundef zeroext i1 %129(ptr noundef nonnull align 8 dereferenceable(144) %126)
          to label %131 unwind label %.loopexit234

131:                                              ; preds = %124
  %spec.select = select i1 %130, i1 true, i1 %.0173
  br label %132

132:                                              ; preds = %131, %118
  %.1174 = phi i1 [ %.0173, %118 ], [ %spec.select, %131 ]
  %spec.select217 = select i1 %.0177, i1 true, i1 %.0175
  %133 = load ptr, ptr %3, align 8, !tbaa !5
  %134 = getelementptr inbounds i8, ptr %133, i64 312
  %135 = load ptr, ptr %134, align 8
  %136 = invoke noundef nonnull align 8 dereferenceable(24) ptr %135(ptr noundef nonnull align 8 dereferenceable(328) %3, i32 noundef %.0166)
          to label %137 unwind label %.loopexit234

137:                                              ; preds = %132
  %138 = getelementptr inbounds i8, ptr %136, i64 8
  %139 = load ptr, ptr %138, align 8, !tbaa !34
  %140 = invoke noundef i32 @_ZNK7glslang5TType20computeNumComponentsEv(ptr noundef nonnull align 8 dereferenceable(144) %139)
          to label %141 unwind label %.loopexit234

141:                                              ; preds = %137
  %142 = add nsw i32 %140, %.0184
  br i1 %.not200, label %152, label %143

143:                                              ; preds = %141
  %144 = load ptr, ptr %5, align 8, !tbaa !5
  %145 = getelementptr inbounds i8, ptr %144, i64 232
  %146 = load ptr, ptr %145, align 8
  %147 = invoke noundef zeroext i1 %146(ptr noundef nonnull align 8 dereferenceable(144) %5)
          to label %148 unwind label %.loopexit234

148:                                              ; preds = %143
  br i1 %147, label %152, label %149

149:                                              ; preds = %148
  %150 = invoke noundef i32 @_ZNK7glslang5TType20computeNumComponentsEv(ptr noundef nonnull align 8 dereferenceable(144) %5)
          to label %151 unwind label %.loopexit234

151:                                              ; preds = %149
  %.not201 = icmp sge i32 %142, %150
  %spec.select218 = select i1 %.not201, i1 true, i1 %.0177
  br label %152

152:                                              ; preds = %151, %148, %141
  %.1178 = phi i1 [ %.0177, %148 ], [ %.0177, %141 ], [ %spec.select218, %151 ]
  %153 = load ptr, ptr %3, align 8, !tbaa !5
  %154 = getelementptr inbounds i8, ptr %153, i64 312
  %155 = load ptr, ptr %154, align 8
  %156 = invoke noundef nonnull align 8 dereferenceable(24) ptr %155(ptr noundef nonnull align 8 dereferenceable(328) %3, i32 noundef %.0166)
          to label %157 unwind label %.loopexit234

157:                                              ; preds = %152
  %158 = getelementptr inbounds i8, ptr %156, i64 8
  %159 = load ptr, ptr %158, align 8, !tbaa !34
  %160 = load ptr, ptr %159, align 8, !tbaa !5
  %161 = getelementptr inbounds i8, ptr %160, i64 80
  %162 = load ptr, ptr %161, align 8
  %163 = invoke noundef nonnull align 8 dereferenceable(72) ptr %162(ptr noundef nonnull align 8 dereferenceable(144) %159)
          to label %164 unwind label %.loopexit234

164:                                              ; preds = %157
  %165 = invoke noundef zeroext i1 @_ZNK7glslang10TQualifier10isConstantEv(ptr noundef nonnull align 8 dereferenceable(72) %163)
          to label %166 unwind label %.loopexit234

166:                                              ; preds = %164
  %spec.select219 = select i1 %165, i1 %.0181, i1 false
  %167 = load ptr, ptr %3, align 8, !tbaa !5
  %168 = getelementptr inbounds i8, ptr %167, i64 312
  %169 = load ptr, ptr %168, align 8
  %170 = invoke noundef nonnull align 8 dereferenceable(24) ptr %169(ptr noundef nonnull align 8 dereferenceable(328) %3, i32 noundef %.0166)
          to label %171 unwind label %.loopexit234

171:                                              ; preds = %166
  %172 = getelementptr inbounds i8, ptr %170, i64 8
  %173 = load ptr, ptr %172, align 8, !tbaa !34
  %174 = load ptr, ptr %173, align 8, !tbaa !5
  %175 = getelementptr inbounds i8, ptr %174, i64 80
  %176 = load ptr, ptr %175, align 8
  %177 = invoke noundef nonnull align 8 dereferenceable(72) ptr %176(ptr noundef nonnull align 8 dereferenceable(144) %173)
          to label %178 unwind label %.loopexit234

178:                                              ; preds = %171
  %179 = call noundef zeroext i1 @_ZNK7glslang10TQualifier14isSpecConstantEv(ptr noundef nonnull align 8 dereferenceable(72) %177)
  %spec.select220 = select i1 %179, i1 true, i1 %.0179
  %180 = load ptr, ptr %3, align 8, !tbaa !5
  %181 = getelementptr inbounds i8, ptr %180, i64 312
  %182 = load ptr, ptr %181, align 8
  %183 = invoke noundef nonnull align 8 dereferenceable(24) ptr %182(ptr noundef nonnull align 8 dereferenceable(328) %3, i32 noundef %.0166)
          to label %184 unwind label %.loopexit234

184:                                              ; preds = %178
  %185 = getelementptr inbounds i8, ptr %183, i64 8
  %186 = load ptr, ptr %185, align 8, !tbaa !34
  %187 = load ptr, ptr %186, align 8, !tbaa !5
  %188 = getelementptr inbounds i8, ptr %187, i64 288
  %189 = load ptr, ptr %188, align 8
  %190 = invoke noundef zeroext i1 %189(ptr noundef nonnull align 8 dereferenceable(144) %186)
          to label %191 unwind label %.loopexit234

191:                                              ; preds = %184
  %spec.select221 = select i1 %190, i1 true, i1 %.0169
  %192 = load ptr, ptr %3, align 8, !tbaa !5
  %193 = getelementptr inbounds i8, ptr %192, i64 312
  %194 = load ptr, ptr %193, align 8
  %195 = invoke noundef nonnull align 8 dereferenceable(24) ptr %194(ptr noundef nonnull align 8 dereferenceable(328) %3, i32 noundef %.0166)
          to label %196 unwind label %.loopexit234

196:                                              ; preds = %191
  %197 = getelementptr inbounds i8, ptr %195, i64 8
  %198 = load ptr, ptr %197, align 8, !tbaa !34
  %199 = load ptr, ptr %198, align 8, !tbaa !5
  %200 = getelementptr inbounds i8, ptr %199, i64 296
  %201 = load ptr, ptr %200, align 8
  %202 = invoke noundef zeroext i1 %201(ptr noundef nonnull align 8 dereferenceable(144) %198)
          to label %203 unwind label %.loopexit234

203:                                              ; preds = %196
  %spec.select222 = select i1 %202, i1 true, i1 %.0167
  %204 = load ptr, ptr %5, align 8, !tbaa !5
  %205 = getelementptr inbounds i8, ptr %204, i64 280
  %206 = load ptr, ptr %205, align 8
  %207 = invoke noundef zeroext i1 %206(ptr noundef nonnull align 8 dereferenceable(144) %5)
          to label %208 unwind label %.loopexit234

208:                                              ; preds = %203
  br i1 %207, label %209, label %254

209:                                              ; preds = %208
  %210 = load ptr, ptr %3, align 8, !tbaa !5
  %211 = getelementptr inbounds i8, ptr %210, i64 312
  %212 = load ptr, ptr %211, align 8
  %213 = invoke noundef nonnull align 8 dereferenceable(24) ptr %212(ptr noundef nonnull align 8 dereferenceable(328) %3, i32 noundef %.0166)
          to label %214 unwind label %.loopexit234

214:                                              ; preds = %209
  %215 = getelementptr inbounds i8, ptr %213, i64 8
  %216 = load ptr, ptr %215, align 8, !tbaa !34
  %217 = invoke noundef zeroext i1 @_ZNK7glslang5TType18contains16BitFloatEv(ptr noundef nonnull align 8 dereferenceable(144) %216)
          to label %218 unwind label %.loopexit234

218:                                              ; preds = %214
  br i1 %217, label %219, label %224

219:                                              ; preds = %218
  %220 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %7) #4
  %221 = load ptr, ptr %0, align 8, !tbaa !5
  %222 = getelementptr inbounds i8, ptr %221, i64 168
  %223 = load ptr, ptr %222, align 8
  invoke void %223(ptr noundef nonnull align 8 dereferenceable(192) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef %220, ptr noundef nonnull @.str.329)
          to label %224 unwind label %.loopexit234

224:                                              ; preds = %219, %218
  %225 = load ptr, ptr %3, align 8, !tbaa !5
  %226 = getelementptr inbounds i8, ptr %225, i64 312
  %227 = load ptr, ptr %226, align 8
  %228 = invoke noundef nonnull align 8 dereferenceable(24) ptr %227(ptr noundef nonnull align 8 dereferenceable(328) %3, i32 noundef %.0166)
          to label %229 unwind label %.loopexit234

229:                                              ; preds = %224
  %230 = getelementptr inbounds i8, ptr %228, i64 8
  %231 = load ptr, ptr %230, align 8, !tbaa !34
  %232 = invoke noundef zeroext i1 @_ZNK7glslang5TType16contains16BitIntEv(ptr noundef nonnull align 8 dereferenceable(144) %231)
          to label %233 unwind label %.loopexit234

233:                                              ; preds = %229
  br i1 %232, label %234, label %239

234:                                              ; preds = %233
  %235 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %7) #4
  %236 = load ptr, ptr %0, align 8, !tbaa !5
  %237 = getelementptr inbounds i8, ptr %236, i64 192
  %238 = load ptr, ptr %237, align 8
  invoke void %238(ptr noundef nonnull align 8 dereferenceable(192) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef %235, ptr noundef nonnull @.str.329)
          to label %239 unwind label %.loopexit234

239:                                              ; preds = %234, %233
  %240 = load ptr, ptr %3, align 8, !tbaa !5
  %241 = getelementptr inbounds i8, ptr %240, i64 312
  %242 = load ptr, ptr %241, align 8
  %243 = invoke noundef nonnull align 8 dereferenceable(24) ptr %242(ptr noundef nonnull align 8 dereferenceable(328) %3, i32 noundef %.0166)
          to label %244 unwind label %.loopexit234

244:                                              ; preds = %239
  %245 = getelementptr inbounds i8, ptr %243, i64 8
  %246 = load ptr, ptr %245, align 8, !tbaa !34
  %247 = invoke noundef zeroext i1 @_ZNK7glslang5TType15contains8BitIntEv(ptr noundef nonnull align 8 dereferenceable(144) %246)
          to label %248 unwind label %.loopexit234

248:                                              ; preds = %244
  br i1 %247, label %249, label %254

249:                                              ; preds = %248
  %250 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %7) #4
  %251 = load ptr, ptr %0, align 8, !tbaa !5
  %252 = getelementptr inbounds i8, ptr %251, i64 216
  %253 = load ptr, ptr %252, align 8
  invoke void %253(ptr noundef nonnull align 8 dereferenceable(192) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef %250, ptr noundef nonnull @.str.330)
          to label %254 unwind label %.loopexit234

254:                                              ; preds = %208, %249, %248
  %255 = add nuw nsw i32 %.0166, 1
  br label %81, !llvm.loop !36

.critedge:                                        ; preds = %86
  switch i32 %4, label %332 [
    i32 555, label %256
    i32 556, label %256
    i32 557, label %256
    i32 558, label %256
    i32 471, label %281
    i32 504, label %281
    i32 505, label %281
    i32 506, label %281
    i32 470, label %281
    i32 501, label %281
    i32 502, label %281
    i32 503, label %281
    i32 469, label %304
    i32 498, label %304
    i32 499, label %304
    i32 500, label %304
    i32 468, label %304
    i32 495, label %304
    i32 496, label %304
    i32 497, label %304
  ]

256:                                              ; preds = %.critedge, %.critedge, %.critedge, %.critedge
  %257 = load ptr, ptr %5, align 8, !tbaa !5
  %258 = getelementptr inbounds i8, ptr %257, i64 232
  %259 = load ptr, ptr %258, align 8
  %260 = invoke noundef zeroext i1 %259(ptr noundef nonnull align 8 dereferenceable(144) %5)
          to label %261 unwind label %267

261:                                              ; preds = %256
  br i1 %260, label %262, label %269

262:                                              ; preds = %261
  %263 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %7) #4
  %264 = load ptr, ptr %0, align 8, !tbaa !5
  %265 = getelementptr inbounds i8, ptr %264, i64 168
  %266 = load ptr, ptr %265, align 8
  invoke void %266(ptr noundef nonnull align 8 dereferenceable(192) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef %263, ptr noundef nonnull @.str.331)
          to label %269 unwind label %267

267:                                              ; preds = %.invoke284, %.invoke, %549, %541, %536, %528, %523, %519, %510, %508, %502, %495, %489, %488, %482, %402, %397, %396, %391, %385, %378, %372, %321, %315, %310, %304, %298, %292, %287, %281, %275, %269, %262, %256
  %268 = landingpad { ptr, i32 }
          cleanup
  br label %595

269:                                              ; preds = %262, %261
  %270 = load ptr, ptr %5, align 8, !tbaa !5
  %271 = getelementptr inbounds i8, ptr %270, i64 216
  %272 = load ptr, ptr %271, align 8
  %273 = invoke noundef zeroext i1 %272(ptr noundef nonnull align 8 dereferenceable(144) %5)
          to label %274 unwind label %267

274:                                              ; preds = %269
  br i1 %273, label %275, label %332

275:                                              ; preds = %274
  %276 = load ptr, ptr %3, align 8, !tbaa !5
  %277 = getelementptr inbounds i8, ptr %276, i64 288
  %278 = load ptr, ptr %277, align 8
  %279 = invoke noundef i32 %278(ptr noundef nonnull align 8 dereferenceable(328) %3)
          to label %280 unwind label %267

280:                                              ; preds = %275
  %.not205 = icmp eq i32 %279, 1
  br i1 %.not205, label %332, label %.invoke284

281:                                              ; preds = %.critedge, %.critedge, %.critedge, %.critedge, %.critedge, %.critedge, %.critedge, %.critedge
  %282 = load ptr, ptr %5, align 8, !tbaa !5
  %283 = getelementptr inbounds i8, ptr %282, i64 232
  %284 = load ptr, ptr %283, align 8
  %285 = invoke noundef zeroext i1 %284(ptr noundef nonnull align 8 dereferenceable(144) %5)
          to label %286 unwind label %267

286:                                              ; preds = %281
  br i1 %285, label %287, label %292

287:                                              ; preds = %286
  %288 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %7) #4
  %289 = load ptr, ptr %0, align 8, !tbaa !5
  %290 = getelementptr inbounds i8, ptr %289, i64 192
  %291 = load ptr, ptr %290, align 8
  invoke void %291(ptr noundef nonnull align 8 dereferenceable(192) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef %288, ptr noundef nonnull @.str.331)
          to label %292 unwind label %267

292:                                              ; preds = %287, %286
  %293 = load ptr, ptr %5, align 8, !tbaa !5
  %294 = getelementptr inbounds i8, ptr %293, i64 216
  %295 = load ptr, ptr %294, align 8
  %296 = invoke noundef zeroext i1 %295(ptr noundef nonnull align 8 dereferenceable(144) %5)
          to label %297 unwind label %267

297:                                              ; preds = %292
  br i1 %296, label %298, label %332

298:                                              ; preds = %297
  %299 = load ptr, ptr %3, align 8, !tbaa !5
  %300 = getelementptr inbounds i8, ptr %299, i64 288
  %301 = load ptr, ptr %300, align 8
  %302 = invoke noundef i32 %301(ptr noundef nonnull align 8 dereferenceable(328) %3)
          to label %303 unwind label %267

303:                                              ; preds = %298
  %.not204 = icmp eq i32 %302, 1
  br i1 %.not204, label %332, label %.invoke284

304:                                              ; preds = %.critedge, %.critedge, %.critedge, %.critedge, %.critedge, %.critedge, %.critedge, %.critedge
  %305 = load ptr, ptr %5, align 8, !tbaa !5
  %306 = getelementptr inbounds i8, ptr %305, i64 232
  %307 = load ptr, ptr %306, align 8
  %308 = invoke noundef zeroext i1 %307(ptr noundef nonnull align 8 dereferenceable(144) %5)
          to label %309 unwind label %267

309:                                              ; preds = %304
  br i1 %308, label %310, label %315

310:                                              ; preds = %309
  %311 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %7) #4
  %312 = load ptr, ptr %0, align 8, !tbaa !5
  %313 = getelementptr inbounds i8, ptr %312, i64 216
  %314 = load ptr, ptr %313, align 8
  invoke void %314(ptr noundef nonnull align 8 dereferenceable(192) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef %311, ptr noundef nonnull @.str.333)
          to label %315 unwind label %267

315:                                              ; preds = %310, %309
  %316 = load ptr, ptr %5, align 8, !tbaa !5
  %317 = getelementptr inbounds i8, ptr %316, i64 216
  %318 = load ptr, ptr %317, align 8
  %319 = invoke noundef zeroext i1 %318(ptr noundef nonnull align 8 dereferenceable(144) %5)
          to label %320 unwind label %267

320:                                              ; preds = %315
  br i1 %319, label %321, label %332

321:                                              ; preds = %320
  %322 = load ptr, ptr %3, align 8, !tbaa !5
  %323 = getelementptr inbounds i8, ptr %322, i64 288
  %324 = load ptr, ptr %323, align 8
  %325 = invoke noundef i32 %324(ptr noundef nonnull align 8 dereferenceable(328) %3)
          to label %326 unwind label %267

326:                                              ; preds = %321
  %.not203 = icmp eq i32 %325, 1
  br i1 %.not203, label %332, label %.invoke284

.invoke284:                                       ; preds = %326, %303, %280
  %.sink286 = phi i64 [ 168, %280 ], [ 192, %303 ], [ 216, %326 ]
  %327 = phi ptr [ @.str.332, %280 ], [ @.str.332, %303 ], [ @.str.334, %326 ]
  %328 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %7) #4
  %329 = load ptr, ptr %0, align 8, !tbaa !5
  %330 = getelementptr inbounds i8, ptr %329, i64 %.sink286
  %331 = load ptr, ptr %330, align 8
  invoke void %331(ptr noundef nonnull align 8 dereferenceable(192) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef %328, ptr noundef nonnull %327)
          to label %332 unwind label %267

332:                                              ; preds = %.invoke284, %.critedge, %320, %326, %297, %303, %274, %280
  %333 = select i1 %cond, i1 %.0181, i1 false
  br i1 %333, label %334, label %372

334:                                              ; preds = %332
  br i1 %.0179, label %335, label %.critedge226

335:                                              ; preds = %334
  switch i32 %4, label %.critedge225 [
    i32 468, label %336
    i32 466, label %336
    i32 467, label %336
    i32 474, label %336
    i32 492, label %336
    i32 493, label %336
    i32 494, label %336
    i32 507, label %336
    i32 508, label %336
    i32 509, label %336
    i32 510, label %336
    i32 511, label %336
    i32 512, label %336
    i32 469, label %336
    i32 470, label %336
    i32 471, label %336
    i32 472, label %336
    i32 473, label %336
    i32 495, label %336
    i32 496, label %336
    i32 497, label %336
    i32 498, label %336
    i32 499, label %336
    i32 500, label %336
    i32 501, label %336
    i32 502, label %336
    i32 503, label %336
    i32 504, label %336
    i32 505, label %336
    i32 506, label %336
    i32 513, label %336
    i32 514, label %336
    i32 515, label %336
    i32 516, label %336
    i32 517, label %336
    i32 518, label %336
    i32 477, label %345
    i32 478, label %345
    i32 479, label %345
  ]

336:                                              ; preds = %335, %335, %335, %335, %335, %335, %335, %335, %335, %335, %335, %335, %335, %335, %335, %335, %335, %335, %335, %335, %335, %335, %335, %335, %335, %335, %335, %335, %335, %335, %335, %335, %335, %335, %335, %335
  br i1 %.0169, label %.critedge225, label %337

337:                                              ; preds = %336
  %338 = load ptr, ptr %5, align 8, !tbaa !5
  %339 = getelementptr inbounds i8, ptr %338, i64 232
  %340 = load ptr, ptr %339, align 8
  %341 = invoke noundef zeroext i1 %340(ptr noundef nonnull align 8 dereferenceable(144) %5)
          to label %342 unwind label %343

342:                                              ; preds = %337
  br i1 %341, label %.critedge225, label %352

343:                                              ; preds = %.critedge226, %362, %.critedge225, %352, %346, %337
  %344 = landingpad { ptr, i32 }
          cleanup
  br label %595

345:                                              ; preds = %335, %335, %335
  br i1 %.0167, label %.critedge225, label %346

346:                                              ; preds = %345
  %347 = load ptr, ptr %5, align 8, !tbaa !5
  %348 = getelementptr inbounds i8, ptr %347, i64 232
  %349 = load ptr, ptr %348, align 8
  %350 = invoke noundef zeroext i1 %349(ptr noundef nonnull align 8 dereferenceable(144) %5)
          to label %351 unwind label %343

351:                                              ; preds = %346
  br i1 %350, label %.critedge225, label %352

352:                                              ; preds = %342, %351
  %353 = load ptr, ptr %5, align 8, !tbaa !5
  %354 = getelementptr inbounds i8, ptr %353, i64 80
  %355 = load ptr, ptr %354, align 8
  %356 = invoke noundef nonnull align 8 dereferenceable(72) ptr %355(ptr noundef nonnull align 8 dereferenceable(144) %5)
          to label %357 unwind label %343

357:                                              ; preds = %352
  call void @_ZN7glslang10TQualifier16makeSpecConstantEv(ptr noundef nonnull align 8 dereferenceable(72) %356)
  br label %372

.critedge225:                                     ; preds = %351, %335, %345, %336, %342
  %358 = load ptr, ptr %5, align 8, !tbaa !5
  %359 = getelementptr inbounds i8, ptr %358, i64 80
  %360 = load ptr, ptr %359, align 8
  %361 = invoke noundef nonnull align 8 dereferenceable(72) ptr %360(ptr noundef nonnull align 8 dereferenceable(144) %5)
          to label %362 unwind label %343

362:                                              ; preds = %.critedge225
  invoke void @_ZN7glslang10TQualifier13makeTemporaryEv(ptr noundef nonnull align 8 dereferenceable(72) %361)
          to label %372 unwind label %343

.critedge226:                                     ; preds = %334
  %363 = load ptr, ptr %5, align 8, !tbaa !5
  %364 = getelementptr inbounds i8, ptr %363, i64 80
  %365 = load ptr, ptr %364, align 8
  %366 = invoke noundef nonnull align 8 dereferenceable(72) ptr %365(ptr noundef nonnull align 8 dereferenceable(144) %5)
          to label %367 unwind label %343

367:                                              ; preds = %.critedge226
  %368 = getelementptr inbounds i8, ptr %366, i64 8
  %369 = load i64, ptr %368, align 8
  %370 = and i64 %369, -64
  %371 = or disjoint i64 %370, 2
  store i64 %371, ptr %368, align 8
  br label %372

372:                                              ; preds = %357, %362, %367, %332
  %373 = load ptr, ptr %5, align 8, !tbaa !5
  %374 = getelementptr inbounds i8, ptr %373, i64 232
  %375 = load ptr, ptr %374, align 8
  %376 = invoke noundef zeroext i1 %375(ptr noundef nonnull align 8 dereferenceable(144) %5)
          to label %377 unwind label %267

377:                                              ; preds = %372
  br i1 %376, label %378, label %.loopexit

378:                                              ; preds = %377
  %379 = load ptr, ptr %3, align 8, !tbaa !5
  %380 = getelementptr inbounds i8, ptr %379, i64 288
  %381 = load ptr, ptr %380, align 8
  %382 = invoke noundef i32 %381(ptr noundef nonnull align 8 dereferenceable(328) %3)
          to label %383 unwind label %267

383:                                              ; preds = %378
  %384 = icmp eq i32 %382, 0
  br i1 %384, label %.invoke, label %385

385:                                              ; preds = %383
  %386 = load ptr, ptr %5, align 8, !tbaa !5
  %387 = getelementptr inbounds i8, ptr %386, i64 248
  %388 = load ptr, ptr %387, align 8
  %389 = invoke noundef zeroext i1 %388(ptr noundef nonnull align 8 dereferenceable(144) %5)
          to label %390 unwind label %267

390:                                              ; preds = %385
  br i1 %389, label %391, label %397

391:                                              ; preds = %390
  %392 = load ptr, ptr %3, align 8, !tbaa !5
  %393 = getelementptr inbounds i8, ptr %392, i64 288
  %394 = load ptr, ptr %393, align 8
  %395 = invoke noundef i32 %394(ptr noundef nonnull align 8 dereferenceable(328) %3)
          to label %396 unwind label %267

396:                                              ; preds = %391
  invoke void @_ZN7glslang5TType20changeOuterArraySizeEi(ptr noundef nonnull align 8 dereferenceable(144) %5, i32 noundef %395)
          to label %408 unwind label %267

397:                                              ; preds = %390
  %398 = load ptr, ptr %5, align 8, !tbaa !5
  %399 = getelementptr inbounds i8, ptr %398, i64 120
  %400 = load ptr, ptr %399, align 8
  %401 = invoke noundef i32 %400(ptr noundef nonnull align 8 dereferenceable(144) %5)
          to label %402 unwind label %267

402:                                              ; preds = %397
  %403 = load ptr, ptr %3, align 8, !tbaa !5
  %404 = getelementptr inbounds i8, ptr %403, i64 288
  %405 = load ptr, ptr %404, align 8
  %406 = invoke noundef i32 %405(ptr noundef nonnull align 8 dereferenceable(328) %3)
          to label %407 unwind label %267

407:                                              ; preds = %402
  %.not206 = icmp eq i32 %401, %406
  br i1 %.not206, label %408, label %.invoke

408:                                              ; preds = %407, %396
  %409 = call noundef zeroext i1 @_ZNK7glslang5TType15isArrayOfArraysEv(ptr noundef nonnull align 8 dereferenceable(144) %5)
  br i1 %409, label %410, label %.loopexit

410:                                              ; preds = %408
  %411 = load ptr, ptr %5, align 8, !tbaa !5
  %412 = getelementptr inbounds i8, ptr %411, i64 160
  %413 = load ptr, ptr %412, align 8
  %414 = invoke noundef ptr %413(ptr noundef nonnull align 8 dereferenceable(144) %5)
          to label %415 unwind label %449

415:                                              ; preds = %410
  %416 = load ptr, ptr %3, align 8, !tbaa !5
  %417 = getelementptr inbounds i8, ptr %416, i64 312
  %418 = load ptr, ptr %417, align 8
  %419 = invoke noundef nonnull align 8 dereferenceable(24) ptr %418(ptr noundef nonnull align 8 dereferenceable(328) %3, i32 noundef 0)
          to label %420 unwind label %449

420:                                              ; preds = %415
  %421 = getelementptr inbounds i8, ptr %419, i64 8
  %422 = load ptr, ptr %421, align 8, !tbaa !34
  %423 = load ptr, ptr %422, align 8, !tbaa !5
  %424 = getelementptr inbounds i8, ptr %423, i64 232
  %425 = load ptr, ptr %424, align 8
  %426 = invoke noundef zeroext i1 %425(ptr noundef nonnull align 8 dereferenceable(144) %422)
          to label %427 unwind label %449

427:                                              ; preds = %420
  br i1 %426, label %428, label %444

428:                                              ; preds = %427
  %429 = call noundef i32 @_ZNK7glslang11TArraySizes10getNumDimsEv(ptr noundef nonnull align 8 dereferenceable(21) %414)
  %430 = load ptr, ptr %3, align 8, !tbaa !5
  %431 = getelementptr inbounds i8, ptr %430, i64 312
  %432 = load ptr, ptr %431, align 8
  %433 = invoke noundef nonnull align 8 dereferenceable(24) ptr %432(ptr noundef nonnull align 8 dereferenceable(328) %3, i32 noundef 0)
          to label %434 unwind label %449

434:                                              ; preds = %428
  %435 = getelementptr inbounds i8, ptr %433, i64 8
  %436 = load ptr, ptr %435, align 8, !tbaa !34
  %437 = load ptr, ptr %436, align 8, !tbaa !5
  %438 = getelementptr inbounds i8, ptr %437, i64 160
  %439 = load ptr, ptr %438, align 8
  %440 = invoke noundef ptr %439(ptr noundef nonnull align 8 dereferenceable(144) %436)
          to label %441 unwind label %449

441:                                              ; preds = %434
  %442 = call noundef i32 @_ZNK7glslang11TArraySizes10getNumDimsEv(ptr noundef nonnull align 8 dereferenceable(21) %440)
  %443 = add nsw i32 %442, 1
  %.not207 = icmp eq i32 %429, %443
  br i1 %.not207, label %451, label %444

444:                                              ; preds = %441, %427
  %445 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %7) #4
  %446 = load ptr, ptr %0, align 8, !tbaa !5
  %447 = getelementptr inbounds i8, ptr %446, i64 336
  %448 = load ptr, ptr %447, align 8
  invoke void (ptr, ptr, ptr, ptr, ptr, ...) %448(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.337, ptr noundef %445, ptr noundef nonnull @.str.2)
          to label %.critedge228 unwind label %449

449:                                              ; preds = %444, %434, %428, %420, %415, %410
  %450 = landingpad { ptr, i32 }
          cleanup
  br label %595

451:                                              ; preds = %441
  %452 = call noundef zeroext i1 @_ZNK7glslang11TArraySizes14isInnerUnsizedEv(ptr noundef nonnull align 8 dereferenceable(21) %414)
  br i1 %452, label %.preheader, label %.loopexit

.preheader:                                       ; preds = %451
  %453 = call noundef i32 @_ZNK7glslang11TArraySizes10getNumDimsEv(ptr noundef nonnull align 8 dereferenceable(21) %414)
  %454 = icmp sgt i32 %453, 1
  br i1 %454, label %.lr.ph, label %.loopexit

455:                                              ; preds = %471, %464, %459
  %456 = landingpad { ptr, i32 }
          cleanup
  br label %595

.lr.ph:                                           ; preds = %.preheader, %474
  %.0159251 = phi i32 [ %475, %474 ], [ 1, %.preheader ]
  %457 = call noundef i32 @_ZNK7glslang11TArraySizes10getDimSizeEi(ptr noundef nonnull align 8 dereferenceable(21) %414, i32 noundef %.0159251)
  %458 = icmp eq i32 %457, 0
  br i1 %458, label %459, label %474

459:                                              ; preds = %.lr.ph
  %460 = load ptr, ptr %3, align 8, !tbaa !5
  %461 = getelementptr inbounds i8, ptr %460, i64 312
  %462 = load ptr, ptr %461, align 8
  %463 = invoke noundef nonnull align 8 dereferenceable(24) ptr %462(ptr noundef nonnull align 8 dereferenceable(328) %3, i32 noundef 0)
          to label %464 unwind label %455

464:                                              ; preds = %459
  %465 = getelementptr inbounds i8, ptr %463, i64 8
  %466 = load ptr, ptr %465, align 8, !tbaa !34
  %467 = load ptr, ptr %466, align 8, !tbaa !5
  %468 = getelementptr inbounds i8, ptr %467, i64 160
  %469 = load ptr, ptr %468, align 8
  %470 = invoke noundef ptr %469(ptr noundef nonnull align 8 dereferenceable(144) %466)
          to label %471 unwind label %455

471:                                              ; preds = %464
  %472 = add nsw i32 %.0159251, -1
  %473 = call noundef i32 @_ZNK7glslang11TArraySizes10getDimSizeEi(ptr noundef nonnull align 8 dereferenceable(21) %470, i32 noundef %472)
  invoke void @_ZN7glslang11TArraySizes10setDimSizeEii(ptr noundef nonnull align 8 dereferenceable(21) %414, i32 noundef %.0159251, i32 noundef %473)
          to label %474 unwind label %455

474:                                              ; preds = %.lr.ph, %471
  %475 = add nuw nsw i32 %.0159251, 1
  %476 = call noundef i32 @_ZNK7glslang11TArraySizes10getNumDimsEv(ptr noundef nonnull align 8 dereferenceable(21) %414)
  %477 = icmp slt i32 %475, %476
  br i1 %477, label %.lr.ph, label %.loopexit, !llvm.loop !38

.loopexit:                                        ; preds = %474, %.preheader, %451, %408, %377
  %478 = icmp ne i32 %4, 568
  %or.cond = and i1 %478, %.0171
  br i1 %or.cond, label %479, label %481

479:                                              ; preds = %.loopexit
  %480 = call noundef zeroext i1 @_ZNK7glslang5TType15isArrayOfArraysEv(ptr noundef nonnull align 8 dereferenceable(144) %5)
  br i1 %480, label %481, label %.invoke

481:                                              ; preds = %479, %.loopexit
  br i1 %.0173, label %482, label %500

482:                                              ; preds = %481
  %483 = load ptr, ptr %5, align 8, !tbaa !5
  %484 = getelementptr inbounds i8, ptr %483, i64 232
  %485 = load ptr, ptr %484, align 8
  %486 = invoke noundef zeroext i1 %485(ptr noundef nonnull align 8 dereferenceable(144) %5)
          to label %487 unwind label %267

487:                                              ; preds = %482
  br i1 %486, label %500, label %488

488:                                              ; preds = %487
  invoke void @_ZN7glslang14TParseVersions15profileRequiresERKNS_10TSourceLocEiiPKcS5_(ptr noundef nonnull align 8 dereferenceable(192) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef 1, i32 noundef 120, ptr noundef null, ptr noundef nonnull @.str.339)
          to label %489 unwind label %267

489:                                              ; preds = %488
  %490 = load ptr, ptr %3, align 8, !tbaa !5
  %491 = getelementptr inbounds i8, ptr %490, i64 288
  %492 = load ptr, ptr %491, align 8
  %493 = invoke noundef i32 %492(ptr noundef nonnull align 8 dereferenceable(328) %3)
          to label %494 unwind label %267

494:                                              ; preds = %489
  %.not210 = icmp eq i32 %493, 1
  br i1 %.not210, label %.critedge228, label %495

495:                                              ; preds = %494
  %496 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %7) #4
  %497 = load ptr, ptr %0, align 8, !tbaa !5
  %498 = getelementptr inbounds i8, ptr %497, i64 336
  %499 = load ptr, ptr %498, align 8
  invoke void (ptr, ptr, ptr, ptr, ptr, ...) %499(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.340, ptr noundef %496, ptr noundef nonnull @.str.2)
          to label %.critedge228 unwind label %267

500:                                              ; preds = %487, %481
  br i1 %.0175, label %.invoke, label %501

501:                                              ; preds = %500
  br i1 %.not200, label %502, label %518

502:                                              ; preds = %501
  %503 = load ptr, ptr %5, align 8, !tbaa !5
  %504 = getelementptr inbounds i8, ptr %503, i64 232
  %505 = load ptr, ptr %504, align 8
  %506 = invoke noundef zeroext i1 %505(ptr noundef nonnull align 8 dereferenceable(144) %5)
          to label %507 unwind label %267

507:                                              ; preds = %502
  br i1 %506, label %523, label %508

508:                                              ; preds = %507
  %509 = invoke noundef ptr @_ZNK7glslang5TType9getStructEv(ptr noundef nonnull align 8 dereferenceable(144) %5)
          to label %510 unwind label %267

510:                                              ; preds = %508
  %511 = call noundef i64 @_ZNKSt6vectorIN7glslang8TTypeLocENS0_14pool_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %509) #4
  %512 = load ptr, ptr %3, align 8, !tbaa !5
  %513 = getelementptr inbounds i8, ptr %512, i64 288
  %514 = load ptr, ptr %513, align 8
  %515 = invoke noundef i32 %514(ptr noundef nonnull align 8 dereferenceable(328) %3)
          to label %516 unwind label %267

516:                                              ; preds = %510
  %517 = trunc i64 %511 to i32
  %.not211 = icmp eq i32 %515, %517
  br i1 %.not211, label %523, label %.invoke

518:                                              ; preds = %501
  %.not233 = icmp eq i32 %.0184, 1
  br i1 %.not233, label %.thread231, label %519

519:                                              ; preds = %518
  %520 = invoke noundef i32 @_ZNK7glslang5TType20computeNumComponentsEv(ptr noundef nonnull align 8 dereferenceable(144) %5)
          to label %521 unwind label %267

521:                                              ; preds = %519
  %522 = icmp slt i32 %.0184, %520
  br i1 %522, label %.invoke, label %.thread231

523:                                              ; preds = %507, %516
  %524 = invoke noundef i32 @_ZNK7glslang5TType20computeNumComponentsEv(ptr noundef nonnull align 8 dereferenceable(144) %5)
          to label %525 unwind label %267

525:                                              ; preds = %523
  %526 = icmp slt i32 %.0184, %524
  br i1 %526, label %.invoke, label %.thread231

.thread231:                                       ; preds = %518, %521, %525
  %527 = call noundef zeroext i1 @_ZNK7glslang5TType9isCoopMatEv(ptr noundef nonnull align 8 dereferenceable(144) %5)
  br i1 %527, label %528, label %534

528:                                              ; preds = %.thread231
  %529 = load ptr, ptr %3, align 8, !tbaa !5
  %530 = getelementptr inbounds i8, ptr %529, i64 288
  %531 = load ptr, ptr %530, align 8
  %532 = invoke noundef i32 %531(ptr noundef nonnull align 8 dereferenceable(328) %3)
          to label %533 unwind label %267

533:                                              ; preds = %528
  %.not212 = icmp eq i32 %532, 1
  br i1 %.not212, label %534, label %.invoke

534:                                              ; preds = %533, %.thread231
  %535 = call noundef zeroext i1 @_ZNK7glslang5TType9isCoopMatEv(ptr noundef nonnull align 8 dereferenceable(144) %5)
  br i1 %535, label %536, label %563

536:                                              ; preds = %534
  %537 = load ptr, ptr %3, align 8, !tbaa !5
  %538 = getelementptr inbounds i8, ptr %537, i64 312
  %539 = load ptr, ptr %538, align 8
  %540 = invoke noundef nonnull align 8 dereferenceable(24) ptr %539(ptr noundef nonnull align 8 dereferenceable(328) %3, i32 noundef 0)
          to label %541 unwind label %267

541:                                              ; preds = %536
  %542 = getelementptr inbounds i8, ptr %540, i64 8
  %543 = load ptr, ptr %542, align 8, !tbaa !34
  %544 = load ptr, ptr %543, align 8, !tbaa !5
  %545 = getelementptr inbounds i8, ptr %544, i64 192
  %546 = load ptr, ptr %545, align 8
  %547 = invoke noundef zeroext i1 %546(ptr noundef nonnull align 8 dereferenceable(144) %543)
          to label %548 unwind label %267

548:                                              ; preds = %541
  br i1 %547, label %563, label %549

549:                                              ; preds = %548
  %550 = load ptr, ptr %3, align 8, !tbaa !5
  %551 = getelementptr inbounds i8, ptr %550, i64 312
  %552 = load ptr, ptr %551, align 8
  %553 = invoke noundef nonnull align 8 dereferenceable(24) ptr %552(ptr noundef nonnull align 8 dereferenceable(328) %3, i32 noundef 0)
          to label %554 unwind label %267

554:                                              ; preds = %549
  %555 = getelementptr inbounds i8, ptr %553, i64 8
  %556 = load ptr, ptr %555, align 8, !tbaa !34
  %557 = call noundef zeroext i1 @_ZNK7glslang5TType9isCoopMatEv(ptr noundef nonnull align 8 dereferenceable(144) %556)
  br i1 %557, label %563, label %.invoke

.invoke:                                          ; preds = %554, %533, %521, %525, %516, %500, %479, %407, %383
  %558 = phi ptr [ @.str.335, %383 ], [ @.str.336, %407 ], [ @.str.338, %479 ], [ @.str.341, %500 ], [ @.str.342, %516 ], [ @.str.343, %525 ], [ @.str.343, %521 ], [ @.str.344, %533 ], [ @.str.345, %554 ]
  %559 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %7) #4
  %560 = load ptr, ptr %0, align 8, !tbaa !5
  %561 = getelementptr inbounds i8, ptr %560, i64 336
  %562 = load ptr, ptr %561, align 8
  invoke void (ptr, ptr, ptr, ptr, ptr, ...) %562(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull %558, ptr noundef %559, ptr noundef nonnull @.str.2)
          to label %.critedge228 unwind label %267

563:                                              ; preds = %554, %548, %534
  %564 = load ptr, ptr %2, align 8, !tbaa !5
  %565 = getelementptr inbounds i8, ptr %564, i64 24
  %566 = load ptr, ptr %565, align 8
  %567 = invoke noundef ptr %566(ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %568 unwind label %570

568:                                              ; preds = %563
  %569 = icmp eq ptr %567, null
  br i1 %569, label %.invoke288, label %572

570:                                              ; preds = %.invoke288, %583, %.thread232, %573, %563
  %571 = landingpad { ptr, i32 }
          cleanup
  br label %595

572:                                              ; preds = %568
  switch i32 %4, label %573 [
    i32 570, label %580
    i32 568, label %580
  ]

573:                                              ; preds = %572
  %574 = load ptr, ptr %567, align 8, !tbaa !5
  %575 = getelementptr inbounds i8, ptr %574, i64 256
  %576 = load ptr, ptr %575, align 8
  %577 = invoke noundef i32 %576(ptr noundef nonnull align 8 dereferenceable(176) %567)
          to label %578 unwind label %570

578:                                              ; preds = %573
  %579 = icmp eq i32 %577, 14
  br i1 %579, label %.invoke288, label %.thread232

580:                                              ; preds = %572, %572
  br i1 %478, label %.thread232, label %583

.thread232:                                       ; preds = %578, %580
  %581 = invoke noundef zeroext i1 @_ZNK7glslang12TIntermTyped8isAtomicEv(ptr noundef nonnull align 8 dereferenceable(176) %567)
          to label %582 unwind label %570

582:                                              ; preds = %.thread232
  br i1 %581, label %.invoke288, label %583

583:                                              ; preds = %582, %580
  %584 = load ptr, ptr %567, align 8, !tbaa !5
  %585 = getelementptr inbounds i8, ptr %584, i64 256
  %586 = load ptr, ptr %585, align 8
  %587 = invoke noundef i32 %586(ptr noundef nonnull align 8 dereferenceable(176) %567)
          to label %588 unwind label %570

588:                                              ; preds = %583
  %589 = icmp eq i32 %587, 0
  br i1 %589, label %.invoke288, label %.critedge228

.invoke288:                                       ; preds = %588, %582, %578, %568
  %590 = phi ptr [ @.str.346, %568 ], [ @.str.347, %578 ], [ @.str.348, %582 ], [ @.str.349, %588 ]
  %591 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %7) #4
  %592 = load ptr, ptr %0, align 8, !tbaa !5
  %593 = getelementptr inbounds i8, ptr %592, i64 336
  %594 = load ptr, ptr %593, align 8
  invoke void (ptr, ptr, ptr, ptr, ptr, ...) %594(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull %590, ptr noundef %591, ptr noundef nonnull @.str.2)
          to label %.critedge228 unwind label %570

.critedge228:                                     ; preds = %.invoke288, %.invoke, %113, %495, %494, %588, %444, %75
  %.4 = phi i1 [ %76, %75 ], [ false, %495 ], [ false, %494 ], [ false, %588 ], [ true, %444 ], [ true, %113 ], [ true, %.invoke ], [ true, %.invoke288 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %7) #4
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %7) #4
  ret i1 %.4

595:                                              ; preds = %.loopexit234, %.loopexit.split-lp, %77, %449, %455, %570, %343, %267, %71, %59
  %.pn213.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn, %71 ], [ %60, %59 ], [ %78, %77 ], [ %268, %267 ], [ %571, %570 ], [ %344, %343 ], [ %450, %449 ], [ %456, %455 ], [ %lpad.loopexit, %.loopexit234 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %7) #4
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %7) #4
  resume { ptr, i32 } %.pn213.pn.pn
}

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN7glslang13TParseContext30constructorTextureSamplerErrorERKNS_10TSourceLocERKNS_9TFunctionE(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(328)) local_unnamed_addr #0 align 2

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

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

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

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

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

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

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


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