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

; 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.anon.159 = type { i8 }
%"class.glslang::TPpToken" = type <{ %"struct.glslang::TSourceLoc", i8, [7 x i8], %union.anon, [1025 x i8], [7 x i8] }>
%"struct.glslang::TSourceLoc" = type { ptr, i32, i32, i32 }
%union.anon = type { double }
%"class.glslang::TPpContext::tInput" = type { ptr, i8, ptr }
%"class.glslang::TPpContext" = type <{ ptr, %"class.glslang::TMap", %"class.glslang::TStringAtomMap", ptr, i32, [4 x i8], ptr, ptr, i32, i32, i32, [4 x i8], ptr, i32, [65 x i8], [3 x i8], i32, [4 x i8], %"class.std::vector.6", i8, i8, [6 x i8], ptr, i8, [7 x i8], %"class.std::__cxx11::basic_string.8", %"class.std::stack", %"class.std::__cxx11::basic_string.8", %"class.std::__cxx11::basic_istringstream", i8, [7 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<int, std::pair<const int, glslang::TPpContext::MacroSymbol>, std::_Select1st<std::pair<const int, glslang::TPpContext::MacroSymbol>>, std::less<int>, glslang::pool_allocator<std::pair<const int, glslang::TPpContext::MacroSymbol>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<int, std::pair<const int, glslang::TPpContext::MacroSymbol>, std::_Select1st<std::pair<const int, glslang::TPpContext::MacroSymbol>>, std::less<int>, glslang::pool_allocator<std::pair<const int, glslang::TPpContext::MacroSymbol>>>::_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::TStringAtomMap" = type { %"class.glslang::TUnorderedMap", %"class.glslang::TVector", i32, %"class.std::__cxx11::basic_string" }
%"class.glslang::TUnorderedMap" = type { %"class.std::unordered_map" }
%"class.std::unordered_map" = type { %"class.std::_Hashtable" }
%"class.std::_Hashtable" = type { %"struct.std::__detail::_Hashtable_alloc", ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hashtable_alloc" = type { %"struct.std::__detail::_Hashtable_ebo_helper.1" }
%"struct.std::__detail::_Hashtable_ebo_helper.1" = type { %"class.glslang::pool_allocator.2" }
%"class.glslang::pool_allocator.2" = type { ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"class.glslang::TVector" = type { %"class.std::vector" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>> *, glslang::pool_allocator<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>> *>>::_Vector_impl" }
%"struct.std::_Vector_base<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>> *, glslang::pool_allocator<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>> *>>::_Vector_impl" = type { %"class.glslang::pool_allocator.3", %"struct.std::_Vector_base<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>> *, glslang::pool_allocator<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>> *>>::_Vector_impl_data" }
%"class.glslang::pool_allocator.3" = type { ptr }
%"struct.std::_Vector_base<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>> *, glslang::pool_allocator<const std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>> *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"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.5 }
%"struct.std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>::_Alloc_hider" = type { %"class.glslang::pool_allocator.4", ptr }
%"class.glslang::pool_allocator.4" = type { ptr }
%union.anon.5 = type { i64, [8 x i8] }
%"class.std::vector.6" = type { %"struct.std::_Vector_base.7" }
%"struct.std::_Vector_base.7" = type { %"struct.std::_Vector_base<glslang::TPpContext::tInput *, std::allocator<glslang::TPpContext::tInput *>>::_Vector_impl" }
%"struct.std::_Vector_base<glslang::TPpContext::tInput *, std::allocator<glslang::TPpContext::tInput *>>::_Vector_impl" = type { %"struct.std::_Vector_base<glslang::TPpContext::tInput *, std::allocator<glslang::TPpContext::tInput *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<glslang::TPpContext::tInput *, std::allocator<glslang::TPpContext::tInput *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::stack" = type { %"class.std::deque" }
%"class.std::deque" = type { %"class.std::_Deque_base" }
%"class.std::_Deque_base" = type { %"struct.std::_Deque_base<glslang::TShader::Includer::IncludeResult *, std::allocator<glslang::TShader::Includer::IncludeResult *>>::_Deque_impl" }
%"struct.std::_Deque_base<glslang::TShader::Includer::IncludeResult *, std::allocator<glslang::TShader::Includer::IncludeResult *>>::_Deque_impl" = type { %"struct.std::_Deque_base<glslang::TShader::Includer::IncludeResult *, std::allocator<glslang::TShader::Includer::IncludeResult *>>::_Deque_impl_data" }
%"struct.std::_Deque_base<glslang::TShader::Includer::IncludeResult *, std::allocator<glslang::TShader::Includer::IncludeResult *>>::_Deque_impl_data" = type { ptr, i64, %"struct.std::_Deque_iterator", %"struct.std::_Deque_iterator" }
%"struct.std::_Deque_iterator" = type { ptr, ptr, ptr, ptr }
%"class.std::__cxx11::basic_string.8" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon.12 }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon.12 = type { i64, [8 x i8] }
%"class.std::__cxx11::basic_istringstream" = type { %"class.std::basic_istream.base", %"class.std::__cxx11::basic_stringbuf", %"class.std::basic_ios" }
%"class.std::basic_istream.base" = type { ptr, i64 }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string.8" }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { ptr }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.glslang::TParseVersions" = type { ptr, i8, i32, ptr, i32, i32, %"struct.glslang::SpvVersion", ptr, %"class.glslang::TMap.16", %"class.glslang::TMap.21", i32, i32, ptr }
%"struct.glslang::SpvVersion" = type <{ i32, i32, i32, i32, i8, [3 x i8] }>
%"class.glslang::TMap.16" = type { %"class.std::map.17" }
%"class.std::map.17" = type { %"class.std::_Rb_tree.18" }
%"class.std::_Rb_tree.18" = 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.19", [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.glslang::pool_allocator.19" = type { ptr }
%"class.glslang::TMap.21" = type { %"class.std::map.22" }
%"class.std::map.22" = type { %"class.std::_Rb_tree.23" }
%"class.std::_Rb_tree.23" = 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.24", [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.glslang::pool_allocator.24" = type { ptr }

@.str.1 = external hidden unnamed_addr constant [1 x i8], align 1
@_ZZN7glslang10TPpContext12tStringInput4scanEPNS_8TPpTokenEE16Int64_Extensions = external hidden constant [3 x ptr], align 16
@_ZZN7glslang10TPpContext12tStringInput4scanEPNS_8TPpTokenEE16Int16_Extensions = external hidden constant [3 x ptr], align 16
@.str.17 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [22 x i8], align 1

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN7glslang10TPpContext12tStringInput4scanEPNS_8TPpTokenE(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %1) unnamed_addr #0 align 2 {
  %3 = alloca i32, align 4
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i64, align 8
  %11 = alloca %class.anon.159, align 1
  %12 = alloca i32, align 4
  %13 = alloca i8, align 1
  %14 = alloca i8, align 1
  %15 = alloca i8, align 1
  %16 = alloca i32, align 4
  %17 = alloca i8, align 1
  %18 = alloca i8, align 1
  %19 = alloca i8, align 1
  %20 = alloca i8, align 1
  %21 = alloca i8, align 1
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i8, align 1
  %25 = alloca i8, align 1
  %26 = alloca i8, align 1
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i64, align 8
  %31 = alloca i64, align 8
  %32 = alloca i16, align 2
  %33 = alloca i16, align 2
  %34 = alloca i32, align 4
  %35 = alloca i8, align 1
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  %39 = load ptr, ptr %4, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #6
  store i32 0, ptr %6, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #6
  store i32 0, ptr %7, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #6
  store i32 0, ptr %8, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #6
  store i32 0, ptr %9, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #6
  store i64 0, ptr %10, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %11) #6
  %40 = load ptr, ptr %5, align 8, !tbaa !5
  %41 = getelementptr inbounds %"class.glslang::TPpToken", ptr %40, i32 0, i32 3
  store i32 0, ptr %41, align 8, !tbaa !13
  %42 = load ptr, ptr %5, align 8, !tbaa !5
  %43 = getelementptr inbounds %"class.glslang::TPpToken", ptr %42, i32 0, i32 3
  store i64 0, ptr %43, align 8, !tbaa !13
  %44 = load ptr, ptr %5, align 8, !tbaa !5
  %45 = getelementptr inbounds %"class.glslang::TPpToken", ptr %44, i32 0, i32 1
  store i8 0, ptr %45, align 8, !tbaa !14
  %46 = load ptr, ptr %39, align 8, !tbaa !18
  %47 = getelementptr inbounds ptr, ptr %46, i64 3
  %48 = load ptr, ptr %47, align 8
  %49 = call noundef i32 %48(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 %49, ptr %8, align 4, !tbaa !9
  br label %50

50:                                               ; preds = %1821, %143, %2
  br label %51

51:                                               ; preds = %59, %50
  %52 = load i32, ptr %8, align 4, !tbaa !9
  %53 = icmp eq i32 %52, 32
  br i1 %53, label %57, label %54

54:                                               ; preds = %51
  %55 = load i32, ptr %8, align 4, !tbaa !9
  %56 = icmp eq i32 %55, 9
  br label %57

57:                                               ; preds = %54, %51
  %58 = phi i1 [ true, %51 ], [ %56, %54 ]
  br i1 %58, label %59, label %66

59:                                               ; preds = %57
  %60 = load ptr, ptr %5, align 8, !tbaa !5
  %61 = getelementptr inbounds %"class.glslang::TPpToken", ptr %60, i32 0, i32 1
  store i8 1, ptr %61, align 8, !tbaa !14
  %62 = load ptr, ptr %39, align 8, !tbaa !18
  %63 = getelementptr inbounds ptr, ptr %62, i64 3
  %64 = load ptr, ptr %63, align 8
  %65 = call noundef i32 %64(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 %65, ptr %8, align 4, !tbaa !9
  br label %51, !llvm.loop !20

66:                                               ; preds = %57
  %67 = getelementptr inbounds %"class.glslang::TPpContext::tInput", ptr %39, i32 0, i32 2
  %68 = load ptr, ptr %67, align 8, !tbaa !22
  %69 = getelementptr inbounds %"class.glslang::TPpContext", ptr %68, i32 0, i32 12
  %70 = load ptr, ptr %69, align 8, !tbaa !24
  %71 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK7glslang14TParseVersions13getCurrentLocEv(ptr noundef nonnull align 8 dereferenceable(192) %70)
  %72 = load ptr, ptr %5, align 8, !tbaa !5
  %73 = getelementptr inbounds %"class.glslang::TPpToken", ptr %72, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %73, ptr align 8 %71, i64 24, i1 false), !tbaa.struct !74
  store i32 0, ptr %7, align 4, !tbaa !9
  %74 = load i32, ptr %8, align 4, !tbaa !9
  switch i32 %74, label %75 [
    i32 65, label %81
    i32 66, label %81
    i32 67, label %81
    i32 68, label %81
    i32 69, label %81
    i32 70, label %81
    i32 71, label %81
    i32 72, label %81
    i32 73, label %81
    i32 74, label %81
    i32 75, label %81
    i32 76, label %81
    i32 77, label %81
    i32 78, label %81
    i32 79, label %81
    i32 80, label %81
    i32 81, label %81
    i32 82, label %81
    i32 83, label %81
    i32 84, label %81
    i32 85, label %81
    i32 86, label %81
    i32 87, label %81
    i32 88, label %81
    i32 89, label %81
    i32 90, label %81
    i32 95, label %81
    i32 97, label %81
    i32 98, label %81
    i32 99, label %81
    i32 100, label %81
    i32 101, label %81
    i32 102, label %81
    i32 103, label %81
    i32 104, label %81
    i32 105, label %81
    i32 106, label %81
    i32 107, label %81
    i32 108, label %81
    i32 109, label %81
    i32 110, label %81
    i32 111, label %81
    i32 112, label %81
    i32 113, label %81
    i32 114, label %81
    i32 115, label %81
    i32 116, label %81
    i32 117, label %81
    i32 118, label %81
    i32 119, label %81
    i32 120, label %81
    i32 121, label %81
    i32 122, label %81
    i32 48, label %153
    i32 49, label %947
    i32 50, label %947
    i32 51, label %947
    i32 52, label %947
    i32 53, label %947
    i32 54, label %947
    i32 55, label %947
    i32 56, label %947
    i32 57, label %947
    i32 45, label %1320
    i32 43, label %1336
    i32 42, label %1352
    i32 37, label %1364
    i32 94, label %1376
    i32 61, label %1392
    i32 33, label %1404
    i32 124, label %1416
    i32 38, label %1432
    i32 60, label %1448
    i32 62, label %1475
    i32 46, label %1502
    i32 47, label %1524
    i32 39, label %1619
    i32 34, label %1624
    i32 58, label %1809
  ]

75:                                               ; preds = %66
  %76 = load i32, ptr %8, align 4, !tbaa !9
  %77 = icmp sgt i32 %76, 127
  br i1 %77, label %78, label %79

78:                                               ; preds = %75
  store i32 128, ptr %8, align 4, !tbaa !9
  br label %79

79:                                               ; preds = %78, %75
  %80 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %80, ptr %3, align 4
  store i32 1, ptr %12, align 4
  br label %1826

81:                                               ; preds = %66, %66, %66, %66, %66, %66, %66, %66, %66, %66, %66, %66, %66, %66, %66, %66, %66, %66, %66, %66, %66, %66, %66, %66, %66, %66, %66, %66, %66, %66, %66, %66, %66, %66, %66, %66, %66, %66, %66, %66, %66, %66, %66, %66, %66, %66, %66, %66, %66, %66, %66, %66, %66
  br label %82

82:                                               ; preds = %138, %81
  %83 = load i32, ptr %7, align 4, !tbaa !9
  %84 = icmp slt i32 %83, 1024
  br i1 %84, label %85, label %98

85:                                               ; preds = %82
  %86 = load i32, ptr %8, align 4, !tbaa !9
  %87 = trunc i32 %86 to i8
  %88 = load ptr, ptr %5, align 8, !tbaa !5
  %89 = getelementptr inbounds %"class.glslang::TPpToken", ptr %88, i32 0, i32 4
  %90 = load i32, ptr %7, align 4, !tbaa !9
  %91 = add nsw i32 %90, 1
  store i32 %91, ptr %7, align 4, !tbaa !9
  %92 = sext i32 %90 to i64
  %93 = getelementptr inbounds [1025 x i8], ptr %89, i64 0, i64 %92
  store i8 %87, ptr %93, align 1, !tbaa !13
  %94 = load ptr, ptr %39, align 8, !tbaa !18
  %95 = getelementptr inbounds ptr, ptr %94, i64 3
  %96 = load ptr, ptr %95, align 8
  %97 = call noundef i32 %96(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 %97, ptr %8, align 4, !tbaa !9
  br label %116

98:                                               ; preds = %82
  %99 = load i32, ptr %6, align 4, !tbaa !9
  %100 = icmp ne i32 %99, 0
  br i1 %100, label %111, label %101

101:                                              ; preds = %98
  %102 = getelementptr inbounds %"class.glslang::TPpContext::tInput", ptr %39, i32 0, i32 2
  %103 = load ptr, ptr %102, align 8, !tbaa !22
  %104 = getelementptr inbounds %"class.glslang::TPpContext", ptr %103, i32 0, i32 12
  %105 = load ptr, ptr %104, align 8, !tbaa !24
  %106 = load ptr, ptr %5, align 8, !tbaa !5
  %107 = getelementptr inbounds %"class.glslang::TPpToken", ptr %106, i32 0, i32 0
  %108 = load ptr, ptr %105, align 8, !tbaa !18
  %109 = getelementptr inbounds ptr, ptr %108, i64 44
  %110 = load ptr, ptr %109, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %110(ptr noundef nonnull align 8 dereferenceable(1176) %105, ptr noundef nonnull align 8 dereferenceable(24) %107, ptr noundef @.str.17, ptr noundef @.str.1, ptr noundef @.str.1)
  store i32 1, ptr %6, align 4, !tbaa !9
  br label %111

111:                                              ; preds = %101, %98
  %112 = load ptr, ptr %39, align 8, !tbaa !18
  %113 = getelementptr inbounds ptr, ptr %112, i64 3
  %114 = load ptr, ptr %113, align 8
  %115 = call noundef i32 %114(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 %115, ptr %8, align 4, !tbaa !9
  br label %116

116:                                              ; preds = %111, %85
  br label %117

117:                                              ; preds = %116
  %118 = load i32, ptr %8, align 4, !tbaa !9
  %119 = icmp sge i32 %118, 97
  br i1 %119, label %120, label %123

120:                                              ; preds = %117
  %121 = load i32, ptr %8, align 4, !tbaa !9
  %122 = icmp sle i32 %121, 122
  br i1 %122, label %138, label %123

123:                                              ; preds = %120, %117
  %124 = load i32, ptr %8, align 4, !tbaa !9
  %125 = icmp sge i32 %124, 65
  br i1 %125, label %126, label %129

126:                                              ; preds = %123
  %127 = load i32, ptr %8, align 4, !tbaa !9
  %128 = icmp sle i32 %127, 90
  br i1 %128, label %138, label %129

129:                                              ; preds = %126, %123
  %130 = load i32, ptr %8, align 4, !tbaa !9
  %131 = icmp sge i32 %130, 48
  br i1 %131, label %132, label %135

132:                                              ; preds = %129
  %133 = load i32, ptr %8, align 4, !tbaa !9
  %134 = icmp sle i32 %133, 57
  br i1 %134, label %138, label %135

135:                                              ; preds = %132, %129
  %136 = load i32, ptr %8, align 4, !tbaa !9
  %137 = icmp eq i32 %136, 95
  br label %138

138:                                              ; preds = %135, %132, %126, %120
  %139 = phi i1 [ true, %132 ], [ true, %126 ], [ true, %120 ], [ %137, %135 ]
  br i1 %139, label %82, label %140, !llvm.loop !75

140:                                              ; preds = %138
  %141 = load i32, ptr %7, align 4, !tbaa !9
  %142 = icmp eq i32 %141, 0
  br i1 %142, label %143, label %144

143:                                              ; preds = %140
  br label %50, !llvm.loop !76

144:                                              ; preds = %140
  %145 = load ptr, ptr %5, align 8, !tbaa !5
  %146 = getelementptr inbounds %"class.glslang::TPpToken", ptr %145, i32 0, i32 4
  %147 = load i32, ptr %7, align 4, !tbaa !9
  %148 = sext i32 %147 to i64
  %149 = getelementptr inbounds [1025 x i8], ptr %146, i64 0, i64 %148
  store i8 0, ptr %149, align 1, !tbaa !13
  %150 = load ptr, ptr %39, align 8, !tbaa !18
  %151 = getelementptr inbounds ptr, ptr %150, i64 4
  %152 = load ptr, ptr %151, align 8
  call void %152(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 162, ptr %3, align 4
  store i32 1, ptr %12, align 4
  br label %1826

153:                                              ; preds = %66
  %154 = load i32, ptr %8, align 4, !tbaa !9
  %155 = trunc i32 %154 to i8
  %156 = load ptr, ptr %5, align 8, !tbaa !5
  %157 = getelementptr inbounds %"class.glslang::TPpToken", ptr %156, i32 0, i32 4
  %158 = load i32, ptr %7, align 4, !tbaa !9
  %159 = add nsw i32 %158, 1
  store i32 %159, ptr %7, align 4, !tbaa !9
  %160 = sext i32 %158 to i64
  %161 = getelementptr inbounds [1025 x i8], ptr %157, i64 0, i64 %160
  store i8 %155, ptr %161, align 1, !tbaa !13
  %162 = load ptr, ptr %39, align 8, !tbaa !18
  %163 = getelementptr inbounds ptr, ptr %162, i64 3
  %164 = load ptr, ptr %163, align 8
  %165 = call noundef i32 %164(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 %165, ptr %8, align 4, !tbaa !9
  %166 = load i32, ptr %8, align 4, !tbaa !9
  %167 = icmp eq i32 %166, 120
  br i1 %167, label %171, label %168

168:                                              ; preds = %153
  %169 = load i32, ptr %8, align 4, !tbaa !9
  %170 = icmp eq i32 %169, 88
  br i1 %170, label %171, label %575

171:                                              ; preds = %168, %153
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #6
  store i8 0, ptr %13, align 1, !tbaa !77
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #6
  store i8 0, ptr %14, align 1, !tbaa !77
  call void @llvm.lifetime.start.p0(i64 1, ptr %15) #6
  store i8 0, ptr %15, align 1, !tbaa !77
  %172 = load i32, ptr %8, align 4, !tbaa !9
  %173 = trunc i32 %172 to i8
  %174 = load ptr, ptr %5, align 8, !tbaa !5
  %175 = getelementptr inbounds %"class.glslang::TPpToken", ptr %174, i32 0, i32 4
  %176 = load i32, ptr %7, align 4, !tbaa !9
  %177 = add nsw i32 %176, 1
  store i32 %177, ptr %7, align 4, !tbaa !9
  %178 = sext i32 %176 to i64
  %179 = getelementptr inbounds [1025 x i8], ptr %175, i64 0, i64 %178
  store i8 %173, ptr %179, align 1, !tbaa !13
  %180 = load ptr, ptr %39, align 8, !tbaa !18
  %181 = getelementptr inbounds ptr, ptr %180, i64 3
  %182 = load ptr, ptr %181, align 8
  %183 = call noundef i32 %182(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 %183, ptr %8, align 4, !tbaa !9
  %184 = load i32, ptr %8, align 4, !tbaa !9
  %185 = icmp sge i32 %184, 48
  br i1 %185, label %186, label %189

186:                                              ; preds = %171
  %187 = load i32, ptr %8, align 4, !tbaa !9
  %188 = icmp sle i32 %187, 57
  br i1 %188, label %201, label %189

189:                                              ; preds = %186, %171
  %190 = load i32, ptr %8, align 4, !tbaa !9
  %191 = icmp sge i32 %190, 65
  br i1 %191, label %192, label %195

192:                                              ; preds = %189
  %193 = load i32, ptr %8, align 4, !tbaa !9
  %194 = icmp sle i32 %193, 70
  br i1 %194, label %201, label %195

195:                                              ; preds = %192, %189
  %196 = load i32, ptr %8, align 4, !tbaa !9
  %197 = icmp sge i32 %196, 97
  br i1 %197, label %198, label %319

198:                                              ; preds = %195
  %199 = load i32, ptr %8, align 4, !tbaa !9
  %200 = icmp sle i32 %199, 102
  br i1 %200, label %201, label %319

201:                                              ; preds = %198, %192, %186
  store i64 0, ptr %10, align 8, !tbaa !11
  br label %202

202:                                              ; preds = %316, %201
  %203 = load i32, ptr %7, align 4, !tbaa !9
  %204 = icmp slt i32 %203, 1024
  br i1 %204, label %205, label %263

205:                                              ; preds = %202
  %206 = load i64, ptr %10, align 8, !tbaa !11
  %207 = icmp ule i64 %206, 1152921504606846975
  br i1 %207, label %208, label %263

208:                                              ; preds = %205
  %209 = load i32, ptr %8, align 4, !tbaa !9
  %210 = trunc i32 %209 to i8
  %211 = load ptr, ptr %5, align 8, !tbaa !5
  %212 = getelementptr inbounds %"class.glslang::TPpToken", ptr %211, i32 0, i32 4
  %213 = load i32, ptr %7, align 4, !tbaa !9
  %214 = add nsw i32 %213, 1
  store i32 %214, ptr %7, align 4, !tbaa !9
  %215 = sext i32 %213 to i64
  %216 = getelementptr inbounds [1025 x i8], ptr %212, i64 0, i64 %215
  store i8 %210, ptr %216, align 1, !tbaa !13
  %217 = load i32, ptr %8, align 4, !tbaa !9
  %218 = icmp sge i32 %217, 48
  br i1 %218, label %219, label %225

219:                                              ; preds = %208
  %220 = load i32, ptr %8, align 4, !tbaa !9
  %221 = icmp sle i32 %220, 57
  br i1 %221, label %222, label %225

222:                                              ; preds = %219
  %223 = load i32, ptr %8, align 4, !tbaa !9
  %224 = sub nsw i32 %223, 48
  store i32 %224, ptr %9, align 4, !tbaa !9
  br label %257

225:                                              ; preds = %219, %208
  %226 = load i32, ptr %8, align 4, !tbaa !9
  %227 = icmp sge i32 %226, 65
  br i1 %227, label %228, label %235

228:                                              ; preds = %225
  %229 = load i32, ptr %8, align 4, !tbaa !9
  %230 = icmp sle i32 %229, 70
  br i1 %230, label %231, label %235

231:                                              ; preds = %228
  %232 = load i32, ptr %8, align 4, !tbaa !9
  %233 = sub nsw i32 %232, 65
  %234 = add nsw i32 %233, 10
  store i32 %234, ptr %9, align 4, !tbaa !9
  br label %256

235:                                              ; preds = %228, %225
  %236 = load i32, ptr %8, align 4, !tbaa !9
  %237 = icmp sge i32 %236, 97
  br i1 %237, label %238, label %245

238:                                              ; preds = %235
  %239 = load i32, ptr %8, align 4, !tbaa !9
  %240 = icmp sle i32 %239, 102
  br i1 %240, label %241, label %245

241:                                              ; preds = %238
  %242 = load i32, ptr %8, align 4, !tbaa !9
  %243 = sub nsw i32 %242, 97
  %244 = add nsw i32 %243, 10
  store i32 %244, ptr %9, align 4, !tbaa !9
  br label %255

245:                                              ; preds = %238, %235
  %246 = getelementptr inbounds %"class.glslang::TPpContext::tInput", ptr %39, i32 0, i32 2
  %247 = load ptr, ptr %246, align 8, !tbaa !22
  %248 = getelementptr inbounds %"class.glslang::TPpContext", ptr %247, i32 0, i32 12
  %249 = load ptr, ptr %248, align 8, !tbaa !24
  %250 = load ptr, ptr %5, align 8, !tbaa !5
  %251 = getelementptr inbounds %"class.glslang::TPpToken", ptr %250, i32 0, i32 0
  %252 = load ptr, ptr %249, align 8, !tbaa !18
  %253 = getelementptr inbounds ptr, ptr %252, i64 44
  %254 = load ptr, ptr %253, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %254(ptr noundef nonnull align 8 dereferenceable(1176) %249, ptr noundef nonnull align 8 dereferenceable(24) %251, ptr noundef @.str.18, ptr noundef @.str.1, ptr noundef @.str.1)
  br label %255

255:                                              ; preds = %245, %241
  br label %256

256:                                              ; preds = %255, %231
  br label %257

257:                                              ; preds = %256, %222
  %258 = load i64, ptr %10, align 8, !tbaa !11
  %259 = shl i64 %258, 4
  %260 = load i32, ptr %9, align 4, !tbaa !9
  %261 = sext i32 %260 to i64
  %262 = or i64 %259, %261
  store i64 %262, ptr %10, align 8, !tbaa !11
  br label %291

263:                                              ; preds = %205, %202
  %264 = load i32, ptr %6, align 4, !tbaa !9
  %265 = icmp ne i32 %264, 0
  br i1 %265, label %290, label %266

266:                                              ; preds = %263
  %267 = load i32, ptr %7, align 4, !tbaa !9
  %268 = icmp slt i32 %267, 1024
  br i1 %268, label %269, label %279

269:                                              ; preds = %266
  %270 = getelementptr inbounds %"class.glslang::TPpContext::tInput", ptr %39, i32 0, i32 2
  %271 = load ptr, ptr %270, align 8, !tbaa !22
  %272 = getelementptr inbounds %"class.glslang::TPpContext", ptr %271, i32 0, i32 12
  %273 = load ptr, ptr %272, align 8, !tbaa !24
  %274 = load ptr, ptr %5, align 8, !tbaa !5
  %275 = getelementptr inbounds %"class.glslang::TPpToken", ptr %274, i32 0, i32 0
  %276 = load ptr, ptr %273, align 8, !tbaa !18
  %277 = getelementptr inbounds ptr, ptr %276, i64 44
  %278 = load ptr, ptr %277, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %278(ptr noundef nonnull align 8 dereferenceable(1176) %273, ptr noundef nonnull align 8 dereferenceable(24) %275, ptr noundef @.str.19, ptr noundef @.str.1, ptr noundef @.str.1)
  br label %289

279:                                              ; preds = %266
  %280 = getelementptr inbounds %"class.glslang::TPpContext::tInput", ptr %39, i32 0, i32 2
  %281 = load ptr, ptr %280, align 8, !tbaa !22
  %282 = getelementptr inbounds %"class.glslang::TPpContext", ptr %281, i32 0, i32 12
  %283 = load ptr, ptr %282, align 8, !tbaa !24
  %284 = load ptr, ptr %5, align 8, !tbaa !5
  %285 = getelementptr inbounds %"class.glslang::TPpToken", ptr %284, i32 0, i32 0
  %286 = load ptr, ptr %283, align 8, !tbaa !18
  %287 = getelementptr inbounds ptr, ptr %286, i64 44
  %288 = load ptr, ptr %287, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %288(ptr noundef nonnull align 8 dereferenceable(1176) %283, ptr noundef nonnull align 8 dereferenceable(24) %285, ptr noundef @.str.20, ptr noundef @.str.1, ptr noundef @.str.1)
  br label %289

289:                                              ; preds = %279, %269
  store i32 1, ptr %6, align 4, !tbaa !9
  br label %290

290:                                              ; preds = %289, %263
  store i64 -1, ptr %10, align 8, !tbaa !11
  br label %291

291:                                              ; preds = %290, %257
  %292 = load ptr, ptr %39, align 8, !tbaa !18
  %293 = getelementptr inbounds ptr, ptr %292, i64 3
  %294 = load ptr, ptr %293, align 8
  %295 = call noundef i32 %294(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 %295, ptr %8, align 4, !tbaa !9
  br label %296

296:                                              ; preds = %291
  %297 = load i32, ptr %8, align 4, !tbaa !9
  %298 = icmp sge i32 %297, 48
  br i1 %298, label %299, label %302

299:                                              ; preds = %296
  %300 = load i32, ptr %8, align 4, !tbaa !9
  %301 = icmp sle i32 %300, 57
  br i1 %301, label %316, label %302

302:                                              ; preds = %299, %296
  %303 = load i32, ptr %8, align 4, !tbaa !9
  %304 = icmp sge i32 %303, 65
  br i1 %304, label %305, label %308

305:                                              ; preds = %302
  %306 = load i32, ptr %8, align 4, !tbaa !9
  %307 = icmp sle i32 %306, 70
  br i1 %307, label %316, label %308

308:                                              ; preds = %305, %302
  %309 = load i32, ptr %8, align 4, !tbaa !9
  %310 = icmp sge i32 %309, 97
  br i1 %310, label %311, label %314

311:                                              ; preds = %308
  %312 = load i32, ptr %8, align 4, !tbaa !9
  %313 = icmp sle i32 %312, 102
  br label %314

314:                                              ; preds = %311, %308
  %315 = phi i1 [ false, %308 ], [ %313, %311 ]
  br label %316

316:                                              ; preds = %314, %305, %299
  %317 = phi i1 [ true, %305 ], [ true, %299 ], [ %315, %314 ]
  br i1 %317, label %202, label %318, !llvm.loop !78

318:                                              ; preds = %316
  br label %329

319:                                              ; preds = %198, %195
  %320 = getelementptr inbounds %"class.glslang::TPpContext::tInput", ptr %39, i32 0, i32 2
  %321 = load ptr, ptr %320, align 8, !tbaa !22
  %322 = getelementptr inbounds %"class.glslang::TPpContext", ptr %321, i32 0, i32 12
  %323 = load ptr, ptr %322, align 8, !tbaa !24
  %324 = load ptr, ptr %5, align 8, !tbaa !5
  %325 = getelementptr inbounds %"class.glslang::TPpToken", ptr %324, i32 0, i32 0
  %326 = load ptr, ptr %323, align 8, !tbaa !18
  %327 = getelementptr inbounds ptr, ptr %326, i64 44
  %328 = load ptr, ptr %327, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %328(ptr noundef nonnull align 8 dereferenceable(1176) %323, ptr noundef nonnull align 8 dereferenceable(24) %325, ptr noundef @.str.18, ptr noundef @.str.1, ptr noundef @.str.1)
  br label %329

329:                                              ; preds = %319, %318
  %330 = load i32, ptr %8, align 4, !tbaa !9
  %331 = icmp eq i32 %330, 117
  br i1 %331, label %335, label %332

332:                                              ; preds = %329
  %333 = load i32, ptr %8, align 4, !tbaa !9
  %334 = icmp eq i32 %333, 85
  br i1 %334, label %335, label %411

335:                                              ; preds = %332, %329
  %336 = load i32, ptr %7, align 4, !tbaa !9
  %337 = icmp slt i32 %336, 1024
  br i1 %337, label %338, label %347

338:                                              ; preds = %335
  %339 = load i32, ptr %8, align 4, !tbaa !9
  %340 = trunc i32 %339 to i8
  %341 = load ptr, ptr %5, align 8, !tbaa !5
  %342 = getelementptr inbounds %"class.glslang::TPpToken", ptr %341, i32 0, i32 4
  %343 = load i32, ptr %7, align 4, !tbaa !9
  %344 = add nsw i32 %343, 1
  store i32 %344, ptr %7, align 4, !tbaa !9
  %345 = sext i32 %343 to i64
  %346 = getelementptr inbounds [1025 x i8], ptr %342, i64 0, i64 %345
  store i8 %340, ptr %346, align 1, !tbaa !13
  br label %347

347:                                              ; preds = %338, %335
  store i8 1, ptr %13, align 1, !tbaa !77
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #6
  %348 = load ptr, ptr %39, align 8, !tbaa !18
  %349 = getelementptr inbounds ptr, ptr %348, i64 3
  %350 = load ptr, ptr %349, align 8
  %351 = call noundef i32 %350(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 %351, ptr %16, align 4, !tbaa !9
  %352 = load i32, ptr %16, align 4, !tbaa !9
  %353 = icmp eq i32 %352, 108
  br i1 %353, label %357, label %354

354:                                              ; preds = %347
  %355 = load i32, ptr %16, align 4, !tbaa !9
  %356 = icmp eq i32 %355, 76
  br i1 %356, label %357, label %370

357:                                              ; preds = %354, %347
  %358 = load i32, ptr %7, align 4, !tbaa !9
  %359 = icmp slt i32 %358, 1024
  br i1 %359, label %360, label %369

360:                                              ; preds = %357
  %361 = load i32, ptr %16, align 4, !tbaa !9
  %362 = trunc i32 %361 to i8
  %363 = load ptr, ptr %5, align 8, !tbaa !5
  %364 = getelementptr inbounds %"class.glslang::TPpToken", ptr %363, i32 0, i32 4
  %365 = load i32, ptr %7, align 4, !tbaa !9
  %366 = add nsw i32 %365, 1
  store i32 %366, ptr %7, align 4, !tbaa !9
  %367 = sext i32 %365 to i64
  %368 = getelementptr inbounds [1025 x i8], ptr %364, i64 0, i64 %367
  store i8 %362, ptr %368, align 1, !tbaa !13
  br label %369

369:                                              ; preds = %360, %357
  store i8 1, ptr %14, align 1, !tbaa !77
  br label %374

370:                                              ; preds = %354
  %371 = load ptr, ptr %39, align 8, !tbaa !18
  %372 = getelementptr inbounds ptr, ptr %371, i64 4
  %373 = load ptr, ptr %372, align 8
  call void %373(ptr noundef nonnull align 8 dereferenceable(32) %39)
  br label %374

374:                                              ; preds = %370, %369
  %375 = load ptr, ptr %39, align 8, !tbaa !18
  %376 = getelementptr inbounds ptr, ptr %375, i64 3
  %377 = load ptr, ptr %376, align 8
  %378 = call noundef i32 %377(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 %378, ptr %16, align 4, !tbaa !9
  %379 = load i32, ptr %16, align 4, !tbaa !9
  %380 = icmp eq i32 %379, 115
  br i1 %380, label %384, label %381

381:                                              ; preds = %374
  %382 = load i32, ptr %16, align 4, !tbaa !9
  %383 = icmp eq i32 %382, 83
  br i1 %383, label %384, label %406

384:                                              ; preds = %381, %374
  %385 = getelementptr inbounds %"class.glslang::TPpContext::tInput", ptr %39, i32 0, i32 2
  %386 = load ptr, ptr %385, align 8, !tbaa !22
  %387 = getelementptr inbounds %"class.glslang::TPpContext", ptr %386, i32 0, i32 12
  %388 = load ptr, ptr %387, align 8, !tbaa !24
  %389 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %388, i32 0, i32 7
  %390 = load ptr, ptr %389, align 8, !tbaa !79
  %391 = call noundef i32 @_ZNK7glslang13TIntermediate9getSourceEv(ptr noundef nonnull align 8 dereferenceable(1784) %390)
  %392 = icmp eq i32 %391, 1
  br i1 %392, label %393, label %406

393:                                              ; preds = %384
  %394 = load i32, ptr %7, align 4, !tbaa !9
  %395 = icmp slt i32 %394, 1024
  br i1 %395, label %396, label %405

396:                                              ; preds = %393
  %397 = load i32, ptr %16, align 4, !tbaa !9
  %398 = trunc i32 %397 to i8
  %399 = load ptr, ptr %5, align 8, !tbaa !5
  %400 = getelementptr inbounds %"class.glslang::TPpToken", ptr %399, i32 0, i32 4
  %401 = load i32, ptr %7, align 4, !tbaa !9
  %402 = add nsw i32 %401, 1
  store i32 %402, ptr %7, align 4, !tbaa !9
  %403 = sext i32 %401 to i64
  %404 = getelementptr inbounds [1025 x i8], ptr %400, i64 0, i64 %403
  store i8 %398, ptr %404, align 1, !tbaa !13
  br label %405

405:                                              ; preds = %396, %393
  store i8 1, ptr %15, align 1, !tbaa !77
  br label %410

406:                                              ; preds = %384, %381
  %407 = load ptr, ptr %39, align 8, !tbaa !18
  %408 = getelementptr inbounds ptr, ptr %407, i64 4
  %409 = load ptr, ptr %408, align 8
  call void %409(ptr noundef nonnull align 8 dereferenceable(32) %39)
  br label %410

410:                                              ; preds = %406, %405
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #6
  br label %464

411:                                              ; preds = %332
  %412 = load i32, ptr %8, align 4, !tbaa !9
  %413 = icmp eq i32 %412, 108
  br i1 %413, label %417, label %414

414:                                              ; preds = %411
  %415 = load i32, ptr %8, align 4, !tbaa !9
  %416 = icmp eq i32 %415, 76
  br i1 %416, label %417, label %430

417:                                              ; preds = %414, %411
  %418 = load i32, ptr %7, align 4, !tbaa !9
  %419 = icmp slt i32 %418, 1024
  br i1 %419, label %420, label %429

420:                                              ; preds = %417
  %421 = load i32, ptr %8, align 4, !tbaa !9
  %422 = trunc i32 %421 to i8
  %423 = load ptr, ptr %5, align 8, !tbaa !5
  %424 = getelementptr inbounds %"class.glslang::TPpToken", ptr %423, i32 0, i32 4
  %425 = load i32, ptr %7, align 4, !tbaa !9
  %426 = add nsw i32 %425, 1
  store i32 %426, ptr %7, align 4, !tbaa !9
  %427 = sext i32 %425 to i64
  %428 = getelementptr inbounds [1025 x i8], ptr %424, i64 0, i64 %427
  store i8 %422, ptr %428, align 1, !tbaa !13
  br label %429

429:                                              ; preds = %420, %417
  store i8 1, ptr %14, align 1, !tbaa !77
  br label %463

430:                                              ; preds = %414
  %431 = load i32, ptr %8, align 4, !tbaa !9
  %432 = icmp eq i32 %431, 115
  br i1 %432, label %436, label %433

433:                                              ; preds = %430
  %434 = load i32, ptr %8, align 4, !tbaa !9
  %435 = icmp eq i32 %434, 83
  br i1 %435, label %436, label %458

436:                                              ; preds = %433, %430
  %437 = getelementptr inbounds %"class.glslang::TPpContext::tInput", ptr %39, i32 0, i32 2
  %438 = load ptr, ptr %437, align 8, !tbaa !22
  %439 = getelementptr inbounds %"class.glslang::TPpContext", ptr %438, i32 0, i32 12
  %440 = load ptr, ptr %439, align 8, !tbaa !24
  %441 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %440, i32 0, i32 7
  %442 = load ptr, ptr %441, align 8, !tbaa !79
  %443 = call noundef i32 @_ZNK7glslang13TIntermediate9getSourceEv(ptr noundef nonnull align 8 dereferenceable(1784) %442)
  %444 = icmp eq i32 %443, 1
  br i1 %444, label %445, label %458

445:                                              ; preds = %436
  %446 = load i32, ptr %7, align 4, !tbaa !9
  %447 = icmp slt i32 %446, 1024
  br i1 %447, label %448, label %457

448:                                              ; preds = %445
  %449 = load i32, ptr %8, align 4, !tbaa !9
  %450 = trunc i32 %449 to i8
  %451 = load ptr, ptr %5, align 8, !tbaa !5
  %452 = getelementptr inbounds %"class.glslang::TPpToken", ptr %451, i32 0, i32 4
  %453 = load i32, ptr %7, align 4, !tbaa !9
  %454 = add nsw i32 %453, 1
  store i32 %454, ptr %7, align 4, !tbaa !9
  %455 = sext i32 %453 to i64
  %456 = getelementptr inbounds [1025 x i8], ptr %452, i64 0, i64 %455
  store i8 %450, ptr %456, align 1, !tbaa !13
  br label %457

457:                                              ; preds = %448, %445
  store i8 1, ptr %15, align 1, !tbaa !77
  br label %462

458:                                              ; preds = %436, %433
  %459 = load ptr, ptr %39, align 8, !tbaa !18
  %460 = getelementptr inbounds ptr, ptr %459, i64 4
  %461 = load ptr, ptr %460, align 8
  call void %461(ptr noundef nonnull align 8 dereferenceable(32) %39)
  br label %462

462:                                              ; preds = %458, %457
  br label %463

463:                                              ; preds = %462, %429
  br label %464

464:                                              ; preds = %463, %410
  %465 = load ptr, ptr %5, align 8, !tbaa !5
  %466 = getelementptr inbounds %"class.glslang::TPpToken", ptr %465, i32 0, i32 4
  %467 = load i32, ptr %7, align 4, !tbaa !9
  %468 = sext i32 %467 to i64
  %469 = getelementptr inbounds [1025 x i8], ptr %466, i64 0, i64 %468
  store i8 0, ptr %469, align 1, !tbaa !13
  %470 = load i8, ptr %14, align 1, !tbaa !77, !range !97, !noundef !98
  %471 = trunc i8 %470 to i1
  br i1 %471, label %472, label %508

472:                                              ; preds = %464
  %473 = getelementptr inbounds %"class.glslang::TPpContext::tInput", ptr %39, i32 0, i32 2
  %474 = load ptr, ptr %473, align 8, !tbaa !22
  %475 = getelementptr inbounds %"class.glslang::TPpContext", ptr %474, i32 0, i32 12
  %476 = load ptr, ptr %475, align 8, !tbaa !24
  %477 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %476, i32 0, i32 7
  %478 = load ptr, ptr %477, align 8, !tbaa !79
  %479 = call noundef i32 @_ZNK7glslang13TIntermediate9getSourceEv(ptr noundef nonnull align 8 dereferenceable(1784) %478)
  %480 = icmp eq i32 %479, 1
  br i1 %480, label %481, label %508

481:                                              ; preds = %472
  %482 = getelementptr inbounds %"class.glslang::TPpContext::tInput", ptr %39, i32 0, i32 2
  %483 = load ptr, ptr %482, align 8, !tbaa !22
  %484 = getelementptr inbounds %"class.glslang::TPpContext", ptr %483, i32 0, i32 13
  %485 = load i32, ptr %484, align 8, !tbaa !99
  %486 = icmp eq i32 %485, 0
  br i1 %486, label %487, label %500

487:                                              ; preds = %481
  %488 = getelementptr inbounds %"class.glslang::TPpContext::tInput", ptr %39, i32 0, i32 2
  %489 = load ptr, ptr %488, align 8, !tbaa !22
  %490 = getelementptr inbounds %"class.glslang::TPpContext", ptr %489, i32 0, i32 12
  %491 = load ptr, ptr %490, align 8, !tbaa !24
  %492 = load ptr, ptr %5, align 8, !tbaa !5
  %493 = getelementptr inbounds %"class.glslang::TPpToken", ptr %492, i32 0, i32 0
  call void @_ZN7glslang14TParseVersions14requireProfileERKNS_10TSourceLocEiPKc(ptr noundef nonnull align 8 dereferenceable(192) %491, ptr noundef nonnull align 8 dereferenceable(24) %493, i32 noundef -9, ptr noundef @.str.21)
  %494 = getelementptr inbounds %"class.glslang::TPpContext::tInput", ptr %39, i32 0, i32 2
  %495 = load ptr, ptr %494, align 8, !tbaa !22
  %496 = getelementptr inbounds %"class.glslang::TPpContext", ptr %495, i32 0, i32 12
  %497 = load ptr, ptr %496, align 8, !tbaa !24
  %498 = load ptr, ptr %5, align 8, !tbaa !5
  %499 = getelementptr inbounds %"class.glslang::TPpToken", ptr %498, i32 0, i32 0
  call void @_ZN7glslang14TParseVersions15profileRequiresERKNS_10TSourceLocEiiiPKPKcS5_(ptr noundef nonnull align 8 dereferenceable(192) %497, ptr noundef nonnull align 8 dereferenceable(24) %499, i32 noundef -9, i32 noundef 0, i32 noundef 3, ptr noundef @_ZZN7glslang10TPpContext12tStringInput4scanEPNS_8TPpTokenEE16Int64_Extensions, ptr noundef @.str.21)
  br label %500

500:                                              ; preds = %487, %481
  %501 = load i64, ptr %10, align 8, !tbaa !11
  %502 = load ptr, ptr %5, align 8, !tbaa !5
  %503 = getelementptr inbounds %"class.glslang::TPpToken", ptr %502, i32 0, i32 3
  store i64 %501, ptr %503, align 8, !tbaa !13
  %504 = load i8, ptr %13, align 1, !tbaa !77, !range !97, !noundef !98
  %505 = trunc i8 %504 to i1
  %506 = zext i1 %505 to i64
  %507 = select i1 %505, i32 155, i32 154
  store i32 %507, ptr %3, align 4
  store i32 1, ptr %12, align 4
  br label %574

508:                                              ; preds = %472, %464
  %509 = load i8, ptr %15, align 1, !tbaa !77, !range !97, !noundef !98
  %510 = trunc i8 %509 to i1
  br i1 %510, label %511, label %549

511:                                              ; preds = %508
  %512 = getelementptr inbounds %"class.glslang::TPpContext::tInput", ptr %39, i32 0, i32 2
  %513 = load ptr, ptr %512, align 8, !tbaa !22
  %514 = getelementptr inbounds %"class.glslang::TPpContext", ptr %513, i32 0, i32 13
  %515 = load i32, ptr %514, align 8, !tbaa !99
  %516 = icmp eq i32 %515, 0
  br i1 %516, label %517, label %540

517:                                              ; preds = %511
  %518 = getelementptr inbounds %"class.glslang::TPpContext::tInput", ptr %39, i32 0, i32 2
  %519 = load ptr, ptr %518, align 8, !tbaa !22
  %520 = getelementptr inbounds %"class.glslang::TPpContext", ptr %519, i32 0, i32 12
  %521 = load ptr, ptr %520, align 8, !tbaa !24
  %522 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %521, i32 0, i32 7
  %523 = load ptr, ptr %522, align 8, !tbaa !79
  %524 = call noundef i32 @_ZNK7glslang13TIntermediate9getSourceEv(ptr noundef nonnull align 8 dereferenceable(1784) %523)
  %525 = icmp eq i32 %524, 1
  br i1 %525, label %526, label %539

526:                                              ; preds = %517
  %527 = getelementptr inbounds %"class.glslang::TPpContext::tInput", ptr %39, i32 0, i32 2
  %528 = load ptr, ptr %527, align 8, !tbaa !22
  %529 = getelementptr inbounds %"class.glslang::TPpContext", ptr %528, i32 0, i32 12
  %530 = load ptr, ptr %529, align 8, !tbaa !24
  %531 = load ptr, ptr %5, align 8, !tbaa !5
  %532 = getelementptr inbounds %"class.glslang::TPpToken", ptr %531, i32 0, i32 0
  call void @_ZN7glslang14TParseVersions14requireProfileERKNS_10TSourceLocEiPKc(ptr noundef nonnull align 8 dereferenceable(192) %530, ptr noundef nonnull align 8 dereferenceable(24) %532, i32 noundef -9, ptr noundef @.str.22)
  %533 = getelementptr inbounds %"class.glslang::TPpContext::tInput", ptr %39, i32 0, i32 2
  %534 = load ptr, ptr %533, align 8, !tbaa !22
  %535 = getelementptr inbounds %"class.glslang::TPpContext", ptr %534, i32 0, i32 12
  %536 = load ptr, ptr %535, align 8, !tbaa !24
  %537 = load ptr, ptr %5, align 8, !tbaa !5
  %538 = getelementptr inbounds %"class.glslang::TPpToken", ptr %537, i32 0, i32 0
  call void @_ZN7glslang14TParseVersions15profileRequiresERKNS_10TSourceLocEiiiPKPKcS5_(ptr noundef nonnull align 8 dereferenceable(192) %536, ptr noundef nonnull align 8 dereferenceable(24) %538, i32 noundef -9, i32 noundef 0, i32 noundef 3, ptr noundef @_ZZN7glslang10TPpContext12tStringInput4scanEPNS_8TPpTokenEE16Int16_Extensions, ptr noundef @.str.22)
  br label %539

539:                                              ; preds = %526, %517
  br label %540

540:                                              ; preds = %539, %511
  %541 = load i64, ptr %10, align 8, !tbaa !11
  %542 = trunc i64 %541 to i32
  %543 = load ptr, ptr %5, align 8, !tbaa !5
  %544 = getelementptr inbounds %"class.glslang::TPpToken", ptr %543, i32 0, i32 3
  store i32 %542, ptr %544, align 8, !tbaa !13
  %545 = load i8, ptr %13, align 1, !tbaa !77, !range !97, !noundef !98
  %546 = trunc i8 %545 to i1
  %547 = zext i1 %546 to i64
  %548 = select i1 %546, i32 157, i32 156
  store i32 %548, ptr %3, align 4
  store i32 1, ptr %12, align 4
  br label %574

549:                                              ; preds = %508
  %550 = load i64, ptr %10, align 8, !tbaa !11
  %551 = icmp ugt i64 %550, 4294967295
  br i1 %551, label %552, label %565

552:                                              ; preds = %549
  %553 = load i32, ptr %6, align 4, !tbaa !9
  %554 = icmp ne i32 %553, 0
  br i1 %554, label %565, label %555

555:                                              ; preds = %552
  %556 = getelementptr inbounds %"class.glslang::TPpContext::tInput", ptr %39, i32 0, i32 2
  %557 = load ptr, ptr %556, align 8, !tbaa !22
  %558 = getelementptr inbounds %"class.glslang::TPpContext", ptr %557, i32 0, i32 12
  %559 = load ptr, ptr %558, align 8, !tbaa !24
  %560 = load ptr, ptr %5, align 8, !tbaa !5
  %561 = getelementptr inbounds %"class.glslang::TPpToken", ptr %560, i32 0, i32 0
  %562 = load ptr, ptr %559, align 8, !tbaa !18
  %563 = getelementptr inbounds ptr, ptr %562, i64 44
  %564 = load ptr, ptr %563, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %564(ptr noundef nonnull align 8 dereferenceable(1176) %559, ptr noundef nonnull align 8 dereferenceable(24) %561, ptr noundef @.str.19, ptr noundef @.str.1, ptr noundef @.str.1)
  br label %565

565:                                              ; preds = %555, %552, %549
  %566 = load i64, ptr %10, align 8, !tbaa !11
  %567 = trunc i64 %566 to i32
  %568 = load ptr, ptr %5, align 8, !tbaa !5
  %569 = getelementptr inbounds %"class.glslang::TPpToken", ptr %568, i32 0, i32 3
  store i32 %567, ptr %569, align 8, !tbaa !13
  %570 = load i8, ptr %13, align 1, !tbaa !77, !range !97, !noundef !98
  %571 = trunc i8 %570 to i1
  %572 = zext i1 %571 to i64
  %573 = select i1 %571, i32 153, i32 152
  store i32 %573, ptr %3, align 4
  store i32 1, ptr %12, align 4
  br label %574

574:                                              ; preds = %565, %540, %500
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #6
  br label %1826

575:                                              ; preds = %168
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #6
  store i8 0, ptr %17, align 1, !tbaa !77
  call void @llvm.lifetime.start.p0(i64 1, ptr %18) #6
  store i8 0, ptr %18, align 1, !tbaa !77
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #6
  store i8 0, ptr %19, align 1, !tbaa !77
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #6
  store i8 0, ptr %20, align 1, !tbaa !77
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #6
  store i8 0, ptr %21, align 1, !tbaa !77
  store i64 0, ptr %10, align 8, !tbaa !11
  br label %576

576:                                              ; preds = %622, %575
  %577 = load i32, ptr %8, align 4, !tbaa !9
  %578 = icmp sge i32 %577, 48
  br i1 %578, label %579, label %582

579:                                              ; preds = %576
  %580 = load i32, ptr %8, align 4, !tbaa !9
  %581 = icmp sle i32 %580, 55
  br label %582

582:                                              ; preds = %579, %576
  %583 = phi i1 [ false, %576 ], [ %581, %579 ]
  br i1 %583, label %584, label %627

584:                                              ; preds = %582
  %585 = load i32, ptr %7, align 4, !tbaa !9
  %586 = icmp slt i32 %585, 1024
  br i1 %586, label %587, label %596

587:                                              ; preds = %584
  %588 = load i32, ptr %8, align 4, !tbaa !9
  %589 = trunc i32 %588 to i8
  %590 = load ptr, ptr %5, align 8, !tbaa !5
  %591 = getelementptr inbounds %"class.glslang::TPpToken", ptr %590, i32 0, i32 4
  %592 = load i32, ptr %7, align 4, !tbaa !9
  %593 = add nsw i32 %592, 1
  store i32 %593, ptr %7, align 4, !tbaa !9
  %594 = sext i32 %592 to i64
  %595 = getelementptr inbounds [1025 x i8], ptr %591, i64 0, i64 %594
  store i8 %589, ptr %595, align 1, !tbaa !13
  br label %610

596:                                              ; preds = %584
  %597 = load i32, ptr %6, align 4, !tbaa !9
  %598 = icmp ne i32 %597, 0
  br i1 %598, label %609, label %599

599:                                              ; preds = %596
  %600 = getelementptr inbounds %"class.glslang::TPpContext::tInput", ptr %39, i32 0, i32 2
  %601 = load ptr, ptr %600, align 8, !tbaa !22
  %602 = getelementptr inbounds %"class.glslang::TPpContext", ptr %601, i32 0, i32 12
  %603 = load ptr, ptr %602, align 8, !tbaa !24
  %604 = load ptr, ptr %5, align 8, !tbaa !5
  %605 = getelementptr inbounds %"class.glslang::TPpToken", ptr %604, i32 0, i32 0
  %606 = load ptr, ptr %603, align 8, !tbaa !18
  %607 = getelementptr inbounds ptr, ptr %606, i64 44
  %608 = load ptr, ptr %607, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %608(ptr noundef nonnull align 8 dereferenceable(1176) %603, ptr noundef nonnull align 8 dereferenceable(24) %605, ptr noundef @.str.23, ptr noundef @.str.1, ptr noundef @.str.1)
  store i32 1, ptr %6, align 4, !tbaa !9
  br label %609

609:                                              ; preds = %599, %596
  br label %610

610:                                              ; preds = %609, %587
  %611 = load i64, ptr %10, align 8, !tbaa !11
  %612 = icmp ule i64 %611, 2305843009213693951
  br i1 %612, label %613, label %621

613:                                              ; preds = %610
  %614 = load i32, ptr %8, align 4, !tbaa !9
  %615 = sub nsw i32 %614, 48
  store i32 %615, ptr %9, align 4, !tbaa !9
  %616 = load i64, ptr %10, align 8, !tbaa !11
  %617 = shl i64 %616, 3
  %618 = load i32, ptr %9, align 4, !tbaa !9
  %619 = sext i32 %618 to i64
  %620 = or i64 %617, %619
  store i64 %620, ptr %10, align 8, !tbaa !11
  br label %622

621:                                              ; preds = %610
  store i8 1, ptr %20, align 1, !tbaa !77
  br label %622

622:                                              ; preds = %621, %613
  %623 = load ptr, ptr %39, align 8, !tbaa !18
  %624 = getelementptr inbounds ptr, ptr %623, i64 3
  %625 = load ptr, ptr %624, align 8
  %626 = call noundef i32 %625(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 %626, ptr %8, align 4, !tbaa !9
  br label %576, !llvm.loop !100

627:                                              ; preds = %582
  %628 = load i32, ptr %8, align 4, !tbaa !9
  %629 = icmp eq i32 %628, 56
  br i1 %629, label %633, label %630

630:                                              ; preds = %627
  %631 = load i32, ptr %8, align 4, !tbaa !9
  %632 = icmp eq i32 %631, 57
  br i1 %632, label %633, label %674

633:                                              ; preds = %630, %627
  store i8 1, ptr %21, align 1, !tbaa !77
  br label %634

634:                                              ; preds = %671, %633
  %635 = load i32, ptr %7, align 4, !tbaa !9
  %636 = icmp slt i32 %635, 1024
  br i1 %636, label %637, label %646

637:                                              ; preds = %634
  %638 = load i32, ptr %8, align 4, !tbaa !9
  %639 = trunc i32 %638 to i8
  %640 = load ptr, ptr %5, align 8, !tbaa !5
  %641 = getelementptr inbounds %"class.glslang::TPpToken", ptr %640, i32 0, i32 4
  %642 = load i32, ptr %7, align 4, !tbaa !9
  %643 = add nsw i32 %642, 1
  store i32 %643, ptr %7, align 4, !tbaa !9
  %644 = sext i32 %642 to i64
  %645 = getelementptr inbounds [1025 x i8], ptr %641, i64 0, i64 %644
  store i8 %639, ptr %645, align 1, !tbaa !13
  br label %660

646:                                              ; preds = %634
  %647 = load i32, ptr %6, align 4, !tbaa !9
  %648 = icmp ne i32 %647, 0
  br i1 %648, label %659, label %649

649:                                              ; preds = %646
  %650 = getelementptr inbounds %"class.glslang::TPpContext::tInput", ptr %39, i32 0, i32 2
  %651 = load ptr, ptr %650, align 8, !tbaa !22
  %652 = getelementptr inbounds %"class.glslang::TPpContext", ptr %651, i32 0, i32 12
  %653 = load ptr, ptr %652, align 8, !tbaa !24
  %654 = load ptr, ptr %5, align 8, !tbaa !5
  %655 = getelementptr inbounds %"class.glslang::TPpToken", ptr %654, i32 0, i32 0
  %656 = load ptr, ptr %653, align 8, !tbaa !18
  %657 = getelementptr inbounds ptr, ptr %656, i64 44
  %658 = load ptr, ptr %657, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %658(ptr noundef nonnull align 8 dereferenceable(1176) %653, ptr noundef nonnull align 8 dereferenceable(24) %655, ptr noundef @.str.23, ptr noundef @.str.1, ptr noundef @.str.1)
  store i32 1, ptr %6, align 4, !tbaa !9
  br label %659

659:                                              ; preds = %649, %646
  br label %660

660:                                              ; preds = %659, %637
  %661 = load ptr, ptr %39, align 8, !tbaa !18
  %662 = getelementptr inbounds ptr, ptr %661, i64 3
  %663 = load ptr, ptr %662, align 8
  %664 = call noundef i32 %663(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 %664, ptr %8, align 4, !tbaa !9
  br label %665

665:                                              ; preds = %660
  %666 = load i32, ptr %8, align 4, !tbaa !9
  %667 = icmp sge i32 %666, 48
  br i1 %667, label %668, label %671

668:                                              ; preds = %665
  %669 = load i32, ptr %8, align 4, !tbaa !9
  %670 = icmp sle i32 %669, 57
  br label %671

671:                                              ; preds = %668, %665
  %672 = phi i1 [ false, %665 ], [ %670, %668 ]
  br i1 %672, label %634, label %673, !llvm.loop !101

673:                                              ; preds = %671
  br label %674

674:                                              ; preds = %673, %630
  %675 = load i32, ptr %8, align 4, !tbaa !9
  %676 = call noundef zeroext i1 @"_ZZN7glslang10TPpContext12tStringInput4scanEPNS_8TPpTokenEENK3$_0clEi"(ptr noundef nonnull align 1 dereferenceable(1) %11, i32 noundef %675)
  br i1 %676, label %677, label %684

677:                                              ; preds = %674
  %678 = getelementptr inbounds %"class.glslang::TPpContext::tInput", ptr %39, i32 0, i32 2
  %679 = load ptr, ptr %678, align 8, !tbaa !22
  %680 = load i32, ptr %7, align 4, !tbaa !9
  %681 = load i32, ptr %8, align 4, !tbaa !9
  %682 = load ptr, ptr %5, align 8, !tbaa !5
  %683 = call noundef i32 @_ZN7glslang10TPpContext11lFloatConstEiiPNS_8TPpTokenE(ptr noundef nonnull align 8 dereferenceable(921) %679, i32 noundef %680, i32 noundef %681, ptr noundef %682)
  store i32 %683, ptr %3, align 4
  store i32 1, ptr %12, align 4
  br label %946

684:                                              ; preds = %674
  %685 = load i8, ptr %21, align 1, !tbaa !77, !range !97, !noundef !98
  %686 = trunc i8 %685 to i1
  br i1 %686, label %687, label %697

687:                                              ; preds = %684
  %688 = getelementptr inbounds %"class.glslang::TPpContext::tInput", ptr %39, i32 0, i32 2
  %689 = load ptr, ptr %688, align 8, !tbaa !22
  %690 = getelementptr inbounds %"class.glslang::TPpContext", ptr %689, i32 0, i32 12
  %691 = load ptr, ptr %690, align 8, !tbaa !24
  %692 = load ptr, ptr %5, align 8, !tbaa !5
  %693 = getelementptr inbounds %"class.glslang::TPpToken", ptr %692, i32 0, i32 0
  %694 = load ptr, ptr %691, align 8, !tbaa !18
  %695 = getelementptr inbounds ptr, ptr %694, i64 44
  %696 = load ptr, ptr %695, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %696(ptr noundef nonnull align 8 dereferenceable(1176) %691, ptr noundef nonnull align 8 dereferenceable(24) %693, ptr noundef @.str.24, ptr noundef @.str.1, ptr noundef @.str.1)
  br label %697

697:                                              ; preds = %687, %684
  %698 = load i32, ptr %8, align 4, !tbaa !9
  %699 = icmp eq i32 %698, 117
  br i1 %699, label %703, label %700

700:                                              ; preds = %697
  %701 = load i32, ptr %8, align 4, !tbaa !9
  %702 = icmp eq i32 %701, 85
  br i1 %702, label %703, label %779

703:                                              ; preds = %700, %697
  %704 = load i32, ptr %7, align 4, !tbaa !9
  %705 = icmp slt i32 %704, 1024
  br i1 %705, label %706, label %715

706:                                              ; preds = %703
  %707 = load i32, ptr %8, align 4, !tbaa !9
  %708 = trunc i32 %707 to i8
  %709 = load ptr, ptr %5, align 8, !tbaa !5
  %710 = getelementptr inbounds %"class.glslang::TPpToken", ptr %709, i32 0, i32 4
  %711 = load i32, ptr %7, align 4, !tbaa !9
  %712 = add nsw i32 %711, 1
  store i32 %712, ptr %7, align 4, !tbaa !9
  %713 = sext i32 %711 to i64
  %714 = getelementptr inbounds [1025 x i8], ptr %710, i64 0, i64 %713
  store i8 %708, ptr %714, align 1, !tbaa !13
  br label %715

715:                                              ; preds = %706, %703
  store i8 1, ptr %17, align 1, !tbaa !77
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #6
  %716 = load ptr, ptr %39, align 8, !tbaa !18
  %717 = getelementptr inbounds ptr, ptr %716, i64 3
  %718 = load ptr, ptr %717, align 8
  %719 = call noundef i32 %718(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 %719, ptr %22, align 4, !tbaa !9
  %720 = load i32, ptr %22, align 4, !tbaa !9
  %721 = icmp eq i32 %720, 108
  br i1 %721, label %725, label %722

722:                                              ; preds = %715
  %723 = load i32, ptr %22, align 4, !tbaa !9
  %724 = icmp eq i32 %723, 76
  br i1 %724, label %725, label %738

725:                                              ; preds = %722, %715
  %726 = load i32, ptr %7, align 4, !tbaa !9
  %727 = icmp slt i32 %726, 1024
  br i1 %727, label %728, label %737

728:                                              ; preds = %725
  %729 = load i32, ptr %22, align 4, !tbaa !9
  %730 = trunc i32 %729 to i8
  %731 = load ptr, ptr %5, align 8, !tbaa !5
  %732 = getelementptr inbounds %"class.glslang::TPpToken", ptr %731, i32 0, i32 4
  %733 = load i32, ptr %7, align 4, !tbaa !9
  %734 = add nsw i32 %733, 1
  store i32 %734, ptr %7, align 4, !tbaa !9
  %735 = sext i32 %733 to i64
  %736 = getelementptr inbounds [1025 x i8], ptr %732, i64 0, i64 %735
  store i8 %730, ptr %736, align 1, !tbaa !13
  br label %737

737:                                              ; preds = %728, %725
  store i8 1, ptr %18, align 1, !tbaa !77
  br label %742

738:                                              ; preds = %722
  %739 = load ptr, ptr %39, align 8, !tbaa !18
  %740 = getelementptr inbounds ptr, ptr %739, i64 4
  %741 = load ptr, ptr %740, align 8
  call void %741(ptr noundef nonnull align 8 dereferenceable(32) %39)
  br label %742

742:                                              ; preds = %738, %737
  %743 = load ptr, ptr %39, align 8, !tbaa !18
  %744 = getelementptr inbounds ptr, ptr %743, i64 3
  %745 = load ptr, ptr %744, align 8
  %746 = call noundef i32 %745(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 %746, ptr %22, align 4, !tbaa !9
  %747 = load i32, ptr %22, align 4, !tbaa !9
  %748 = icmp eq i32 %747, 115
  br i1 %748, label %752, label %749

749:                                              ; preds = %742
  %750 = load i32, ptr %22, align 4, !tbaa !9
  %751 = icmp eq i32 %750, 83
  br i1 %751, label %752, label %774

752:                                              ; preds = %749, %742
  %753 = getelementptr inbounds %"class.glslang::TPpContext::tInput", ptr %39, i32 0, i32 2
  %754 = load ptr, ptr %753, align 8, !tbaa !22
  %755 = getelementptr inbounds %"class.glslang::TPpContext", ptr %754, i32 0, i32 12
  %756 = load ptr, ptr %755, align 8, !tbaa !24
  %757 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %756, i32 0, i32 7
  %758 = load ptr, ptr %757, align 8, !tbaa !79
  %759 = call noundef i32 @_ZNK7glslang13TIntermediate9getSourceEv(ptr noundef nonnull align 8 dereferenceable(1784) %758)
  %760 = icmp eq i32 %759, 1
  br i1 %760, label %761, label %774

761:                                              ; preds = %752
  %762 = load i32, ptr %7, align 4, !tbaa !9
  %763 = icmp slt i32 %762, 1024
  br i1 %763, label %764, label %773

764:                                              ; preds = %761
  %765 = load i32, ptr %22, align 4, !tbaa !9
  %766 = trunc i32 %765 to i8
  %767 = load ptr, ptr %5, align 8, !tbaa !5
  %768 = getelementptr inbounds %"class.glslang::TPpToken", ptr %767, i32 0, i32 4
  %769 = load i32, ptr %7, align 4, !tbaa !9
  %770 = add nsw i32 %769, 1
  store i32 %770, ptr %7, align 4, !tbaa !9
  %771 = sext i32 %769 to i64
  %772 = getelementptr inbounds [1025 x i8], ptr %768, i64 0, i64 %771
  store i8 %766, ptr %772, align 1, !tbaa !13
  br label %773

773:                                              ; preds = %764, %761
  store i8 1, ptr %19, align 1, !tbaa !77
  br label %778

774:                                              ; preds = %752, %749
  %775 = load ptr, ptr %39, align 8, !tbaa !18
  %776 = getelementptr inbounds ptr, ptr %775, i64 4
  %777 = load ptr, ptr %776, align 8
  call void %777(ptr noundef nonnull align 8 dereferenceable(32) %39)
  br label %778

778:                                              ; preds = %774, %773
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #6
  br label %832

779:                                              ; preds = %700
  %780 = load i32, ptr %8, align 4, !tbaa !9
  %781 = icmp eq i32 %780, 108
  br i1 %781, label %785, label %782

782:                                              ; preds = %779
  %783 = load i32, ptr %8, align 4, !tbaa !9
  %784 = icmp eq i32 %783, 76
  br i1 %784, label %785, label %798

785:                                              ; preds = %782, %779
  %786 = load i32, ptr %7, align 4, !tbaa !9
  %787 = icmp slt i32 %786, 1024
  br i1 %787, label %788, label %797

788:                                              ; preds = %785
  %789 = load i32, ptr %8, align 4, !tbaa !9
  %790 = trunc i32 %789 to i8
  %791 = load ptr, ptr %5, align 8, !tbaa !5
  %792 = getelementptr inbounds %"class.glslang::TPpToken", ptr %791, i32 0, i32 4
  %793 = load i32, ptr %7, align 4, !tbaa !9
  %794 = add nsw i32 %793, 1
  store i32 %794, ptr %7, align 4, !tbaa !9
  %795 = sext i32 %793 to i64
  %796 = getelementptr inbounds [1025 x i8], ptr %792, i64 0, i64 %795
  store i8 %790, ptr %796, align 1, !tbaa !13
  br label %797

797:                                              ; preds = %788, %785
  store i8 1, ptr %18, align 1, !tbaa !77
  br label %831

798:                                              ; preds = %782
  %799 = load i32, ptr %8, align 4, !tbaa !9
  %800 = icmp eq i32 %799, 115
  br i1 %800, label %804, label %801

801:                                              ; preds = %798
  %802 = load i32, ptr %8, align 4, !tbaa !9
  %803 = icmp eq i32 %802, 83
  br i1 %803, label %804, label %826

804:                                              ; preds = %801, %798
  %805 = getelementptr inbounds %"class.glslang::TPpContext::tInput", ptr %39, i32 0, i32 2
  %806 = load ptr, ptr %805, align 8, !tbaa !22
  %807 = getelementptr inbounds %"class.glslang::TPpContext", ptr %806, i32 0, i32 12
  %808 = load ptr, ptr %807, align 8, !tbaa !24
  %809 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %808, i32 0, i32 7
  %810 = load ptr, ptr %809, align 8, !tbaa !79
  %811 = call noundef i32 @_ZNK7glslang13TIntermediate9getSourceEv(ptr noundef nonnull align 8 dereferenceable(1784) %810)
  %812 = icmp eq i32 %811, 1
  br i1 %812, label %813, label %826

813:                                              ; preds = %804
  %814 = load i32, ptr %7, align 4, !tbaa !9
  %815 = icmp slt i32 %814, 1024
  br i1 %815, label %816, label %825

816:                                              ; preds = %813
  %817 = load i32, ptr %8, align 4, !tbaa !9
  %818 = trunc i32 %817 to i8
  %819 = load ptr, ptr %5, align 8, !tbaa !5
  %820 = getelementptr inbounds %"class.glslang::TPpToken", ptr %819, i32 0, i32 4
  %821 = load i32, ptr %7, align 4, !tbaa !9
  %822 = add nsw i32 %821, 1
  store i32 %822, ptr %7, align 4, !tbaa !9
  %823 = sext i32 %821 to i64
  %824 = getelementptr inbounds [1025 x i8], ptr %820, i64 0, i64 %823
  store i8 %818, ptr %824, align 1, !tbaa !13
  br label %825

825:                                              ; preds = %816, %813
  store i8 1, ptr %19, align 1, !tbaa !77
  br label %830

826:                                              ; preds = %804, %801
  %827 = load ptr, ptr %39, align 8, !tbaa !18
  %828 = getelementptr inbounds ptr, ptr %827, i64 4
  %829 = load ptr, ptr %828, align 8
  call void %829(ptr noundef nonnull align 8 dereferenceable(32) %39)
  br label %830

830:                                              ; preds = %826, %825
  br label %831

831:                                              ; preds = %830, %797
  br label %832

832:                                              ; preds = %831, %778
  %833 = load ptr, ptr %5, align 8, !tbaa !5
  %834 = getelementptr inbounds %"class.glslang::TPpToken", ptr %833, i32 0, i32 4
  %835 = load i32, ptr %7, align 4, !tbaa !9
  %836 = sext i32 %835 to i64
  %837 = getelementptr inbounds [1025 x i8], ptr %834, i64 0, i64 %836
  store i8 0, ptr %837, align 1, !tbaa !13
  %838 = load i8, ptr %18, align 1, !tbaa !77, !range !97, !noundef !98
  %839 = trunc i8 %838 to i1
  br i1 %839, label %844, label %840

840:                                              ; preds = %832
  %841 = load i64, ptr %10, align 8, !tbaa !11
  %842 = icmp ugt i64 %841, 4294967295
  br i1 %842, label %843, label %844

843:                                              ; preds = %840
  store i8 1, ptr %20, align 1, !tbaa !77
  br label %844

844:                                              ; preds = %843, %840, %832
  %845 = load i8, ptr %20, align 1, !tbaa !77, !range !97, !noundef !98
  %846 = trunc i8 %845 to i1
  br i1 %846, label %847, label %857

847:                                              ; preds = %844
  %848 = getelementptr inbounds %"class.glslang::TPpContext::tInput", ptr %39, i32 0, i32 2
  %849 = load ptr, ptr %848, align 8, !tbaa !22
  %850 = getelementptr inbounds %"class.glslang::TPpContext", ptr %849, i32 0, i32 12
  %851 = load ptr, ptr %850, align 8, !tbaa !24
  %852 = load ptr, ptr %5, align 8, !tbaa !5
  %853 = getelementptr inbounds %"class.glslang::TPpToken", ptr %852, i32 0, i32 0
  %854 = load ptr, ptr %851, align 8, !tbaa !18
  %855 = getelementptr inbounds ptr, ptr %854, i64 44
  %856 = load ptr, ptr %855, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %856(ptr noundef nonnull align 8 dereferenceable(1176) %851, ptr noundef nonnull align 8 dereferenceable(24) %853, ptr noundef @.str.25, ptr noundef @.str.1, ptr noundef @.str.1)
  br label %857

857:                                              ; preds = %847, %844
  %858 = load i8, ptr %18, align 1, !tbaa !77, !range !97, !noundef !98
  %859 = trunc i8 %858 to i1
  br i1 %859, label %860, label %896

860:                                              ; preds = %857
  %861 = getelementptr inbounds %"class.glslang::TPpContext::tInput", ptr %39, i32 0, i32 2
  %862 = load ptr, ptr %861, align 8, !tbaa !22
  %863 = getelementptr inbounds %"class.glslang::TPpContext", ptr %862, i32 0, i32 12
  %864 = load ptr, ptr %863, align 8, !tbaa !24
  %865 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %864, i32 0, i32 7
  %866 = load ptr, ptr %865, align 8, !tbaa !79
  %867 = call noundef i32 @_ZNK7glslang13TIntermediate9getSourceEv(ptr noundef nonnull align 8 dereferenceable(1784) %866)
  %868 = icmp eq i32 %867, 1
  br i1 %868, label %869, label %896

869:                                              ; preds = %860
  %870 = getelementptr inbounds %"class.glslang::TPpContext::tInput", ptr %39, i32 0, i32 2
  %871 = load ptr, ptr %870, align 8, !tbaa !22
  %872 = getelementptr inbounds %"class.glslang::TPpContext", ptr %871, i32 0, i32 13
  %873 = load i32, ptr %872, align 8, !tbaa !99
  %874 = icmp eq i32 %873, 0
  br i1 %874, label %875, label %888

875:                                              ; preds = %869
  %876 = getelementptr inbounds %"class.glslang::TPpContext::tInput", ptr %39, i32 0, i32 2
  %877 = load ptr, ptr %876, align 8, !tbaa !22
  %878 = getelementptr inbounds %"class.glslang::TPpContext", ptr %877, i32 0, i32 12
  %879 = load ptr, ptr %878, align 8, !tbaa !24
  %880 = load ptr, ptr %5, align 8, !tbaa !5
  %881 = getelementptr inbounds %"class.glslang::TPpToken", ptr %880, i32 0, i32 0
  call void @_ZN7glslang14TParseVersions14requireProfileERKNS_10TSourceLocEiPKc(ptr noundef nonnull align 8 dereferenceable(192) %879, ptr noundef nonnull align 8 dereferenceable(24) %881, i32 noundef -9, ptr noundef @.str.26)
  %882 = getelementptr inbounds %"class.glslang::TPpContext::tInput", ptr %39, i32 0, i32 2
  %883 = load ptr, ptr %882, align 8, !tbaa !22
  %884 = getelementptr inbounds %"class.glslang::TPpContext", ptr %883, i32 0, i32 12
  %885 = load ptr, ptr %884, align 8, !tbaa !24
  %886 = load ptr, ptr %5, align 8, !tbaa !5
  %887 = getelementptr inbounds %"class.glslang::TPpToken", ptr %886, i32 0, i32 0
  call void @_ZN7glslang14TParseVersions15profileRequiresERKNS_10TSourceLocEiiiPKPKcS5_(ptr noundef nonnull align 8 dereferenceable(192) %885, ptr noundef nonnull align 8 dereferenceable(24) %887, i32 noundef -9, i32 noundef 0, i32 noundef 3, ptr noundef @_ZZN7glslang10TPpContext12tStringInput4scanEPNS_8TPpTokenEE16Int64_Extensions, ptr noundef @.str.26)
  br label %888

888:                                              ; preds = %875, %869
  %889 = load i64, ptr %10, align 8, !tbaa !11
  %890 = load ptr, ptr %5, align 8, !tbaa !5
  %891 = getelementptr inbounds %"class.glslang::TPpToken", ptr %890, i32 0, i32 3
  store i64 %889, ptr %891, align 8, !tbaa !13
  %892 = load i8, ptr %17, align 1, !tbaa !77, !range !97, !noundef !98
  %893 = trunc i8 %892 to i1
  %894 = zext i1 %893 to i64
  %895 = select i1 %893, i32 155, i32 154
  store i32 %895, ptr %3, align 4
  store i32 1, ptr %12, align 4
  br label %946

896:                                              ; preds = %860, %857
  %897 = load i8, ptr %19, align 1, !tbaa !77, !range !97, !noundef !98
  %898 = trunc i8 %897 to i1
  br i1 %898, label %899, label %937

899:                                              ; preds = %896
  %900 = getelementptr inbounds %"class.glslang::TPpContext::tInput", ptr %39, i32 0, i32 2
  %901 = load ptr, ptr %900, align 8, !tbaa !22
  %902 = getelementptr inbounds %"class.glslang::TPpContext", ptr %901, i32 0, i32 13
  %903 = load i32, ptr %902, align 8, !tbaa !99
  %904 = icmp eq i32 %903, 0
  br i1 %904, label %905, label %928

905:                                              ; preds = %899
  %906 = getelementptr inbounds %"class.glslang::TPpContext::tInput", ptr %39, i32 0, i32 2
  %907 = load ptr, ptr %906, align 8, !tbaa !22
  %908 = getelementptr inbounds %"class.glslang::TPpContext", ptr %907, i32 0, i32 12
  %909 = load ptr, ptr %908, align 8, !tbaa !24
  %910 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %909, i32 0, i32 7
  %911 = load ptr, ptr %910, align 8, !tbaa !79
  %912 = call noundef i32 @_ZNK7glslang13TIntermediate9getSourceEv(ptr noundef nonnull align 8 dereferenceable(1784) %911)
  %913 = icmp eq i32 %912, 1
  br i1 %913, label %914, label %927

914:                                              ; preds = %905
  %915 = getelementptr inbounds %"class.glslang::TPpContext::tInput", ptr %39, i32 0, i32 2
  %916 = load ptr, ptr %915, align 8, !tbaa !22
  %917 = getelementptr inbounds %"class.glslang::TPpContext", ptr %916, i32 0, i32 12
  %918 = load ptr, ptr %917, align 8, !tbaa !24
  %919 = load ptr, ptr %5, align 8, !tbaa !5
  %920 = getelementptr inbounds %"class.glslang::TPpToken", ptr %919, i32 0, i32 0
  call void @_ZN7glslang14TParseVersions14requireProfileERKNS_10TSourceLocEiPKc(ptr noundef nonnull align 8 dereferenceable(192) %918, ptr noundef nonnull align 8 dereferenceable(24) %920, i32 noundef -9, ptr noundef @.str.27)
  %921 = getelementptr inbounds %"class.glslang::TPpContext::tInput", ptr %39, i32 0, i32 2
  %922 = load ptr, ptr %921, align 8, !tbaa !22
  %923 = getelementptr inbounds %"class.glslang::TPpContext", ptr %922, i32 0, i32 12
  %924 = load ptr, ptr %923, align 8, !tbaa !24
  %925 = load ptr, ptr %5, align 8, !tbaa !5
  %926 = getelementptr inbounds %"class.glslang::TPpToken", ptr %925, i32 0, i32 0
  call void @_ZN7glslang14TParseVersions15profileRequiresERKNS_10TSourceLocEiiiPKPKcS5_(ptr noundef nonnull align 8 dereferenceable(192) %924, ptr noundef nonnull align 8 dereferenceable(24) %926, i32 noundef -9, i32 noundef 0, i32 noundef 3, ptr noundef @_ZZN7glslang10TPpContext12tStringInput4scanEPNS_8TPpTokenEE16Int16_Extensions, ptr noundef @.str.27)
  br label %927

927:                                              ; preds = %914, %905
  br label %928

928:                                              ; preds = %927, %899
  %929 = load i64, ptr %10, align 8, !tbaa !11
  %930 = trunc i64 %929 to i32
  %931 = load ptr, ptr %5, align 8, !tbaa !5
  %932 = getelementptr inbounds %"class.glslang::TPpToken", ptr %931, i32 0, i32 3
  store i32 %930, ptr %932, align 8, !tbaa !13
  %933 = load i8, ptr %17, align 1, !tbaa !77, !range !97, !noundef !98
  %934 = trunc i8 %933 to i1
  %935 = zext i1 %934 to i64
  %936 = select i1 %934, i32 157, i32 156
  store i32 %936, ptr %3, align 4
  store i32 1, ptr %12, align 4
  br label %946

937:                                              ; preds = %896
  %938 = load i64, ptr %10, align 8, !tbaa !11
  %939 = trunc i64 %938 to i32
  %940 = load ptr, ptr %5, align 8, !tbaa !5
  %941 = getelementptr inbounds %"class.glslang::TPpToken", ptr %940, i32 0, i32 3
  store i32 %939, ptr %941, align 8, !tbaa !13
  %942 = load i8, ptr %17, align 1, !tbaa !77, !range !97, !noundef !98
  %943 = trunc i8 %942 to i1
  %944 = zext i1 %943 to i64
  %945 = select i1 %943, i32 153, i32 152
  store i32 %945, ptr %3, align 4
  store i32 1, ptr %12, align 4
  br label %946

946:                                              ; preds = %937, %928, %888, %677
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #6
  br label %1826

947:                                              ; preds = %66, %66, %66, %66, %66, %66, %66, %66, %66
  br label %948

948:                                              ; preds = %985, %947
  %949 = load i32, ptr %7, align 4, !tbaa !9
  %950 = icmp slt i32 %949, 1024
  br i1 %950, label %951, label %960

951:                                              ; preds = %948
  %952 = load i32, ptr %8, align 4, !tbaa !9
  %953 = trunc i32 %952 to i8
  %954 = load ptr, ptr %5, align 8, !tbaa !5
  %955 = getelementptr inbounds %"class.glslang::TPpToken", ptr %954, i32 0, i32 4
  %956 = load i32, ptr %7, align 4, !tbaa !9
  %957 = add nsw i32 %956, 1
  store i32 %957, ptr %7, align 4, !tbaa !9
  %958 = sext i32 %956 to i64
  %959 = getelementptr inbounds [1025 x i8], ptr %955, i64 0, i64 %958
  store i8 %953, ptr %959, align 1, !tbaa !13
  br label %974

960:                                              ; preds = %948
  %961 = load i32, ptr %6, align 4, !tbaa !9
  %962 = icmp ne i32 %961, 0
  br i1 %962, label %973, label %963

963:                                              ; preds = %960
  %964 = getelementptr inbounds %"class.glslang::TPpContext::tInput", ptr %39, i32 0, i32 2
  %965 = load ptr, ptr %964, align 8, !tbaa !22
  %966 = getelementptr inbounds %"class.glslang::TPpContext", ptr %965, i32 0, i32 12
  %967 = load ptr, ptr %966, align 8, !tbaa !24
  %968 = load ptr, ptr %5, align 8, !tbaa !5
  %969 = getelementptr inbounds %"class.glslang::TPpToken", ptr %968, i32 0, i32 0
  %970 = load ptr, ptr %967, align 8, !tbaa !18
  %971 = getelementptr inbounds ptr, ptr %970, i64 44
  %972 = load ptr, ptr %971, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %972(ptr noundef nonnull align 8 dereferenceable(1176) %967, ptr noundef nonnull align 8 dereferenceable(24) %969, ptr noundef @.str.23, ptr noundef @.str.1, ptr noundef @.str.1)
  store i32 1, ptr %6, align 4, !tbaa !9
  br label %973

973:                                              ; preds = %963, %960
  br label %974

974:                                              ; preds = %973, %951
  %975 = load ptr, ptr %39, align 8, !tbaa !18
  %976 = getelementptr inbounds ptr, ptr %975, i64 3
  %977 = load ptr, ptr %976, align 8
  %978 = call noundef i32 %977(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 %978, ptr %8, align 4, !tbaa !9
  br label %979

979:                                              ; preds = %974
  %980 = load i32, ptr %8, align 4, !tbaa !9
  %981 = icmp sge i32 %980, 48
  br i1 %981, label %982, label %985

982:                                              ; preds = %979
  %983 = load i32, ptr %8, align 4, !tbaa !9
  %984 = icmp sle i32 %983, 57
  br label %985

985:                                              ; preds = %982, %979
  %986 = phi i1 [ false, %979 ], [ %984, %982 ]
  br i1 %986, label %948, label %987, !llvm.loop !102

987:                                              ; preds = %985
  %988 = load i32, ptr %8, align 4, !tbaa !9
  %989 = call noundef zeroext i1 @"_ZZN7glslang10TPpContext12tStringInput4scanEPNS_8TPpTokenEENK3$_0clEi"(ptr noundef nonnull align 1 dereferenceable(1) %11, i32 noundef %988)
  br i1 %989, label %990, label %997

990:                                              ; preds = %987
  %991 = getelementptr inbounds %"class.glslang::TPpContext::tInput", ptr %39, i32 0, i32 2
  %992 = load ptr, ptr %991, align 8, !tbaa !22
  %993 = load i32, ptr %7, align 4, !tbaa !9
  %994 = load i32, ptr %8, align 4, !tbaa !9
  %995 = load ptr, ptr %5, align 8, !tbaa !5
  %996 = call noundef i32 @_ZN7glslang10TPpContext11lFloatConstEiiPNS_8TPpTokenE(ptr noundef nonnull align 8 dereferenceable(921) %992, i32 noundef %993, i32 noundef %994, ptr noundef %995)
  store i32 %996, ptr %3, align 4
  store i32 1, ptr %12, align 4
  br label %1826

997:                                              ; preds = %987
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #6
  %998 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %998, ptr %23, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %24) #6
  store i8 0, ptr %24, align 1, !tbaa !77
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #6
  store i8 0, ptr %25, align 1, !tbaa !77
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #6
  store i8 0, ptr %26, align 1, !tbaa !77
  %999 = load i32, ptr %8, align 4, !tbaa !9
  %1000 = icmp eq i32 %999, 117
  br i1 %1000, label %1004, label %1001

1001:                                             ; preds = %997
  %1002 = load i32, ptr %8, align 4, !tbaa !9
  %1003 = icmp eq i32 %1002, 85
  br i1 %1003, label %1004, label %1080

1004:                                             ; preds = %1001, %997
  %1005 = load i32, ptr %7, align 4, !tbaa !9
  %1006 = icmp slt i32 %1005, 1024
  br i1 %1006, label %1007, label %1016

1007:                                             ; preds = %1004
  %1008 = load i32, ptr %8, align 4, !tbaa !9
  %1009 = trunc i32 %1008 to i8
  %1010 = load ptr, ptr %5, align 8, !tbaa !5
  %1011 = getelementptr inbounds %"class.glslang::TPpToken", ptr %1010, i32 0, i32 4
  %1012 = load i32, ptr %7, align 4, !tbaa !9
  %1013 = add nsw i32 %1012, 1
  store i32 %1013, ptr %7, align 4, !tbaa !9
  %1014 = sext i32 %1012 to i64
  %1015 = getelementptr inbounds [1025 x i8], ptr %1011, i64 0, i64 %1014
  store i8 %1009, ptr %1015, align 1, !tbaa !13
  br label %1016

1016:                                             ; preds = %1007, %1004
  store i8 1, ptr %24, align 1, !tbaa !77
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #6
  %1017 = load ptr, ptr %39, align 8, !tbaa !18
  %1018 = getelementptr inbounds ptr, ptr %1017, i64 3
  %1019 = load ptr, ptr %1018, align 8
  %1020 = call noundef i32 %1019(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 %1020, ptr %27, align 4, !tbaa !9
  %1021 = load i32, ptr %27, align 4, !tbaa !9
  %1022 = icmp eq i32 %1021, 108
  br i1 %1022, label %1026, label %1023

1023:                                             ; preds = %1016
  %1024 = load i32, ptr %27, align 4, !tbaa !9
  %1025 = icmp eq i32 %1024, 76
  br i1 %1025, label %1026, label %1039

1026:                                             ; preds = %1023, %1016
  %1027 = load i32, ptr %7, align 4, !tbaa !9
  %1028 = icmp slt i32 %1027, 1024
  br i1 %1028, label %1029, label %1038

1029:                                             ; preds = %1026
  %1030 = load i32, ptr %27, align 4, !tbaa !9
  %1031 = trunc i32 %1030 to i8
  %1032 = load ptr, ptr %5, align 8, !tbaa !5
  %1033 = getelementptr inbounds %"class.glslang::TPpToken", ptr %1032, i32 0, i32 4
  %1034 = load i32, ptr %7, align 4, !tbaa !9
  %1035 = add nsw i32 %1034, 1
  store i32 %1035, ptr %7, align 4, !tbaa !9
  %1036 = sext i32 %1034 to i64
  %1037 = getelementptr inbounds [1025 x i8], ptr %1033, i64 0, i64 %1036
  store i8 %1031, ptr %1037, align 1, !tbaa !13
  br label %1038

1038:                                             ; preds = %1029, %1026
  store i8 1, ptr %25, align 1, !tbaa !77
  br label %1043

1039:                                             ; preds = %1023
  %1040 = load ptr, ptr %39, align 8, !tbaa !18
  %1041 = getelementptr inbounds ptr, ptr %1040, i64 4
  %1042 = load ptr, ptr %1041, align 8
  call void %1042(ptr noundef nonnull align 8 dereferenceable(32) %39)
  br label %1043

1043:                                             ; preds = %1039, %1038
  %1044 = load ptr, ptr %39, align 8, !tbaa !18
  %1045 = getelementptr inbounds ptr, ptr %1044, i64 3
  %1046 = load ptr, ptr %1045, align 8
  %1047 = call noundef i32 %1046(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 %1047, ptr %27, align 4, !tbaa !9
  %1048 = load i32, ptr %27, align 4, !tbaa !9
  %1049 = icmp eq i32 %1048, 115
  br i1 %1049, label %1053, label %1050

1050:                                             ; preds = %1043
  %1051 = load i32, ptr %27, align 4, !tbaa !9
  %1052 = icmp eq i32 %1051, 83
  br i1 %1052, label %1053, label %1075

1053:                                             ; preds = %1050, %1043
  %1054 = getelementptr inbounds %"class.glslang::TPpContext::tInput", ptr %39, i32 0, i32 2
  %1055 = load ptr, ptr %1054, align 8, !tbaa !22
  %1056 = getelementptr inbounds %"class.glslang::TPpContext", ptr %1055, i32 0, i32 12
  %1057 = load ptr, ptr %1056, align 8, !tbaa !24
  %1058 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %1057, i32 0, i32 7
  %1059 = load ptr, ptr %1058, align 8, !tbaa !79
  %1060 = call noundef i32 @_ZNK7glslang13TIntermediate9getSourceEv(ptr noundef nonnull align 8 dereferenceable(1784) %1059)
  %1061 = icmp eq i32 %1060, 1
  br i1 %1061, label %1062, label %1075

1062:                                             ; preds = %1053
  %1063 = load i32, ptr %7, align 4, !tbaa !9
  %1064 = icmp slt i32 %1063, 1024
  br i1 %1064, label %1065, label %1074

1065:                                             ; preds = %1062
  %1066 = load i32, ptr %27, align 4, !tbaa !9
  %1067 = trunc i32 %1066 to i8
  %1068 = load ptr, ptr %5, align 8, !tbaa !5
  %1069 = getelementptr inbounds %"class.glslang::TPpToken", ptr %1068, i32 0, i32 4
  %1070 = load i32, ptr %7, align 4, !tbaa !9
  %1071 = add nsw i32 %1070, 1
  store i32 %1071, ptr %7, align 4, !tbaa !9
  %1072 = sext i32 %1070 to i64
  %1073 = getelementptr inbounds [1025 x i8], ptr %1069, i64 0, i64 %1072
  store i8 %1067, ptr %1073, align 1, !tbaa !13
  br label %1074

1074:                                             ; preds = %1065, %1062
  store i8 1, ptr %26, align 1, !tbaa !77
  br label %1079

1075:                                             ; preds = %1053, %1050
  %1076 = load ptr, ptr %39, align 8, !tbaa !18
  %1077 = getelementptr inbounds ptr, ptr %1076, i64 4
  %1078 = load ptr, ptr %1077, align 8
  call void %1078(ptr noundef nonnull align 8 dereferenceable(32) %39)
  br label %1079

1079:                                             ; preds = %1075, %1074
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #6
  br label %1133

1080:                                             ; preds = %1001
  %1081 = load i32, ptr %8, align 4, !tbaa !9
  %1082 = icmp eq i32 %1081, 108
  br i1 %1082, label %1086, label %1083

1083:                                             ; preds = %1080
  %1084 = load i32, ptr %8, align 4, !tbaa !9
  %1085 = icmp eq i32 %1084, 76
  br i1 %1085, label %1086, label %1099

1086:                                             ; preds = %1083, %1080
  %1087 = load i32, ptr %7, align 4, !tbaa !9
  %1088 = icmp slt i32 %1087, 1024
  br i1 %1088, label %1089, label %1098

1089:                                             ; preds = %1086
  %1090 = load i32, ptr %8, align 4, !tbaa !9
  %1091 = trunc i32 %1090 to i8
  %1092 = load ptr, ptr %5, align 8, !tbaa !5
  %1093 = getelementptr inbounds %"class.glslang::TPpToken", ptr %1092, i32 0, i32 4
  %1094 = load i32, ptr %7, align 4, !tbaa !9
  %1095 = add nsw i32 %1094, 1
  store i32 %1095, ptr %7, align 4, !tbaa !9
  %1096 = sext i32 %1094 to i64
  %1097 = getelementptr inbounds [1025 x i8], ptr %1093, i64 0, i64 %1096
  store i8 %1091, ptr %1097, align 1, !tbaa !13
  br label %1098

1098:                                             ; preds = %1089, %1086
  store i8 1, ptr %25, align 1, !tbaa !77
  br label %1132

1099:                                             ; preds = %1083
  %1100 = load i32, ptr %8, align 4, !tbaa !9
  %1101 = icmp eq i32 %1100, 115
  br i1 %1101, label %1105, label %1102

1102:                                             ; preds = %1099
  %1103 = load i32, ptr %8, align 4, !tbaa !9
  %1104 = icmp eq i32 %1103, 83
  br i1 %1104, label %1105, label %1127

1105:                                             ; preds = %1102, %1099
  %1106 = getelementptr inbounds %"class.glslang::TPpContext::tInput", ptr %39, i32 0, i32 2
  %1107 = load ptr, ptr %1106, align 8, !tbaa !22
  %1108 = getelementptr inbounds %"class.glslang::TPpContext", ptr %1107, i32 0, i32 12
  %1109 = load ptr, ptr %1108, align 8, !tbaa !24
  %1110 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %1109, i32 0, i32 7
  %1111 = load ptr, ptr %1110, align 8, !tbaa !79
  %1112 = call noundef i32 @_ZNK7glslang13TIntermediate9getSourceEv(ptr noundef nonnull align 8 dereferenceable(1784) %1111)
  %1113 = icmp eq i32 %1112, 1
  br i1 %1113, label %1114, label %1127

1114:                                             ; preds = %1105
  %1115 = load i32, ptr %7, align 4, !tbaa !9
  %1116 = icmp slt i32 %1115, 1024
  br i1 %1116, label %1117, label %1126

1117:                                             ; preds = %1114
  %1118 = load i32, ptr %8, align 4, !tbaa !9
  %1119 = trunc i32 %1118 to i8
  %1120 = load ptr, ptr %5, align 8, !tbaa !5
  %1121 = getelementptr inbounds %"class.glslang::TPpToken", ptr %1120, i32 0, i32 4
  %1122 = load i32, ptr %7, align 4, !tbaa !9
  %1123 = add nsw i32 %1122, 1
  store i32 %1123, ptr %7, align 4, !tbaa !9
  %1124 = sext i32 %1122 to i64
  %1125 = getelementptr inbounds [1025 x i8], ptr %1121, i64 0, i64 %1124
  store i8 %1119, ptr %1125, align 1, !tbaa !13
  br label %1126

1126:                                             ; preds = %1117, %1114
  store i8 1, ptr %26, align 1, !tbaa !77
  br label %1131

1127:                                             ; preds = %1105, %1102
  %1128 = load ptr, ptr %39, align 8, !tbaa !18
  %1129 = getelementptr inbounds ptr, ptr %1128, i64 4
  %1130 = load ptr, ptr %1129, align 8
  call void %1130(ptr noundef nonnull align 8 dereferenceable(32) %39)
  br label %1131

1131:                                             ; preds = %1127, %1126
  br label %1132

1132:                                             ; preds = %1131, %1098
  br label %1133

1133:                                             ; preds = %1132, %1079
  %1134 = load ptr, ptr %5, align 8, !tbaa !5
  %1135 = getelementptr inbounds %"class.glslang::TPpToken", ptr %1134, i32 0, i32 4
  %1136 = load i32, ptr %7, align 4, !tbaa !9
  %1137 = sext i32 %1136 to i64
  %1138 = getelementptr inbounds [1025 x i8], ptr %1135, i64 0, i64 %1137
  store i8 0, ptr %1138, align 1, !tbaa !13
  store i64 0, ptr %10, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #6
  store i32 429496729, ptr %28, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #6
  store i32 5, ptr %29, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #6
  store i64 1844674407370955161, ptr %30, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #6
  store i64 5, ptr %31, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 2, ptr %32) #6
  store i16 6553, ptr %32, align 2, !tbaa !103
  call void @llvm.lifetime.start.p0(i64 2, ptr %33) #6
  store i16 5, ptr %33, align 2, !tbaa !103
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #6
  store i32 0, ptr %34, align 4, !tbaa !9
  br label %1139

1139:                                             ; preds = %1227, %1133
  %1140 = load i32, ptr %34, align 4, !tbaa !9
  %1141 = load i32, ptr %23, align 4, !tbaa !9
  %1142 = icmp slt i32 %1140, %1141
  br i1 %1142, label %1144, label %1143

1143:                                             ; preds = %1139
  store i32 17, ptr %12, align 4
  br label %1230

1144:                                             ; preds = %1139
  %1145 = load ptr, ptr %5, align 8, !tbaa !5
  %1146 = getelementptr inbounds %"class.glslang::TPpToken", ptr %1145, i32 0, i32 4
  %1147 = load i32, ptr %34, align 4, !tbaa !9
  %1148 = sext i32 %1147 to i64
  %1149 = getelementptr inbounds [1025 x i8], ptr %1146, i64 0, i64 %1148
  %1150 = load i8, ptr %1149, align 1, !tbaa !13
  %1151 = sext i8 %1150 to i32
  %1152 = sub nsw i32 %1151, 48
  store i32 %1152, ptr %8, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %35) #6
  store i8 0, ptr %35, align 1, !tbaa !77
  %1153 = load i8, ptr %25, align 1, !tbaa !77, !range !97, !noundef !98
  %1154 = trunc i8 %1153 to i1
  br i1 %1154, label %1155, label %1170

1155:                                             ; preds = %1144
  %1156 = load i64, ptr %10, align 8, !tbaa !11
  %1157 = icmp ugt i64 %1156, 1844674407370955161
  br i1 %1157, label %1167, label %1158

1158:                                             ; preds = %1155
  %1159 = load i64, ptr %10, align 8, !tbaa !11
  %1160 = icmp eq i64 %1159, 1844674407370955161
  br i1 %1160, label %1161, label %1165

1161:                                             ; preds = %1158
  %1162 = load i32, ptr %8, align 4, !tbaa !9
  %1163 = sext i32 %1162 to i64
  %1164 = icmp ugt i64 %1163, 5
  br label %1165

1165:                                             ; preds = %1161, %1158
  %1166 = phi i1 [ false, %1158 ], [ %1164, %1161 ]
  br label %1167

1167:                                             ; preds = %1165, %1155
  %1168 = phi i1 [ true, %1155 ], [ %1166, %1165 ]
  %1169 = zext i1 %1168 to i8
  store i8 %1169, ptr %35, align 1, !tbaa !77
  br label %1204

1170:                                             ; preds = %1144
  %1171 = load i8, ptr %26, align 1, !tbaa !77, !range !97, !noundef !98
  %1172 = trunc i8 %1171 to i1
  br i1 %1172, label %1173, label %1189

1173:                                             ; preds = %1170
  %1174 = load i64, ptr %10, align 8, !tbaa !11
  %1175 = icmp ugt i64 %1174, 6553
  br i1 %1175, label %1186, label %1176

1176:                                             ; preds = %1173
  %1177 = load i64, ptr %10, align 8, !tbaa !11
  %1178 = icmp eq i64 %1177, 6553
  br i1 %1178, label %1179, label %1184

1179:                                             ; preds = %1176
  %1180 = load i32, ptr %8, align 4, !tbaa !9
  %1181 = trunc i32 %1180 to i16
  %1182 = zext i16 %1181 to i32
  %1183 = icmp sgt i32 %1182, 5
  br label %1184

1184:                                             ; preds = %1179, %1176
  %1185 = phi i1 [ false, %1176 ], [ %1183, %1179 ]
  br label %1186

1186:                                             ; preds = %1184, %1173
  %1187 = phi i1 [ true, %1173 ], [ %1185, %1184 ]
  %1188 = zext i1 %1187 to i8
  store i8 %1188, ptr %35, align 1, !tbaa !77
  br label %1203

1189:                                             ; preds = %1170
  %1190 = load i64, ptr %10, align 8, !tbaa !11
  %1191 = icmp ugt i64 %1190, 429496729
  br i1 %1191, label %1200, label %1192

1192:                                             ; preds = %1189
  %1193 = load i64, ptr %10, align 8, !tbaa !11
  %1194 = icmp eq i64 %1193, 429496729
  br i1 %1194, label %1195, label %1198

1195:                                             ; preds = %1192
  %1196 = load i32, ptr %8, align 4, !tbaa !9
  %1197 = icmp ugt i32 %1196, 5
  br label %1198

1198:                                             ; preds = %1195, %1192
  %1199 = phi i1 [ false, %1192 ], [ %1197, %1195 ]
  br label %1200

1200:                                             ; preds = %1198, %1189
  %1201 = phi i1 [ true, %1189 ], [ %1199, %1198 ]
  %1202 = zext i1 %1201 to i8
  store i8 %1202, ptr %35, align 1, !tbaa !77
  br label %1203

1203:                                             ; preds = %1200, %1186
  br label %1204

1204:                                             ; preds = %1203, %1167
  %1205 = load i8, ptr %35, align 1, !tbaa !77, !range !97, !noundef !98
  %1206 = trunc i8 %1205 to i1
  br i1 %1206, label %1207, label %1217

1207:                                             ; preds = %1204
  %1208 = getelementptr inbounds %"class.glslang::TPpContext::tInput", ptr %39, i32 0, i32 2
  %1209 = load ptr, ptr %1208, align 8, !tbaa !22
  %1210 = getelementptr inbounds %"class.glslang::TPpContext", ptr %1209, i32 0, i32 12
  %1211 = load ptr, ptr %1210, align 8, !tbaa !24
  %1212 = load ptr, ptr %5, align 8, !tbaa !5
  %1213 = getelementptr inbounds %"class.glslang::TPpToken", ptr %1212, i32 0, i32 0
  %1214 = load ptr, ptr %1211, align 8, !tbaa !18
  %1215 = getelementptr inbounds ptr, ptr %1214, i64 44
  %1216 = load ptr, ptr %1215, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %1216(ptr noundef nonnull align 8 dereferenceable(1176) %1211, ptr noundef nonnull align 8 dereferenceable(24) %1213, ptr noundef @.str.28, ptr noundef @.str.1, ptr noundef @.str.1)
  store i64 -1, ptr %10, align 8, !tbaa !11
  store i32 17, ptr %12, align 4
  br label %1224

1217:                                             ; preds = %1204
  %1218 = load i64, ptr %10, align 8, !tbaa !11
  %1219 = mul i64 %1218, 10
  %1220 = load i32, ptr %8, align 4, !tbaa !9
  %1221 = sext i32 %1220 to i64
  %1222 = add i64 %1219, %1221
  store i64 %1222, ptr %10, align 8, !tbaa !11
  br label %1223

1223:                                             ; preds = %1217
  store i32 0, ptr %12, align 4
  br label %1224

1224:                                             ; preds = %1223, %1207
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #6
  %1225 = load i32, ptr %12, align 4
  switch i32 %1225, label %1230 [
    i32 0, label %1226
  ]

1226:                                             ; preds = %1224
  br label %1227

1227:                                             ; preds = %1226
  %1228 = load i32, ptr %34, align 4, !tbaa !9
  %1229 = add nsw i32 %1228, 1
  store i32 %1229, ptr %34, align 4, !tbaa !9
  br label %1139, !llvm.loop !105

1230:                                             ; preds = %1224, %1143
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #6
  br label %1231

1231:                                             ; preds = %1230
  %1232 = load i8, ptr %25, align 1, !tbaa !77, !range !97, !noundef !98
  %1233 = trunc i8 %1232 to i1
  br i1 %1233, label %1234, label %1270

1234:                                             ; preds = %1231
  %1235 = getelementptr inbounds %"class.glslang::TPpContext::tInput", ptr %39, i32 0, i32 2
  %1236 = load ptr, ptr %1235, align 8, !tbaa !22
  %1237 = getelementptr inbounds %"class.glslang::TPpContext", ptr %1236, i32 0, i32 12
  %1238 = load ptr, ptr %1237, align 8, !tbaa !24
  %1239 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %1238, i32 0, i32 7
  %1240 = load ptr, ptr %1239, align 8, !tbaa !79
  %1241 = call noundef i32 @_ZNK7glslang13TIntermediate9getSourceEv(ptr noundef nonnull align 8 dereferenceable(1784) %1240)
  %1242 = icmp eq i32 %1241, 1
  br i1 %1242, label %1243, label %1270

1243:                                             ; preds = %1234
  %1244 = getelementptr inbounds %"class.glslang::TPpContext::tInput", ptr %39, i32 0, i32 2
  %1245 = load ptr, ptr %1244, align 8, !tbaa !22
  %1246 = getelementptr inbounds %"class.glslang::TPpContext", ptr %1245, i32 0, i32 13
  %1247 = load i32, ptr %1246, align 8, !tbaa !99
  %1248 = icmp eq i32 %1247, 0
  br i1 %1248, label %1249, label %1262

1249:                                             ; preds = %1243
  %1250 = getelementptr inbounds %"class.glslang::TPpContext::tInput", ptr %39, i32 0, i32 2
  %1251 = load ptr, ptr %1250, align 8, !tbaa !22
  %1252 = getelementptr inbounds %"class.glslang::TPpContext", ptr %1251, i32 0, i32 12
  %1253 = load ptr, ptr %1252, align 8, !tbaa !24
  %1254 = load ptr, ptr %5, align 8, !tbaa !5
  %1255 = getelementptr inbounds %"class.glslang::TPpToken", ptr %1254, i32 0, i32 0
  call void @_ZN7glslang14TParseVersions14requireProfileERKNS_10TSourceLocEiPKc(ptr noundef nonnull align 8 dereferenceable(192) %1253, ptr noundef nonnull align 8 dereferenceable(24) %1255, i32 noundef -9, ptr noundef @.str.29)
  %1256 = getelementptr inbounds %"class.glslang::TPpContext::tInput", ptr %39, i32 0, i32 2
  %1257 = load ptr, ptr %1256, align 8, !tbaa !22
  %1258 = getelementptr inbounds %"class.glslang::TPpContext", ptr %1257, i32 0, i32 12
  %1259 = load ptr, ptr %1258, align 8, !tbaa !24
  %1260 = load ptr, ptr %5, align 8, !tbaa !5
  %1261 = getelementptr inbounds %"class.glslang::TPpToken", ptr %1260, i32 0, i32 0
  call void @_ZN7glslang14TParseVersions15profileRequiresERKNS_10TSourceLocEiiiPKPKcS5_(ptr noundef nonnull align 8 dereferenceable(192) %1259, ptr noundef nonnull align 8 dereferenceable(24) %1261, i32 noundef -9, i32 noundef 0, i32 noundef 3, ptr noundef @_ZZN7glslang10TPpContext12tStringInput4scanEPNS_8TPpTokenEE16Int64_Extensions, ptr noundef @.str.29)
  br label %1262

1262:                                             ; preds = %1249, %1243
  %1263 = load i64, ptr %10, align 8, !tbaa !11
  %1264 = load ptr, ptr %5, align 8, !tbaa !5
  %1265 = getelementptr inbounds %"class.glslang::TPpToken", ptr %1264, i32 0, i32 3
  store i64 %1263, ptr %1265, align 8, !tbaa !13
  %1266 = load i8, ptr %24, align 1, !tbaa !77, !range !97, !noundef !98
  %1267 = trunc i8 %1266 to i1
  %1268 = zext i1 %1267 to i64
  %1269 = select i1 %1267, i32 155, i32 154
  store i32 %1269, ptr %3, align 4
  store i32 1, ptr %12, align 4
  br label %1319

1270:                                             ; preds = %1234, %1231
  %1271 = load i8, ptr %26, align 1, !tbaa !77, !range !97, !noundef !98
  %1272 = trunc i8 %1271 to i1
  br i1 %1272, label %1273, label %1310

1273:                                             ; preds = %1270
  %1274 = getelementptr inbounds %"class.glslang::TPpContext::tInput", ptr %39, i32 0, i32 2
  %1275 = load ptr, ptr %1274, align 8, !tbaa !22
  %1276 = getelementptr inbounds %"class.glslang::TPpContext", ptr %1275, i32 0, i32 13
  %1277 = load i32, ptr %1276, align 8, !tbaa !99
  %1278 = icmp eq i32 %1277, 0
  br i1 %1278, label %1279, label %1301

1279:                                             ; preds = %1273
  %1280 = getelementptr inbounds %"class.glslang::TPpContext::tInput", ptr %39, i32 0, i32 2
  %1281 = load ptr, ptr %1280, align 8, !tbaa !22
  %1282 = getelementptr inbounds %"class.glslang::TPpContext", ptr %1281, i32 0, i32 12
  %1283 = load ptr, ptr %1282, align 8, !tbaa !24
  %1284 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %1283, i32 0, i32 7
  %1285 = load ptr, ptr %1284, align 8, !tbaa !79
  %1286 = call noundef i32 @_ZNK7glslang13TIntermediate9getSourceEv(ptr noundef nonnull align 8 dereferenceable(1784) %1285)
  %1287 = icmp eq i32 %1286, 1
  br i1 %1287, label %1288, label %1301

1288:                                             ; preds = %1279
  %1289 = getelementptr inbounds %"class.glslang::TPpContext::tInput", ptr %39, i32 0, i32 2
  %1290 = load ptr, ptr %1289, align 8, !tbaa !22
  %1291 = getelementptr inbounds %"class.glslang::TPpContext", ptr %1290, i32 0, i32 12
  %1292 = load ptr, ptr %1291, align 8, !tbaa !24
  %1293 = load ptr, ptr %5, align 8, !tbaa !5
  %1294 = getelementptr inbounds %"class.glslang::TPpToken", ptr %1293, i32 0, i32 0
  call void @_ZN7glslang14TParseVersions14requireProfileERKNS_10TSourceLocEiPKc(ptr noundef nonnull align 8 dereferenceable(192) %1292, ptr noundef nonnull align 8 dereferenceable(24) %1294, i32 noundef -9, ptr noundef @.str.30)
  %1295 = getelementptr inbounds %"class.glslang::TPpContext::tInput", ptr %39, i32 0, i32 2
  %1296 = load ptr, ptr %1295, align 8, !tbaa !22
  %1297 = getelementptr inbounds %"class.glslang::TPpContext", ptr %1296, i32 0, i32 12
  %1298 = load ptr, ptr %1297, align 8, !tbaa !24
  %1299 = load ptr, ptr %5, align 8, !tbaa !5
  %1300 = getelementptr inbounds %"class.glslang::TPpToken", ptr %1299, i32 0, i32 0
  call void @_ZN7glslang14TParseVersions15profileRequiresERKNS_10TSourceLocEiiiPKPKcS5_(ptr noundef nonnull align 8 dereferenceable(192) %1298, ptr noundef nonnull align 8 dereferenceable(24) %1300, i32 noundef -9, i32 noundef 0, i32 noundef 3, ptr noundef @_ZZN7glslang10TPpContext12tStringInput4scanEPNS_8TPpTokenEE16Int16_Extensions, ptr noundef @.str.31)
  br label %1301

1301:                                             ; preds = %1288, %1279, %1273
  %1302 = load i64, ptr %10, align 8, !tbaa !11
  %1303 = trunc i64 %1302 to i32
  %1304 = load ptr, ptr %5, align 8, !tbaa !5
  %1305 = getelementptr inbounds %"class.glslang::TPpToken", ptr %1304, i32 0, i32 3
  store i32 %1303, ptr %1305, align 8, !tbaa !13
  %1306 = load i8, ptr %24, align 1, !tbaa !77, !range !97, !noundef !98
  %1307 = trunc i8 %1306 to i1
  %1308 = zext i1 %1307 to i64
  %1309 = select i1 %1307, i32 157, i32 156
  store i32 %1309, ptr %3, align 4
  store i32 1, ptr %12, align 4
  br label %1319

1310:                                             ; preds = %1270
  %1311 = load i64, ptr %10, align 8, !tbaa !11
  %1312 = trunc i64 %1311 to i32
  %1313 = load ptr, ptr %5, align 8, !tbaa !5
  %1314 = getelementptr inbounds %"class.glslang::TPpToken", ptr %1313, i32 0, i32 3
  store i32 %1312, ptr %1314, align 8, !tbaa !13
  %1315 = load i8, ptr %24, align 1, !tbaa !77, !range !97, !noundef !98
  %1316 = trunc i8 %1315 to i1
  %1317 = zext i1 %1316 to i64
  %1318 = select i1 %1316, i32 153, i32 152
  store i32 %1318, ptr %3, align 4
  store i32 1, ptr %12, align 4
  br label %1319

1319:                                             ; preds = %1310, %1301, %1262
  call void @llvm.lifetime.end.p0(i64 2, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 2, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #6
  br label %1826

1320:                                             ; preds = %66
  %1321 = load ptr, ptr %39, align 8, !tbaa !18
  %1322 = getelementptr inbounds ptr, ptr %1321, i64 3
  %1323 = load ptr, ptr %1322, align 8
  %1324 = call noundef i32 %1323(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 %1324, ptr %8, align 4, !tbaa !9
  %1325 = load i32, ptr %8, align 4, !tbaa !9
  %1326 = icmp eq i32 %1325, 45
  br i1 %1326, label %1327, label %1328

1327:                                             ; preds = %1320
  store i32 148, ptr %3, align 4
  store i32 1, ptr %12, align 4
  br label %1826

1328:                                             ; preds = %1320
  %1329 = load i32, ptr %8, align 4, !tbaa !9
  %1330 = icmp eq i32 %1329, 61
  br i1 %1330, label %1331, label %1332

1331:                                             ; preds = %1328
  store i32 130, ptr %3, align 4
  store i32 1, ptr %12, align 4
  br label %1826

1332:                                             ; preds = %1328
  %1333 = load ptr, ptr %39, align 8, !tbaa !18
  %1334 = getelementptr inbounds ptr, ptr %1333, i64 4
  %1335 = load ptr, ptr %1334, align 8
  call void %1335(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 45, ptr %3, align 4
  store i32 1, ptr %12, align 4
  br label %1826

1336:                                             ; preds = %66
  %1337 = load ptr, ptr %39, align 8, !tbaa !18
  %1338 = getelementptr inbounds ptr, ptr %1337, i64 3
  %1339 = load ptr, ptr %1338, align 8
  %1340 = call noundef i32 %1339(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 %1340, ptr %8, align 4, !tbaa !9
  %1341 = load i32, ptr %8, align 4, !tbaa !9
  %1342 = icmp eq i32 %1341, 43
  br i1 %1342, label %1343, label %1344

1343:                                             ; preds = %1336
  store i32 149, ptr %3, align 4
  store i32 1, ptr %12, align 4
  br label %1826

1344:                                             ; preds = %1336
  %1345 = load i32, ptr %8, align 4, !tbaa !9
  %1346 = icmp eq i32 %1345, 61
  br i1 %1346, label %1347, label %1348

1347:                                             ; preds = %1344
  store i32 129, ptr %3, align 4
  store i32 1, ptr %12, align 4
  br label %1826

1348:                                             ; preds = %1344
  %1349 = load ptr, ptr %39, align 8, !tbaa !18
  %1350 = getelementptr inbounds ptr, ptr %1349, i64 4
  %1351 = load ptr, ptr %1350, align 8
  call void %1351(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 43, ptr %3, align 4
  store i32 1, ptr %12, align 4
  br label %1826

1352:                                             ; preds = %66
  %1353 = load ptr, ptr %39, align 8, !tbaa !18
  %1354 = getelementptr inbounds ptr, ptr %1353, i64 3
  %1355 = load ptr, ptr %1354, align 8
  %1356 = call noundef i32 %1355(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 %1356, ptr %8, align 4, !tbaa !9
  %1357 = load i32, ptr %8, align 4, !tbaa !9
  %1358 = icmp eq i32 %1357, 61
  br i1 %1358, label %1359, label %1360

1359:                                             ; preds = %1352
  store i32 131, ptr %3, align 4
  store i32 1, ptr %12, align 4
  br label %1826

1360:                                             ; preds = %1352
  %1361 = load ptr, ptr %39, align 8, !tbaa !18
  %1362 = getelementptr inbounds ptr, ptr %1361, i64 4
  %1363 = load ptr, ptr %1362, align 8
  call void %1363(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 42, ptr %3, align 4
  store i32 1, ptr %12, align 4
  br label %1826

1364:                                             ; preds = %66
  %1365 = load ptr, ptr %39, align 8, !tbaa !18
  %1366 = getelementptr inbounds ptr, ptr %1365, i64 3
  %1367 = load ptr, ptr %1366, align 8
  %1368 = call noundef i32 %1367(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 %1368, ptr %8, align 4, !tbaa !9
  %1369 = load i32, ptr %8, align 4, !tbaa !9
  %1370 = icmp eq i32 %1369, 61
  br i1 %1370, label %1371, label %1372

1371:                                             ; preds = %1364
  store i32 133, ptr %3, align 4
  store i32 1, ptr %12, align 4
  br label %1826

1372:                                             ; preds = %1364
  %1373 = load ptr, ptr %39, align 8, !tbaa !18
  %1374 = getelementptr inbounds ptr, ptr %1373, i64 4
  %1375 = load ptr, ptr %1374, align 8
  call void %1375(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 37, ptr %3, align 4
  store i32 1, ptr %12, align 4
  br label %1826

1376:                                             ; preds = %66
  %1377 = load ptr, ptr %39, align 8, !tbaa !18
  %1378 = getelementptr inbounds ptr, ptr %1377, i64 3
  %1379 = load ptr, ptr %1378, align 8
  %1380 = call noundef i32 %1379(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 %1380, ptr %8, align 4, !tbaa !9
  %1381 = load i32, ptr %8, align 4, !tbaa !9
  %1382 = icmp eq i32 %1381, 94
  br i1 %1382, label %1383, label %1384

1383:                                             ; preds = %1376
  store i32 143, ptr %3, align 4
  store i32 1, ptr %12, align 4
  br label %1826

1384:                                             ; preds = %1376
  %1385 = load i32, ptr %8, align 4, !tbaa !9
  %1386 = icmp eq i32 %1385, 61
  br i1 %1386, label %1387, label %1388

1387:                                             ; preds = %1384
  store i32 140, ptr %3, align 4
  store i32 1, ptr %12, align 4
  br label %1826

1388:                                             ; preds = %1384
  %1389 = load ptr, ptr %39, align 8, !tbaa !18
  %1390 = getelementptr inbounds ptr, ptr %1389, i64 4
  %1391 = load ptr, ptr %1390, align 8
  call void %1391(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 94, ptr %3, align 4
  store i32 1, ptr %12, align 4
  br label %1826

1392:                                             ; preds = %66
  %1393 = load ptr, ptr %39, align 8, !tbaa !18
  %1394 = getelementptr inbounds ptr, ptr %1393, i64 3
  %1395 = load ptr, ptr %1394, align 8
  %1396 = call noundef i32 %1395(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 %1396, ptr %8, align 4, !tbaa !9
  %1397 = load i32, ptr %8, align 4, !tbaa !9
  %1398 = icmp eq i32 %1397, 61
  br i1 %1398, label %1399, label %1400

1399:                                             ; preds = %1392
  store i32 144, ptr %3, align 4
  store i32 1, ptr %12, align 4
  br label %1826

1400:                                             ; preds = %1392
  %1401 = load ptr, ptr %39, align 8, !tbaa !18
  %1402 = getelementptr inbounds ptr, ptr %1401, i64 4
  %1403 = load ptr, ptr %1402, align 8
  call void %1403(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 61, ptr %3, align 4
  store i32 1, ptr %12, align 4
  br label %1826

1404:                                             ; preds = %66
  %1405 = load ptr, ptr %39, align 8, !tbaa !18
  %1406 = getelementptr inbounds ptr, ptr %1405, i64 3
  %1407 = load ptr, ptr %1406, align 8
  %1408 = call noundef i32 %1407(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 %1408, ptr %8, align 4, !tbaa !9
  %1409 = load i32, ptr %8, align 4, !tbaa !9
  %1410 = icmp eq i32 %1409, 61
  br i1 %1410, label %1411, label %1412

1411:                                             ; preds = %1404
  store i32 145, ptr %3, align 4
  store i32 1, ptr %12, align 4
  br label %1826

1412:                                             ; preds = %1404
  %1413 = load ptr, ptr %39, align 8, !tbaa !18
  %1414 = getelementptr inbounds ptr, ptr %1413, i64 4
  %1415 = load ptr, ptr %1414, align 8
  call void %1415(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 33, ptr %3, align 4
  store i32 1, ptr %12, align 4
  br label %1826

1416:                                             ; preds = %66
  %1417 = load ptr, ptr %39, align 8, !tbaa !18
  %1418 = getelementptr inbounds ptr, ptr %1417, i64 3
  %1419 = load ptr, ptr %1418, align 8
  %1420 = call noundef i32 %1419(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 %1420, ptr %8, align 4, !tbaa !9
  %1421 = load i32, ptr %8, align 4, !tbaa !9
  %1422 = icmp eq i32 %1421, 124
  br i1 %1422, label %1423, label %1424

1423:                                             ; preds = %1416
  store i32 142, ptr %3, align 4
  store i32 1, ptr %12, align 4
  br label %1826

1424:                                             ; preds = %1416
  %1425 = load i32, ptr %8, align 4, !tbaa !9
  %1426 = icmp eq i32 %1425, 61
  br i1 %1426, label %1427, label %1428

1427:                                             ; preds = %1424
  store i32 139, ptr %3, align 4
  store i32 1, ptr %12, align 4
  br label %1826

1428:                                             ; preds = %1424
  %1429 = load ptr, ptr %39, align 8, !tbaa !18
  %1430 = getelementptr inbounds ptr, ptr %1429, i64 4
  %1431 = load ptr, ptr %1430, align 8
  call void %1431(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 124, ptr %3, align 4
  store i32 1, ptr %12, align 4
  br label %1826

1432:                                             ; preds = %66
  %1433 = load ptr, ptr %39, align 8, !tbaa !18
  %1434 = getelementptr inbounds ptr, ptr %1433, i64 3
  %1435 = load ptr, ptr %1434, align 8
  %1436 = call noundef i32 %1435(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 %1436, ptr %8, align 4, !tbaa !9
  %1437 = load i32, ptr %8, align 4, !tbaa !9
  %1438 = icmp eq i32 %1437, 38
  br i1 %1438, label %1439, label %1440

1439:                                             ; preds = %1432
  store i32 141, ptr %3, align 4
  store i32 1, ptr %12, align 4
  br label %1826

1440:                                             ; preds = %1432
  %1441 = load i32, ptr %8, align 4, !tbaa !9
  %1442 = icmp eq i32 %1441, 61
  br i1 %1442, label %1443, label %1444

1443:                                             ; preds = %1440
  store i32 138, ptr %3, align 4
  store i32 1, ptr %12, align 4
  br label %1826

1444:                                             ; preds = %1440
  %1445 = load ptr, ptr %39, align 8, !tbaa !18
  %1446 = getelementptr inbounds ptr, ptr %1445, i64 4
  %1447 = load ptr, ptr %1446, align 8
  call void %1447(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 38, ptr %3, align 4
  store i32 1, ptr %12, align 4
  br label %1826

1448:                                             ; preds = %66
  %1449 = load ptr, ptr %39, align 8, !tbaa !18
  %1450 = getelementptr inbounds ptr, ptr %1449, i64 3
  %1451 = load ptr, ptr %1450, align 8
  %1452 = call noundef i32 %1451(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 %1452, ptr %8, align 4, !tbaa !9
  %1453 = load i32, ptr %8, align 4, !tbaa !9
  %1454 = icmp eq i32 %1453, 60
  br i1 %1454, label %1455, label %1467

1455:                                             ; preds = %1448
  %1456 = load ptr, ptr %39, align 8, !tbaa !18
  %1457 = getelementptr inbounds ptr, ptr %1456, i64 3
  %1458 = load ptr, ptr %1457, align 8
  %1459 = call noundef i32 %1458(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 %1459, ptr %8, align 4, !tbaa !9
  %1460 = load i32, ptr %8, align 4, !tbaa !9
  %1461 = icmp eq i32 %1460, 61
  br i1 %1461, label %1462, label %1463

1462:                                             ; preds = %1455
  store i32 137, ptr %3, align 4
  store i32 1, ptr %12, align 4
  br label %1826

1463:                                             ; preds = %1455
  %1464 = load ptr, ptr %39, align 8, !tbaa !18
  %1465 = getelementptr inbounds ptr, ptr %1464, i64 4
  %1466 = load ptr, ptr %1465, align 8
  call void %1466(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 135, ptr %3, align 4
  store i32 1, ptr %12, align 4
  br label %1826

1467:                                             ; preds = %1448
  %1468 = load i32, ptr %8, align 4, !tbaa !9
  %1469 = icmp eq i32 %1468, 61
  br i1 %1469, label %1470, label %1471

1470:                                             ; preds = %1467
  store i32 147, ptr %3, align 4
  store i32 1, ptr %12, align 4
  br label %1826

1471:                                             ; preds = %1467
  %1472 = load ptr, ptr %39, align 8, !tbaa !18
  %1473 = getelementptr inbounds ptr, ptr %1472, i64 4
  %1474 = load ptr, ptr %1473, align 8
  call void %1474(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 60, ptr %3, align 4
  store i32 1, ptr %12, align 4
  br label %1826

1475:                                             ; preds = %66
  %1476 = load ptr, ptr %39, align 8, !tbaa !18
  %1477 = getelementptr inbounds ptr, ptr %1476, i64 3
  %1478 = load ptr, ptr %1477, align 8
  %1479 = call noundef i32 %1478(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 %1479, ptr %8, align 4, !tbaa !9
  %1480 = load i32, ptr %8, align 4, !tbaa !9
  %1481 = icmp eq i32 %1480, 62
  br i1 %1481, label %1482, label %1494

1482:                                             ; preds = %1475
  %1483 = load ptr, ptr %39, align 8, !tbaa !18
  %1484 = getelementptr inbounds ptr, ptr %1483, i64 3
  %1485 = load ptr, ptr %1484, align 8
  %1486 = call noundef i32 %1485(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 %1486, ptr %8, align 4, !tbaa !9
  %1487 = load i32, ptr %8, align 4, !tbaa !9
  %1488 = icmp eq i32 %1487, 61
  br i1 %1488, label %1489, label %1490

1489:                                             ; preds = %1482
  store i32 136, ptr %3, align 4
  store i32 1, ptr %12, align 4
  br label %1826

1490:                                             ; preds = %1482
  %1491 = load ptr, ptr %39, align 8, !tbaa !18
  %1492 = getelementptr inbounds ptr, ptr %1491, i64 4
  %1493 = load ptr, ptr %1492, align 8
  call void %1493(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 134, ptr %3, align 4
  store i32 1, ptr %12, align 4
  br label %1826

1494:                                             ; preds = %1475
  %1495 = load i32, ptr %8, align 4, !tbaa !9
  %1496 = icmp eq i32 %1495, 61
  br i1 %1496, label %1497, label %1498

1497:                                             ; preds = %1494
  store i32 146, ptr %3, align 4
  store i32 1, ptr %12, align 4
  br label %1826

1498:                                             ; preds = %1494
  %1499 = load ptr, ptr %39, align 8, !tbaa !18
  %1500 = getelementptr inbounds ptr, ptr %1499, i64 4
  %1501 = load ptr, ptr %1500, align 8
  call void %1501(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 62, ptr %3, align 4
  store i32 1, ptr %12, align 4
  br label %1826

1502:                                             ; preds = %66
  %1503 = load ptr, ptr %39, align 8, !tbaa !18
  %1504 = getelementptr inbounds ptr, ptr %1503, i64 3
  %1505 = load ptr, ptr %1504, align 8
  %1506 = call noundef i32 %1505(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 %1506, ptr %8, align 4, !tbaa !9
  %1507 = load i32, ptr %8, align 4, !tbaa !9
  %1508 = icmp sge i32 %1507, 48
  br i1 %1508, label %1509, label %1520

1509:                                             ; preds = %1502
  %1510 = load i32, ptr %8, align 4, !tbaa !9
  %1511 = icmp sle i32 %1510, 57
  br i1 %1511, label %1512, label %1520

1512:                                             ; preds = %1509
  %1513 = load ptr, ptr %39, align 8, !tbaa !18
  %1514 = getelementptr inbounds ptr, ptr %1513, i64 4
  %1515 = load ptr, ptr %1514, align 8
  call void %1515(ptr noundef nonnull align 8 dereferenceable(32) %39)
  %1516 = getelementptr inbounds %"class.glslang::TPpContext::tInput", ptr %39, i32 0, i32 2
  %1517 = load ptr, ptr %1516, align 8, !tbaa !22
  %1518 = load ptr, ptr %5, align 8, !tbaa !5
  %1519 = call noundef i32 @_ZN7glslang10TPpContext11lFloatConstEiiPNS_8TPpTokenE(ptr noundef nonnull align 8 dereferenceable(921) %1517, i32 noundef 0, i32 noundef 46, ptr noundef %1518)
  store i32 %1519, ptr %3, align 4
  store i32 1, ptr %12, align 4
  br label %1826

1520:                                             ; preds = %1509, %1502
  %1521 = load ptr, ptr %39, align 8, !tbaa !18
  %1522 = getelementptr inbounds ptr, ptr %1521, i64 4
  %1523 = load ptr, ptr %1522, align 8
  call void %1523(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 46, ptr %3, align 4
  store i32 1, ptr %12, align 4
  br label %1826

1524:                                             ; preds = %66
  %1525 = load ptr, ptr %39, align 8, !tbaa !18
  %1526 = getelementptr inbounds ptr, ptr %1525, i64 3
  %1527 = load ptr, ptr %1526, align 8
  %1528 = call noundef i32 %1527(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 %1528, ptr %8, align 4, !tbaa !9
  %1529 = load i32, ptr %8, align 4, !tbaa !9
  %1530 = icmp eq i32 %1529, 47
  br i1 %1530, label %1531, label %1555

1531:                                             ; preds = %1524
  %1532 = getelementptr inbounds %"class.glslang::TPpContext::tInput", ptr %39, i32 0, i32 2
  %1533 = load ptr, ptr %1532, align 8, !tbaa !22
  %1534 = getelementptr inbounds %"class.glslang::TPpContext", ptr %1533, i32 0, i32 23
  store i8 1, ptr %1534, align 8, !tbaa !106
  br label %1535

1535:                                             ; preds = %1546, %1531
  %1536 = load ptr, ptr %39, align 8, !tbaa !18
  %1537 = getelementptr inbounds ptr, ptr %1536, i64 3
  %1538 = load ptr, ptr %1537, align 8
  %1539 = call noundef i32 %1538(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 %1539, ptr %8, align 4, !tbaa !9
  br label %1540

1540:                                             ; preds = %1535
  %1541 = load i32, ptr %8, align 4, !tbaa !9
  %1542 = icmp ne i32 %1541, 10
  br i1 %1542, label %1543, label %1546

1543:                                             ; preds = %1540
  %1544 = load i32, ptr %8, align 4, !tbaa !9
  %1545 = icmp ne i32 %1544, -1
  br label %1546

1546:                                             ; preds = %1543, %1540
  %1547 = phi i1 [ false, %1540 ], [ %1545, %1543 ]
  br i1 %1547, label %1535, label %1548, !llvm.loop !107

1548:                                             ; preds = %1546
  %1549 = load ptr, ptr %5, align 8, !tbaa !5
  %1550 = getelementptr inbounds %"class.glslang::TPpToken", ptr %1549, i32 0, i32 1
  store i8 1, ptr %1550, align 8, !tbaa !14
  %1551 = getelementptr inbounds %"class.glslang::TPpContext::tInput", ptr %39, i32 0, i32 2
  %1552 = load ptr, ptr %1551, align 8, !tbaa !22
  %1553 = getelementptr inbounds %"class.glslang::TPpContext", ptr %1552, i32 0, i32 23
  store i8 0, ptr %1553, align 8, !tbaa !106
  %1554 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %1554, ptr %3, align 4
  store i32 1, ptr %12, align 4
  br label %1826

1555:                                             ; preds = %1524
  %1556 = load i32, ptr %8, align 4, !tbaa !9
  %1557 = icmp eq i32 %1556, 42
  br i1 %1557, label %1558, label %1611

1558:                                             ; preds = %1555
  %1559 = load ptr, ptr %39, align 8, !tbaa !18
  %1560 = getelementptr inbounds ptr, ptr %1559, i64 3
  %1561 = load ptr, ptr %1560, align 8
  %1562 = call noundef i32 %1561(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 %1562, ptr %8, align 4, !tbaa !9
  br label %1563

1563:                                             ; preds = %1605, %1558
  br label %1564

1564:                                             ; preds = %1581, %1563
  %1565 = load i32, ptr %8, align 4, !tbaa !9
  %1566 = icmp ne i32 %1565, 42
  br i1 %1566, label %1567, label %1586

1567:                                             ; preds = %1564
  %1568 = load i32, ptr %8, align 4, !tbaa !9
  %1569 = icmp eq i32 %1568, -1
  br i1 %1569, label %1570, label %1581

1570:                                             ; preds = %1567
  %1571 = getelementptr inbounds %"class.glslang::TPpContext::tInput", ptr %39, i32 0, i32 2
  %1572 = load ptr, ptr %1571, align 8, !tbaa !22
  %1573 = getelementptr inbounds %"class.glslang::TPpContext", ptr %1572, i32 0, i32 12
  %1574 = load ptr, ptr %1573, align 8, !tbaa !24
  %1575 = load ptr, ptr %5, align 8, !tbaa !5
  %1576 = getelementptr inbounds %"class.glslang::TPpToken", ptr %1575, i32 0, i32 0
  %1577 = load ptr, ptr %1574, align 8, !tbaa !18
  %1578 = getelementptr inbounds ptr, ptr %1577, i64 44
  %1579 = load ptr, ptr %1578, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %1579(ptr noundef nonnull align 8 dereferenceable(1176) %1574, ptr noundef nonnull align 8 dereferenceable(24) %1576, ptr noundef @.str.32, ptr noundef @.str.33, ptr noundef @.str.1)
  %1580 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %1580, ptr %3, align 4
  store i32 1, ptr %12, align 4
  br label %1826

1581:                                             ; preds = %1567
  %1582 = load ptr, ptr %39, align 8, !tbaa !18
  %1583 = getelementptr inbounds ptr, ptr %1582, i64 3
  %1584 = load ptr, ptr %1583, align 8
  %1585 = call noundef i32 %1584(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 %1585, ptr %8, align 4, !tbaa !9
  br label %1564, !llvm.loop !108

1586:                                             ; preds = %1564
  %1587 = load ptr, ptr %39, align 8, !tbaa !18
  %1588 = getelementptr inbounds ptr, ptr %1587, i64 3
  %1589 = load ptr, ptr %1588, align 8
  %1590 = call noundef i32 %1589(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 %1590, ptr %8, align 4, !tbaa !9
  %1591 = load i32, ptr %8, align 4, !tbaa !9
  %1592 = icmp eq i32 %1591, -1
  br i1 %1592, label %1593, label %1604

1593:                                             ; preds = %1586
  %1594 = getelementptr inbounds %"class.glslang::TPpContext::tInput", ptr %39, i32 0, i32 2
  %1595 = load ptr, ptr %1594, align 8, !tbaa !22
  %1596 = getelementptr inbounds %"class.glslang::TPpContext", ptr %1595, i32 0, i32 12
  %1597 = load ptr, ptr %1596, align 8, !tbaa !24
  %1598 = load ptr, ptr %5, align 8, !tbaa !5
  %1599 = getelementptr inbounds %"class.glslang::TPpToken", ptr %1598, i32 0, i32 0
  %1600 = load ptr, ptr %1597, align 8, !tbaa !18
  %1601 = getelementptr inbounds ptr, ptr %1600, i64 44
  %1602 = load ptr, ptr %1601, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %1602(ptr noundef nonnull align 8 dereferenceable(1176) %1597, ptr noundef nonnull align 8 dereferenceable(24) %1599, ptr noundef @.str.32, ptr noundef @.str.33, ptr noundef @.str.1)
  %1603 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %1603, ptr %3, align 4
  store i32 1, ptr %12, align 4
  br label %1826

1604:                                             ; preds = %1586
  br label %1605

1605:                                             ; preds = %1604
  %1606 = load i32, ptr %8, align 4, !tbaa !9
  %1607 = icmp ne i32 %1606, 47
  br i1 %1607, label %1563, label %1608, !llvm.loop !109

1608:                                             ; preds = %1605
  %1609 = load ptr, ptr %5, align 8, !tbaa !5
  %1610 = getelementptr inbounds %"class.glslang::TPpToken", ptr %1609, i32 0, i32 1
  store i8 1, ptr %1610, align 8, !tbaa !14
  br label %1821

1611:                                             ; preds = %1555
  %1612 = load i32, ptr %8, align 4, !tbaa !9
  %1613 = icmp eq i32 %1612, 61
  br i1 %1613, label %1614, label %1615

1614:                                             ; preds = %1611
  store i32 132, ptr %3, align 4
  store i32 1, ptr %12, align 4
  br label %1826

1615:                                             ; preds = %1611
  %1616 = load ptr, ptr %39, align 8, !tbaa !18
  %1617 = getelementptr inbounds ptr, ptr %1616, i64 4
  %1618 = load ptr, ptr %1617, align 8
  call void %1618(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 47, ptr %3, align 4
  store i32 1, ptr %12, align 4
  br label %1826

1619:                                             ; preds = %66
  %1620 = getelementptr inbounds %"class.glslang::TPpContext::tInput", ptr %39, i32 0, i32 2
  %1621 = load ptr, ptr %1620, align 8, !tbaa !22
  %1622 = load ptr, ptr %5, align 8, !tbaa !5
  %1623 = call noundef i32 @_ZN7glslang10TPpContext16characterLiteralEPNS_8TPpTokenE(ptr noundef nonnull align 8 dereferenceable(921) %1621, ptr noundef %1622)
  store i32 %1623, ptr %3, align 4
  store i32 1, ptr %12, align 4
  br label %1826

1624:                                             ; preds = %66
  %1625 = load ptr, ptr %39, align 8, !tbaa !18
  %1626 = getelementptr inbounds ptr, ptr %1625, i64 3
  %1627 = load ptr, ptr %1626, align 8
  %1628 = call noundef i32 %1627(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 %1628, ptr %8, align 4, !tbaa !9
  br label %1629

1629:                                             ; preds = %1786, %1624
  %1630 = load i32, ptr %8, align 4, !tbaa !9
  %1631 = icmp ne i32 %1630, 34
  br i1 %1631, label %1632, label %1638

1632:                                             ; preds = %1629
  %1633 = load i32, ptr %8, align 4, !tbaa !9
  %1634 = icmp ne i32 %1633, 10
  br i1 %1634, label %1635, label %1638

1635:                                             ; preds = %1632
  %1636 = load i32, ptr %8, align 4, !tbaa !9
  %1637 = icmp ne i32 %1636, -1
  br label %1638

1638:                                             ; preds = %1635, %1632, %1629
  %1639 = phi i1 [ false, %1632 ], [ false, %1629 ], [ %1637, %1635 ]
  br i1 %1639, label %1640, label %1787

1640:                                             ; preds = %1638
  %1641 = load i32, ptr %7, align 4, !tbaa !9
  %1642 = icmp slt i32 %1641, 1024
  br i1 %1642, label %1643, label %1785

1643:                                             ; preds = %1640
  %1644 = load i32, ptr %8, align 4, !tbaa !9
  %1645 = icmp eq i32 %1644, 92
  br i1 %1645, label %1646, label %1771

1646:                                             ; preds = %1643
  %1647 = getelementptr inbounds %"class.glslang::TPpContext::tInput", ptr %39, i32 0, i32 2
  %1648 = load ptr, ptr %1647, align 8, !tbaa !22
  %1649 = getelementptr inbounds %"class.glslang::TPpContext", ptr %1648, i32 0, i32 29
  %1650 = load i8, ptr %1649, align 8, !tbaa !110, !range !97, !noundef !98
  %1651 = trunc i8 %1650 to i1
  br i1 %1651, label %1771, label %1652

1652:                                             ; preds = %1646
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #6
  %1653 = load ptr, ptr %39, align 8, !tbaa !18
  %1654 = getelementptr inbounds ptr, ptr %1653, i64 3
  %1655 = load ptr, ptr %1654, align 8
  %1656 = call noundef i32 %1655(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 %1656, ptr %36, align 4, !tbaa !9
  %1657 = load i32, ptr %36, align 4, !tbaa !9
  switch i32 %1657, label %1760 [
    i32 39, label %1658
    i32 34, label %1659
    i32 63, label %1660
    i32 92, label %1661
    i32 97, label %1662
    i32 98, label %1663
    i32 102, label %1664
    i32 110, label %1665
    i32 114, label %1666
    i32 116, label %1667
    i32 118, label %1668
    i32 120, label %1669
    i32 48, label %1729
    i32 49, label %1729
    i32 50, label %1729
    i32 51, label %1729
    i32 52, label %1729
    i32 53, label %1729
    i32 54, label %1729
    i32 55, label %1729
  ]

1658:                                             ; preds = %1652
  store i32 39, ptr %8, align 4, !tbaa !9
  br label %1770

1659:                                             ; preds = %1652
  store i32 34, ptr %8, align 4, !tbaa !9
  br label %1770

1660:                                             ; preds = %1652
  store i32 63, ptr %8, align 4, !tbaa !9
  br label %1770

1661:                                             ; preds = %1652
  store i32 92, ptr %8, align 4, !tbaa !9
  br label %1770

1662:                                             ; preds = %1652
  store i32 7, ptr %8, align 4, !tbaa !9
  br label %1770

1663:                                             ; preds = %1652
  store i32 8, ptr %8, align 4, !tbaa !9
  br label %1770

1664:                                             ; preds = %1652
  store i32 12, ptr %8, align 4, !tbaa !9
  br label %1770

1665:                                             ; preds = %1652
  store i32 10, ptr %8, align 4, !tbaa !9
  br label %1770

1666:                                             ; preds = %1652
  store i32 13, ptr %8, align 4, !tbaa !9
  br label %1770

1667:                                             ; preds = %1652
  store i32 9, ptr %8, align 4, !tbaa !9
  br label %1770

1668:                                             ; preds = %1652
  store i32 11, ptr %8, align 4, !tbaa !9
  br label %1770

1669:                                             ; preds = %1652
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #6
  store i32 0, ptr %37, align 4, !tbaa !9
  store i32 0, ptr %8, align 4, !tbaa !9
  br label %1670

1670:                                             ; preds = %1708, %1669
  br label %1671

1671:                                             ; preds = %1670
  %1672 = load ptr, ptr %39, align 8, !tbaa !18
  %1673 = getelementptr inbounds ptr, ptr %1672, i64 3
  %1674 = load ptr, ptr %1673, align 8
  %1675 = call noundef i32 %1674(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 %1675, ptr %36, align 4, !tbaa !9
  %1676 = load i32, ptr %36, align 4, !tbaa !9
  %1677 = icmp sge i32 %1676, 48
  br i1 %1677, label %1678, label %1684

1678:                                             ; preds = %1671
  %1679 = load i32, ptr %36, align 4, !tbaa !9
  %1680 = icmp sle i32 %1679, 57
  br i1 %1680, label %1681, label %1684

1681:                                             ; preds = %1678
  %1682 = load i32, ptr %36, align 4, !tbaa !9
  %1683 = sub nsw i32 %1682, 48
  store i32 %1683, ptr %36, align 4, !tbaa !9
  br label %1708

1684:                                             ; preds = %1678, %1671
  %1685 = load i32, ptr %36, align 4, !tbaa !9
  %1686 = icmp sge i32 %1685, 65
  br i1 %1686, label %1687, label %1693

1687:                                             ; preds = %1684
  %1688 = load i32, ptr %36, align 4, !tbaa !9
  %1689 = icmp sle i32 %1688, 70
  br i1 %1689, label %1690, label %1693

1690:                                             ; preds = %1687
  %1691 = load i32, ptr %36, align 4, !tbaa !9
  %1692 = sub nsw i32 %1691, 55
  store i32 %1692, ptr %36, align 4, !tbaa !9
  br label %1707

1693:                                             ; preds = %1687, %1684
  %1694 = load i32, ptr %36, align 4, !tbaa !9
  %1695 = icmp sge i32 %1694, 97
  br i1 %1695, label %1696, label %1702

1696:                                             ; preds = %1693
  %1697 = load i32, ptr %36, align 4, !tbaa !9
  %1698 = icmp sle i32 %1697, 102
  br i1 %1698, label %1699, label %1702

1699:                                             ; preds = %1696
  %1700 = load i32, ptr %36, align 4, !tbaa !9
  %1701 = sub nsw i32 %1700, 87
  store i32 %1701, ptr %36, align 4, !tbaa !9
  br label %1706

1702:                                             ; preds = %1696, %1693
  %1703 = load ptr, ptr %39, align 8, !tbaa !18
  %1704 = getelementptr inbounds ptr, ptr %1703, i64 4
  %1705 = load ptr, ptr %1704, align 8
  call void %1705(ptr noundef nonnull align 8 dereferenceable(32) %39)
  br label %1715

1706:                                             ; preds = %1699
  br label %1707

1707:                                             ; preds = %1706, %1690
  br label %1708

1708:                                             ; preds = %1707, %1681
  %1709 = load i32, ptr %37, align 4, !tbaa !9
  %1710 = add nsw i32 %1709, 1
  store i32 %1710, ptr %37, align 4, !tbaa !9
  %1711 = load i32, ptr %8, align 4, !tbaa !9
  %1712 = mul nsw i32 %1711, 16
  %1713 = load i32, ptr %36, align 4, !tbaa !9
  %1714 = add nsw i32 %1712, %1713
  store i32 %1714, ptr %8, align 4, !tbaa !9
  br label %1670, !llvm.loop !111

1715:                                             ; preds = %1702
  %1716 = load i32, ptr %37, align 4, !tbaa !9
  %1717 = icmp eq i32 %1716, 0
  br i1 %1717, label %1718, label %1728

1718:                                             ; preds = %1715
  %1719 = getelementptr inbounds %"class.glslang::TPpContext::tInput", ptr %39, i32 0, i32 2
  %1720 = load ptr, ptr %1719, align 8, !tbaa !22
  %1721 = getelementptr inbounds %"class.glslang::TPpContext", ptr %1720, i32 0, i32 12
  %1722 = load ptr, ptr %1721, align 8, !tbaa !24
  %1723 = load ptr, ptr %5, align 8, !tbaa !5
  %1724 = getelementptr inbounds %"class.glslang::TPpToken", ptr %1723, i32 0, i32 0
  %1725 = load ptr, ptr %1722, align 8, !tbaa !18
  %1726 = getelementptr inbounds ptr, ptr %1725, i64 44
  %1727 = load ptr, ptr %1726, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %1727(ptr noundef nonnull align 8 dereferenceable(1176) %1722, ptr noundef nonnull align 8 dereferenceable(24) %1724, ptr noundef @.str.34, ptr noundef @.str.35, ptr noundef @.str.1)
  br label %1728

1728:                                             ; preds = %1718, %1715
  store i32 28, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #6
  br label %1770

1729:                                             ; preds = %1652, %1652, %1652, %1652, %1652, %1652, %1652, %1652
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #6
  store i32 1, ptr %38, align 4, !tbaa !9
  %1730 = load i32, ptr %36, align 4, !tbaa !9
  %1731 = sub nsw i32 %1730, 48
  store i32 %1731, ptr %8, align 4, !tbaa !9
  br label %1732

1732:                                             ; preds = %1752, %1729
  %1733 = load i32, ptr %38, align 4, !tbaa !9
  %1734 = icmp slt i32 %1733, 3
  br i1 %1734, label %1735, label %1759

1735:                                             ; preds = %1732
  %1736 = load ptr, ptr %39, align 8, !tbaa !18
  %1737 = getelementptr inbounds ptr, ptr %1736, i64 3
  %1738 = load ptr, ptr %1737, align 8
  %1739 = call noundef i32 %1738(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 %1739, ptr %36, align 4, !tbaa !9
  %1740 = load i32, ptr %36, align 4, !tbaa !9
  %1741 = icmp sge i32 %1740, 48
  br i1 %1741, label %1742, label %1748

1742:                                             ; preds = %1735
  %1743 = load i32, ptr %36, align 4, !tbaa !9
  %1744 = icmp sle i32 %1743, 55
  br i1 %1744, label %1745, label %1748

1745:                                             ; preds = %1742
  %1746 = load i32, ptr %36, align 4, !tbaa !9
  %1747 = sub nsw i32 %1746, 48
  store i32 %1747, ptr %36, align 4, !tbaa !9
  br label %1752

1748:                                             ; preds = %1742, %1735
  %1749 = load ptr, ptr %39, align 8, !tbaa !18
  %1750 = getelementptr inbounds ptr, ptr %1749, i64 4
  %1751 = load ptr, ptr %1750, align 8
  call void %1751(ptr noundef nonnull align 8 dereferenceable(32) %39)
  br label %1759

1752:                                             ; preds = %1745
  %1753 = load i32, ptr %38, align 4, !tbaa !9
  %1754 = add nsw i32 %1753, 1
  store i32 %1754, ptr %38, align 4, !tbaa !9
  %1755 = load i32, ptr %8, align 4, !tbaa !9
  %1756 = mul nsw i32 %1755, 8
  %1757 = load i32, ptr %36, align 4, !tbaa !9
  %1758 = add nsw i32 %1756, %1757
  store i32 %1758, ptr %8, align 4, !tbaa !9
  br label %1732, !llvm.loop !112

1759:                                             ; preds = %1748, %1732
  store i32 28, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #6
  br label %1770

1760:                                             ; preds = %1652
  %1761 = getelementptr inbounds %"class.glslang::TPpContext::tInput", ptr %39, i32 0, i32 2
  %1762 = load ptr, ptr %1761, align 8, !tbaa !22
  %1763 = getelementptr inbounds %"class.glslang::TPpContext", ptr %1762, i32 0, i32 12
  %1764 = load ptr, ptr %1763, align 8, !tbaa !24
  %1765 = load ptr, ptr %5, align 8, !tbaa !5
  %1766 = getelementptr inbounds %"class.glslang::TPpToken", ptr %1765, i32 0, i32 0
  %1767 = load ptr, ptr %1764, align 8, !tbaa !18
  %1768 = getelementptr inbounds ptr, ptr %1767, i64 44
  %1769 = load ptr, ptr %1768, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %1769(ptr noundef nonnull align 8 dereferenceable(1176) %1764, ptr noundef nonnull align 8 dereferenceable(24) %1766, ptr noundef @.str.36, ptr noundef @.str.35, ptr noundef @.str.1)
  br label %1770

1770:                                             ; preds = %1760, %1759, %1728, %1668, %1667, %1666, %1665, %1664, %1663, %1662, %1661, %1660, %1659, %1658
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #6
  br label %1771

1771:                                             ; preds = %1770, %1646, %1643
  %1772 = load i32, ptr %8, align 4, !tbaa !9
  %1773 = trunc i32 %1772 to i8
  %1774 = load ptr, ptr %5, align 8, !tbaa !5
  %1775 = getelementptr inbounds %"class.glslang::TPpToken", ptr %1774, i32 0, i32 4
  %1776 = load i32, ptr %7, align 4, !tbaa !9
  %1777 = sext i32 %1776 to i64
  %1778 = getelementptr inbounds [1025 x i8], ptr %1775, i64 0, i64 %1777
  store i8 %1773, ptr %1778, align 1, !tbaa !13
  %1779 = load i32, ptr %7, align 4, !tbaa !9
  %1780 = add nsw i32 %1779, 1
  store i32 %1780, ptr %7, align 4, !tbaa !9
  %1781 = load ptr, ptr %39, align 8, !tbaa !18
  %1782 = getelementptr inbounds ptr, ptr %1781, i64 3
  %1783 = load ptr, ptr %1782, align 8
  %1784 = call noundef i32 %1783(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 %1784, ptr %8, align 4, !tbaa !9
  br label %1786

1785:                                             ; preds = %1640
  br label %1787

1786:                                             ; preds = %1771
  br label %1629, !llvm.loop !113

1787:                                             ; preds = %1785, %1638
  %1788 = load ptr, ptr %5, align 8, !tbaa !5
  %1789 = getelementptr inbounds %"class.glslang::TPpToken", ptr %1788, i32 0, i32 4
  %1790 = load i32, ptr %7, align 4, !tbaa !9
  %1791 = sext i32 %1790 to i64
  %1792 = getelementptr inbounds [1025 x i8], ptr %1789, i64 0, i64 %1791
  store i8 0, ptr %1792, align 1, !tbaa !13
  %1793 = load i32, ptr %8, align 4, !tbaa !9
  %1794 = icmp ne i32 %1793, 34
  br i1 %1794, label %1795, label %1808

1795:                                             ; preds = %1787
  %1796 = load ptr, ptr %39, align 8, !tbaa !18
  %1797 = getelementptr inbounds ptr, ptr %1796, i64 4
  %1798 = load ptr, ptr %1797, align 8
  call void %1798(ptr noundef nonnull align 8 dereferenceable(32) %39)
  %1799 = getelementptr inbounds %"class.glslang::TPpContext::tInput", ptr %39, i32 0, i32 2
  %1800 = load ptr, ptr %1799, align 8, !tbaa !22
  %1801 = getelementptr inbounds %"class.glslang::TPpContext", ptr %1800, i32 0, i32 12
  %1802 = load ptr, ptr %1801, align 8, !tbaa !24
  %1803 = load ptr, ptr %5, align 8, !tbaa !5
  %1804 = getelementptr inbounds %"class.glslang::TPpToken", ptr %1803, i32 0, i32 0
  %1805 = load ptr, ptr %1802, align 8, !tbaa !18
  %1806 = getelementptr inbounds ptr, ptr %1805, i64 44
  %1807 = load ptr, ptr %1806, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %1807(ptr noundef nonnull align 8 dereferenceable(1176) %1802, ptr noundef nonnull align 8 dereferenceable(24) %1804, ptr noundef @.str.37, ptr noundef @.str.35, ptr noundef @.str.1)
  br label %1808

1808:                                             ; preds = %1795, %1787
  store i32 161, ptr %3, align 4
  store i32 1, ptr %12, align 4
  br label %1826

1809:                                             ; preds = %66
  %1810 = load ptr, ptr %39, align 8, !tbaa !18
  %1811 = getelementptr inbounds ptr, ptr %1810, i64 3
  %1812 = load ptr, ptr %1811, align 8
  %1813 = call noundef i32 %1812(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 %1813, ptr %8, align 4, !tbaa !9
  %1814 = load i32, ptr %8, align 4, !tbaa !9
  %1815 = icmp eq i32 %1814, 58
  br i1 %1815, label %1816, label %1817

1816:                                             ; preds = %1809
  store i32 150, ptr %3, align 4
  store i32 1, ptr %12, align 4
  br label %1826

1817:                                             ; preds = %1809
  %1818 = load ptr, ptr %39, align 8, !tbaa !18
  %1819 = getelementptr inbounds ptr, ptr %1818, i64 4
  %1820 = load ptr, ptr %1819, align 8
  call void %1820(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 58, ptr %3, align 4
  store i32 1, ptr %12, align 4
  br label %1826

1821:                                             ; preds = %1608
  %1822 = load ptr, ptr %39, align 8, !tbaa !18
  %1823 = getelementptr inbounds ptr, ptr %1822, i64 3
  %1824 = load ptr, ptr %1823, align 8
  %1825 = call noundef i32 %1824(ptr noundef nonnull align 8 dereferenceable(32) %39)
  store i32 %1825, ptr %8, align 4, !tbaa !9
  br label %50, !llvm.loop !76

1826:                                             ; preds = %1817, %1816, %1808, %1619, %1615, %1614, %1593, %1570, %1548, %1520, %1512, %1498, %1497, %1490, %1489, %1471, %1470, %1463, %1462, %1444, %1443, %1439, %1428, %1427, %1423, %1412, %1411, %1400, %1399, %1388, %1387, %1383, %1372, %1371, %1360, %1359, %1348, %1347, %1343, %1332, %1331, %1327, %1319, %990, %946, %574, %144, %79
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #6
  %1827 = load i32, ptr %3, align 4
  ret i32 %1827
}

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #3

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @"_ZZN7glslang10TPpContext12tStringInput4scanEPNS_8TPpTokenEENK3$_0clEi"(ptr noundef nonnull align 1 dereferenceable(1), i32 noundef) #5 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 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { "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 #5 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { 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 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"long long", !7, i64 0}
!13 = !{!7, !7, i64 0}
!14 = !{!15, !17, i64 24}
!15 = !{!"_ZTSN7glslang8TPpTokenE", !16, i64 0, !17, i64 24, !7, i64 32, !7, i64 40}
!16 = !{!"_ZTSN7glslang10TSourceLocE", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16}
!17 = !{!"bool", !7, i64 0}
!18 = !{!19, !19, i64 0}
!19 = !{!"vtable pointer", !8, i64 0}
!20 = distinct !{!20, !21}
!21 = !{!"llvm.loop.mustprogress"}
!22 = !{!23, !6, i64 16}
!23 = !{!"_ZTSN7glslang10TPpContext6tInputE", !17, i64 8, !6, i64 16}
!24 = !{!25, !6, i64 256}
!25 = !{!"_ZTSN7glslang10TPpContextE", !26, i64 8, !37, i64 64, !6, i64 208, !10, i64 216, !6, i64 224, !6, i64 232, !10, i64 240, !10, i64 244, !10, i64 248, !6, i64 256, !10, i64 264, !7, i64 268, !10, i64 336, !56, i64 344, !17, i64 368, !17, i64 369, !6, i64 376, !17, i64 384, !60, i64 392, !62, i64 424, !60, i64 504, !68, i64 536, !17, i64 920}
!26 = !{!"_ZTSN7glslang4TMapIiNS_10TPpContext11MacroSymbolESt4lessIiEEE", !27, i64 0}
!27 = !{!"_ZTSSt3mapIiN7glslang10TPpContext11MacroSymbolESt4lessIiENS0_14pool_allocatorISt4pairIKiS2_EEEE", !28, i64 0}
!28 = !{!"_ZTSSt8_Rb_treeIiSt4pairIKiN7glslang10TPpContext11MacroSymbolEESt10_Select1stIS5_ESt4lessIiENS2_14pool_allocatorIS5_EEE", !29, i64 0}
!29 = !{!"_ZTSNSt8_Rb_treeIiSt4pairIKiN7glslang10TPpContext11MacroSymbolEESt10_Select1stIS5_ESt4lessIiENS2_14pool_allocatorIS5_EEE13_Rb_tree_implIS9_Lb1EEE", !30, i64 0, !31, i64 8, !33, i64 16}
!30 = !{!"_ZTSN7glslang14pool_allocatorISt13_Rb_tree_nodeISt4pairIKiNS_10TPpContext11MacroSymbolEEEEE", !6, i64 0}
!31 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIiEE", !32, i64 0}
!32 = !{!"_ZTSSt4lessIiE"}
!33 = !{!"_ZTSSt15_Rb_tree_header", !34, i64 0, !36, i64 32}
!34 = !{!"_ZTSSt18_Rb_tree_node_base", !35, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!35 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!36 = !{!"long", !7, i64 0}
!37 = !{!"_ZTSN7glslang14TStringAtomMapE", !38, i64 0, !47, i64 64, !10, i64 96, !53, i64 104}
!38 = !{!"_ZTSN7glslang13TUnorderedMapINSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEEiSt4hashIS7_ESt8equal_toIS7_EEE", !39, i64 0}
!39 = !{!"_ZTSSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEiSt4hashIS7_ESt8equal_toIS7_ENS5_ISt4pairIKS7_iEEEE", !40, i64 0}
!40 = !{!"_ZTSSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_iENS5_ISA_EENSt8__detail10_Select1stESt8equal_toIS7_ESt4hashIS7_ENSC_18_Mod_range_hashingENSC_20_Default_ranged_hashENSC_20_Prime_rehash_policyENSC_17_Hashtable_traitsILb1ELb0ELb1EEEE", !41, i64 0, !6, i64 8, !36, i64 16, !44, i64 24, !36, i64 32, !45, i64 40, !6, i64 56}
!41 = !{!"_ZTSNSt8__detail16_Hashtable_allocIN7glslang14pool_allocatorINS_10_Hash_nodeISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS2_IcEEEEiELb1EEEEEEE", !42, i64 0}
!42 = !{!"_ZTSNSt8__detail21_Hashtable_ebo_helperILi0EN7glslang14pool_allocatorINS_10_Hash_nodeISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS2_IcEEEEiELb1EEEEELb0EEE", !43, i64 0}
!43 = !{!"_ZTSN7glslang14pool_allocatorINSt8__detail10_Hash_nodeISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_IcEEEEiELb1EEEEE", !6, i64 0}
!44 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!45 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !46, i64 0, !36, i64 8}
!46 = !{!"float", !7, i64 0}
!47 = !{!"_ZTSN7glslang7TVectorIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEEEE", !48, i64 0}
!48 = !{!"_ZTSSt6vectorIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEENS5_IS9_EEE", !49, i64 0}
!49 = !{!"_ZTSSt12_Vector_baseIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEENS5_IS9_EEE", !50, i64 0}
!50 = !{!"_ZTSNSt12_Vector_baseIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEENS5_IS9_EEE12_Vector_implE", !51, i64 0, !52, i64 8}
!51 = !{!"_ZTSN7glslang14pool_allocatorIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_IcEEEEEE", !6, i64 0}
!52 = !{!"_ZTSNSt12_Vector_baseIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEENS5_IS9_EEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!53 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEE", !54, i64 0, !36, i64 16, !7, i64 24}
!54 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE12_Alloc_hiderE", !55, i64 0, !6, i64 8}
!55 = !{!"_ZTSN7glslang14pool_allocatorIcEE", !6, i64 0}
!56 = !{!"_ZTSSt6vectorIPN7glslang10TPpContext6tInputESaIS3_EE", !57, i64 0}
!57 = !{!"_ZTSSt12_Vector_baseIPN7glslang10TPpContext6tInputESaIS3_EE", !58, i64 0}
!58 = !{!"_ZTSNSt12_Vector_baseIPN7glslang10TPpContext6tInputESaIS3_EE12_Vector_implE", !59, i64 0}
!59 = !{!"_ZTSNSt12_Vector_baseIPN7glslang10TPpContext6tInputESaIS3_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!60 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !61, i64 0, !36, i64 8, !7, i64 16}
!61 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!62 = !{!"_ZTSSt5stackIPN7glslang7TShader8Includer13IncludeResultESt5dequeIS4_SaIS4_EEE", !63, i64 0}
!63 = !{!"_ZTSSt5dequeIPN7glslang7TShader8Includer13IncludeResultESaIS4_EE", !64, i64 0}
!64 = !{!"_ZTSSt11_Deque_baseIPN7glslang7TShader8Includer13IncludeResultESaIS4_EE", !65, i64 0}
!65 = !{!"_ZTSNSt11_Deque_baseIPN7glslang7TShader8Includer13IncludeResultESaIS4_EE11_Deque_implE", !66, i64 0}
!66 = !{!"_ZTSNSt11_Deque_baseIPN7glslang7TShader8Includer13IncludeResultESaIS4_EE16_Deque_impl_dataE", !6, i64 0, !36, i64 8, !67, i64 16, !67, i64 48}
!67 = !{!"_ZTSSt15_Deque_iteratorIPN7glslang7TShader8Includer13IncludeResultERS4_PS4_E", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!68 = !{!"_ZTSNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEE", !69, i64 0, !70, i64 16}
!69 = !{!"_ZTSSi", !36, i64 8}
!70 = !{!"_ZTSNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEE", !71, i64 0, !73, i64 64, !60, i64 72}
!71 = !{!"_ZTSSt15basic_streambufIcSt11char_traitsIcEE", !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !72, i64 56}
!72 = !{!"_ZTSSt6locale", !6, i64 0}
!73 = !{!"_ZTSSt13_Ios_Openmode", !7, i64 0}
!74 = !{i64 0, i64 8, !5, i64 8, i64 4, !9, i64 12, i64 4, !9, i64 16, i64 4, !9}
!75 = distinct !{!75, !21}
!76 = distinct !{!76, !21}
!77 = !{!17, !17, i64 0}
!78 = distinct !{!78, !21}
!79 = !{!80, !6, i64 56}
!80 = !{!"_ZTSN7glslang14TParseVersionsE", !17, i64 8, !81, i64 12, !6, i64 16, !10, i64 24, !82, i64 28, !83, i64 32, !6, i64 56, !84, i64 64, !91, i64 120, !96, i64 176, !10, i64 180, !6, i64 184}
!81 = !{!"_ZTS8EProfile", !7, i64 0}
!82 = !{!"_ZTS11EShLanguage", !7, i64 0}
!83 = !{!"_ZTSN7glslang10SpvVersionE", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !17, i64 16}
!84 = !{!"_ZTSN7glslang4TMapINSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEENS_18TExtensionBehaviorESt4lessIS7_EEE", !85, i64 0}
!85 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEENS4_18TExtensionBehaviorESt4lessIS7_ENS5_ISt4pairIKS7_S8_EEEE", !86, i64 0}
!86 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_NS4_18TExtensionBehaviorEESt10_Select1stISB_ESt4lessIS7_ENS5_ISB_EEE", !87, i64 0}
!87 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_NS4_18TExtensionBehaviorEESt10_Select1stISB_ESt4lessIS7_ENS5_ISB_EEE13_Rb_tree_implISF_Lb1EEE", !88, i64 0, !89, i64 8, !33, i64 16}
!88 = !{!"_ZTSN7glslang14pool_allocatorISt13_Rb_tree_nodeISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_IcEEEENS_18TExtensionBehaviorEEEEE", !6, i64 0}
!89 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEEE", !90, i64 0}
!90 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEE"}
!91 = !{!"_ZTSN7glslang4TMapINSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEEjSt4lessIS7_EEE", !92, i64 0}
!92 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEjSt4lessIS7_ENS5_ISt4pairIKS7_jEEEE", !93, i64 0}
!93 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_jESt10_Select1stISA_ESt4lessIS7_ENS5_ISA_EEE", !94, i64 0}
!94 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_jESt10_Select1stISA_ESt4lessIS7_ENS5_ISA_EEE13_Rb_tree_implISE_Lb1EEE", !95, i64 0, !89, i64 8, !33, i64 16}
!95 = !{!"_ZTSN7glslang14pool_allocatorISt13_Rb_tree_nodeISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_IcEEEEjEEEE", !6, i64 0}
!96 = !{!"_ZTS11EShMessages", !7, i64 0}
!97 = !{i8 0, i8 2}
!98 = !{}
!99 = !{!25, !10, i64 264}
!100 = distinct !{!100, !21}
!101 = distinct !{!101, !21}
!102 = distinct !{!102, !21}
!103 = !{!104, !104, i64 0}
!104 = !{!"short", !7, i64 0}
!105 = distinct !{!105, !21}
!106 = !{!25, !17, i64 384}
!107 = distinct !{!107, !21}
!108 = distinct !{!108, !21}
!109 = distinct !{!109, !21}
!110 = !{!25, !17, i64 920}
!111 = distinct !{!111, !21}
!112 = distinct !{!112, !21}
!113 = distinct !{!113, !21}


; 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.anon.159 = type { i8 }

@.str.1 = external hidden unnamed_addr constant [1 x i8], align 1
@_ZZN7glslang10TPpContext12tStringInput4scanEPNS_8TPpTokenEE16Int64_Extensions = external hidden constant [3 x ptr], align 16
@_ZZN7glslang10TPpContext12tStringInput4scanEPNS_8TPpTokenEE16Int16_Extensions = external hidden constant [3 x ptr], align 16
@.str.17 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [22 x i8], align 1

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN7glslang10TPpContext12tStringInput4scanEPNS_8TPpTokenE(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %1) unnamed_addr #0 align 2 {
  %3 = alloca %class.anon.159, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %3) #7
  %4 = getelementptr inbounds i8, ptr %1, i64 32
  store i64 0, ptr %4, align 8, !tbaa !5
  %5 = getelementptr inbounds i8, ptr %1, i64 24
  store i8 0, ptr %5, align 8, !tbaa !8
  %6 = load ptr, ptr %0, align 8, !tbaa !14
  %7 = getelementptr inbounds i8, ptr %6, i64 24
  %8 = load ptr, ptr %7, align 8
  %9 = tail call noundef i32 %8(ptr noundef nonnull align 8 dereferenceable(32) %0)
  %10 = getelementptr inbounds i8, ptr %0, i64 16
  %11 = getelementptr inbounds i8, ptr %1, i64 40
  br label %.outer

.outer:                                           ; preds = %47, %2
  %.0461.ph = phi i32 [ %42, %47 ], [ %9, %2 ]
  %.0443.ph = phi i32 [ %.3446, %47 ], [ 0, %2 ]
  br label %12

12:                                               ; preds = %.backedge, %.outer
  %.1462 = phi i32 [ %.0461.ph, %.outer ], [ %.1462.be, %.backedge ]
  switch i32 %.1462, label %18 [
    i32 32, label %13
    i32 9, label %13
  ]

13:                                               ; preds = %12, %12
  store i8 1, ptr %5, align 8, !tbaa !8
  %14 = load ptr, ptr %0, align 8, !tbaa !14
  %15 = getelementptr inbounds i8, ptr %14, i64 24
  %16 = load ptr, ptr %15, align 8
  %17 = tail call noundef i32 %16(ptr noundef nonnull align 8 dereferenceable(32) %0)
  br label %.backedge

.backedge:                                        ; preds = %13, %847
  %.1462.be = phi i32 [ %17, %13 ], [ %851, %847 ]
  br label %12, !llvm.loop !16

18:                                               ; preds = %12
  %19 = load ptr, ptr %10, align 8, !tbaa !18
  %20 = getelementptr inbounds i8, ptr %19, i64 256
  %21 = load ptr, ptr %20, align 8, !tbaa !20
  %22 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK7glslang14TParseVersions13getCurrentLocEv(ptr noundef nonnull align 8 dereferenceable(192) %21)
  tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(24) %22, i64 24, i1 false), !tbaa.struct !70
  switch i32 %.1462, label %23 [
    i32 65, label %.critedge.preheader
    i32 66, label %.critedge.preheader
    i32 67, label %.critedge.preheader
    i32 68, label %.critedge.preheader
    i32 69, label %.critedge.preheader
    i32 70, label %.critedge.preheader
    i32 71, label %.critedge.preheader
    i32 72, label %.critedge.preheader
    i32 73, label %.critedge.preheader
    i32 74, label %.critedge.preheader
    i32 75, label %.critedge.preheader
    i32 76, label %.critedge.preheader
    i32 77, label %.critedge.preheader
    i32 78, label %.critedge.preheader
    i32 79, label %.critedge.preheader
    i32 80, label %.critedge.preheader
    i32 81, label %.critedge.preheader
    i32 82, label %.critedge.preheader
    i32 83, label %.critedge.preheader
    i32 84, label %.critedge.preheader
    i32 85, label %.critedge.preheader
    i32 86, label %.critedge.preheader
    i32 87, label %.critedge.preheader
    i32 88, label %.critedge.preheader
    i32 89, label %.critedge.preheader
    i32 90, label %.critedge.preheader
    i32 95, label %.critedge.preheader
    i32 97, label %.critedge.preheader
    i32 98, label %.critedge.preheader
    i32 99, label %.critedge.preheader
    i32 100, label %.critedge.preheader
    i32 101, label %.critedge.preheader
    i32 102, label %.critedge.preheader
    i32 103, label %.critedge.preheader
    i32 104, label %.critedge.preheader
    i32 105, label %.critedge.preheader
    i32 106, label %.critedge.preheader
    i32 107, label %.critedge.preheader
    i32 108, label %.critedge.preheader
    i32 109, label %.critedge.preheader
    i32 110, label %.critedge.preheader
    i32 111, label %.critedge.preheader
    i32 112, label %.critedge.preheader
    i32 113, label %.critedge.preheader
    i32 114, label %.critedge.preheader
    i32 115, label %.critedge.preheader
    i32 116, label %.critedge.preheader
    i32 117, label %.critedge.preheader
    i32 118, label %.critedge.preheader
    i32 119, label %.critedge.preheader
    i32 120, label %.critedge.preheader
    i32 121, label %.critedge.preheader
    i32 122, label %.critedge.preheader
    i32 48, label %55
    i32 49, label %.preheader987
    i32 50, label %.preheader987
    i32 51, label %.preheader987
    i32 52, label %.preheader987
    i32 53, label %.preheader987
    i32 54, label %.preheader987
    i32 55, label %.preheader987
    i32 56, label %.preheader987
    i32 57, label %.preheader987
    i32 45, label %667
    i32 43, label %677
    i32 42, label %687
    i32 37, label %697
    i32 94, label %707
    i32 61, label %717
    i32 33, label %727
    i32 124, label %737
    i32 38, label %747
    i32 60, label %757
    i32 62, label %776
    i32 46, label %795
    i32 47, label %807
    i32 39, label %856
    i32 34, label %859
    i32 58, label %958
  ]

.critedge.preheader:                              ; preds = %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18
  br label %.critedge

.preheader987:                                    ; preds = %18, %18, %18, %18, %18, %18, %18, %18, %18
  br label %463

23:                                               ; preds = %18
  %spec.select = tail call i32 @llvm.smin.i32(i32 %.1462, i32 128)
  br label %.loopexit673

.critedge:                                        ; preds = %.critedge.preheader, %38
  %.3464 = phi i32 [ %42, %38 ], [ %.1462, %.critedge.preheader ]
  %.0447 = phi i32 [ %.1448, %38 ], [ 0, %.critedge.preheader ]
  %.1444 = phi i32 [ %.3446, %38 ], [ %.0443.ph, %.critedge.preheader ]
  %24 = icmp slt i32 %.0447, 1024
  br i1 %24, label %25, label %30

25:                                               ; preds = %.critedge
  %26 = trunc i32 %.3464 to i8
  %27 = add nsw i32 %.0447, 1
  %28 = sext i32 %.0447 to i64
  %29 = getelementptr inbounds [1025 x i8], ptr %11, i64 0, i64 %28
  store i8 %26, ptr %29, align 1, !tbaa !5
  br label %38

30:                                               ; preds = %.critedge
  %.not535 = icmp eq i32 %.1444, 0
  br i1 %.not535, label %31, label %38

31:                                               ; preds = %30
  %32 = load ptr, ptr %10, align 8, !tbaa !18
  %33 = getelementptr inbounds i8, ptr %32, i64 256
  %34 = load ptr, ptr %33, align 8, !tbaa !20
  %35 = load ptr, ptr %34, align 8, !tbaa !14
  %36 = getelementptr inbounds i8, ptr %35, i64 352
  %37 = load ptr, ptr %36, align 8
  tail call void (ptr, ptr, ptr, ptr, ptr, ...) %37(ptr noundef nonnull align 8 dereferenceable(1176) %34, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.1)
  br label %38

38:                                               ; preds = %30, %31, %25
  %.1448 = phi i32 [ %27, %25 ], [ %.0447, %31 ], [ %.0447, %30 ]
  %.3446 = phi i32 [ %.1444, %25 ], [ 1, %31 ], [ 1, %30 ]
  %39 = load ptr, ptr %0, align 8, !tbaa !14
  %40 = getelementptr inbounds i8, ptr %39, i64 24
  %41 = load ptr, ptr %40, align 8
  %42 = tail call noundef i32 %41(ptr noundef nonnull align 8 dereferenceable(32) %0)
  %43 = and i32 %42, -33
  %44 = add i32 %43, -65
  %or.cond536 = icmp ult i32 %44, 26
  %45 = add i32 %42, -48
  %or.cond5 = icmp ult i32 %45, 10
  %or.cond537 = or i1 %or.cond5, %or.cond536
  %46 = icmp eq i32 %42, 95
  %or.cond = or i1 %or.cond537, %46
  br i1 %or.cond, label %.critedge, label %47, !llvm.loop !73

47:                                               ; preds = %38
  %48 = icmp eq i32 %.1448, 0
  br i1 %48, label %.outer, label %49, !llvm.loop !16

49:                                               ; preds = %47
  %50 = sext i32 %.1448 to i64
  %51 = getelementptr inbounds [1025 x i8], ptr %11, i64 0, i64 %50
  store i8 0, ptr %51, align 1, !tbaa !5
  %52 = load ptr, ptr %0, align 8, !tbaa !14
  %53 = getelementptr inbounds i8, ptr %52, i64 32
  %54 = load ptr, ptr %53, align 8
  tail call void %54(ptr noundef nonnull align 8 dereferenceable(32) %0)
  br label %.loopexit673

55:                                               ; preds = %18
  store i8 48, ptr %11, align 1, !tbaa !5
  %56 = load ptr, ptr %0, align 8, !tbaa !14
  %57 = getelementptr inbounds i8, ptr %56, i64 24
  %58 = load ptr, ptr %57, align 8
  %59 = tail call noundef i32 %58(ptr noundef nonnull align 8 dereferenceable(32) %0)
  %60 = and i32 %59, -33
  %or.cond7 = icmp eq i32 %60, 88
  br i1 %or.cond7, label %63, label %.preheader670

.preheader670:                                    ; preds = %55
  %61 = and i32 %59, -8
  %62 = icmp eq i32 %61, 48
  br i1 %62, label %.lr.ph764, label %._crit_edge

63:                                               ; preds = %55
  %64 = trunc nuw i32 %59 to i8
  %65 = getelementptr inbounds i8, ptr %1, i64 41
  store i8 %64, ptr %65, align 1, !tbaa !5
  %66 = load ptr, ptr %0, align 8, !tbaa !14
  %67 = getelementptr inbounds i8, ptr %66, i64 24
  %68 = load ptr, ptr %67, align 8
  %69 = tail call noundef i32 %68(ptr noundef nonnull align 8 dereferenceable(32) %0)
  %70 = add i32 %69, -48
  %or.cond9 = icmp ult i32 %70, 10
  br i1 %or.cond9, label %.critedge27.preheader, label %switch.early.test542

switch.early.test542:                             ; preds = %63
  switch i32 %69, label %.thread [
    i32 102, label %.critedge27.preheader
    i32 101, label %.critedge27.preheader
    i32 100, label %.critedge27.preheader
    i32 99, label %.critedge27.preheader
    i32 98, label %.critedge27.preheader
    i32 97, label %.critedge27.preheader
    i32 70, label %.critedge27.preheader
    i32 69, label %.critedge27.preheader
    i32 68, label %.critedge27.preheader
    i32 67, label %.critedge27.preheader
    i32 66, label %.critedge27.preheader
    i32 65, label %.critedge27.preheader
  ]

.critedge27.preheader:                            ; preds = %63, %switch.early.test542, %switch.early.test542, %switch.early.test542, %switch.early.test542, %switch.early.test542, %switch.early.test542, %switch.early.test542, %switch.early.test542, %switch.early.test542, %switch.early.test542, %switch.early.test542, %switch.early.test542
  br label %.critedge27

.critedge27:                                      ; preds = %.critedge27.backedge, %.critedge27.preheader
  %.0482 = phi i64 [ 0, %.critedge27.preheader ], [ %.1483, %.critedge27.backedge ]
  %.0479 = phi i32 [ 0, %.critedge27.preheader ], [ %.2481, %.critedge27.backedge ]
  %.5466 = phi i32 [ %69, %.critedge27.preheader ], [ %112, %.critedge27.backedge ]
  %.2449 = phi i32 [ 2, %.critedge27.preheader ], [ %.3450, %.critedge27.backedge ]
  %.4 = phi i32 [ %.0443.ph, %.critedge27.preheader ], [ %.6, %.critedge27.backedge ]
  %71 = icmp slt i32 %.2449, 1024
  %72 = icmp ult i64 %.0482, 1152921504606846976
  %or.cond15 = select i1 %71, i1 %72, i1 false
  br i1 %or.cond15, label %73, label %98

73:                                               ; preds = %.critedge27
  %74 = trunc i32 %.5466 to i8
  %75 = add nsw i32 %.2449, 1
  %76 = sext i32 %.2449 to i64
  %77 = getelementptr inbounds [1025 x i8], ptr %11, i64 0, i64 %76
  store i8 %74, ptr %77, align 1, !tbaa !5
  %78 = add nsw i32 %.5466, -48
  %or.cond17 = icmp ult i32 %78, 10
  br i1 %or.cond17, label %94, label %79

79:                                               ; preds = %73
  %80 = add nsw i32 %.5466, -65
  %or.cond19 = icmp ult i32 %80, 6
  br i1 %or.cond19, label %81, label %83

81:                                               ; preds = %79
  %82 = add nsw i32 %.5466, -55
  br label %94

83:                                               ; preds = %79
  %84 = add nsw i32 %.5466, -97
  %or.cond21 = icmp ult i32 %84, 6
  br i1 %or.cond21, label %85, label %87

85:                                               ; preds = %83
  %86 = add nsw i32 %.5466, -87
  br label %94

87:                                               ; preds = %83
  %88 = load ptr, ptr %10, align 8, !tbaa !18
  %89 = getelementptr inbounds i8, ptr %88, i64 256
  %90 = load ptr, ptr %89, align 8, !tbaa !20
  %91 = load ptr, ptr %90, align 8, !tbaa !14
  %92 = getelementptr inbounds i8, ptr %91, i64 352
  %93 = load ptr, ptr %92, align 8
  tail call void (ptr, ptr, ptr, ptr, ptr, ...) %93(ptr noundef nonnull align 8 dereferenceable(1176) %90, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.1)
  br label %94

94:                                               ; preds = %73, %81, %87, %85
  %.1480 = phi i32 [ %82, %81 ], [ %86, %85 ], [ %.0479, %87 ], [ %78, %73 ]
  %95 = shl nuw i64 %.0482, 4
  %96 = zext nneg i32 %.1480 to i64
  %97 = or i64 %95, %96
  br label %108

98:                                               ; preds = %.critedge27
  %.not534 = icmp eq i32 %.4, 0
  br i1 %.not534, label %99, label %108

99:                                               ; preds = %98
  %100 = load ptr, ptr %10, align 8, !tbaa !18
  %101 = getelementptr inbounds i8, ptr %100, i64 256
  %102 = load ptr, ptr %101, align 8, !tbaa !20
  %103 = load ptr, ptr %102, align 8, !tbaa !14
  %104 = getelementptr inbounds i8, ptr %103, i64 352
  %105 = load ptr, ptr %104, align 8
  br i1 %71, label %106, label %107

106:                                              ; preds = %99
  tail call void (ptr, ptr, ptr, ptr, ptr, ...) %105(ptr noundef nonnull align 8 dereferenceable(1176) %102, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.1)
  br label %108

107:                                              ; preds = %99
  tail call void (ptr, ptr, ptr, ptr, ptr, ...) %105(ptr noundef nonnull align 8 dereferenceable(1176) %102, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.1)
  br label %108

108:                                              ; preds = %98, %107, %106, %94
  %.1483 = phi i64 [ %97, %94 ], [ -1, %106 ], [ -1, %107 ], [ -1, %98 ]
  %.2481 = phi i32 [ %.1480, %94 ], [ %.0479, %106 ], [ %.0479, %107 ], [ %.0479, %98 ]
  %.3450 = phi i32 [ %75, %94 ], [ %.2449, %106 ], [ %.2449, %107 ], [ %.2449, %98 ]
  %.6 = phi i32 [ %.4, %94 ], [ 1, %106 ], [ 1, %107 ], [ 1, %98 ]
  %109 = load ptr, ptr %0, align 8, !tbaa !14
  %110 = getelementptr inbounds i8, ptr %109, i64 24
  %111 = load ptr, ptr %110, align 8
  %112 = tail call noundef i32 %111(ptr noundef nonnull align 8 dereferenceable(32) %0)
  %113 = add i32 %112, -48
  %or.cond23 = icmp ult i32 %113, 10
  br i1 %or.cond23, label %.critedge27.backedge, label %switch.early.test545

.critedge27.backedge:                             ; preds = %108, %switch.early.test545, %switch.early.test545, %switch.early.test545, %switch.early.test545, %switch.early.test545, %switch.early.test545, %switch.early.test545, %switch.early.test545, %switch.early.test545, %switch.early.test545, %switch.early.test545, %switch.early.test545
  br label %.critedge27

switch.early.test545:                             ; preds = %108
  switch i32 %112, label %114 [
    i32 102, label %.critedge27.backedge
    i32 101, label %.critedge27.backedge
    i32 100, label %.critedge27.backedge
    i32 99, label %.critedge27.backedge
    i32 98, label %.critedge27.backedge
    i32 97, label %.critedge27.backedge
    i32 70, label %.critedge27.backedge
    i32 69, label %.critedge27.backedge
    i32 68, label %.critedge27.backedge
    i32 67, label %.critedge27.backedge
    i32 66, label %.critedge27.backedge
    i32 65, label %.critedge27.backedge
  ]

114:                                              ; preds = %switch.early.test545
  %115 = and i32 %112, -33
  switch i32 %115, label %181 [
    i32 85, label %123
    i32 76, label %175
  ]

.thread:                                          ; preds = %switch.early.test542
  %116 = load ptr, ptr %10, align 8, !tbaa !18
  %117 = getelementptr inbounds i8, ptr %116, i64 256
  %118 = load ptr, ptr %117, align 8, !tbaa !20
  %119 = load ptr, ptr %118, align 8, !tbaa !14
  %120 = getelementptr inbounds i8, ptr %119, i64 352
  %121 = load ptr, ptr %120, align 8
  tail call void (ptr, ptr, ptr, ptr, ptr, ...) %121(ptr noundef nonnull align 8 dereferenceable(1176) %118, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.1)
  %122 = and i32 %69, -33
  switch i32 %122, label %181 [
    i32 85, label %.thread564
    i32 76, label %.thread595
  ]

123:                                              ; preds = %114
  %124 = icmp slt i32 %.3450, 1024
  br i1 %124, label %.thread564, label %129

.thread564:                                       ; preds = %.thread, %123
  %.2484553577 = phi i64 [ %.1483, %123 ], [ 0, %.thread ]
  %.6467554575 = phi i32 [ %112, %123 ], [ %69, %.thread ]
  %.4451556574 = phi i32 [ %.3450, %123 ], [ 2, %.thread ]
  %.7560573 = phi i32 [ %.6, %123 ], [ %.0443.ph, %.thread ]
  %125 = trunc nuw i32 %.6467554575 to i8
  %126 = add nsw i32 %.4451556574, 1
  %127 = sext i32 %.4451556574 to i64
  %128 = getelementptr inbounds [1025 x i8], ptr %11, i64 0, i64 %127
  store i8 %125, ptr %128, align 1, !tbaa !5
  br label %129

129:                                              ; preds = %.thread564, %123
  %.2484553576 = phi i64 [ %.2484553577, %.thread564 ], [ %.1483, %123 ]
  %.7560572 = phi i32 [ %.7560573, %.thread564 ], [ %.6, %123 ]
  %.5452 = phi i32 [ %126, %.thread564 ], [ %.3450, %123 ]
  %130 = load ptr, ptr %0, align 8, !tbaa !14
  %131 = getelementptr inbounds i8, ptr %130, i64 24
  %132 = load ptr, ptr %131, align 8
  %133 = tail call noundef i32 %132(ptr noundef nonnull align 8 dereferenceable(32) %0)
  %134 = and i32 %133, -33
  %or.cond31 = icmp eq i32 %134, 76
  br i1 %or.cond31, label %135, label %142

135:                                              ; preds = %129
  %136 = icmp slt i32 %.5452, 1024
  br i1 %136, label %137, label %146

137:                                              ; preds = %135
  %138 = trunc nuw i32 %133 to i8
  %139 = add nsw i32 %.5452, 1
  %140 = sext i32 %.5452 to i64
  %141 = getelementptr inbounds [1025 x i8], ptr %11, i64 0, i64 %140
  store i8 %138, ptr %141, align 1, !tbaa !5
  br label %146

142:                                              ; preds = %129
  %143 = load ptr, ptr %0, align 8, !tbaa !14
  %144 = getelementptr inbounds i8, ptr %143, i64 32
  %145 = load ptr, ptr %144, align 8
  tail call void %145(ptr noundef nonnull align 8 dereferenceable(32) %0)
  br label %146

146:                                              ; preds = %135, %137, %142
  %.7454 = phi i32 [ %.5452, %142 ], [ %139, %137 ], [ %.5452, %135 ]
  %147 = load ptr, ptr %0, align 8, !tbaa !14
  %148 = getelementptr inbounds i8, ptr %147, i64 24
  %149 = load ptr, ptr %148, align 8
  %150 = tail call noundef i32 %149(ptr noundef nonnull align 8 dereferenceable(32) %0)
  %151 = and i32 %150, -33
  %or.cond33 = icmp eq i32 %151, 83
  br i1 %or.cond33, label %152, label %169

152:                                              ; preds = %146
  %153 = load ptr, ptr %10, align 8, !tbaa !18
  %154 = getelementptr inbounds i8, ptr %153, i64 256
  %155 = load ptr, ptr %154, align 8, !tbaa !20
  %156 = getelementptr inbounds i8, ptr %155, i64 56
  %157 = load ptr, ptr %156, align 8, !tbaa !74
  %158 = tail call noundef i32 @_ZNK7glslang13TIntermediate9getSourceEv(ptr noundef nonnull align 8 dereferenceable(1784) %157)
  %159 = icmp eq i32 %158, 1
  br i1 %159, label %160, label %169

160:                                              ; preds = %152
  %161 = icmp slt i32 %.7454, 1024
  br i1 %161, label %162, label %207

162:                                              ; preds = %160
  %163 = trunc nuw i32 %150 to i8
  %164 = add nsw i32 %.7454, 1
  %165 = sext i32 %.7454 to i64
  %166 = getelementptr inbounds [1025 x i8], ptr %11, i64 0, i64 %165
  store i8 %163, ptr %166, align 1, !tbaa !5
  %167 = sext i32 %164 to i64
  %168 = getelementptr inbounds [1025 x i8], ptr %11, i64 0, i64 %167
  store i8 0, ptr %168, align 1, !tbaa !5
  br i1 %or.cond31, label %210, label %.thread631

169:                                              ; preds = %146, %152
  %170 = load ptr, ptr %0, align 8, !tbaa !14
  %171 = getelementptr inbounds i8, ptr %170, i64 32
  %172 = load ptr, ptr %171, align 8
  tail call void %172(ptr noundef nonnull align 8 dereferenceable(32) %0)
  %173 = sext i32 %.7454 to i64
  %174 = getelementptr inbounds [1025 x i8], ptr %11, i64 0, i64 %173
  store i8 0, ptr %174, align 1, !tbaa !5
  br i1 %or.cond31, label %210, label %.thread638

175:                                              ; preds = %114
  %176 = icmp slt i32 %.3450, 1024
  br i1 %176, label %.thread595, label %.thread619

.thread595:                                       ; preds = %.thread, %175
  %.7559588604 = phi i32 [ %.6, %175 ], [ %.0443.ph, %.thread ]
  %.4451557589603 = phi i32 [ %.3450, %175 ], [ 2, %.thread ]
  %.6467555591602 = phi i32 [ %112, %175 ], [ %69, %.thread ]
  %.2484552594601 = phi i64 [ %.1483, %175 ], [ 0, %.thread ]
  %177 = trunc nuw i32 %.6467555591602 to i8
  %178 = add nsw i32 %.4451557589603, 1
  %179 = sext i32 %.4451557589603 to i64
  %180 = getelementptr inbounds [1025 x i8], ptr %11, i64 0, i64 %179
  store i8 %177, ptr %180, align 1, !tbaa !5
  br label %.thread619

181:                                              ; preds = %.thread, %114
  %.2484552593 = phi i64 [ %.1483, %114 ], [ 0, %.thread ]
  %.6467555592 = phi i32 [ %112, %114 ], [ %69, %.thread ]
  %.4451557590 = phi i32 [ %.3450, %114 ], [ 2, %.thread ]
  %.7559587 = phi i32 [ %.6, %114 ], [ %.0443.ph, %.thread ]
  %182 = phi i32 [ %115, %114 ], [ %122, %.thread ]
  %or.cond37 = icmp eq i32 %182, 83
  br i1 %or.cond37, label %183, label %.thread606

183:                                              ; preds = %181
  %184 = load ptr, ptr %10, align 8, !tbaa !18
  %185 = getelementptr inbounds i8, ptr %184, i64 256
  %186 = load ptr, ptr %185, align 8, !tbaa !20
  %187 = getelementptr inbounds i8, ptr %186, i64 56
  %188 = load ptr, ptr %187, align 8, !tbaa !74
  %189 = tail call noundef i32 @_ZNK7glslang13TIntermediate9getSourceEv(ptr noundef nonnull align 8 dereferenceable(1784) %188)
  %190 = icmp eq i32 %189, 1
  br i1 %190, label %191, label %.thread606

191:                                              ; preds = %183
  %192 = icmp slt i32 %.4451557590, 1024
  br i1 %192, label %193, label %.thread606.thread

193:                                              ; preds = %191
  %194 = trunc nuw i32 %.6467555592 to i8
  %195 = add nsw i32 %.4451557590, 1
  %196 = sext i32 %.4451557590 to i64
  %197 = getelementptr inbounds [1025 x i8], ptr %11, i64 0, i64 %196
  store i8 %194, ptr %197, align 1, !tbaa !5
  br label %.thread606.thread

.thread606.thread:                                ; preds = %191, %193
  %.12459.ph.ph = phi i32 [ %195, %193 ], [ %.4451557590, %191 ]
  %198 = sext i32 %.12459.ph.ph to i64
  %199 = getelementptr inbounds [1025 x i8], ptr %11, i64 0, i64 %198
  store i8 0, ptr %199, align 1, !tbaa !5
  br label %.thread631

.thread606:                                       ; preds = %183, %181
  %200 = load ptr, ptr %0, align 8, !tbaa !14
  %201 = getelementptr inbounds i8, ptr %200, i64 32
  %202 = load ptr, ptr %201, align 8
  tail call void %202(ptr noundef nonnull align 8 dereferenceable(32) %0)
  %203 = sext i32 %.4451557590 to i64
  %204 = getelementptr inbounds [1025 x i8], ptr %11, i64 0, i64 %203
  store i8 0, ptr %204, align 1, !tbaa !5
  br label %.thread638

.thread619:                                       ; preds = %.thread595, %175
  %.7558.ph = phi i32 [ %.6, %175 ], [ %.7559588604, %.thread595 ]
  %.2484551.ph = phi i64 [ %.1483, %175 ], [ %.2484552594601, %.thread595 ]
  %.12459.ph618 = phi i32 [ %.3450, %175 ], [ %178, %.thread595 ]
  %205 = sext i32 %.12459.ph618 to i64
  %206 = getelementptr inbounds [1025 x i8], ptr %11, i64 0, i64 %205
  store i8 0, ptr %206, align 1, !tbaa !5
  br label %210

207:                                              ; preds = %160
  %208 = zext nneg i32 %.7454 to i64
  %209 = getelementptr inbounds [1025 x i8], ptr %11, i64 0, i64 %208
  store i8 0, ptr %209, align 1, !tbaa !5
  br i1 %or.cond31, label %210, label %.thread631

210:                                              ; preds = %169, %162, %.thread619, %207
  %.1506629 = phi i1 [ false, %.thread619 ], [ true, %207 ], [ true, %162 ], [ false, %169 ]
  %.2484551628 = phi i64 [ %.2484551.ph, %.thread619 ], [ %.2484553576, %207 ], [ %.2484553576, %162 ], [ %.2484553576, %169 ]
  %.7558627 = phi i32 [ %.7558.ph, %.thread619 ], [ %.7560572, %207 ], [ %.7560572, %162 ], [ %.7560572, %169 ]
  %or.cond29561626 = phi i1 [ false, %.thread619 ], [ true, %207 ], [ true, %162 ], [ true, %169 ]
  %211 = load ptr, ptr %10, align 8, !tbaa !18
  %212 = getelementptr inbounds i8, ptr %211, i64 256
  %213 = load ptr, ptr %212, align 8, !tbaa !20
  %214 = getelementptr inbounds i8, ptr %213, i64 56
  %215 = load ptr, ptr %214, align 8, !tbaa !74
  %216 = tail call noundef i32 @_ZNK7glslang13TIntermediate9getSourceEv(ptr noundef nonnull align 8 dereferenceable(1784) %215)
  %217 = icmp eq i32 %216, 1
  br i1 %217, label %218, label %231

218:                                              ; preds = %210
  %219 = load ptr, ptr %10, align 8, !tbaa !18
  %220 = getelementptr inbounds i8, ptr %219, i64 264
  %221 = load i32, ptr %220, align 8, !tbaa !92
  %222 = icmp eq i32 %221, 0
  br i1 %222, label %223, label %229

223:                                              ; preds = %218
  %224 = getelementptr inbounds i8, ptr %219, i64 256
  %225 = load ptr, ptr %224, align 8, !tbaa !20
  tail call void @_ZN7glslang14TParseVersions14requireProfileERKNS_10TSourceLocEiPKc(ptr noundef nonnull align 8 dereferenceable(192) %225, ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef -9, ptr noundef nonnull @.str.21)
  %226 = load ptr, ptr %10, align 8, !tbaa !18
  %227 = getelementptr inbounds i8, ptr %226, i64 256
  %228 = load ptr, ptr %227, align 8, !tbaa !20
  tail call void @_ZN7glslang14TParseVersions15profileRequiresERKNS_10TSourceLocEiiiPKPKcS5_(ptr noundef nonnull align 8 dereferenceable(192) %228, ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef -9, i32 noundef 0, i32 noundef 3, ptr noundef nonnull @_ZZN7glslang10TPpContext12tStringInput4scanEPNS_8TPpTokenEE16Int64_Extensions, ptr noundef nonnull @.str.21)
  br label %229

229:                                              ; preds = %223, %218
  store i64 %.2484551628, ptr %4, align 8, !tbaa !5
  %230 = select i1 %or.cond29561626, i32 155, i32 154
  br label %.loopexit673

231:                                              ; preds = %210
  br i1 %.1506629, label %.thread631, label %.thread638

.thread631:                                       ; preds = %162, %207, %.thread606.thread, %231
  %or.cond29561613637 = phi i1 [ %or.cond29561626, %231 ], [ false, %.thread606.thread ], [ true, %162 ], [ true, %207 ]
  %.2484551615636 = phi i64 [ %.2484551628, %231 ], [ %.2484552593, %.thread606.thread ], [ %.2484553576, %162 ], [ %.2484553576, %207 ]
  %232 = load ptr, ptr %10, align 8, !tbaa !18
  %233 = getelementptr inbounds i8, ptr %232, i64 264
  %234 = load i32, ptr %233, align 8, !tbaa !92
  %235 = icmp eq i32 %234, 0
  br i1 %235, label %236, label %250

236:                                              ; preds = %.thread631
  %237 = getelementptr inbounds i8, ptr %232, i64 256
  %238 = load ptr, ptr %237, align 8, !tbaa !20
  %239 = getelementptr inbounds i8, ptr %238, i64 56
  %240 = load ptr, ptr %239, align 8, !tbaa !74
  %241 = tail call noundef i32 @_ZNK7glslang13TIntermediate9getSourceEv(ptr noundef nonnull align 8 dereferenceable(1784) %240)
  %242 = icmp eq i32 %241, 1
  br i1 %242, label %243, label %250

243:                                              ; preds = %236
  %244 = load ptr, ptr %10, align 8, !tbaa !18
  %245 = getelementptr inbounds i8, ptr %244, i64 256
  %246 = load ptr, ptr %245, align 8, !tbaa !20
  tail call void @_ZN7glslang14TParseVersions14requireProfileERKNS_10TSourceLocEiPKc(ptr noundef nonnull align 8 dereferenceable(192) %246, ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef -9, ptr noundef nonnull @.str.22)
  %247 = load ptr, ptr %10, align 8, !tbaa !18
  %248 = getelementptr inbounds i8, ptr %247, i64 256
  %249 = load ptr, ptr %248, align 8, !tbaa !20
  tail call void @_ZN7glslang14TParseVersions15profileRequiresERKNS_10TSourceLocEiiiPKPKcS5_(ptr noundef nonnull align 8 dereferenceable(192) %249, ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef -9, i32 noundef 0, i32 noundef 3, ptr noundef nonnull @_ZZN7glslang10TPpContext12tStringInput4scanEPNS_8TPpTokenEE16Int16_Extensions, ptr noundef nonnull @.str.22)
  br label %250

250:                                              ; preds = %236, %243, %.thread631
  %251 = trunc i64 %.2484551615636 to i32
  store i32 %251, ptr %4, align 8, !tbaa !5
  %252 = select i1 %or.cond29561613637, i32 157, i32 156
  br label %.loopexit673

.thread638:                                       ; preds = %.thread606, %169, %231
  %or.cond29561613645 = phi i1 [ %or.cond29561626, %231 ], [ false, %.thread606 ], [ true, %169 ]
  %.7558614644 = phi i32 [ %.7558627, %231 ], [ %.7559587, %.thread606 ], [ %.7560572, %169 ]
  %.2484551615643 = phi i64 [ %.2484551628, %231 ], [ %.2484552593, %.thread606 ], [ %.2484553576, %169 ]
  %253 = icmp ult i64 %.2484551615643, 4294967296
  %254 = icmp ne i32 %.7558614644, 0
  %or.cond39 = select i1 %253, i1 true, i1 %254
  br i1 %or.cond39, label %262, label %255

255:                                              ; preds = %.thread638
  %256 = load ptr, ptr %10, align 8, !tbaa !18
  %257 = getelementptr inbounds i8, ptr %256, i64 256
  %258 = load ptr, ptr %257, align 8, !tbaa !20
  %259 = load ptr, ptr %258, align 8, !tbaa !14
  %260 = getelementptr inbounds i8, ptr %259, i64 352
  %261 = load ptr, ptr %260, align 8
  tail call void (ptr, ptr, ptr, ptr, ptr, ...) %261(ptr noundef nonnull align 8 dereferenceable(1176) %258, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.1)
  br label %262

262:                                              ; preds = %255, %.thread638
  %263 = trunc i64 %.2484551615643 to i32
  store i32 %263, ptr %4, align 8, !tbaa !5
  %264 = select i1 %or.cond29561613645, i32 153, i32 152
  br label %.loopexit673

.lr.ph764:                                        ; preds = %.preheader670, %279
  %.8763 = phi i32 [ %.9, %279 ], [ %.0443.ph, %.preheader670 ]
  %.13460762 = phi i32 [ %.14, %279 ], [ 1, %.preheader670 ]
  %.7468761 = phi i32 [ %288, %279 ], [ %59, %.preheader670 ]
  %.3485760 = phi i64 [ %.4486, %279 ], [ 0, %.preheader670 ]
  %.0497759 = phi i1 [ %.1498, %279 ], [ false, %.preheader670 ]
  %265 = icmp slt i32 %.13460762, 1024
  br i1 %265, label %266, label %271

266:                                              ; preds = %.lr.ph764
  %267 = trunc nuw i32 %.7468761 to i8
  %268 = add nsw i32 %.13460762, 1
  %269 = sext i32 %.13460762 to i64
  %270 = getelementptr inbounds [1025 x i8], ptr %11, i64 0, i64 %269
  store i8 %267, ptr %270, align 1, !tbaa !5
  br label %279

271:                                              ; preds = %.lr.ph764
  %.not = icmp eq i32 %.8763, 0
  br i1 %.not, label %272, label %279

272:                                              ; preds = %271
  %273 = load ptr, ptr %10, align 8, !tbaa !18
  %274 = getelementptr inbounds i8, ptr %273, i64 256
  %275 = load ptr, ptr %274, align 8, !tbaa !20
  %276 = load ptr, ptr %275, align 8, !tbaa !14
  %277 = getelementptr inbounds i8, ptr %276, i64 352
  %278 = load ptr, ptr %277, align 8
  tail call void (ptr, ptr, ptr, ptr, ptr, ...) %278(ptr noundef nonnull align 8 dereferenceable(1176) %275, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.1)
  br label %279

279:                                              ; preds = %271, %272, %266
  %.14 = phi i32 [ %268, %266 ], [ %.13460762, %271 ], [ %.13460762, %272 ]
  %.9 = phi i32 [ %.8763, %266 ], [ 1, %271 ], [ 1, %272 ]
  %280 = icmp ugt i64 %.3485760, 2305843009213693951
  %281 = add nsw i32 %.7468761, -48
  %282 = shl nuw i64 %.3485760, 3
  %283 = zext nneg i32 %281 to i64
  %284 = add nuw nsw i64 %282, %283
  %.1498 = select i1 %280, i1 true, i1 %.0497759
  %.4486 = select i1 %280, i64 %.3485760, i64 %284
  %285 = load ptr, ptr %0, align 8, !tbaa !14
  %286 = getelementptr inbounds i8, ptr %285, i64 24
  %287 = load ptr, ptr %286, align 8
  %288 = tail call noundef i32 %287(ptr noundef nonnull align 8 dereferenceable(32) %0)
  %289 = and i32 %288, -8
  %290 = icmp eq i32 %289, 48
  br i1 %290, label %.lr.ph764, label %._crit_edge, !llvm.loop !93

._crit_edge:                                      ; preds = %279, %.preheader670
  %.0497.lcssa = phi i1 [ false, %.preheader670 ], [ %.1498, %279 ]
  %.3485.lcssa = phi i64 [ 0, %.preheader670 ], [ %.4486, %279 ]
  %.7468.lcssa = phi i32 [ %59, %.preheader670 ], [ %288, %279 ]
  %.13460.lcssa = phi i32 [ 1, %.preheader670 ], [ %.14, %279 ]
  %.8.lcssa = phi i32 [ %.0443.ph, %.preheader670 ], [ %.9, %279 ]
  %291 = and i32 %.7468.lcssa, -2
  %or.cond41 = icmp eq i32 %291, 56
  br i1 %or.cond41, label %.preheader, label %.thread646

.preheader:                                       ; preds = %._crit_edge, %306
  %.8469 = phi i32 [ %310, %306 ], [ %.7468.lcssa, %._crit_edge ]
  %.15 = phi i32 [ %.16, %306 ], [ %.13460.lcssa, %._crit_edge ]
  %.10 = phi i32 [ %.11, %306 ], [ %.8.lcssa, %._crit_edge ]
  %292 = icmp slt i32 %.15, 1024
  br i1 %292, label %293, label %298

293:                                              ; preds = %.preheader
  %294 = trunc i32 %.8469 to i8
  %295 = add nsw i32 %.15, 1
  %296 = sext i32 %.15 to i64
  %297 = getelementptr inbounds [1025 x i8], ptr %11, i64 0, i64 %296
  store i8 %294, ptr %297, align 1, !tbaa !5
  br label %306

298:                                              ; preds = %.preheader
  %.not532 = icmp eq i32 %.10, 0
  br i1 %.not532, label %299, label %306

299:                                              ; preds = %298
  %300 = load ptr, ptr %10, align 8, !tbaa !18
  %301 = getelementptr inbounds i8, ptr %300, i64 256
  %302 = load ptr, ptr %301, align 8, !tbaa !20
  %303 = load ptr, ptr %302, align 8, !tbaa !14
  %304 = getelementptr inbounds i8, ptr %303, i64 352
  %305 = load ptr, ptr %304, align 8
  tail call void (ptr, ptr, ptr, ptr, ptr, ...) %305(ptr noundef nonnull align 8 dereferenceable(1176) %302, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.1)
  br label %306

306:                                              ; preds = %298, %299, %293
  %.16 = phi i32 [ %295, %293 ], [ %.15, %298 ], [ %.15, %299 ]
  %.11 = phi i32 [ %.10, %293 ], [ 1, %298 ], [ 1, %299 ]
  %307 = load ptr, ptr %0, align 8, !tbaa !14
  %308 = getelementptr inbounds i8, ptr %307, i64 24
  %309 = load ptr, ptr %308, align 8
  %310 = tail call noundef i32 %309(ptr noundef nonnull align 8 dereferenceable(32) %0)
  %311 = add i32 %310, -48
  %312 = icmp ult i32 %311, 10
  br i1 %312, label %.preheader, label %313, !llvm.loop !94

313:                                              ; preds = %306
  %314 = call noundef zeroext i1 @"_ZZN7glslang10TPpContext12tStringInput4scanEPNS_8TPpTokenEENK3$_0clEi"(ptr noundef nonnull align 1 dereferenceable(1) %3, i32 noundef %310)
  br i1 %314, label %316, label %319

.thread646:                                       ; preds = %._crit_edge
  %315 = call noundef zeroext i1 @"_ZZN7glslang10TPpContext12tStringInput4scanEPNS_8TPpTokenEENK3$_0clEi"(ptr noundef nonnull align 1 dereferenceable(1) %3, i32 noundef %.7468.lcssa)
  br i1 %315, label %316, label %.thread653

316:                                              ; preds = %.thread646, %313
  %.17651 = phi i32 [ %.13460.lcssa, %.thread646 ], [ %.16, %313 ]
  %.9470649 = phi i32 [ %.7468.lcssa, %.thread646 ], [ %310, %313 ]
  %317 = load ptr, ptr %10, align 8, !tbaa !18
  %318 = call noundef i32 @_ZN7glslang10TPpContext11lFloatConstEiiPNS_8TPpTokenE(ptr noundef nonnull align 8 dereferenceable(921) %317, i32 noundef %.17651, i32 noundef %.9470649, ptr noundef %1)
  br label %.loopexit673

319:                                              ; preds = %313
  %320 = load ptr, ptr %10, align 8, !tbaa !18
  %321 = getelementptr inbounds i8, ptr %320, i64 256
  %322 = load ptr, ptr %321, align 8, !tbaa !20
  %323 = load ptr, ptr %322, align 8, !tbaa !14
  %324 = getelementptr inbounds i8, ptr %323, i64 352
  %325 = load ptr, ptr %324, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %325(ptr noundef nonnull align 8 dereferenceable(1176) %322, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.1)
  br label %.thread653

.thread653:                                       ; preds = %.thread646, %319
  %.9470650657 = phi i32 [ %310, %319 ], [ %.7468.lcssa, %.thread646 ]
  %.17652656 = phi i32 [ %.16, %319 ], [ %.13460.lcssa, %.thread646 ]
  %326 = and i32 %.9470650657, -33
  %or.cond43 = icmp eq i32 %326, 85
  br i1 %or.cond43, label %327, label %376

327:                                              ; preds = %.thread653
  %328 = icmp slt i32 %.17652656, 1024
  br i1 %328, label %329, label %334

329:                                              ; preds = %327
  %330 = trunc nuw i32 %.9470650657 to i8
  %331 = add nsw i32 %.17652656, 1
  %332 = sext i32 %.17652656 to i64
  %333 = getelementptr inbounds [1025 x i8], ptr %11, i64 0, i64 %332
  store i8 %330, ptr %333, align 1, !tbaa !5
  br label %334

334:                                              ; preds = %329, %327
  %.18 = phi i32 [ %331, %329 ], [ %.17652656, %327 ]
  %335 = load ptr, ptr %0, align 8, !tbaa !14
  %336 = getelementptr inbounds i8, ptr %335, i64 24
  %337 = load ptr, ptr %336, align 8
  %338 = call noundef i32 %337(ptr noundef nonnull align 8 dereferenceable(32) %0)
  %339 = and i32 %338, -33
  %or.cond45 = icmp eq i32 %339, 76
  br i1 %or.cond45, label %340, label %347

340:                                              ; preds = %334
  %341 = icmp slt i32 %.18, 1024
  br i1 %341, label %342, label %351

342:                                              ; preds = %340
  %343 = trunc nuw i32 %338 to i8
  %344 = add nsw i32 %.18, 1
  %345 = sext i32 %.18 to i64
  %346 = getelementptr inbounds [1025 x i8], ptr %11, i64 0, i64 %345
  store i8 %343, ptr %346, align 1, !tbaa !5
  br label %351

347:                                              ; preds = %334
  %348 = load ptr, ptr %0, align 8, !tbaa !14
  %349 = getelementptr inbounds i8, ptr %348, i64 32
  %350 = load ptr, ptr %349, align 8
  call void %350(ptr noundef nonnull align 8 dereferenceable(32) %0)
  br label %351

351:                                              ; preds = %340, %342, %347
  %.20 = phi i32 [ %.18, %347 ], [ %344, %342 ], [ %.18, %340 ]
  %352 = load ptr, ptr %0, align 8, !tbaa !14
  %353 = getelementptr inbounds i8, ptr %352, i64 24
  %354 = load ptr, ptr %353, align 8
  %355 = call noundef i32 %354(ptr noundef nonnull align 8 dereferenceable(32) %0)
  %356 = and i32 %355, -33
  %or.cond47 = icmp eq i32 %356, 83
  br i1 %or.cond47, label %357, label %372

357:                                              ; preds = %351
  %358 = load ptr, ptr %10, align 8, !tbaa !18
  %359 = getelementptr inbounds i8, ptr %358, i64 256
  %360 = load ptr, ptr %359, align 8, !tbaa !20
  %361 = getelementptr inbounds i8, ptr %360, i64 56
  %362 = load ptr, ptr %361, align 8, !tbaa !74
  %363 = call noundef i32 @_ZNK7glslang13TIntermediate9getSourceEv(ptr noundef nonnull align 8 dereferenceable(1784) %362)
  %364 = icmp eq i32 %363, 1
  br i1 %364, label %365, label %372

365:                                              ; preds = %357
  %366 = icmp slt i32 %.20, 1024
  br i1 %366, label %367, label %403

367:                                              ; preds = %365
  %368 = trunc nuw i32 %355 to i8
  %369 = add nsw i32 %.20, 1
  %370 = sext i32 %.20 to i64
  %371 = getelementptr inbounds [1025 x i8], ptr %11, i64 0, i64 %370
  store i8 %368, ptr %371, align 1, !tbaa !5
  br label %403

372:                                              ; preds = %351, %357
  %373 = load ptr, ptr %0, align 8, !tbaa !14
  %374 = getelementptr inbounds i8, ptr %373, i64 32
  %375 = load ptr, ptr %374, align 8
  call void %375(ptr noundef nonnull align 8 dereferenceable(32) %0)
  br label %403

376:                                              ; preds = %.thread653
  switch i32 %326, label %399 [
    i32 76, label %377
    i32 83, label %384
  ]

377:                                              ; preds = %376
  %378 = icmp slt i32 %.17652656, 1024
  br i1 %378, label %379, label %403

379:                                              ; preds = %377
  %380 = trunc nuw i32 %.9470650657 to i8
  %381 = add nsw i32 %.17652656, 1
  %382 = sext i32 %.17652656 to i64
  %383 = getelementptr inbounds [1025 x i8], ptr %11, i64 0, i64 %382
  store i8 %380, ptr %383, align 1, !tbaa !5
  br label %403

384:                                              ; preds = %376
  %385 = load ptr, ptr %10, align 8, !tbaa !18
  %386 = getelementptr inbounds i8, ptr %385, i64 256
  %387 = load ptr, ptr %386, align 8, !tbaa !20
  %388 = getelementptr inbounds i8, ptr %387, i64 56
  %389 = load ptr, ptr %388, align 8, !tbaa !74
  %390 = call noundef i32 @_ZNK7glslang13TIntermediate9getSourceEv(ptr noundef nonnull align 8 dereferenceable(1784) %389)
  %391 = icmp eq i32 %390, 1
  br i1 %391, label %392, label %399

392:                                              ; preds = %384
  %393 = icmp slt i32 %.17652656, 1024
  br i1 %393, label %394, label %403

394:                                              ; preds = %392
  %395 = trunc nuw i32 %.9470650657 to i8
  %396 = add nsw i32 %.17652656, 1
  %397 = sext i32 %.17652656 to i64
  %398 = getelementptr inbounds [1025 x i8], ptr %11, i64 0, i64 %397
  store i8 %395, ptr %398, align 1, !tbaa !5
  br label %403

399:                                              ; preds = %376, %384
  %400 = load ptr, ptr %0, align 8, !tbaa !14
  %401 = getelementptr inbounds i8, ptr %400, i64 32
  %402 = load ptr, ptr %401, align 8
  call void %402(ptr noundef nonnull align 8 dereferenceable(32) %0)
  br label %403

403:                                              ; preds = %392, %394, %377, %379, %372, %367, %365, %399
  %.1503 = phi i1 [ false, %399 ], [ %or.cond45, %365 ], [ %or.cond45, %367 ], [ %or.cond45, %372 ], [ true, %379 ], [ true, %377 ], [ false, %394 ], [ false, %392 ]
  %.1501 = phi i1 [ false, %399 ], [ true, %365 ], [ true, %367 ], [ false, %372 ], [ false, %379 ], [ false, %377 ], [ true, %394 ], [ true, %392 ]
  %.25 = phi i32 [ %.17652656, %399 ], [ %.20, %365 ], [ %369, %367 ], [ %.20, %372 ], [ %381, %379 ], [ %.17652656, %377 ], [ %396, %394 ], [ %.17652656, %392 ]
  %404 = sext i32 %.25 to i64
  %405 = getelementptr inbounds [1025 x i8], ptr %11, i64 0, i64 %404
  store i8 0, ptr %405, align 1, !tbaa !5
  %406 = icmp ugt i64 %.3485.lcssa, 4294967295
  %not..1503 = xor i1 %.1503, true
  %or.cond53.not = select i1 %not..1503, i1 %406, i1 false
  %407 = select i1 %or.cond53.not, i1 true, i1 %.0497.lcssa
  br i1 %407, label %408, label %415

408:                                              ; preds = %403
  %409 = load ptr, ptr %10, align 8, !tbaa !18
  %410 = getelementptr inbounds i8, ptr %409, i64 256
  %411 = load ptr, ptr %410, align 8, !tbaa !20
  %412 = load ptr, ptr %411, align 8, !tbaa !14
  %413 = getelementptr inbounds i8, ptr %412, i64 352
  %414 = load ptr, ptr %413, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %414(ptr noundef nonnull align 8 dereferenceable(1176) %411, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.1)
  br label %415

415:                                              ; preds = %408, %403
  br i1 %.1503, label %416, label %437

416:                                              ; preds = %415
  %417 = load ptr, ptr %10, align 8, !tbaa !18
  %418 = getelementptr inbounds i8, ptr %417, i64 256
  %419 = load ptr, ptr %418, align 8, !tbaa !20
  %420 = getelementptr inbounds i8, ptr %419, i64 56
  %421 = load ptr, ptr %420, align 8, !tbaa !74
  %422 = call noundef i32 @_ZNK7glslang13TIntermediate9getSourceEv(ptr noundef nonnull align 8 dereferenceable(1784) %421)
  %423 = icmp eq i32 %422, 1
  br i1 %423, label %424, label %437

424:                                              ; preds = %416
  %425 = load ptr, ptr %10, align 8, !tbaa !18
  %426 = getelementptr inbounds i8, ptr %425, i64 264
  %427 = load i32, ptr %426, align 8, !tbaa !92
  %428 = icmp eq i32 %427, 0
  br i1 %428, label %429, label %435

429:                                              ; preds = %424
  %430 = getelementptr inbounds i8, ptr %425, i64 256
  %431 = load ptr, ptr %430, align 8, !tbaa !20
  call void @_ZN7glslang14TParseVersions14requireProfileERKNS_10TSourceLocEiPKc(ptr noundef nonnull align 8 dereferenceable(192) %431, ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef -9, ptr noundef nonnull @.str.26)
  %432 = load ptr, ptr %10, align 8, !tbaa !18
  %433 = getelementptr inbounds i8, ptr %432, i64 256
  %434 = load ptr, ptr %433, align 8, !tbaa !20
  call void @_ZN7glslang14TParseVersions15profileRequiresERKNS_10TSourceLocEiiiPKPKcS5_(ptr noundef nonnull align 8 dereferenceable(192) %434, ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef -9, i32 noundef 0, i32 noundef 3, ptr noundef nonnull @_ZZN7glslang10TPpContext12tStringInput4scanEPNS_8TPpTokenEE16Int64_Extensions, ptr noundef nonnull @.str.26)
  br label %435

435:                                              ; preds = %429, %424
  store i64 %.3485.lcssa, ptr %4, align 8, !tbaa !5
  %436 = select i1 %or.cond43, i32 155, i32 154
  br label %.loopexit673

437:                                              ; preds = %416, %415
  br i1 %.1501, label %438, label %460

438:                                              ; preds = %437
  %439 = load ptr, ptr %10, align 8, !tbaa !18
  %440 = getelementptr inbounds i8, ptr %439, i64 264
  %441 = load i32, ptr %440, align 8, !tbaa !92
  %442 = icmp eq i32 %441, 0
  br i1 %442, label %443, label %457

443:                                              ; preds = %438
  %444 = getelementptr inbounds i8, ptr %439, i64 256
  %445 = load ptr, ptr %444, align 8, !tbaa !20
  %446 = getelementptr inbounds i8, ptr %445, i64 56
  %447 = load ptr, ptr %446, align 8, !tbaa !74
  %448 = call noundef i32 @_ZNK7glslang13TIntermediate9getSourceEv(ptr noundef nonnull align 8 dereferenceable(1784) %447)
  %449 = icmp eq i32 %448, 1
  br i1 %449, label %450, label %457

450:                                              ; preds = %443
  %451 = load ptr, ptr %10, align 8, !tbaa !18
  %452 = getelementptr inbounds i8, ptr %451, i64 256
  %453 = load ptr, ptr %452, align 8, !tbaa !20
  call void @_ZN7glslang14TParseVersions14requireProfileERKNS_10TSourceLocEiPKc(ptr noundef nonnull align 8 dereferenceable(192) %453, ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef -9, ptr noundef nonnull @.str.27)
  %454 = load ptr, ptr %10, align 8, !tbaa !18
  %455 = getelementptr inbounds i8, ptr %454, i64 256
  %456 = load ptr, ptr %455, align 8, !tbaa !20
  call void @_ZN7glslang14TParseVersions15profileRequiresERKNS_10TSourceLocEiiiPKPKcS5_(ptr noundef nonnull align 8 dereferenceable(192) %456, ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef -9, i32 noundef 0, i32 noundef 3, ptr noundef nonnull @_ZZN7glslang10TPpContext12tStringInput4scanEPNS_8TPpTokenEE16Int16_Extensions, ptr noundef nonnull @.str.27)
  br label %457

457:                                              ; preds = %443, %450, %438
  %458 = trunc i64 %.3485.lcssa to i32
  store i32 %458, ptr %4, align 8, !tbaa !5
  %459 = select i1 %or.cond43, i32 157, i32 156
  br label %.loopexit673

460:                                              ; preds = %437
  %461 = trunc i64 %.3485.lcssa to i32
  store i32 %461, ptr %4, align 8, !tbaa !5
  %462 = select i1 %or.cond43, i32 153, i32 152
  br label %.loopexit673

463:                                              ; preds = %.preheader987, %478
  %.10471 = phi i32 [ %482, %478 ], [ %.1462, %.preheader987 ]
  %.26 = phi i32 [ %.27, %478 ], [ 0, %.preheader987 ]
  %.12 = phi i32 [ %.13, %478 ], [ %.0443.ph, %.preheader987 ]
  %464 = icmp slt i32 %.26, 1024
  br i1 %464, label %465, label %470

465:                                              ; preds = %463
  %466 = trunc i32 %.10471 to i8
  %467 = add nsw i32 %.26, 1
  %468 = sext i32 %.26 to i64
  %469 = getelementptr inbounds [1025 x i8], ptr %11, i64 0, i64 %468
  store i8 %466, ptr %469, align 1, !tbaa !5
  br label %478

470:                                              ; preds = %463
  %.not531 = icmp eq i32 %.12, 0
  br i1 %.not531, label %471, label %478

471:                                              ; preds = %470
  %472 = load ptr, ptr %10, align 8, !tbaa !18
  %473 = getelementptr inbounds i8, ptr %472, i64 256
  %474 = load ptr, ptr %473, align 8, !tbaa !20
  %475 = load ptr, ptr %474, align 8, !tbaa !14
  %476 = getelementptr inbounds i8, ptr %475, i64 352
  %477 = load ptr, ptr %476, align 8
  tail call void (ptr, ptr, ptr, ptr, ptr, ...) %477(ptr noundef nonnull align 8 dereferenceable(1176) %474, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.1)
  br label %478

478:                                              ; preds = %470, %471, %465
  %.27 = phi i32 [ %467, %465 ], [ %.26, %470 ], [ %.26, %471 ]
  %.13 = phi i32 [ %.12, %465 ], [ 1, %470 ], [ 1, %471 ]
  %479 = load ptr, ptr %0, align 8, !tbaa !14
  %480 = getelementptr inbounds i8, ptr %479, i64 24
  %481 = load ptr, ptr %480, align 8
  %482 = tail call noundef i32 %481(ptr noundef nonnull align 8 dereferenceable(32) %0)
  %483 = add i32 %482, -48
  %484 = icmp ult i32 %483, 10
  br i1 %484, label %463, label %485, !llvm.loop !95

485:                                              ; preds = %478
  %486 = call noundef zeroext i1 @"_ZZN7glslang10TPpContext12tStringInput4scanEPNS_8TPpTokenEENK3$_0clEi"(ptr noundef nonnull align 1 dereferenceable(1) %3, i32 noundef %482)
  br i1 %486, label %487, label %490

487:                                              ; preds = %485
  %488 = load ptr, ptr %10, align 8, !tbaa !18
  %489 = call noundef i32 @_ZN7glslang10TPpContext11lFloatConstEiiPNS_8TPpTokenE(ptr noundef nonnull align 8 dereferenceable(921) %488, i32 noundef %.27, i32 noundef %482, ptr noundef %1)
  br label %.loopexit673

490:                                              ; preds = %485
  %491 = and i32 %482, -33
  %or.cond55 = icmp eq i32 %491, 85
  br i1 %or.cond55, label %492, label %541

492:                                              ; preds = %490
  %493 = icmp slt i32 %.27, 1024
  br i1 %493, label %494, label %499

494:                                              ; preds = %492
  %495 = trunc nuw i32 %482 to i8
  %496 = add nsw i32 %.27, 1
  %497 = sext i32 %.27 to i64
  %498 = getelementptr inbounds [1025 x i8], ptr %11, i64 0, i64 %497
  store i8 %495, ptr %498, align 1, !tbaa !5
  br label %499

499:                                              ; preds = %494, %492
  %.28 = phi i32 [ %496, %494 ], [ %.27, %492 ]
  %500 = load ptr, ptr %0, align 8, !tbaa !14
  %501 = getelementptr inbounds i8, ptr %500, i64 24
  %502 = load ptr, ptr %501, align 8
  %503 = call noundef i32 %502(ptr noundef nonnull align 8 dereferenceable(32) %0)
  %504 = and i32 %503, -33
  %or.cond57 = icmp eq i32 %504, 76
  br i1 %or.cond57, label %505, label %512

505:                                              ; preds = %499
  %506 = icmp slt i32 %.28, 1024
  br i1 %506, label %507, label %516

507:                                              ; preds = %505
  %508 = trunc nuw i32 %503 to i8
  %509 = add nsw i32 %.28, 1
  %510 = sext i32 %.28 to i64
  %511 = getelementptr inbounds [1025 x i8], ptr %11, i64 0, i64 %510
  store i8 %508, ptr %511, align 1, !tbaa !5
  br label %516

512:                                              ; preds = %499
  %513 = load ptr, ptr %0, align 8, !tbaa !14
  %514 = getelementptr inbounds i8, ptr %513, i64 32
  %515 = load ptr, ptr %514, align 8
  call void %515(ptr noundef nonnull align 8 dereferenceable(32) %0)
  br label %516

516:                                              ; preds = %505, %507, %512
  %.0492 = phi i8 [ 0, %512 ], [ 1, %507 ], [ 1, %505 ]
  %.30 = phi i32 [ %.28, %512 ], [ %509, %507 ], [ %.28, %505 ]
  %517 = load ptr, ptr %0, align 8, !tbaa !14
  %518 = getelementptr inbounds i8, ptr %517, i64 24
  %519 = load ptr, ptr %518, align 8
  %520 = call noundef i32 %519(ptr noundef nonnull align 8 dereferenceable(32) %0)
  %521 = and i32 %520, -33
  %or.cond59 = icmp eq i32 %521, 83
  br i1 %or.cond59, label %522, label %537

522:                                              ; preds = %516
  %523 = load ptr, ptr %10, align 8, !tbaa !18
  %524 = getelementptr inbounds i8, ptr %523, i64 256
  %525 = load ptr, ptr %524, align 8, !tbaa !20
  %526 = getelementptr inbounds i8, ptr %525, i64 56
  %527 = load ptr, ptr %526, align 8, !tbaa !74
  %528 = call noundef i32 @_ZNK7glslang13TIntermediate9getSourceEv(ptr noundef nonnull align 8 dereferenceable(1784) %527)
  %529 = icmp eq i32 %528, 1
  br i1 %529, label %530, label %537

530:                                              ; preds = %522
  %531 = icmp slt i32 %.30, 1024
  br i1 %531, label %532, label %570

532:                                              ; preds = %530
  %533 = trunc nuw i32 %520 to i8
  %534 = add nsw i32 %.30, 1
  %535 = sext i32 %.30 to i64
  %536 = getelementptr inbounds [1025 x i8], ptr %11, i64 0, i64 %535
  store i8 %533, ptr %536, align 1, !tbaa !5
  br label %570

537:                                              ; preds = %516, %522
  %538 = load ptr, ptr %0, align 8, !tbaa !14
  %539 = getelementptr inbounds i8, ptr %538, i64 32
  %540 = load ptr, ptr %539, align 8
  call void %540(ptr noundef nonnull align 8 dereferenceable(32) %0)
  br label %570

541:                                              ; preds = %490
  switch i32 %491, label %564 [
    i32 76, label %542
    i32 83, label %549
  ]

542:                                              ; preds = %541
  %543 = icmp slt i32 %.27, 1024
  br i1 %543, label %544, label %.thread844

544:                                              ; preds = %542
  %545 = trunc nuw i32 %482 to i8
  %546 = add nsw i32 %.27, 1
  %547 = sext i32 %.27 to i64
  %548 = getelementptr inbounds [1025 x i8], ptr %11, i64 0, i64 %547
  store i8 %545, ptr %548, align 1, !tbaa !5
  br label %570

549:                                              ; preds = %541
  %550 = load ptr, ptr %10, align 8, !tbaa !18
  %551 = getelementptr inbounds i8, ptr %550, i64 256
  %552 = load ptr, ptr %551, align 8, !tbaa !20
  %553 = getelementptr inbounds i8, ptr %552, i64 56
  %554 = load ptr, ptr %553, align 8, !tbaa !74
  %555 = call noundef i32 @_ZNK7glslang13TIntermediate9getSourceEv(ptr noundef nonnull align 8 dereferenceable(1784) %554)
  %556 = icmp eq i32 %555, 1
  br i1 %556, label %557, label %564

557:                                              ; preds = %549
  %558 = icmp slt i32 %.27, 1024
  br i1 %558, label %559, label %.thread844

559:                                              ; preds = %557
  %560 = trunc nuw i32 %482 to i8
  %561 = add nsw i32 %.27, 1
  %562 = sext i32 %.27 to i64
  %563 = getelementptr inbounds [1025 x i8], ptr %11, i64 0, i64 %562
  store i8 %560, ptr %563, align 1, !tbaa !5
  br label %570

564:                                              ; preds = %541, %549
  %565 = load ptr, ptr %0, align 8, !tbaa !14
  %566 = getelementptr inbounds i8, ptr %565, i64 32
  %567 = load ptr, ptr %566, align 8
  call void %567(ptr noundef nonnull align 8 dereferenceable(32) %0)
  br label %570

.thread844:                                       ; preds = %557, %542
  %.1493.ph = phi i8 [ 0, %557 ], [ 1, %542 ]
  %.1491.ph = phi i1 [ true, %557 ], [ false, %542 ]
  %568 = zext nneg i32 %.27 to i64
  %569 = getelementptr inbounds [1025 x i8], ptr %11, i64 0, i64 %568
  store i8 0, ptr %569, align 1, !tbaa !5
  br label %.lr.ph

570:                                              ; preds = %559, %544, %537, %532, %530, %564
  %.1493 = phi i8 [ 0, %564 ], [ %.0492, %530 ], [ %.0492, %532 ], [ %.0492, %537 ], [ 1, %544 ], [ 0, %559 ]
  %.1491 = phi i1 [ false, %564 ], [ true, %530 ], [ true, %532 ], [ false, %537 ], [ false, %544 ], [ true, %559 ]
  %.35 = phi i32 [ %.27, %564 ], [ %.30, %530 ], [ %534, %532 ], [ %.30, %537 ], [ %546, %544 ], [ %561, %559 ]
  %571 = sext i32 %.35 to i64
  %572 = getelementptr inbounds [1025 x i8], ptr %11, i64 0, i64 %571
  store i8 0, ptr %572, align 1, !tbaa !5
  %573 = icmp sgt i32 %.27, 0
  br i1 %573, label %.lr.ph, label %..loopexit_crit_edge

..loopexit_crit_edge:                             ; preds = %570
  %.pre = trunc nuw i8 %.1493 to i1
  br i1 %.pre, label %.loopexit.thread856, label %641

.lr.ph:                                           ; preds = %.thread844, %570
  %.1491850 = phi i1 [ %.1491.ph, %.thread844 ], [ %.1491, %570 ]
  %.1493848 = phi i8 [ %.1493.ph, %.thread844 ], [ %.1493, %570 ]
  %574 = trunc nuw i8 %.1493848 to i1
  %wide.trip.count842 = zext nneg i32 %.27 to i64
  br i1 %574, label %.lr.ph.split.us, label %.lr.ph.split

.lr.ph.split.us:                                  ; preds = %.lr.ph, %584
  %indvars.iv839 = phi i64 [ %indvars.iv.next840, %584 ], [ 0, %.lr.ph ]
  %.5487753.us = phi i64 [ %587, %584 ], [ 0, %.lr.ph ]
  %575 = getelementptr inbounds [1025 x i8], ptr %11, i64 0, i64 %indvars.iv839
  %576 = load i8, ptr %575, align 1, !tbaa !5
  %577 = sext i8 %576 to i32
  %578 = add nsw i32 %577, -48
  %579 = icmp ugt i64 %.5487753.us, 1844674407370955161
  br i1 %579, label %.loopexit, label %580

580:                                              ; preds = %.lr.ph.split.us
  %581 = icmp eq i64 %.5487753.us, 1844674407370955161
  %582 = icmp ugt i32 %578, 5
  %583 = select i1 %581, i1 %582, i1 false
  br i1 %583, label %.loopexit, label %584

584:                                              ; preds = %580
  %585 = mul nuw i64 %.5487753.us, 10
  %586 = sext i32 %578 to i64
  %587 = add i64 %585, %586
  %indvars.iv.next840 = add nuw nsw i64 %indvars.iv839, 1
  %exitcond843.not = icmp eq i64 %indvars.iv.next840, %wide.trip.count842
  br i1 %exitcond843.not, label %.loopexit.thread856, label %.lr.ph.split.us, !llvm.loop !96

.lr.ph.split:                                     ; preds = %.lr.ph
  br i1 %.1491850, label %.lr.ph.split.split.us, label %.lr.ph.split.split

.lr.ph.split.split.us:                            ; preds = %.lr.ph.split, %598
  %indvars.iv834 = phi i64 [ %indvars.iv.next835, %598 ], [ 0, %.lr.ph.split ]
  %.5487753.us756 = phi i64 [ %601, %598 ], [ 0, %.lr.ph.split ]
  %588 = getelementptr inbounds [1025 x i8], ptr %11, i64 0, i64 %indvars.iv834
  %589 = load i8, ptr %588, align 1, !tbaa !5
  %590 = sext i8 %589 to i32
  %591 = add nsw i32 %590, -48
  %592 = icmp ugt i64 %.5487753.us756, 6553
  br i1 %592, label %.loopexit, label %593

593:                                              ; preds = %.lr.ph.split.split.us
  %594 = icmp eq i64 %.5487753.us756, 6553
  %595 = and i32 %591, 65534
  %596 = icmp ugt i32 %595, 5
  %597 = select i1 %594, i1 %596, i1 false
  br i1 %597, label %.loopexit, label %598

598:                                              ; preds = %593
  %599 = mul nuw nsw i64 %.5487753.us756, 10
  %600 = sext i32 %591 to i64
  %601 = add nsw i64 %599, %600
  %indvars.iv.next835 = add nuw nsw i64 %indvars.iv834, 1
  %exitcond838.not = icmp eq i64 %indvars.iv.next835, %wide.trip.count842
  br i1 %exitcond838.not, label %.loopexit.thread, label %.lr.ph.split.split.us, !llvm.loop !96

.lr.ph.split.split:                               ; preds = %.lr.ph.split, %611
  %indvars.iv830 = phi i64 [ %indvars.iv.next831, %611 ], [ 0, %.lr.ph.split ]
  %.5487753 = phi i64 [ %614, %611 ], [ 0, %.lr.ph.split ]
  %602 = getelementptr inbounds [1025 x i8], ptr %11, i64 0, i64 %indvars.iv830
  %603 = load i8, ptr %602, align 1, !tbaa !5
  %604 = sext i8 %603 to i32
  %605 = add nsw i32 %604, -48
  %606 = icmp ugt i64 %.5487753, 429496729
  br i1 %606, label %.loopexit, label %607

607:                                              ; preds = %.lr.ph.split.split
  %608 = icmp eq i64 %.5487753, 429496729
  %609 = icmp ugt i32 %605, 5
  %610 = select i1 %608, i1 %609, i1 false
  br i1 %610, label %.loopexit, label %611

611:                                              ; preds = %607
  %612 = mul nuw nsw i64 %.5487753, 10
  %613 = sext i32 %605 to i64
  %614 = add nsw i64 %612, %613
  %indvars.iv.next831 = add nuw nsw i64 %indvars.iv830, 1
  %exitcond833.not = icmp eq i64 %indvars.iv.next831, %wide.trip.count842
  br i1 %exitcond833.not, label %.loopexit.thread, label %.lr.ph.split.split, !llvm.loop !96

.loopexit.thread:                                 ; preds = %611, %598
  %.7489.ph = phi i64 [ %601, %598 ], [ %614, %611 ]
  br i1 %.1491850, label %642, label %664

.loopexit:                                        ; preds = %.lr.ph.split.split, %607, %.lr.ph.split.split.us, %593, %580, %.lr.ph.split.us
  %615 = load ptr, ptr %10, align 8, !tbaa !18
  %616 = getelementptr inbounds i8, ptr %615, i64 256
  %617 = load ptr, ptr %616, align 8, !tbaa !20
  %618 = load ptr, ptr %617, align 8, !tbaa !14
  %619 = getelementptr inbounds i8, ptr %618, i64 352
  %620 = load ptr, ptr %619, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %620(ptr noundef nonnull align 8 dereferenceable(1176) %617, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.28, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.1)
  br i1 %574, label %.loopexit.thread856, label %641

.loopexit.thread856:                              ; preds = %584, %..loopexit_crit_edge, %.loopexit
  %.7489861 = phi i64 [ -1, %.loopexit ], [ 0, %..loopexit_crit_edge ], [ %587, %584 ]
  %.1491849860 = phi i1 [ %.1491850, %.loopexit ], [ %.1491, %..loopexit_crit_edge ], [ %.1491850, %584 ]
  %621 = load ptr, ptr %10, align 8, !tbaa !18
  %622 = getelementptr inbounds i8, ptr %621, i64 256
  %623 = load ptr, ptr %622, align 8, !tbaa !20
  %624 = getelementptr inbounds i8, ptr %623, i64 56
  %625 = load ptr, ptr %624, align 8, !tbaa !74
  %626 = call noundef i32 @_ZNK7glslang13TIntermediate9getSourceEv(ptr noundef nonnull align 8 dereferenceable(1784) %625)
  %627 = icmp eq i32 %626, 1
  br i1 %627, label %628, label %641

628:                                              ; preds = %.loopexit.thread856
  %629 = load ptr, ptr %10, align 8, !tbaa !18
  %630 = getelementptr inbounds i8, ptr %629, i64 264
  %631 = load i32, ptr %630, align 8, !tbaa !92
  %632 = icmp eq i32 %631, 0
  br i1 %632, label %633, label %639

633:                                              ; preds = %628
  %634 = getelementptr inbounds i8, ptr %629, i64 256
  %635 = load ptr, ptr %634, align 8, !tbaa !20
  call void @_ZN7glslang14TParseVersions14requireProfileERKNS_10TSourceLocEiPKc(ptr noundef nonnull align 8 dereferenceable(192) %635, ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef -9, ptr noundef nonnull @.str.29)
  %636 = load ptr, ptr %10, align 8, !tbaa !18
  %637 = getelementptr inbounds i8, ptr %636, i64 256
  %638 = load ptr, ptr %637, align 8, !tbaa !20
  call void @_ZN7glslang14TParseVersions15profileRequiresERKNS_10TSourceLocEiiiPKPKcS5_(ptr noundef nonnull align 8 dereferenceable(192) %638, ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef -9, i32 noundef 0, i32 noundef 3, ptr noundef nonnull @_ZZN7glslang10TPpContext12tStringInput4scanEPNS_8TPpTokenEE16Int64_Extensions, ptr noundef nonnull @.str.29)
  br label %639

639:                                              ; preds = %633, %628
  store i64 %.7489861, ptr %4, align 8, !tbaa !5
  %640 = select i1 %or.cond55, i32 155, i32 154
  br label %.loopexit673

641:                                              ; preds = %..loopexit_crit_edge, %.loopexit.thread856, %.loopexit
  %.7489855 = phi i64 [ %.7489861, %.loopexit.thread856 ], [ -1, %.loopexit ], [ 0, %..loopexit_crit_edge ]
  %.1491849854 = phi i1 [ %.1491849860, %.loopexit.thread856 ], [ %.1491850, %.loopexit ], [ %.1491, %..loopexit_crit_edge ]
  br i1 %.1491849854, label %642, label %664

642:                                              ; preds = %.loopexit.thread, %641
  %.7489855862 = phi i64 [ %.7489.ph, %.loopexit.thread ], [ %.7489855, %641 ]
  %643 = load ptr, ptr %10, align 8, !tbaa !18
  %644 = getelementptr inbounds i8, ptr %643, i64 264
  %645 = load i32, ptr %644, align 8, !tbaa !92
  %646 = icmp eq i32 %645, 0
  br i1 %646, label %647, label %661

647:                                              ; preds = %642
  %648 = getelementptr inbounds i8, ptr %643, i64 256
  %649 = load ptr, ptr %648, align 8, !tbaa !20
  %650 = getelementptr inbounds i8, ptr %649, i64 56
  %651 = load ptr, ptr %650, align 8, !tbaa !74
  %652 = call noundef i32 @_ZNK7glslang13TIntermediate9getSourceEv(ptr noundef nonnull align 8 dereferenceable(1784) %651)
  %653 = icmp eq i32 %652, 1
  br i1 %653, label %654, label %661

654:                                              ; preds = %647
  %655 = load ptr, ptr %10, align 8, !tbaa !18
  %656 = getelementptr inbounds i8, ptr %655, i64 256
  %657 = load ptr, ptr %656, align 8, !tbaa !20
  call void @_ZN7glslang14TParseVersions14requireProfileERKNS_10TSourceLocEiPKc(ptr noundef nonnull align 8 dereferenceable(192) %657, ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef -9, ptr noundef nonnull @.str.30)
  %658 = load ptr, ptr %10, align 8, !tbaa !18
  %659 = getelementptr inbounds i8, ptr %658, i64 256
  %660 = load ptr, ptr %659, align 8, !tbaa !20
  call void @_ZN7glslang14TParseVersions15profileRequiresERKNS_10TSourceLocEiiiPKPKcS5_(ptr noundef nonnull align 8 dereferenceable(192) %660, ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef -9, i32 noundef 0, i32 noundef 3, ptr noundef nonnull @_ZZN7glslang10TPpContext12tStringInput4scanEPNS_8TPpTokenEE16Int16_Extensions, ptr noundef nonnull @.str.31)
  br label %661

661:                                              ; preds = %654, %647, %642
  %662 = trunc i64 %.7489855862 to i32
  store i32 %662, ptr %4, align 8, !tbaa !5
  %663 = select i1 %or.cond55, i32 157, i32 156
  br label %.loopexit673

664:                                              ; preds = %.loopexit.thread, %641
  %.7489855863 = phi i64 [ %.7489.ph, %.loopexit.thread ], [ %.7489855, %641 ]
  %665 = trunc i64 %.7489855863 to i32
  store i32 %665, ptr %4, align 8, !tbaa !5
  %666 = select i1 %or.cond55, i32 153, i32 152
  br label %.loopexit673

667:                                              ; preds = %18
  %668 = load ptr, ptr %0, align 8, !tbaa !14
  %669 = getelementptr inbounds i8, ptr %668, i64 24
  %670 = load ptr, ptr %669, align 8
  %671 = tail call noundef i32 %670(ptr noundef nonnull align 8 dereferenceable(32) %0)
  switch i32 %671, label %673 [
    i32 45, label %.loopexit673
    i32 61, label %672
  ]

672:                                              ; preds = %667
  br label %.loopexit673

673:                                              ; preds = %667
  %674 = load ptr, ptr %0, align 8, !tbaa !14
  %675 = getelementptr inbounds i8, ptr %674, i64 32
  %676 = load ptr, ptr %675, align 8
  tail call void %676(ptr noundef nonnull align 8 dereferenceable(32) %0)
  br label %.loopexit673

677:                                              ; preds = %18
  %678 = load ptr, ptr %0, align 8, !tbaa !14
  %679 = getelementptr inbounds i8, ptr %678, i64 24
  %680 = load ptr, ptr %679, align 8
  %681 = tail call noundef i32 %680(ptr noundef nonnull align 8 dereferenceable(32) %0)
  switch i32 %681, label %683 [
    i32 43, label %.loopexit673
    i32 61, label %682
  ]

682:                                              ; preds = %677
  br label %.loopexit673

683:                                              ; preds = %677
  %684 = load ptr, ptr %0, align 8, !tbaa !14
  %685 = getelementptr inbounds i8, ptr %684, i64 32
  %686 = load ptr, ptr %685, align 8
  tail call void %686(ptr noundef nonnull align 8 dereferenceable(32) %0)
  br label %.loopexit673

687:                                              ; preds = %18
  %688 = load ptr, ptr %0, align 8, !tbaa !14
  %689 = getelementptr inbounds i8, ptr %688, i64 24
  %690 = load ptr, ptr %689, align 8
  %691 = tail call noundef i32 %690(ptr noundef nonnull align 8 dereferenceable(32) %0)
  %692 = icmp eq i32 %691, 61
  br i1 %692, label %.loopexit673, label %693

693:                                              ; preds = %687
  %694 = load ptr, ptr %0, align 8, !tbaa !14
  %695 = getelementptr inbounds i8, ptr %694, i64 32
  %696 = load ptr, ptr %695, align 8
  tail call void %696(ptr noundef nonnull align 8 dereferenceable(32) %0)
  br label %.loopexit673

697:                                              ; preds = %18
  %698 = load ptr, ptr %0, align 8, !tbaa !14
  %699 = getelementptr inbounds i8, ptr %698, i64 24
  %700 = load ptr, ptr %699, align 8
  %701 = tail call noundef i32 %700(ptr noundef nonnull align 8 dereferenceable(32) %0)
  %702 = icmp eq i32 %701, 61
  br i1 %702, label %.loopexit673, label %703

703:                                              ; preds = %697
  %704 = load ptr, ptr %0, align 8, !tbaa !14
  %705 = getelementptr inbounds i8, ptr %704, i64 32
  %706 = load ptr, ptr %705, align 8
  tail call void %706(ptr noundef nonnull align 8 dereferenceable(32) %0)
  br label %.loopexit673

707:                                              ; preds = %18
  %708 = load ptr, ptr %0, align 8, !tbaa !14
  %709 = getelementptr inbounds i8, ptr %708, i64 24
  %710 = load ptr, ptr %709, align 8
  %711 = tail call noundef i32 %710(ptr noundef nonnull align 8 dereferenceable(32) %0)
  switch i32 %711, label %713 [
    i32 94, label %.loopexit673
    i32 61, label %712
  ]

712:                                              ; preds = %707
  br label %.loopexit673

713:                                              ; preds = %707
  %714 = load ptr, ptr %0, align 8, !tbaa !14
  %715 = getelementptr inbounds i8, ptr %714, i64 32
  %716 = load ptr, ptr %715, align 8
  tail call void %716(ptr noundef nonnull align 8 dereferenceable(32) %0)
  br label %.loopexit673

717:                                              ; preds = %18
  %718 = load ptr, ptr %0, align 8, !tbaa !14
  %719 = getelementptr inbounds i8, ptr %718, i64 24
  %720 = load ptr, ptr %719, align 8
  %721 = tail call noundef i32 %720(ptr noundef nonnull align 8 dereferenceable(32) %0)
  %722 = icmp eq i32 %721, 61
  br i1 %722, label %.loopexit673, label %723

723:                                              ; preds = %717
  %724 = load ptr, ptr %0, align 8, !tbaa !14
  %725 = getelementptr inbounds i8, ptr %724, i64 32
  %726 = load ptr, ptr %725, align 8
  tail call void %726(ptr noundef nonnull align 8 dereferenceable(32) %0)
  br label %.loopexit673

727:                                              ; preds = %18
  %728 = load ptr, ptr %0, align 8, !tbaa !14
  %729 = getelementptr inbounds i8, ptr %728, i64 24
  %730 = load ptr, ptr %729, align 8
  %731 = tail call noundef i32 %730(ptr noundef nonnull align 8 dereferenceable(32) %0)
  %732 = icmp eq i32 %731, 61
  br i1 %732, label %.loopexit673, label %733

733:                                              ; preds = %727
  %734 = load ptr, ptr %0, align 8, !tbaa !14
  %735 = getelementptr inbounds i8, ptr %734, i64 32
  %736 = load ptr, ptr %735, align 8
  tail call void %736(ptr noundef nonnull align 8 dereferenceable(32) %0)
  br label %.loopexit673

737:                                              ; preds = %18
  %738 = load ptr, ptr %0, align 8, !tbaa !14
  %739 = getelementptr inbounds i8, ptr %738, i64 24
  %740 = load ptr, ptr %739, align 8
  %741 = tail call noundef i32 %740(ptr noundef nonnull align 8 dereferenceable(32) %0)
  switch i32 %741, label %743 [
    i32 124, label %.loopexit673
    i32 61, label %742
  ]

742:                                              ; preds = %737
  br label %.loopexit673

743:                                              ; preds = %737
  %744 = load ptr, ptr %0, align 8, !tbaa !14
  %745 = getelementptr inbounds i8, ptr %744, i64 32
  %746 = load ptr, ptr %745, align 8
  tail call void %746(ptr noundef nonnull align 8 dereferenceable(32) %0)
  br label %.loopexit673

747:                                              ; preds = %18
  %748 = load ptr, ptr %0, align 8, !tbaa !14
  %749 = getelementptr inbounds i8, ptr %748, i64 24
  %750 = load ptr, ptr %749, align 8
  %751 = tail call noundef i32 %750(ptr noundef nonnull align 8 dereferenceable(32) %0)
  switch i32 %751, label %753 [
    i32 38, label %.loopexit673
    i32 61, label %752
  ]

752:                                              ; preds = %747
  br label %.loopexit673

753:                                              ; preds = %747
  %754 = load ptr, ptr %0, align 8, !tbaa !14
  %755 = getelementptr inbounds i8, ptr %754, i64 32
  %756 = load ptr, ptr %755, align 8
  tail call void %756(ptr noundef nonnull align 8 dereferenceable(32) %0)
  br label %.loopexit673

757:                                              ; preds = %18
  %758 = load ptr, ptr %0, align 8, !tbaa !14
  %759 = getelementptr inbounds i8, ptr %758, i64 24
  %760 = load ptr, ptr %759, align 8
  %761 = tail call noundef i32 %760(ptr noundef nonnull align 8 dereferenceable(32) %0)
  switch i32 %761, label %772 [
    i32 60, label %762
    i32 61, label %.loopexit673
  ]

762:                                              ; preds = %757
  %763 = load ptr, ptr %0, align 8, !tbaa !14
  %764 = getelementptr inbounds i8, ptr %763, i64 24
  %765 = load ptr, ptr %764, align 8
  %766 = tail call noundef i32 %765(ptr noundef nonnull align 8 dereferenceable(32) %0)
  %767 = icmp eq i32 %766, 61
  br i1 %767, label %.loopexit673, label %768

768:                                              ; preds = %762
  %769 = load ptr, ptr %0, align 8, !tbaa !14
  %770 = getelementptr inbounds i8, ptr %769, i64 32
  %771 = load ptr, ptr %770, align 8
  tail call void %771(ptr noundef nonnull align 8 dereferenceable(32) %0)
  br label %.loopexit673

772:                                              ; preds = %757
  %773 = load ptr, ptr %0, align 8, !tbaa !14
  %774 = getelementptr inbounds i8, ptr %773, i64 32
  %775 = load ptr, ptr %774, align 8
  tail call void %775(ptr noundef nonnull align 8 dereferenceable(32) %0)
  br label %.loopexit673

776:                                              ; preds = %18
  %777 = load ptr, ptr %0, align 8, !tbaa !14
  %778 = getelementptr inbounds i8, ptr %777, i64 24
  %779 = load ptr, ptr %778, align 8
  %780 = tail call noundef i32 %779(ptr noundef nonnull align 8 dereferenceable(32) %0)
  switch i32 %780, label %791 [
    i32 62, label %781
    i32 61, label %.loopexit673
  ]

781:                                              ; preds = %776
  %782 = load ptr, ptr %0, align 8, !tbaa !14
  %783 = getelementptr inbounds i8, ptr %782, i64 24
  %784 = load ptr, ptr %783, align 8
  %785 = tail call noundef i32 %784(ptr noundef nonnull align 8 dereferenceable(32) %0)
  %786 = icmp eq i32 %785, 61
  br i1 %786, label %.loopexit673, label %787

787:                                              ; preds = %781
  %788 = load ptr, ptr %0, align 8, !tbaa !14
  %789 = getelementptr inbounds i8, ptr %788, i64 32
  %790 = load ptr, ptr %789, align 8
  tail call void %790(ptr noundef nonnull align 8 dereferenceable(32) %0)
  br label %.loopexit673

791:                                              ; preds = %776
  %792 = load ptr, ptr %0, align 8, !tbaa !14
  %793 = getelementptr inbounds i8, ptr %792, i64 32
  %794 = load ptr, ptr %793, align 8
  tail call void %794(ptr noundef nonnull align 8 dereferenceable(32) %0)
  br label %.loopexit673

795:                                              ; preds = %18
  %796 = load ptr, ptr %0, align 8, !tbaa !14
  %797 = getelementptr inbounds i8, ptr %796, i64 24
  %798 = load ptr, ptr %797, align 8
  %799 = tail call noundef i32 %798(ptr noundef nonnull align 8 dereferenceable(32) %0)
  %800 = add i32 %799, -48
  %or.cond65 = icmp ult i32 %800, 10
  %801 = load ptr, ptr %0, align 8, !tbaa !14
  %802 = getelementptr inbounds i8, ptr %801, i64 32
  %803 = load ptr, ptr %802, align 8
  tail call void %803(ptr noundef nonnull align 8 dereferenceable(32) %0)
  br i1 %or.cond65, label %804, label %.loopexit673

804:                                              ; preds = %795
  %805 = load ptr, ptr %10, align 8, !tbaa !18
  %806 = tail call noundef i32 @_ZN7glslang10TPpContext11lFloatConstEiiPNS_8TPpTokenE(ptr noundef nonnull align 8 dereferenceable(921) %805, i32 noundef 0, i32 noundef 46, ptr noundef nonnull %1)
  br label %.loopexit673

807:                                              ; preds = %18
  %808 = load ptr, ptr %0, align 8, !tbaa !14
  %809 = getelementptr inbounds i8, ptr %808, i64 24
  %810 = load ptr, ptr %809, align 8
  %811 = tail call noundef i32 %810(ptr noundef nonnull align 8 dereferenceable(32) %0)
  switch i32 %811, label %852 [
    i32 47, label %812
    i32 42, label %.sink.split
    i32 61, label %.loopexit673
  ]

812:                                              ; preds = %807
  %813 = load ptr, ptr %10, align 8, !tbaa !18
  %814 = getelementptr inbounds i8, ptr %813, i64 384
  store i8 1, ptr %814, align 8, !tbaa !97
  br label %815

815:                                              ; preds = %815, %812
  %816 = load ptr, ptr %0, align 8, !tbaa !14
  %817 = getelementptr inbounds i8, ptr %816, i64 24
  %818 = load ptr, ptr %817, align 8
  %819 = tail call noundef i32 %818(ptr noundef nonnull align 8 dereferenceable(32) %0)
  switch i32 %819, label %815 [
    i32 -1, label %820
    i32 10, label %820
  ]

820:                                              ; preds = %815, %815
  store i8 1, ptr %5, align 8, !tbaa !8
  %821 = load ptr, ptr %10, align 8, !tbaa !18
  %822 = getelementptr inbounds i8, ptr %821, i64 384
  store i8 0, ptr %822, align 8, !tbaa !97
  br label %.loopexit673

.sink.split:                                      ; preds = %827, %807
  %823 = load ptr, ptr %0, align 8, !tbaa !14
  %824 = getelementptr inbounds i8, ptr %823, i64 24
  %825 = load ptr, ptr %824, align 8
  %826 = tail call noundef i32 %825(ptr noundef nonnull align 8 dereferenceable(32) %0)
  br label %827

827:                                              ; preds = %.sink.split, %835
  %.12473 = phi i32 [ %839, %835 ], [ %826, %.sink.split ]
  switch i32 %.12473, label %.sink.split [
    i32 42, label %835
    i32 -1, label %828
  ], !llvm.loop !98

828:                                              ; preds = %827
  %829 = load ptr, ptr %10, align 8, !tbaa !18
  %830 = getelementptr inbounds i8, ptr %829, i64 256
  %831 = load ptr, ptr %830, align 8, !tbaa !20
  %832 = load ptr, ptr %831, align 8, !tbaa !14
  %833 = getelementptr inbounds i8, ptr %832, i64 352
  %834 = load ptr, ptr %833, align 8
  tail call void (ptr, ptr, ptr, ptr, ptr, ...) %834(ptr noundef nonnull align 8 dereferenceable(1176) %831, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.32, ptr noundef nonnull @.str.33, ptr noundef nonnull @.str.1)
  br label %.loopexit673

835:                                              ; preds = %827
  %836 = load ptr, ptr %0, align 8, !tbaa !14
  %837 = getelementptr inbounds i8, ptr %836, i64 24
  %838 = load ptr, ptr %837, align 8
  %839 = tail call noundef i32 %838(ptr noundef nonnull align 8 dereferenceable(32) %0)
  switch i32 %839, label %827 [
    i32 -1, label %840
    i32 47, label %847
  ]

840:                                              ; preds = %835
  %841 = load ptr, ptr %10, align 8, !tbaa !18
  %842 = getelementptr inbounds i8, ptr %841, i64 256
  %843 = load ptr, ptr %842, align 8, !tbaa !20
  %844 = load ptr, ptr %843, align 8, !tbaa !14
  %845 = getelementptr inbounds i8, ptr %844, i64 352
  %846 = load ptr, ptr %845, align 8
  tail call void (ptr, ptr, ptr, ptr, ptr, ...) %846(ptr noundef nonnull align 8 dereferenceable(1176) %843, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.32, ptr noundef nonnull @.str.33, ptr noundef nonnull @.str.1)
  br label %.loopexit673

847:                                              ; preds = %835
  store i8 1, ptr %5, align 8, !tbaa !8
  %848 = load ptr, ptr %0, align 8, !tbaa !14
  %849 = getelementptr inbounds i8, ptr %848, i64 24
  %850 = load ptr, ptr %849, align 8
  %851 = tail call noundef i32 %850(ptr noundef nonnull align 8 dereferenceable(32) %0)
  br label %.backedge

852:                                              ; preds = %807
  %853 = load ptr, ptr %0, align 8, !tbaa !14
  %854 = getelementptr inbounds i8, ptr %853, i64 32
  %855 = load ptr, ptr %854, align 8
  tail call void %855(ptr noundef nonnull align 8 dereferenceable(32) %0)
  br label %.loopexit673

856:                                              ; preds = %18
  %857 = load ptr, ptr %10, align 8, !tbaa !18
  %858 = tail call noundef i32 @_ZN7glslang10TPpContext16characterLiteralEPNS_8TPpTokenE(ptr noundef nonnull align 8 dereferenceable(921) %857, ptr noundef nonnull %1)
  br label %.loopexit673

859:                                              ; preds = %18
  %860 = load ptr, ptr %0, align 8, !tbaa !14
  %861 = getelementptr inbounds i8, ptr %860, i64 24
  %862 = load ptr, ptr %861, align 8
  %863 = tail call noundef i32 %862(ptr noundef nonnull align 8 dereferenceable(32) %0)
  br label %switch.early.test

switch.early.test:                                ; preds = %859, %.loopexit672
  %indvars.iv = phi i64 [ 0, %859 ], [ %indvars.iv.next, %.loopexit672 ]
  %.13474751 = phi i32 [ %863, %859 ], [ %945, %.loopexit672 ]
  switch i32 %.13474751, label %.loopexit672 [
    i32 -1, label %.critedge69
    i32 34, label %.critedge69
    i32 10, label %.critedge69
    i32 92, label %864
  ]

864:                                              ; preds = %switch.early.test
  %865 = load ptr, ptr %10, align 8, !tbaa !18
  %866 = getelementptr inbounds i8, ptr %865, i64 920
  %867 = load i8, ptr %866, align 8, !tbaa !99, !range !100, !noundef !101
  %868 = trunc nuw i8 %867 to i1
  br i1 %868, label %.loopexit672, label %869

869:                                              ; preds = %864
  %870 = load ptr, ptr %0, align 8, !tbaa !14
  %871 = getelementptr inbounds i8, ptr %870, i64 24
  %872 = load ptr, ptr %871, align 8
  %873 = tail call noundef i32 %872(ptr noundef nonnull align 8 dereferenceable(32) %0)
  switch i32 %873, label %933 [
    i32 39, label %.loopexit672
    i32 34, label %.loopexit672
    i32 63, label %.loopexit672
    i32 92, label %.loopexit672
    i32 97, label %874
    i32 98, label %875
    i32 102, label %876
    i32 110, label %877
    i32 114, label %878
    i32 116, label %879
    i32 118, label %880
    i32 120, label %.preheader671
    i32 48, label %910
    i32 49, label %910
    i32 50, label %910
    i32 51, label %910
    i32 52, label %910
    i32 53, label %910
    i32 54, label %910
    i32 55, label %910
  ]

874:                                              ; preds = %869
  br label %.loopexit672

875:                                              ; preds = %869
  br label %.loopexit672

876:                                              ; preds = %869
  br label %.loopexit672

877:                                              ; preds = %869
  br label %.loopexit672

878:                                              ; preds = %869
  br label %.loopexit672

879:                                              ; preds = %869
  br label %.loopexit672

880:                                              ; preds = %869
  br label %.loopexit672

.preheader671:                                    ; preds = %869, %899
  %.14475 = phi i32 [ %902, %899 ], [ 0, %869 ]
  %.0438 = phi i32 [ %900, %899 ], [ 0, %869 ]
  %881 = load ptr, ptr %0, align 8, !tbaa !14
  %882 = getelementptr inbounds i8, ptr %881, i64 24
  %883 = load ptr, ptr %882, align 8
  %884 = tail call noundef i32 %883(ptr noundef nonnull align 8 dereferenceable(32) %0)
  %885 = add i32 %884, -48
  %or.cond71 = icmp ult i32 %885, 10
  br i1 %or.cond71, label %899, label %886

886:                                              ; preds = %.preheader671
  %887 = add i32 %884, -65
  %or.cond73 = icmp ult i32 %887, 6
  br i1 %or.cond73, label %888, label %890

888:                                              ; preds = %886
  %889 = add nsw i32 %884, -55
  br label %899

890:                                              ; preds = %886
  %891 = add i32 %884, -97
  %or.cond75 = icmp ult i32 %891, 6
  br i1 %or.cond75, label %892, label %894

892:                                              ; preds = %890
  %893 = add nsw i32 %884, -87
  br label %899

894:                                              ; preds = %890
  %895 = load ptr, ptr %0, align 8, !tbaa !14
  %896 = getelementptr inbounds i8, ptr %895, i64 32
  %897 = load ptr, ptr %896, align 8
  tail call void %897(ptr noundef nonnull align 8 dereferenceable(32) %0)
  %898 = icmp eq i32 %.0438, 0
  br i1 %898, label %903, label %.loopexit672

899:                                              ; preds = %.preheader671, %888, %892
  %.0439 = phi i32 [ %889, %888 ], [ %893, %892 ], [ %885, %.preheader671 ]
  %900 = add nuw nsw i32 %.0438, 1
  %901 = shl nsw i32 %.14475, 4
  %902 = add nuw nsw i32 %.0439, %901
  br label %.preheader671, !llvm.loop !102

903:                                              ; preds = %894
  %904 = load ptr, ptr %10, align 8, !tbaa !18
  %905 = getelementptr inbounds i8, ptr %904, i64 256
  %906 = load ptr, ptr %905, align 8, !tbaa !20
  %907 = load ptr, ptr %906, align 8, !tbaa !14
  %908 = getelementptr inbounds i8, ptr %907, i64 352
  %909 = load ptr, ptr %908, align 8
  tail call void (ptr, ptr, ptr, ptr, ptr, ...) %909(ptr noundef nonnull align 8 dereferenceable(1176) %906, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.34, ptr noundef nonnull @.str.35, ptr noundef nonnull @.str.1)
  br label %.loopexit672

910:                                              ; preds = %869, %869, %869, %869, %869, %869, %869, %869
  %911 = add nsw i32 %873, -48
  %912 = load ptr, ptr %0, align 8, !tbaa !14
  %913 = getelementptr inbounds i8, ptr %912, i64 24
  %914 = load ptr, ptr %913, align 8
  %915 = tail call noundef i32 %914(ptr noundef nonnull align 8 dereferenceable(32) %0)
  %916 = and i32 %915, -8
  %or.cond77 = icmp eq i32 %916, 48
  br i1 %or.cond77, label %917, label %929

917:                                              ; preds = %910
  %918 = add nsw i32 %915, -48
  %919 = shl nuw nsw i32 %911, 3
  %920 = or disjoint i32 %918, %919
  %921 = load ptr, ptr %0, align 8, !tbaa !14
  %922 = getelementptr inbounds i8, ptr %921, i64 24
  %923 = load ptr, ptr %922, align 8
  %924 = tail call noundef i32 %923(ptr noundef nonnull align 8 dereferenceable(32) %0)
  %925 = and i32 %924, -8
  %or.cond77.1 = icmp eq i32 %925, 48
  br i1 %or.cond77.1, label %.loopexit672.loopexit, label %929

.loopexit672.loopexit:                            ; preds = %917
  %926 = add nsw i32 %924, -48
  %927 = shl nuw nsw i32 %920, 3
  %928 = or disjoint i32 %926, %927
  br label %.loopexit672

929:                                              ; preds = %917, %910
  %.15476749.lcssa = phi i32 [ %911, %910 ], [ %920, %917 ]
  %930 = load ptr, ptr %0, align 8, !tbaa !14
  %931 = getelementptr inbounds i8, ptr %930, i64 32
  %932 = load ptr, ptr %931, align 8
  tail call void %932(ptr noundef nonnull align 8 dereferenceable(32) %0)
  br label %.loopexit672

933:                                              ; preds = %869
  %934 = load ptr, ptr %10, align 8, !tbaa !18
  %935 = getelementptr inbounds i8, ptr %934, i64 256
  %936 = load ptr, ptr %935, align 8, !tbaa !20
  %937 = load ptr, ptr %936, align 8, !tbaa !14
  %938 = getelementptr inbounds i8, ptr %937, i64 352
  %939 = load ptr, ptr %938, align 8
  tail call void (ptr, ptr, ptr, ptr, ptr, ...) %939(ptr noundef nonnull align 8 dereferenceable(1176) %936, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.36, ptr noundef nonnull @.str.35, ptr noundef nonnull @.str.1)
  br label %.loopexit672

.loopexit672:                                     ; preds = %869, %869, %869, %.loopexit672.loopexit, %874, %875, %876, %877, %878, %879, %880, %933, %869, %903, %894, %929, %switch.early.test, %864
  %.17478 = phi i32 [ 92, %864 ], [ %.13474751, %switch.early.test ], [ 92, %933 ], [ 11, %880 ], [ 9, %879 ], [ 13, %878 ], [ 10, %877 ], [ 12, %876 ], [ 8, %875 ], [ 7, %874 ], [ %873, %869 ], [ %.14475, %903 ], [ %.14475, %894 ], [ %.15476749.lcssa, %929 ], [ %928, %.loopexit672.loopexit ], [ %873, %869 ], [ %873, %869 ], [ %873, %869 ]
  %940 = trunc i32 %.17478 to i8
  %941 = getelementptr inbounds [1025 x i8], ptr %11, i64 0, i64 %indvars.iv
  store i8 %940, ptr %941, align 1, !tbaa !5
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %942 = load ptr, ptr %0, align 8, !tbaa !14
  %943 = getelementptr inbounds i8, ptr %942, i64 24
  %944 = load ptr, ptr %943, align 8
  %945 = tail call noundef i32 %944(ptr noundef nonnull align 8 dereferenceable(32) %0)
  %exitcond.not = icmp eq i64 %indvars.iv.next, 1024
  br i1 %exitcond.not, label %.critedge69, label %switch.early.test, !llvm.loop !103

.critedge69:                                      ; preds = %switch.early.test, %switch.early.test, %switch.early.test, %.loopexit672
  %.13474.lcssa = phi i32 [ %.13474751, %switch.early.test ], [ %.13474751, %switch.early.test ], [ %.13474751, %switch.early.test ], [ %945, %.loopexit672 ]
  %.36.lcssa = phi i64 [ %indvars.iv, %switch.early.test ], [ %indvars.iv, %switch.early.test ], [ %indvars.iv, %switch.early.test ], [ 1024, %.loopexit672 ]
  %.not669.le = icmp eq i32 %.13474.lcssa, 34
  %946 = and i64 %.36.lcssa, 4294967295
  %947 = getelementptr inbounds [1025 x i8], ptr %11, i64 0, i64 %946
  store i8 0, ptr %947, align 1, !tbaa !5
  br i1 %.not669.le, label %.loopexit673, label %948

948:                                              ; preds = %.critedge69
  %949 = load ptr, ptr %0, align 8, !tbaa !14
  %950 = getelementptr inbounds i8, ptr %949, i64 32
  %951 = load ptr, ptr %950, align 8
  tail call void %951(ptr noundef nonnull align 8 dereferenceable(32) %0)
  %952 = load ptr, ptr %10, align 8, !tbaa !18
  %953 = getelementptr inbounds i8, ptr %952, i64 256
  %954 = load ptr, ptr %953, align 8, !tbaa !20
  %955 = load ptr, ptr %954, align 8, !tbaa !14
  %956 = getelementptr inbounds i8, ptr %955, i64 352
  %957 = load ptr, ptr %956, align 8
  tail call void (ptr, ptr, ptr, ptr, ptr, ...) %957(ptr noundef nonnull align 8 dereferenceable(1176) %954, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.37, ptr noundef nonnull @.str.35, ptr noundef nonnull @.str.1)
  br label %.loopexit673

958:                                              ; preds = %18
  %959 = load ptr, ptr %0, align 8, !tbaa !14
  %960 = getelementptr inbounds i8, ptr %959, i64 24
  %961 = load ptr, ptr %960, align 8
  %962 = tail call noundef i32 %961(ptr noundef nonnull align 8 dereferenceable(32) %0)
  %963 = icmp eq i32 %962, 58
  br i1 %963, label %.loopexit673, label %964

964:                                              ; preds = %958
  %965 = load ptr, ptr %0, align 8, !tbaa !14
  %966 = getelementptr inbounds i8, ptr %965, i64 32
  %967 = load ptr, ptr %966, align 8
  tail call void %967(ptr noundef nonnull align 8 dereferenceable(32) %0)
  br label %.loopexit673

.loopexit673:                                     ; preds = %807, %795, %958, %.critedge69, %948, %776, %781, %757, %762, %747, %737, %727, %717, %707, %697, %687, %677, %667, %639, %661, %664, %316, %435, %457, %460, %229, %250, %262, %964, %856, %852, %840, %828, %820, %804, %791, %787, %772, %768, %753, %752, %743, %742, %733, %723, %713, %712, %703, %693, %683, %682, %673, %672, %487, %49, %23
  %.3 = phi i32 [ %spec.select, %23 ], [ 58, %964 ], [ %858, %856 ], [ %819, %820 ], [ -1, %828 ], [ -1, %840 ], [ 47, %852 ], [ %806, %804 ], [ 134, %787 ], [ 62, %791 ], [ 135, %768 ], [ 60, %772 ], [ 138, %752 ], [ 38, %753 ], [ 139, %742 ], [ 124, %743 ], [ 33, %733 ], [ 61, %723 ], [ 140, %712 ], [ 94, %713 ], [ 37, %703 ], [ 42, %693 ], [ 129, %682 ], [ 43, %683 ], [ 130, %672 ], [ 45, %673 ], [ %489, %487 ], [ 162, %49 ], [ %230, %229 ], [ %252, %250 ], [ %264, %262 ], [ %318, %316 ], [ %436, %435 ], [ %459, %457 ], [ %462, %460 ], [ %640, %639 ], [ %663, %661 ], [ %666, %664 ], [ 148, %667 ], [ 149, %677 ], [ 131, %687 ], [ 133, %697 ], [ 143, %707 ], [ 144, %717 ], [ 145, %727 ], [ 142, %737 ], [ 141, %747 ], [ 137, %762 ], [ 147, %757 ], [ 136, %781 ], [ 146, %776 ], [ 161, %948 ], [ 161, %.critedge69 ], [ 150, %958 ], [ 46, %795 ], [ 132, %807 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %3) #7
  ret i32 %.3
}

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

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #3

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @"_ZZN7glslang10TPpContext12tStringInput4scanEPNS_8TPpTokenEENK3$_0clEi"(ptr noundef nonnull align 1 dereferenceable(1), i32 noundef) local_unnamed_addr #5 align 2

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smin.i32(i32, i32) #6

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 nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { "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 #5 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #7 = { 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 = !{!"omnipotent char", !7, i64 0}
!7 = !{!"Simple C++ TBAA"}
!8 = !{!9, !13, i64 24}
!9 = !{!"_ZTSN7glslang8TPpTokenE", !10, i64 0, !13, i64 24, !6, i64 32, !6, i64 40}
!10 = !{!"_ZTSN7glslang10TSourceLocE", !11, i64 0, !12, i64 8, !12, i64 12, !12, i64 16}
!11 = !{!"any pointer", !6, i64 0}
!12 = !{!"int", !6, i64 0}
!13 = !{!"bool", !6, i64 0}
!14 = !{!15, !15, i64 0}
!15 = !{!"vtable pointer", !7, i64 0}
!16 = distinct !{!16, !17}
!17 = !{!"llvm.loop.mustprogress"}
!18 = !{!19, !11, i64 16}
!19 = !{!"_ZTSN7glslang10TPpContext6tInputE", !13, i64 8, !11, i64 16}
!20 = !{!21, !11, i64 256}
!21 = !{!"_ZTSN7glslang10TPpContextE", !22, i64 8, !33, i64 64, !11, i64 208, !12, i64 216, !11, i64 224, !11, i64 232, !12, i64 240, !12, i64 244, !12, i64 248, !11, i64 256, !12, i64 264, !6, i64 268, !12, i64 336, !52, i64 344, !13, i64 368, !13, i64 369, !11, i64 376, !13, i64 384, !56, i64 392, !58, i64 424, !56, i64 504, !64, i64 536, !13, i64 920}
!22 = !{!"_ZTSN7glslang4TMapIiNS_10TPpContext11MacroSymbolESt4lessIiEEE", !23, i64 0}
!23 = !{!"_ZTSSt3mapIiN7glslang10TPpContext11MacroSymbolESt4lessIiENS0_14pool_allocatorISt4pairIKiS2_EEEE", !24, i64 0}
!24 = !{!"_ZTSSt8_Rb_treeIiSt4pairIKiN7glslang10TPpContext11MacroSymbolEESt10_Select1stIS5_ESt4lessIiENS2_14pool_allocatorIS5_EEE", !25, i64 0}
!25 = !{!"_ZTSNSt8_Rb_treeIiSt4pairIKiN7glslang10TPpContext11MacroSymbolEESt10_Select1stIS5_ESt4lessIiENS2_14pool_allocatorIS5_EEE13_Rb_tree_implIS9_Lb1EEE", !26, i64 0, !27, i64 8, !29, i64 16}
!26 = !{!"_ZTSN7glslang14pool_allocatorISt13_Rb_tree_nodeISt4pairIKiNS_10TPpContext11MacroSymbolEEEEE", !11, i64 0}
!27 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIiEE", !28, i64 0}
!28 = !{!"_ZTSSt4lessIiE"}
!29 = !{!"_ZTSSt15_Rb_tree_header", !30, i64 0, !32, i64 32}
!30 = !{!"_ZTSSt18_Rb_tree_node_base", !31, i64 0, !11, i64 8, !11, i64 16, !11, i64 24}
!31 = !{!"_ZTSSt14_Rb_tree_color", !6, i64 0}
!32 = !{!"long", !6, i64 0}
!33 = !{!"_ZTSN7glslang14TStringAtomMapE", !34, i64 0, !43, i64 64, !12, i64 96, !49, i64 104}
!34 = !{!"_ZTSN7glslang13TUnorderedMapINSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEEiSt4hashIS7_ESt8equal_toIS7_EEE", !35, i64 0}
!35 = !{!"_ZTSSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEiSt4hashIS7_ESt8equal_toIS7_ENS5_ISt4pairIKS7_iEEEE", !36, i64 0}
!36 = !{!"_ZTSSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_iENS5_ISA_EENSt8__detail10_Select1stESt8equal_toIS7_ESt4hashIS7_ENSC_18_Mod_range_hashingENSC_20_Default_ranged_hashENSC_20_Prime_rehash_policyENSC_17_Hashtable_traitsILb1ELb0ELb1EEEE", !37, i64 0, !11, i64 8, !32, i64 16, !40, i64 24, !32, i64 32, !41, i64 40, !11, i64 56}
!37 = !{!"_ZTSNSt8__detail16_Hashtable_allocIN7glslang14pool_allocatorINS_10_Hash_nodeISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS2_IcEEEEiELb1EEEEEEE", !38, i64 0}
!38 = !{!"_ZTSNSt8__detail21_Hashtable_ebo_helperILi0EN7glslang14pool_allocatorINS_10_Hash_nodeISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS2_IcEEEEiELb1EEEEELb0EEE", !39, i64 0}
!39 = !{!"_ZTSN7glslang14pool_allocatorINSt8__detail10_Hash_nodeISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_IcEEEEiELb1EEEEE", !11, i64 0}
!40 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !11, i64 0}
!41 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !42, i64 0, !32, i64 8}
!42 = !{!"float", !6, i64 0}
!43 = !{!"_ZTSN7glslang7TVectorIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEEEE", !44, i64 0}
!44 = !{!"_ZTSSt6vectorIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEENS5_IS9_EEE", !45, i64 0}
!45 = !{!"_ZTSSt12_Vector_baseIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEENS5_IS9_EEE", !46, i64 0}
!46 = !{!"_ZTSNSt12_Vector_baseIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEENS5_IS9_EEE12_Vector_implE", !47, i64 0, !48, i64 8}
!47 = !{!"_ZTSN7glslang14pool_allocatorIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_IcEEEEEE", !11, i64 0}
!48 = !{!"_ZTSNSt12_Vector_baseIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEENS5_IS9_EEE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!49 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEE", !50, i64 0, !32, i64 16, !6, i64 24}
!50 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE12_Alloc_hiderE", !51, i64 0, !11, i64 8}
!51 = !{!"_ZTSN7glslang14pool_allocatorIcEE", !11, i64 0}
!52 = !{!"_ZTSSt6vectorIPN7glslang10TPpContext6tInputESaIS3_EE", !53, i64 0}
!53 = !{!"_ZTSSt12_Vector_baseIPN7glslang10TPpContext6tInputESaIS3_EE", !54, i64 0}
!54 = !{!"_ZTSNSt12_Vector_baseIPN7glslang10TPpContext6tInputESaIS3_EE12_Vector_implE", !55, i64 0}
!55 = !{!"_ZTSNSt12_Vector_baseIPN7glslang10TPpContext6tInputESaIS3_EE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!56 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !57, i64 0, !32, i64 8, !6, i64 16}
!57 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !11, i64 0}
!58 = !{!"_ZTSSt5stackIPN7glslang7TShader8Includer13IncludeResultESt5dequeIS4_SaIS4_EEE", !59, i64 0}
!59 = !{!"_ZTSSt5dequeIPN7glslang7TShader8Includer13IncludeResultESaIS4_EE", !60, i64 0}
!60 = !{!"_ZTSSt11_Deque_baseIPN7glslang7TShader8Includer13IncludeResultESaIS4_EE", !61, i64 0}
!61 = !{!"_ZTSNSt11_Deque_baseIPN7glslang7TShader8Includer13IncludeResultESaIS4_EE11_Deque_implE", !62, i64 0}
!62 = !{!"_ZTSNSt11_Deque_baseIPN7glslang7TShader8Includer13IncludeResultESaIS4_EE16_Deque_impl_dataE", !11, i64 0, !32, i64 8, !63, i64 16, !63, i64 48}
!63 = !{!"_ZTSSt15_Deque_iteratorIPN7glslang7TShader8Includer13IncludeResultERS4_PS4_E", !11, i64 0, !11, i64 8, !11, i64 16, !11, i64 24}
!64 = !{!"_ZTSNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEE", !65, i64 0, !66, i64 16}
!65 = !{!"_ZTSSi", !32, i64 8}
!66 = !{!"_ZTSNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEE", !67, i64 0, !69, i64 64, !56, i64 72}
!67 = !{!"_ZTSSt15basic_streambufIcSt11char_traitsIcEE", !11, i64 8, !11, i64 16, !11, i64 24, !11, i64 32, !11, i64 40, !11, i64 48, !68, i64 56}
!68 = !{!"_ZTSSt6locale", !11, i64 0}
!69 = !{!"_ZTSSt13_Ios_Openmode", !6, i64 0}
!70 = !{i64 0, i64 8, !71, i64 8, i64 4, !72, i64 12, i64 4, !72, i64 16, i64 4, !72}
!71 = !{!11, !11, i64 0}
!72 = !{!12, !12, i64 0}
!73 = distinct !{!73, !17}
!74 = !{!75, !11, i64 56}
!75 = !{!"_ZTSN7glslang14TParseVersionsE", !13, i64 8, !76, i64 12, !11, i64 16, !12, i64 24, !77, i64 28, !78, i64 32, !11, i64 56, !79, i64 64, !86, i64 120, !91, i64 176, !12, i64 180, !11, i64 184}
!76 = !{!"_ZTS8EProfile", !6, i64 0}
!77 = !{!"_ZTS11EShLanguage", !6, i64 0}
!78 = !{!"_ZTSN7glslang10SpvVersionE", !12, i64 0, !12, i64 4, !12, i64 8, !12, i64 12, !13, i64 16}
!79 = !{!"_ZTSN7glslang4TMapINSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEENS_18TExtensionBehaviorESt4lessIS7_EEE", !80, i64 0}
!80 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEENS4_18TExtensionBehaviorESt4lessIS7_ENS5_ISt4pairIKS7_S8_EEEE", !81, i64 0}
!81 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_NS4_18TExtensionBehaviorEESt10_Select1stISB_ESt4lessIS7_ENS5_ISB_EEE", !82, i64 0}
!82 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_NS4_18TExtensionBehaviorEESt10_Select1stISB_ESt4lessIS7_ENS5_ISB_EEE13_Rb_tree_implISF_Lb1EEE", !83, i64 0, !84, i64 8, !29, i64 16}
!83 = !{!"_ZTSN7glslang14pool_allocatorISt13_Rb_tree_nodeISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_IcEEEENS_18TExtensionBehaviorEEEEE", !11, i64 0}
!84 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEEE", !85, i64 0}
!85 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEE"}
!86 = !{!"_ZTSN7glslang4TMapINSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEEjSt4lessIS7_EEE", !87, i64 0}
!87 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEjSt4lessIS7_ENS5_ISt4pairIKS7_jEEEE", !88, i64 0}
!88 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_jESt10_Select1stISA_ESt4lessIS7_ENS5_ISA_EEE", !89, i64 0}
!89 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_jESt10_Select1stISA_ESt4lessIS7_ENS5_ISA_EEE13_Rb_tree_implISE_Lb1EEE", !90, i64 0, !84, i64 8, !29, i64 16}
!90 = !{!"_ZTSN7glslang14pool_allocatorISt13_Rb_tree_nodeISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_IcEEEEjEEEE", !11, i64 0}
!91 = !{!"_ZTS11EShMessages", !6, i64 0}
!92 = !{!21, !12, i64 264}
!93 = distinct !{!93, !17}
!94 = distinct !{!94, !17}
!95 = distinct !{!95, !17}
!96 = distinct !{!96, !17}
!97 = !{!21, !13, i64 384}
!98 = distinct !{!98, !17}
!99 = !{!21, !13, i64 920}
!100 = !{i8 0, i8 2}
!101 = !{}
!102 = distinct !{!102, !17}
!103 = distinct !{!103, !17}


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