; 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 = type { 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::__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::allocator.9" = 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" = 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::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_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 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [23 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN7glslang10TPpContext11lFloatConstEiiPNS_8TPpTokenE(ptr noundef nonnull align 8 dereferenceable(921) %0, i32 noundef %1, i32 noundef %2, ptr noundef %3) #0 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca i32, align 4
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca ptr, align 8
  %10 = alloca %class.anon, align 8
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i8, align 1
  %15 = alloca i64, align 8
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i8, align 1
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i8, align 1
  %24 = alloca double, align 8
  %25 = alloca i32, align 4
  %26 = alloca double, align 8
  %27 = alloca i8, align 1
  %28 = alloca i8, align 1
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca %"class.std::__cxx11::basic_string", align 8
  %32 = alloca %"class.glslang::pool_allocator.4", align 8
  %33 = alloca ptr, align 8
  %34 = alloca i32, align 4
  %35 = alloca %"class.std::__cxx11::basic_string.8", align 8
  %36 = alloca %"class.std::allocator.9", align 1
  %37 = alloca i32, align 4
  store ptr %0, ptr %6, align 8, !tbaa !5
  store i32 %1, ptr %7, align 4, !tbaa !9
  store i32 %2, ptr %8, align 4, !tbaa !9
  store ptr %3, ptr %9, align 8, !tbaa !5
  %38 = load ptr, ptr %6, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %10) #5
  %39 = getelementptr inbounds %class.anon, ptr %10, i32 0, i32 0
  store ptr %7, ptr %39, align 8, !tbaa !5
  %40 = getelementptr inbounds %class.anon, ptr %10, i32 0, i32 1
  store ptr %9, ptr %40, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #5
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %41

41:                                               ; preds = %56, %4
  %42 = load i32, ptr %11, align 4, !tbaa !9
  %43 = load i32, ptr %7, align 4, !tbaa !9
  %44 = icmp slt i32 %42, %43
  br i1 %44, label %45, label %54

45:                                               ; preds = %41
  %46 = load ptr, ptr %9, align 8, !tbaa !5
  %47 = getelementptr inbounds %"class.glslang::TPpToken", ptr %46, i32 0, i32 4
  %48 = load i32, ptr %11, align 4, !tbaa !9
  %49 = sext i32 %48 to i64
  %50 = getelementptr inbounds [1025 x i8], ptr %47, i64 0, i64 %49
  %51 = load i8, ptr %50, align 1, !tbaa !11
  %52 = sext i8 %51 to i32
  %53 = icmp eq i32 %52, 48
  br label %54

54:                                               ; preds = %45, %41
  %55 = phi i1 [ false, %41 ], [ %53, %45 ]
  br i1 %55, label %56, label %59

56:                                               ; preds = %54
  %57 = load i32, ptr %11, align 4, !tbaa !9
  %58 = add nsw i32 %57, 1
  store i32 %58, ptr %11, align 4, !tbaa !9
  br label %41, !llvm.loop !12

59:                                               ; preds = %54
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #5
  %60 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %60, ptr %12, align 4, !tbaa !9
  br label %61

61:                                               ; preds = %77, %59
  %62 = load i32, ptr %12, align 4, !tbaa !9
  %63 = load i32, ptr %11, align 4, !tbaa !9
  %64 = icmp sgt i32 %62, %63
  br i1 %64, label %65, label %75

65:                                               ; preds = %61
  %66 = load ptr, ptr %9, align 8, !tbaa !5
  %67 = getelementptr inbounds %"class.glslang::TPpToken", ptr %66, i32 0, i32 4
  %68 = load i32, ptr %12, align 4, !tbaa !9
  %69 = sub nsw i32 %68, 1
  %70 = sext i32 %69 to i64
  %71 = getelementptr inbounds [1025 x i8], ptr %67, i64 0, i64 %70
  %72 = load i8, ptr %71, align 1, !tbaa !11
  %73 = sext i8 %72 to i32
  %74 = icmp eq i32 %73, 48
  br label %75

75:                                               ; preds = %65, %61
  %76 = phi i1 [ false, %61 ], [ %74, %65 ]
  br i1 %76, label %77, label %80

77:                                               ; preds = %75
  %78 = load i32, ptr %12, align 4, !tbaa !9
  %79 = add nsw i32 %78, -1
  store i32 %79, ptr %12, align 4, !tbaa !9
  br label %61, !llvm.loop !14

80:                                               ; preds = %75
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #5
  %81 = load i32, ptr %12, align 4, !tbaa !9
  %82 = load i32, ptr %11, align 4, !tbaa !9
  %83 = sub nsw i32 %81, %82
  store i32 %83, ptr %13, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #5
  %84 = load i32, ptr %13, align 4, !tbaa !9
  %85 = icmp sle i32 %84, 15
  %86 = zext i1 %85 to i8
  store i8 %86, ptr %14, align 1, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #5
  store i64 0, ptr %15, align 8, !tbaa !17
  %87 = load i8, ptr %14, align 1, !tbaa !15, !range !19, !noundef !20
  %88 = trunc i8 %87 to i1
  br i1 %88, label %89, label %113

89:                                               ; preds = %80
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #5
  %90 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %90, ptr %16, align 4, !tbaa !9
  br label %91

91:                                               ; preds = %109, %89
  %92 = load i32, ptr %16, align 4, !tbaa !9
  %93 = load i32, ptr %12, align 4, !tbaa !9
  %94 = icmp slt i32 %92, %93
  br i1 %94, label %96, label %95

95:                                               ; preds = %91
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #5
  br label %112

96:                                               ; preds = %91
  %97 = load i64, ptr %15, align 8, !tbaa !17
  %98 = mul i64 %97, 10
  %99 = load ptr, ptr %9, align 8, !tbaa !5
  %100 = getelementptr inbounds %"class.glslang::TPpToken", ptr %99, i32 0, i32 4
  %101 = load i32, ptr %16, align 4, !tbaa !9
  %102 = sext i32 %101 to i64
  %103 = getelementptr inbounds [1025 x i8], ptr %100, i64 0, i64 %102
  %104 = load i8, ptr %103, align 1, !tbaa !11
  %105 = sext i8 %104 to i32
  %106 = sub nsw i32 %105, 48
  %107 = sext i32 %106 to i64
  %108 = add i64 %98, %107
  store i64 %108, ptr %15, align 8, !tbaa !17
  br label %109

109:                                              ; preds = %96
  %110 = load i32, ptr %16, align 4, !tbaa !9
  %111 = add nsw i32 %110, 1
  store i32 %111, ptr %16, align 4, !tbaa !9
  br label %91, !llvm.loop !21

112:                                              ; preds = %95
  br label %113

113:                                              ; preds = %112, %80
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #5
  %114 = load i32, ptr %7, align 4, !tbaa !9
  %115 = load i32, ptr %12, align 4, !tbaa !9
  %116 = sub nsw i32 %114, %115
  store i32 %116, ptr %17, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %18) #5
  store i8 0, ptr %18, align 1, !tbaa !15
  %117 = load i32, ptr %8, align 4, !tbaa !9
  %118 = icmp eq i32 %117, 46
  br i1 %118, label %119, label %204

119:                                              ; preds = %113
  store i8 1, ptr %18, align 1, !tbaa !15
  %120 = load i32, ptr %8, align 4, !tbaa !9
  call void @"_ZZN7glslang10TPpContext11lFloatConstEiiPNS_8TPpTokenEENK3$_0clEi"(ptr noundef nonnull align 8 dereferenceable(16) %10, i32 noundef %120)
  %121 = call noundef i32 @_ZN7glslang10TPpContext7getCharEv(ptr noundef nonnull align 8 dereferenceable(921) %38)
  store i32 %121, ptr %8, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #5
  %122 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %122, ptr %19, align 4, !tbaa !9
  br label %123

123:                                              ; preds = %126, %119
  %124 = load i32, ptr %8, align 4, !tbaa !9
  %125 = icmp eq i32 %124, 48
  br i1 %125, label %126, label %129

126:                                              ; preds = %123
  %127 = load i32, ptr %8, align 4, !tbaa !9
  call void @"_ZZN7glslang10TPpContext11lFloatConstEiiPNS_8TPpTokenEENK3$_0clEi"(ptr noundef nonnull align 8 dereferenceable(16) %10, i32 noundef %127)
  %128 = call noundef i32 @_ZN7glslang10TPpContext7getCharEv(ptr noundef nonnull align 8 dereferenceable(921) %38)
  store i32 %128, ptr %8, align 4, !tbaa !9
  br label %123, !llvm.loop !22

129:                                              ; preds = %123
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #5
  %130 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %130, ptr %20, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #5
  %131 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %131, ptr %21, align 4, !tbaa !9
  br label %132

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

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

138:                                              ; preds = %135, %132
  %139 = phi i1 [ false, %132 ], [ %137, %135 ]
  br i1 %139, label %140, label %148

140:                                              ; preds = %138
  %141 = load i32, ptr %8, align 4, !tbaa !9
  call void @"_ZZN7glslang10TPpContext11lFloatConstEiiPNS_8TPpTokenEENK3$_0clEi"(ptr noundef nonnull align 8 dereferenceable(16) %10, i32 noundef %141)
  %142 = load i32, ptr %8, align 4, !tbaa !9
  %143 = icmp ne i32 %142, 48
  br i1 %143, label %144, label %146

144:                                              ; preds = %140
  %145 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %145, ptr %21, align 4, !tbaa !9
  br label %146

146:                                              ; preds = %144, %140
  %147 = call noundef i32 @_ZN7glslang10TPpContext7getCharEv(ptr noundef nonnull align 8 dereferenceable(921) %38)
  store i32 %147, ptr %8, align 4, !tbaa !9
  br label %132, !llvm.loop !23

148:                                              ; preds = %138
  %149 = load i32, ptr %21, align 4, !tbaa !9
  %150 = load i32, ptr %20, align 4, !tbaa !9
  %151 = icmp sgt i32 %149, %150
  br i1 %151, label %152, label %203

152:                                              ; preds = %148
  %153 = load i32, ptr %21, align 4, !tbaa !9
  %154 = load i32, ptr %12, align 4, !tbaa !9
  %155 = sub nsw i32 %153, %154
  %156 = sub nsw i32 %155, 1
  %157 = load i32, ptr %13, align 4, !tbaa !9
  %158 = add nsw i32 %157, %156
  store i32 %158, ptr %13, align 4, !tbaa !9
  %159 = load i32, ptr %13, align 4, !tbaa !9
  %160 = icmp sgt i32 %159, 15
  br i1 %160, label %161, label %162

161:                                              ; preds = %152
  store i8 0, ptr %14, align 1, !tbaa !15
  br label %162

162:                                              ; preds = %161, %152
  %163 = load i8, ptr %14, align 1, !tbaa !15, !range !19, !noundef !20
  %164 = trunc i8 %163 to i1
  br i1 %164, label %165, label %199

165:                                              ; preds = %162
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #5
  %166 = load i32, ptr %12, align 4, !tbaa !9
  store i32 %166, ptr %22, align 4, !tbaa !9
  br label %167

167:                                              ; preds = %195, %165
  %168 = load i32, ptr %22, align 4, !tbaa !9
  %169 = load i32, ptr %21, align 4, !tbaa !9
  %170 = icmp slt i32 %168, %169
  br i1 %170, label %172, label %171

171:                                              ; preds = %167
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #5
  br label %198

172:                                              ; preds = %167
  %173 = load ptr, ptr %9, align 8, !tbaa !5
  %174 = getelementptr inbounds %"class.glslang::TPpToken", ptr %173, i32 0, i32 4
  %175 = load i32, ptr %22, align 4, !tbaa !9
  %176 = sext i32 %175 to i64
  %177 = getelementptr inbounds [1025 x i8], ptr %174, i64 0, i64 %176
  %178 = load i8, ptr %177, align 1, !tbaa !11
  %179 = sext i8 %178 to i32
  %180 = icmp ne i32 %179, 46
  br i1 %180, label %181, label %194

181:                                              ; preds = %172
  %182 = load i64, ptr %15, align 8, !tbaa !17
  %183 = mul i64 %182, 10
  %184 = load ptr, ptr %9, align 8, !tbaa !5
  %185 = getelementptr inbounds %"class.glslang::TPpToken", ptr %184, i32 0, i32 4
  %186 = load i32, ptr %22, align 4, !tbaa !9
  %187 = sext i32 %186 to i64
  %188 = getelementptr inbounds [1025 x i8], ptr %185, i64 0, i64 %187
  %189 = load i8, ptr %188, align 1, !tbaa !11
  %190 = sext i8 %189 to i32
  %191 = sub nsw i32 %190, 48
  %192 = sext i32 %191 to i64
  %193 = add i64 %183, %192
  store i64 %193, ptr %15, align 8, !tbaa !17
  br label %194

194:                                              ; preds = %181, %172
  br label %195

195:                                              ; preds = %194
  %196 = load i32, ptr %22, align 4, !tbaa !9
  %197 = add nsw i32 %196, 1
  store i32 %197, ptr %22, align 4, !tbaa !9
  br label %167, !llvm.loop !24

198:                                              ; preds = %171
  br label %199

199:                                              ; preds = %198, %162
  %200 = load i32, ptr %19, align 4, !tbaa !9
  %201 = load i32, ptr %21, align 4, !tbaa !9
  %202 = sub nsw i32 %200, %201
  store i32 %202, ptr %17, align 4, !tbaa !9
  br label %203

203:                                              ; preds = %199, %148
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #5
  br label %204

204:                                              ; preds = %203, %113
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #5
  store i8 0, ptr %23, align 1, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #5
  store double 0.000000e+00, ptr %24, align 8, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #5
  store i32 0, ptr %25, align 4, !tbaa !9
  %205 = load i32, ptr %8, align 4, !tbaa !9
  %206 = icmp eq i32 %205, 101
  br i1 %206, label %210, label %207

207:                                              ; preds = %204
  %208 = load i32, ptr %8, align 4, !tbaa !9
  %209 = icmp eq i32 %208, 69
  br i1 %209, label %210, label %257

210:                                              ; preds = %207, %204
  store i8 1, ptr %18, align 1, !tbaa !15
  %211 = load i32, ptr %8, align 4, !tbaa !9
  call void @"_ZZN7glslang10TPpContext11lFloatConstEiiPNS_8TPpTokenEENK3$_0clEi"(ptr noundef nonnull align 8 dereferenceable(16) %10, i32 noundef %211)
  %212 = call noundef i32 @_ZN7glslang10TPpContext7getCharEv(ptr noundef nonnull align 8 dereferenceable(921) %38)
  store i32 %212, ptr %8, align 4, !tbaa !9
  %213 = load i32, ptr %8, align 4, !tbaa !9
  %214 = icmp eq i32 %213, 43
  br i1 %214, label %218, label %215

215:                                              ; preds = %210
  %216 = load i32, ptr %8, align 4, !tbaa !9
  %217 = icmp eq i32 %216, 45
  br i1 %217, label %218, label %224

218:                                              ; preds = %215, %210
  %219 = load i32, ptr %8, align 4, !tbaa !9
  %220 = icmp eq i32 %219, 45
  %221 = zext i1 %220 to i8
  store i8 %221, ptr %23, align 1, !tbaa !15
  %222 = load i32, ptr %8, align 4, !tbaa !9
  call void @"_ZZN7glslang10TPpContext11lFloatConstEiiPNS_8TPpTokenEENK3$_0clEi"(ptr noundef nonnull align 8 dereferenceable(16) %10, i32 noundef %222)
  %223 = call noundef i32 @_ZN7glslang10TPpContext7getCharEv(ptr noundef nonnull align 8 dereferenceable(921) %38)
  store i32 %223, ptr %8, align 4, !tbaa !9
  br label %224

224:                                              ; preds = %218, %215
  %225 = load i32, ptr %8, align 4, !tbaa !9
  %226 = icmp sge i32 %225, 48
  br i1 %226, label %227, label %248

227:                                              ; preds = %224
  %228 = load i32, ptr %8, align 4, !tbaa !9
  %229 = icmp sle i32 %228, 57
  br i1 %229, label %230, label %248

230:                                              ; preds = %227
  br label %231

231:                                              ; preds = %239, %230
  %232 = load i32, ptr %8, align 4, !tbaa !9
  %233 = icmp sge i32 %232, 48
  br i1 %233, label %234, label %237

234:                                              ; preds = %231
  %235 = load i32, ptr %8, align 4, !tbaa !9
  %236 = icmp sle i32 %235, 57
  br label %237

237:                                              ; preds = %234, %231
  %238 = phi i1 [ false, %231 ], [ %236, %234 ]
  br i1 %238, label %239, label %247

239:                                              ; preds = %237
  %240 = load i32, ptr %25, align 4, !tbaa !9
  %241 = mul nsw i32 %240, 10
  %242 = load i32, ptr %8, align 4, !tbaa !9
  %243 = sub nsw i32 %242, 48
  %244 = add nsw i32 %241, %243
  store i32 %244, ptr %25, align 4, !tbaa !9
  %245 = load i32, ptr %8, align 4, !tbaa !9
  call void @"_ZZN7glslang10TPpContext11lFloatConstEiiPNS_8TPpTokenEENK3$_0clEi"(ptr noundef nonnull align 8 dereferenceable(16) %10, i32 noundef %245)
  %246 = call noundef i32 @_ZN7glslang10TPpContext7getCharEv(ptr noundef nonnull align 8 dereferenceable(921) %38)
  store i32 %246, ptr %8, align 4, !tbaa !9
  br label %231, !llvm.loop !27

247:                                              ; preds = %237
  br label %256

248:                                              ; preds = %227, %224
  %249 = getelementptr inbounds %"class.glslang::TPpContext", ptr %38, i32 0, i32 12
  %250 = load ptr, ptr %249, align 8, !tbaa !28
  %251 = load ptr, ptr %9, align 8, !tbaa !5
  %252 = getelementptr inbounds %"class.glslang::TPpToken", ptr %251, i32 0, i32 0
  %253 = load ptr, ptr %250, align 8, !tbaa !78
  %254 = getelementptr inbounds ptr, ptr %253, i64 44
  %255 = load ptr, ptr %254, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %255(ptr noundef nonnull align 8 dereferenceable(1176) %250, ptr noundef nonnull align 8 dereferenceable(24) %252, ptr noundef @.str, ptr noundef @.str.1, ptr noundef @.str.1)
  br label %256

256:                                              ; preds = %248, %247
  br label %257

257:                                              ; preds = %256, %207
  %258 = load i8, ptr %23, align 1, !tbaa !15, !range !19, !noundef !20
  %259 = trunc i8 %258 to i1
  br i1 %259, label %260, label %264

260:                                              ; preds = %257
  %261 = load i32, ptr %17, align 4, !tbaa !9
  %262 = load i32, ptr %25, align 4, !tbaa !9
  %263 = sub nsw i32 %262, %261
  store i32 %263, ptr %25, align 4, !tbaa !9
  br label %274

264:                                              ; preds = %257
  %265 = load i32, ptr %17, align 4, !tbaa !9
  %266 = load i32, ptr %25, align 4, !tbaa !9
  %267 = add nsw i32 %266, %265
  store i32 %267, ptr %25, align 4, !tbaa !9
  %268 = load i32, ptr %25, align 4, !tbaa !9
  %269 = icmp slt i32 %268, 0
  br i1 %269, label %270, label %273

270:                                              ; preds = %264
  store i8 1, ptr %23, align 1, !tbaa !15
  %271 = load i32, ptr %25, align 4, !tbaa !9
  %272 = sub nsw i32 0, %271
  store i32 %272, ptr %25, align 4, !tbaa !9
  br label %273

273:                                              ; preds = %270, %264
  br label %274

274:                                              ; preds = %273, %260
  %275 = load i32, ptr %25, align 4, !tbaa !9
  %276 = icmp sgt i32 %275, 22
  br i1 %276, label %277, label %278

277:                                              ; preds = %274
  store i8 0, ptr %14, align 1, !tbaa !15
  br label %278

278:                                              ; preds = %277, %274
  %279 = load i8, ptr %14, align 1, !tbaa !15, !range !19, !noundef !20
  %280 = trunc i8 %279 to i1
  br i1 %280, label %281, label %304

281:                                              ; preds = %278
  store double 1.000000e+00, ptr %24, align 8, !tbaa !25
  %282 = load i32, ptr %25, align 4, !tbaa !9
  %283 = icmp sgt i32 %282, 0
  br i1 %283, label %284, label %303

284:                                              ; preds = %281
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #5
  store double 1.000000e+01, ptr %26, align 8, !tbaa !25
  br label %285

285:                                              ; preds = %296, %284
  %286 = load i32, ptr %25, align 4, !tbaa !9
  %287 = icmp sgt i32 %286, 0
  br i1 %287, label %288, label %302

288:                                              ; preds = %285
  %289 = load i32, ptr %25, align 4, !tbaa !9
  %290 = and i32 %289, 1
  %291 = icmp ne i32 %290, 0
  br i1 %291, label %292, label %296

292:                                              ; preds = %288
  %293 = load double, ptr %26, align 8, !tbaa !25
  %294 = load double, ptr %24, align 8, !tbaa !25
  %295 = fmul double %294, %293
  store double %295, ptr %24, align 8, !tbaa !25
  br label %296

296:                                              ; preds = %292, %288
  %297 = load double, ptr %26, align 8, !tbaa !25
  %298 = load double, ptr %26, align 8, !tbaa !25
  %299 = fmul double %298, %297
  store double %299, ptr %26, align 8, !tbaa !25
  %300 = load i32, ptr %25, align 4, !tbaa !9
  %301 = ashr i32 %300, 1
  store i32 %301, ptr %25, align 4, !tbaa !9
  br label %285, !llvm.loop !80

302:                                              ; preds = %285
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #5
  br label %303

303:                                              ; preds = %302, %281
  br label %304

304:                                              ; preds = %303, %278
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #5
  store i8 0, ptr %27, align 1, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %28) #5
  store i8 0, ptr %28, align 1, !tbaa !15
  %305 = load i32, ptr %8, align 4, !tbaa !9
  %306 = icmp eq i32 %305, 108
  br i1 %306, label %310, label %307

307:                                              ; preds = %304
  %308 = load i32, ptr %8, align 4, !tbaa !9
  %309 = icmp eq i32 %308, 76
  br i1 %309, label %310, label %374

310:                                              ; preds = %307, %304
  %311 = getelementptr inbounds %"class.glslang::TPpContext", ptr %38, i32 0, i32 13
  %312 = load i32, ptr %311, align 8, !tbaa !81
  %313 = icmp eq i32 %312, 0
  br i1 %313, label %314, label %329

314:                                              ; preds = %310
  %315 = getelementptr inbounds %"class.glslang::TPpContext", ptr %38, i32 0, i32 12
  %316 = load ptr, ptr %315, align 8, !tbaa !28
  %317 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %316, i32 0, i32 7
  %318 = load ptr, ptr %317, align 8, !tbaa !82
  %319 = call noundef i32 @_ZNK7glslang13TIntermediate9getSourceEv(ptr noundef nonnull align 8 dereferenceable(1784) %318)
  %320 = icmp eq i32 %319, 1
  br i1 %320, label %321, label %329

321:                                              ; preds = %314
  %322 = getelementptr inbounds %"class.glslang::TPpContext", ptr %38, i32 0, i32 12
  %323 = load ptr, ptr %322, align 8, !tbaa !28
  %324 = load ptr, ptr %9, align 8, !tbaa !5
  %325 = getelementptr inbounds %"class.glslang::TPpToken", ptr %324, i32 0, i32 0
  %326 = load ptr, ptr %323, align 8, !tbaa !78
  %327 = getelementptr inbounds ptr, ptr %326, i64 17
  %328 = load ptr, ptr %327, align 8
  call void %328(ptr noundef nonnull align 8 dereferenceable(192) %323, ptr noundef nonnull align 8 dereferenceable(24) %325, ptr noundef @.str.2)
  br label %329

329:                                              ; preds = %321, %314, %310
  %330 = getelementptr inbounds %"class.glslang::TPpContext", ptr %38, i32 0, i32 13
  %331 = load i32, ptr %330, align 8, !tbaa !81
  %332 = icmp eq i32 %331, 0
  br i1 %332, label %333, label %344

333:                                              ; preds = %329
  %334 = load i8, ptr %18, align 1, !tbaa !15, !range !19, !noundef !20
  %335 = trunc i8 %334 to i1
  br i1 %335, label %344, label %336

336:                                              ; preds = %333
  %337 = getelementptr inbounds %"class.glslang::TPpContext", ptr %38, i32 0, i32 12
  %338 = load ptr, ptr %337, align 8, !tbaa !28
  %339 = load ptr, ptr %9, align 8, !tbaa !5
  %340 = getelementptr inbounds %"class.glslang::TPpToken", ptr %339, i32 0, i32 0
  %341 = load ptr, ptr %338, align 8, !tbaa !78
  %342 = getelementptr inbounds ptr, ptr %341, i64 44
  %343 = load ptr, ptr %342, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %343(ptr noundef nonnull align 8 dereferenceable(1176) %338, ptr noundef nonnull align 8 dereferenceable(24) %340, ptr noundef @.str.3, ptr noundef @.str.1, ptr noundef @.str.1)
  br label %344

344:                                              ; preds = %336, %333, %329
  %345 = getelementptr inbounds %"class.glslang::TPpContext", ptr %38, i32 0, i32 12
  %346 = load ptr, ptr %345, align 8, !tbaa !28
  %347 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %346, i32 0, i32 7
  %348 = load ptr, ptr %347, align 8, !tbaa !82
  %349 = call noundef i32 @_ZNK7glslang13TIntermediate9getSourceEv(ptr noundef nonnull align 8 dereferenceable(1784) %348)
  %350 = icmp eq i32 %349, 1
  br i1 %350, label %351, label %363

351:                                              ; preds = %344
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #5
  %352 = call noundef i32 @_ZN7glslang10TPpContext7getCharEv(ptr noundef nonnull align 8 dereferenceable(921) %38)
  store i32 %352, ptr %29, align 4, !tbaa !9
  %353 = load i32, ptr %29, align 4, !tbaa !9
  %354 = icmp ne i32 %353, 102
  br i1 %354, label %355, label %359

355:                                              ; preds = %351
  %356 = load i32, ptr %29, align 4, !tbaa !9
  %357 = icmp ne i32 %356, 70
  br i1 %357, label %358, label %359

358:                                              ; preds = %355
  call void @_ZN7glslang10TPpContext9ungetCharEv(ptr noundef nonnull align 8 dereferenceable(921) %38)
  call void @_ZN7glslang10TPpContext9ungetCharEv(ptr noundef nonnull align 8 dereferenceable(921) %38)
  br label %362

359:                                              ; preds = %355, %351
  %360 = load i32, ptr %8, align 4, !tbaa !9
  call void @"_ZZN7glslang10TPpContext11lFloatConstEiiPNS_8TPpTokenEENK3$_0clEi"(ptr noundef nonnull align 8 dereferenceable(16) %10, i32 noundef %360)
  %361 = load i32, ptr %29, align 4, !tbaa !9
  call void @"_ZZN7glslang10TPpContext11lFloatConstEiiPNS_8TPpTokenEENK3$_0clEi"(ptr noundef nonnull align 8 dereferenceable(16) %10, i32 noundef %361)
  store i8 1, ptr %27, align 1, !tbaa !15
  br label %362

362:                                              ; preds = %359, %358
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #5
  br label %373

363:                                              ; preds = %344
  %364 = getelementptr inbounds %"class.glslang::TPpContext", ptr %38, i32 0, i32 12
  %365 = load ptr, ptr %364, align 8, !tbaa !28
  %366 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %365, i32 0, i32 7
  %367 = load ptr, ptr %366, align 8, !tbaa !82
  %368 = call noundef i32 @_ZNK7glslang13TIntermediate9getSourceEv(ptr noundef nonnull align 8 dereferenceable(1784) %367)
  %369 = icmp eq i32 %368, 2
  br i1 %369, label %370, label %372

370:                                              ; preds = %363
  %371 = load i32, ptr %8, align 4, !tbaa !9
  call void @"_ZZN7glslang10TPpContext11lFloatConstEiiPNS_8TPpTokenEENK3$_0clEi"(ptr noundef nonnull align 8 dereferenceable(16) %10, i32 noundef %371)
  store i8 1, ptr %27, align 1, !tbaa !15
  br label %372

372:                                              ; preds = %370, %363
  br label %373

373:                                              ; preds = %372, %362
  br label %492

374:                                              ; preds = %307
  %375 = load i32, ptr %8, align 4, !tbaa !9
  %376 = icmp eq i32 %375, 104
  br i1 %376, label %380, label %377

377:                                              ; preds = %374
  %378 = load i32, ptr %8, align 4, !tbaa !9
  %379 = icmp eq i32 %378, 72
  br i1 %379, label %380, label %444

380:                                              ; preds = %377, %374
  %381 = getelementptr inbounds %"class.glslang::TPpContext", ptr %38, i32 0, i32 13
  %382 = load i32, ptr %381, align 8, !tbaa !81
  %383 = icmp eq i32 %382, 0
  br i1 %383, label %384, label %399

384:                                              ; preds = %380
  %385 = getelementptr inbounds %"class.glslang::TPpContext", ptr %38, i32 0, i32 12
  %386 = load ptr, ptr %385, align 8, !tbaa !28
  %387 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %386, i32 0, i32 7
  %388 = load ptr, ptr %387, align 8, !tbaa !82
  %389 = call noundef i32 @_ZNK7glslang13TIntermediate9getSourceEv(ptr noundef nonnull align 8 dereferenceable(1784) %388)
  %390 = icmp eq i32 %389, 1
  br i1 %390, label %391, label %399

391:                                              ; preds = %384
  %392 = getelementptr inbounds %"class.glslang::TPpContext", ptr %38, i32 0, i32 12
  %393 = load ptr, ptr %392, align 8, !tbaa !28
  %394 = load ptr, ptr %9, align 8, !tbaa !5
  %395 = getelementptr inbounds %"class.glslang::TPpToken", ptr %394, i32 0, i32 0
  %396 = load ptr, ptr %393, align 8, !tbaa !78
  %397 = getelementptr inbounds ptr, ptr %396, i64 18
  %398 = load ptr, ptr %397, align 8
  call void %398(ptr noundef nonnull align 8 dereferenceable(192) %393, ptr noundef nonnull align 8 dereferenceable(24) %395, ptr noundef @.str.4, i1 noundef zeroext false)
  br label %399

399:                                              ; preds = %391, %384, %380
  %400 = getelementptr inbounds %"class.glslang::TPpContext", ptr %38, i32 0, i32 13
  %401 = load i32, ptr %400, align 8, !tbaa !81
  %402 = icmp eq i32 %401, 0
  br i1 %402, label %403, label %414

403:                                              ; preds = %399
  %404 = load i8, ptr %18, align 1, !tbaa !15, !range !19, !noundef !20
  %405 = trunc i8 %404 to i1
  br i1 %405, label %414, label %406

406:                                              ; preds = %403
  %407 = getelementptr inbounds %"class.glslang::TPpContext", ptr %38, i32 0, i32 12
  %408 = load ptr, ptr %407, align 8, !tbaa !28
  %409 = load ptr, ptr %9, align 8, !tbaa !5
  %410 = getelementptr inbounds %"class.glslang::TPpToken", ptr %409, i32 0, i32 0
  %411 = load ptr, ptr %408, align 8, !tbaa !78
  %412 = getelementptr inbounds ptr, ptr %411, i64 44
  %413 = load ptr, ptr %412, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %413(ptr noundef nonnull align 8 dereferenceable(1176) %408, ptr noundef nonnull align 8 dereferenceable(24) %410, ptr noundef @.str.3, ptr noundef @.str.1, ptr noundef @.str.1)
  br label %414

414:                                              ; preds = %406, %403, %399
  %415 = getelementptr inbounds %"class.glslang::TPpContext", ptr %38, i32 0, i32 12
  %416 = load ptr, ptr %415, align 8, !tbaa !28
  %417 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %416, i32 0, i32 7
  %418 = load ptr, ptr %417, align 8, !tbaa !82
  %419 = call noundef i32 @_ZNK7glslang13TIntermediate9getSourceEv(ptr noundef nonnull align 8 dereferenceable(1784) %418)
  %420 = icmp eq i32 %419, 1
  br i1 %420, label %421, label %433

421:                                              ; preds = %414
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #5
  %422 = call noundef i32 @_ZN7glslang10TPpContext7getCharEv(ptr noundef nonnull align 8 dereferenceable(921) %38)
  store i32 %422, ptr %30, align 4, !tbaa !9
  %423 = load i32, ptr %30, align 4, !tbaa !9
  %424 = icmp ne i32 %423, 102
  br i1 %424, label %425, label %429

425:                                              ; preds = %421
  %426 = load i32, ptr %30, align 4, !tbaa !9
  %427 = icmp ne i32 %426, 70
  br i1 %427, label %428, label %429

428:                                              ; preds = %425
  call void @_ZN7glslang10TPpContext9ungetCharEv(ptr noundef nonnull align 8 dereferenceable(921) %38)
  call void @_ZN7glslang10TPpContext9ungetCharEv(ptr noundef nonnull align 8 dereferenceable(921) %38)
  br label %432

429:                                              ; preds = %425, %421
  %430 = load i32, ptr %8, align 4, !tbaa !9
  call void @"_ZZN7glslang10TPpContext11lFloatConstEiiPNS_8TPpTokenEENK3$_0clEi"(ptr noundef nonnull align 8 dereferenceable(16) %10, i32 noundef %430)
  %431 = load i32, ptr %30, align 4, !tbaa !9
  call void @"_ZZN7glslang10TPpContext11lFloatConstEiiPNS_8TPpTokenEENK3$_0clEi"(ptr noundef nonnull align 8 dereferenceable(16) %10, i32 noundef %431)
  store i8 1, ptr %28, align 1, !tbaa !15
  br label %432

432:                                              ; preds = %429, %428
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #5
  br label %443

433:                                              ; preds = %414
  %434 = getelementptr inbounds %"class.glslang::TPpContext", ptr %38, i32 0, i32 12
  %435 = load ptr, ptr %434, align 8, !tbaa !28
  %436 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %435, i32 0, i32 7
  %437 = load ptr, ptr %436, align 8, !tbaa !82
  %438 = call noundef i32 @_ZNK7glslang13TIntermediate9getSourceEv(ptr noundef nonnull align 8 dereferenceable(1784) %437)
  %439 = icmp eq i32 %438, 2
  br i1 %439, label %440, label %442

440:                                              ; preds = %433
  %441 = load i32, ptr %8, align 4, !tbaa !9
  call void @"_ZZN7glslang10TPpContext11lFloatConstEiiPNS_8TPpTokenEENK3$_0clEi"(ptr noundef nonnull align 8 dereferenceable(16) %10, i32 noundef %441)
  store i8 1, ptr %28, align 1, !tbaa !15
  br label %442

442:                                              ; preds = %440, %433
  br label %443

443:                                              ; preds = %442, %432
  br label %491

444:                                              ; preds = %377
  %445 = load i32, ptr %8, align 4, !tbaa !9
  %446 = icmp eq i32 %445, 102
  br i1 %446, label %450, label %447

447:                                              ; preds = %444
  %448 = load i32, ptr %8, align 4, !tbaa !9
  %449 = icmp eq i32 %448, 70
  br i1 %449, label %450, label %489

450:                                              ; preds = %447, %444
  %451 = getelementptr inbounds %"class.glslang::TPpContext", ptr %38, i32 0, i32 13
  %452 = load i32, ptr %451, align 8, !tbaa !81
  %453 = icmp eq i32 %452, 0
  br i1 %453, label %454, label %459

454:                                              ; preds = %450
  %455 = getelementptr inbounds %"class.glslang::TPpContext", ptr %38, i32 0, i32 12
  %456 = load ptr, ptr %455, align 8, !tbaa !28
  %457 = load ptr, ptr %9, align 8, !tbaa !5
  %458 = getelementptr inbounds %"class.glslang::TPpToken", ptr %457, i32 0, i32 0
  call void @_ZN7glslang14TParseVersions15profileRequiresERKNS_10TSourceLocEiiPKcS5_(ptr noundef nonnull align 8 dereferenceable(192) %456, ptr noundef nonnull align 8 dereferenceable(24) %458, i32 noundef 8, i32 noundef 300, ptr noundef null, ptr noundef @.str.5)
  br label %459

459:                                              ; preds = %454, %450
  %460 = getelementptr inbounds %"class.glslang::TPpContext", ptr %38, i32 0, i32 13
  %461 = load i32, ptr %460, align 8, !tbaa !81
  %462 = icmp eq i32 %461, 0
  br i1 %462, label %463, label %472

463:                                              ; preds = %459
  %464 = getelementptr inbounds %"class.glslang::TPpContext", ptr %38, i32 0, i32 12
  %465 = load ptr, ptr %464, align 8, !tbaa !28
  %466 = call noundef zeroext i1 @_ZNK7glslang14TParseVersions13relaxedErrorsEv(ptr noundef nonnull align 8 dereferenceable(192) %465)
  br i1 %466, label %472, label %467

467:                                              ; preds = %463
  %468 = getelementptr inbounds %"class.glslang::TPpContext", ptr %38, i32 0, i32 12
  %469 = load ptr, ptr %468, align 8, !tbaa !28
  %470 = load ptr, ptr %9, align 8, !tbaa !5
  %471 = getelementptr inbounds %"class.glslang::TPpToken", ptr %470, i32 0, i32 0
  call void @_ZN7glslang14TParseVersions15profileRequiresERKNS_10TSourceLocEiiPKcS5_(ptr noundef nonnull align 8 dereferenceable(192) %469, ptr noundef nonnull align 8 dereferenceable(24) %471, i32 noundef -9, i32 noundef 120, ptr noundef null, ptr noundef @.str.5)
  br label %472

472:                                              ; preds = %467, %463, %459
  %473 = getelementptr inbounds %"class.glslang::TPpContext", ptr %38, i32 0, i32 13
  %474 = load i32, ptr %473, align 8, !tbaa !81
  %475 = icmp eq i32 %474, 0
  br i1 %475, label %476, label %487

476:                                              ; preds = %472
  %477 = load i8, ptr %18, align 1, !tbaa !15, !range !19, !noundef !20
  %478 = trunc i8 %477 to i1
  br i1 %478, label %487, label %479

479:                                              ; preds = %476
  %480 = getelementptr inbounds %"class.glslang::TPpContext", ptr %38, i32 0, i32 12
  %481 = load ptr, ptr %480, align 8, !tbaa !28
  %482 = load ptr, ptr %9, align 8, !tbaa !5
  %483 = getelementptr inbounds %"class.glslang::TPpToken", ptr %482, i32 0, i32 0
  %484 = load ptr, ptr %481, align 8, !tbaa !78
  %485 = getelementptr inbounds ptr, ptr %484, i64 44
  %486 = load ptr, ptr %485, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %486(ptr noundef nonnull align 8 dereferenceable(1176) %481, ptr noundef nonnull align 8 dereferenceable(24) %483, ptr noundef @.str.3, ptr noundef @.str.1, ptr noundef @.str.1)
  br label %487

487:                                              ; preds = %479, %476, %472
  %488 = load i32, ptr %8, align 4, !tbaa !9
  call void @"_ZZN7glslang10TPpContext11lFloatConstEiiPNS_8TPpTokenEENK3$_0clEi"(ptr noundef nonnull align 8 dereferenceable(16) %10, i32 noundef %488)
  br label %490

489:                                              ; preds = %447
  call void @_ZN7glslang10TPpContext9ungetCharEv(ptr noundef nonnull align 8 dereferenceable(921) %38)
  br label %490

490:                                              ; preds = %489, %487
  br label %491

491:                                              ; preds = %490, %443
  br label %492

492:                                              ; preds = %491, %373
  %493 = load i32, ptr %7, align 4, !tbaa !9
  %494 = icmp sgt i32 %493, 1024
  br i1 %494, label %495, label %503

495:                                              ; preds = %492
  store i32 1024, ptr %7, align 4, !tbaa !9
  %496 = getelementptr inbounds %"class.glslang::TPpContext", ptr %38, i32 0, i32 12
  %497 = load ptr, ptr %496, align 8, !tbaa !28
  %498 = load ptr, ptr %9, align 8, !tbaa !5
  %499 = getelementptr inbounds %"class.glslang::TPpToken", ptr %498, i32 0, i32 0
  %500 = load ptr, ptr %497, align 8, !tbaa !78
  %501 = getelementptr inbounds ptr, ptr %500, i64 44
  %502 = load ptr, ptr %501, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %502(ptr noundef nonnull align 8 dereferenceable(1176) %497, ptr noundef nonnull align 8 dereferenceable(24) %499, ptr noundef @.str.6, ptr noundef @.str.1, ptr noundef @.str.1)
  br label %503

503:                                              ; preds = %495, %492
  %504 = load ptr, ptr %9, align 8, !tbaa !5
  %505 = getelementptr inbounds %"class.glslang::TPpToken", ptr %504, i32 0, i32 4
  %506 = load i32, ptr %7, align 4, !tbaa !9
  %507 = sext i32 %506 to i64
  %508 = getelementptr inbounds [1025 x i8], ptr %505, i64 0, i64 %507
  store i8 0, ptr %508, align 1, !tbaa !11
  %509 = load i8, ptr %14, align 1, !tbaa !15, !range !19, !noundef !20
  %510 = trunc i8 %509 to i1
  br i1 %510, label %511, label %538

511:                                              ; preds = %503
  %512 = load double, ptr %24, align 8, !tbaa !25
  %513 = fcmp oeq double %512, 0.000000e+00
  br i1 %513, label %514, label %519

514:                                              ; preds = %511
  %515 = load i64, ptr %15, align 8, !tbaa !17
  %516 = uitofp i64 %515 to double
  %517 = load ptr, ptr %9, align 8, !tbaa !5
  %518 = getelementptr inbounds %"class.glslang::TPpToken", ptr %517, i32 0, i32 3
  store double %516, ptr %518, align 8, !tbaa !11
  br label %537

519:                                              ; preds = %511
  %520 = load i8, ptr %23, align 1, !tbaa !15, !range !19, !noundef !20
  %521 = trunc i8 %520 to i1
  br i1 %521, label %522, label %529

522:                                              ; preds = %519
  %523 = load i64, ptr %15, align 8, !tbaa !17
  %524 = uitofp i64 %523 to double
  %525 = load double, ptr %24, align 8, !tbaa !25
  %526 = fdiv double %524, %525
  %527 = load ptr, ptr %9, align 8, !tbaa !5
  %528 = getelementptr inbounds %"class.glslang::TPpToken", ptr %527, i32 0, i32 3
  store double %526, ptr %528, align 8, !tbaa !11
  br label %536

529:                                              ; preds = %519
  %530 = load i64, ptr %15, align 8, !tbaa !17
  %531 = uitofp i64 %530 to double
  %532 = load double, ptr %24, align 8, !tbaa !25
  %533 = fmul double %531, %532
  %534 = load ptr, ptr %9, align 8, !tbaa !5
  %535 = getelementptr inbounds %"class.glslang::TPpToken", ptr %534, i32 0, i32 3
  store double %533, ptr %535, align 8, !tbaa !11
  br label %536

536:                                              ; preds = %529, %522
  br label %537

537:                                              ; preds = %536, %514
  br label %637

538:                                              ; preds = %503
  %539 = load ptr, ptr %9, align 8, !tbaa !5
  %540 = getelementptr inbounds %"class.glslang::TPpToken", ptr %539, i32 0, i32 3
  store double 0.000000e+00, ptr %540, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 40, ptr %31) #5
  %541 = load ptr, ptr %9, align 8, !tbaa !5
  %542 = getelementptr inbounds %"class.glslang::TPpToken", ptr %541, i32 0, i32 4
  %543 = getelementptr inbounds [1025 x i8], ptr %542, i64 0, i64 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #5
  call void @_ZN7glslang14pool_allocatorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %32)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(40) %31, ptr noundef %543, ptr noundef nonnull align 8 dereferenceable(8) %32)
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #5
  %544 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE4backEv(ptr noundef nonnull align 8 dereferenceable(40) %31) #5
  %545 = load i8, ptr %544, align 1, !tbaa !11
  %546 = sext i8 %545 to i32
  %547 = icmp eq i32 %546, 102
  br i1 %547, label %553, label %548

548:                                              ; preds = %538
  %549 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE4backEv(ptr noundef nonnull align 8 dereferenceable(40) %31) #5
  %550 = load i8, ptr %549, align 1, !tbaa !11
  %551 = sext i8 %550 to i32
  %552 = icmp eq i32 %551, 70
  br i1 %552, label %553, label %554

553:                                              ; preds = %548, %538
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(40) %31) #5
  br label %554

554:                                              ; preds = %553, %548
  %555 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE4backEv(ptr noundef nonnull align 8 dereferenceable(40) %31) #5
  %556 = load i8, ptr %555, align 1, !tbaa !11
  %557 = sext i8 %556 to i32
  %558 = icmp eq i32 %557, 104
  br i1 %558, label %564, label %559

559:                                              ; preds = %554
  %560 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE4backEv(ptr noundef nonnull align 8 dereferenceable(40) %31) #5
  %561 = load i8, ptr %560, align 1, !tbaa !11
  %562 = sext i8 %561 to i32
  %563 = icmp eq i32 %562, 72
  br i1 %563, label %564, label %565

564:                                              ; preds = %559, %554
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(40) %31) #5
  br label %565

565:                                              ; preds = %564, %559
  %566 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE4backEv(ptr noundef nonnull align 8 dereferenceable(40) %31) #5
  %567 = load i8, ptr %566, align 1, !tbaa !11
  %568 = sext i8 %567 to i32
  %569 = icmp eq i32 %568, 108
  br i1 %569, label %575, label %570

570:                                              ; preds = %565
  %571 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE4backEv(ptr noundef nonnull align 8 dereferenceable(40) %31) #5
  %572 = load i8, ptr %571, align 1, !tbaa !11
  %573 = sext i8 %572 to i32
  %574 = icmp eq i32 %573, 76
  br i1 %574, label %575, label %576

575:                                              ; preds = %570, %565
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(40) %31) #5
  br label %576

576:                                              ; preds = %575, %570
  %577 = getelementptr inbounds %"class.glslang::TPpContext", ptr %38, i32 0, i32 28
  %578 = load ptr, ptr %577, align 8, !tbaa !78
  %579 = getelementptr i8, ptr %578, i64 -24
  %580 = load i64, ptr %579, align 8
  %581 = getelementptr inbounds i8, ptr %577, i64 %580
  invoke void @_ZNSt9basic_iosIcSt11char_traitsIcEE5clearESt12_Ios_Iostate(ptr noundef nonnull align 8 dereferenceable(264) %581, i32 noundef 0)
          to label %582 unwind label %610

582:                                              ; preds = %576
  %583 = getelementptr inbounds %"class.glslang::TPpContext", ptr %38, i32 0, i32 28
  call void @llvm.lifetime.start.p0(i64 32, ptr %35) #5
  %584 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %31) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #5
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #5
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef %584, ptr noundef nonnull align 1 dereferenceable(1) %36)
          to label %585 unwind label %614

585:                                              ; preds = %582
  invoke void @_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEE3strERKNS_12basic_stringIcS2_S3_EE(ptr noundef nonnull align 8 dereferenceable(120) %583, ptr noundef nonnull align 8 dereferenceable(32) %35)
          to label %586 unwind label %618

586:                                              ; preds = %585
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #5
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #5
  %587 = getelementptr inbounds %"class.glslang::TPpContext", ptr %38, i32 0, i32 28
  %588 = load ptr, ptr %9, align 8, !tbaa !5
  %589 = getelementptr inbounds %"class.glslang::TPpToken", ptr %588, i32 0, i32 3
  %590 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERd(ptr noundef nonnull align 8 dereferenceable(16) %587, ptr noundef nonnull align 8 dereferenceable(8) %589)
          to label %591 unwind label %610

591:                                              ; preds = %586
  %592 = getelementptr inbounds %"class.glslang::TPpContext", ptr %38, i32 0, i32 28
  %593 = load ptr, ptr %592, align 8, !tbaa !78
  %594 = getelementptr i8, ptr %593, i64 -24
  %595 = load i64, ptr %594, align 8
  %596 = getelementptr inbounds i8, ptr %592, i64 %595
  %597 = invoke noundef zeroext i1 @_ZNKSt9basic_iosIcSt11char_traitsIcEE4failEv(ptr noundef nonnull align 8 dereferenceable(264) %596)
          to label %598 unwind label %610

598:                                              ; preds = %591
  br i1 %597, label %599, label %635

599:                                              ; preds = %598
  %600 = load i8, ptr %23, align 1, !tbaa !15, !range !19, !noundef !20
  %601 = trunc i8 %600 to i1
  br i1 %601, label %623, label %602

602:                                              ; preds = %599
  %603 = load i32, ptr %25, align 4, !tbaa !9
  %604 = load i32, ptr %13, align 4, !tbaa !9
  %605 = add nsw i32 %603, %604
  %606 = icmp sgt i32 %605, 300
  br i1 %606, label %607, label %623

607:                                              ; preds = %602
  %608 = load ptr, ptr %9, align 8, !tbaa !5
  %609 = getelementptr inbounds %"class.glslang::TPpToken", ptr %608, i32 0, i32 3
  store i64 9218868437227405312, ptr %609, align 8, !tbaa !11
  br label %623

610:                                              ; preds = %591, %586, %576
  %611 = landingpad { ptr, i32 }
          cleanup
  %612 = extractvalue { ptr, i32 } %611, 0
  store ptr %612, ptr %33, align 8
  %613 = extractvalue { ptr, i32 } %611, 1
  store i32 %613, ptr %34, align 4
  br label %636

614:                                              ; preds = %582
  %615 = landingpad { ptr, i32 }
          cleanup
  %616 = extractvalue { ptr, i32 } %615, 0
  store ptr %616, ptr %33, align 8
  %617 = extractvalue { ptr, i32 } %615, 1
  store i32 %617, ptr %34, align 4
  br label %622

618:                                              ; preds = %585
  %619 = landingpad { ptr, i32 }
          cleanup
  %620 = extractvalue { ptr, i32 } %619, 0
  store ptr %620, ptr %33, align 8
  %621 = extractvalue { ptr, i32 } %619, 1
  store i32 %621, ptr %34, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #5
  br label %622

622:                                              ; preds = %618, %614
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #5
  br label %636

623:                                              ; preds = %607, %602, %599
  %624 = load i8, ptr %23, align 1, !tbaa !15, !range !19, !noundef !20
  %625 = trunc i8 %624 to i1
  br i1 %625, label %626, label %634

626:                                              ; preds = %623
  %627 = load i32, ptr %25, align 4, !tbaa !9
  %628 = load i32, ptr %13, align 4, !tbaa !9
  %629 = add nsw i32 %627, %628
  %630 = icmp sgt i32 %629, 300
  br i1 %630, label %631, label %634

631:                                              ; preds = %626
  %632 = load ptr, ptr %9, align 8, !tbaa !5
  %633 = getelementptr inbounds %"class.glslang::TPpToken", ptr %632, i32 0, i32 3
  store double 0.000000e+00, ptr %633, align 8, !tbaa !11
  br label %634

634:                                              ; preds = %631, %626, %623
  br label %635

635:                                              ; preds = %634, %598
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %31) #5
  call void @llvm.lifetime.end.p0(i64 40, ptr %31) #5
  br label %637

636:                                              ; preds = %622, %610
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %31) #5
  call void @llvm.lifetime.end.p0(i64 40, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %10) #5
  br label %648

637:                                              ; preds = %635, %537
  %638 = load i8, ptr %27, align 1, !tbaa !15, !range !19, !noundef !20
  %639 = trunc i8 %638 to i1
  br i1 %639, label %640, label %641

640:                                              ; preds = %637
  store i32 159, ptr %5, align 4
  store i32 1, ptr %37, align 4
  br label %646

641:                                              ; preds = %637
  %642 = load i8, ptr %28, align 1, !tbaa !15, !range !19, !noundef !20
  %643 = trunc i8 %642 to i1
  br i1 %643, label %644, label %645

644:                                              ; preds = %641
  store i32 160, ptr %5, align 4
  store i32 1, ptr %37, align 4
  br label %646

645:                                              ; preds = %641
  store i32 158, ptr %5, align 4
  store i32 1, ptr %37, align 4
  br label %646

646:                                              ; preds = %645, %644, %640
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %10) #5
  %647 = load i32, ptr %5, align 4
  ret i32 %647

648:                                              ; preds = %636
  %649 = load ptr, ptr %33, align 8
  %650 = load i32, ptr %34, align 4
  %651 = insertvalue { ptr, i32 } poison, ptr %649, 0
  %652 = insertvalue { ptr, i32 } %651, i32 %650, 1
  resume { ptr, i32 } %652
}

; 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: inlinehint mustprogress nounwind uwtable
declare hidden void @"_ZZN7glslang10TPpContext11lFloatConstEiiPNS_8TPpTokenEENK3$_0clEi"(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) #2 align 2

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

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

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

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

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

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

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

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

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

declare void @_ZNSt9basic_iosIcSt11char_traitsIcEE5clearESt12_Ios_Iostate(ptr noundef nonnull align 8 dereferenceable(264), i32 noundef) #4

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
declare void @_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEE3strERKNS_12basic_stringIcS2_S3_EE(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(32)) #0 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 align 2

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

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

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

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

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

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


; 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 = type { 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::__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::allocator.9" = type { i8 }

@.str = external hidden unnamed_addr constant [32 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [23 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local noundef range(i32 158, 161) i32 @_ZN7glslang10TPpContext11lFloatConstEiiPNS_8TPpTokenE(ptr noundef nonnull align 8 dereferenceable(921) %0, i32 noundef %1, i32 noundef %2, ptr noundef %3) local_unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca i32, align 4
  %6 = alloca ptr, align 8
  %7 = alloca %class.anon, align 8
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca %"class.glslang::pool_allocator.4", align 8
  %10 = alloca %"class.std::__cxx11::basic_string.8", align 8
  %11 = alloca %"class.std::allocator.9", align 1
  store i32 %1, ptr %5, align 4, !tbaa !5
  store ptr %3, ptr %6, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #6
  store ptr %5, ptr %7, align 8, !tbaa !9
  %12 = getelementptr inbounds i8, ptr %7, i64 8
  store ptr %6, ptr %12, align 8, !tbaa !9
  %13 = getelementptr inbounds i8, ptr %3, i64 40
  %14 = icmp sgt i32 %1, 0
  br i1 %14, label %.lr.ph.preheader, label %.critedge

.lr.ph.preheader:                                 ; preds = %4
  %wide.trip.count = zext nneg i32 %1 to i64
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %18
  %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %18 ]
  %15 = getelementptr inbounds [1025 x i8], ptr %13, i64 0, i64 %indvars.iv
  %16 = load i8, ptr %15, align 1, !tbaa !11
  %17 = icmp eq i8 %16, 48
  br i1 %17, label %18, label %.critedge.loopexit.split.loop.exit271

18:                                               ; preds = %.lr.ph
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %.critedge, label %.lr.ph, !llvm.loop !12

.critedge.loopexit.split.loop.exit271:            ; preds = %.lr.ph
  %19 = trunc nuw nsw i64 %indvars.iv to i32
  br label %.critedge

.critedge:                                        ; preds = %18, %.critedge.loopexit.split.loop.exit271, %4
  %.0153.lcssa = phi i32 [ 0, %4 ], [ %19, %.critedge.loopexit.split.loop.exit271 ], [ %1, %18 ]
  %20 = sext i32 %1 to i64
  %21 = sext i32 %.0153.lcssa to i64
  %smin = call i32 @llvm.smin.i32(i32 %.0153.lcssa, i32 %1)
  br label %22

22:                                               ; preds = %24, %.critedge
  %indvars.iv253 = phi i64 [ %indvars.iv.next254, %24 ], [ %20, %.critedge ]
  %23 = icmp sgt i64 %indvars.iv253, %21
  br i1 %23, label %24, label %.critedge2

24:                                               ; preds = %22
  %indvars.iv.next254 = add nsw i64 %indvars.iv253, -1
  %25 = getelementptr inbounds [1025 x i8], ptr %13, i64 0, i64 %indvars.iv.next254
  %26 = load i8, ptr %25, align 1, !tbaa !11
  %27 = icmp eq i8 %26, 48
  br i1 %27, label %22, label %.critedge2.split.loop.exit273, !llvm.loop !14

.critedge2.split.loop.exit273:                    ; preds = %24
  %28 = trunc nsw i64 %indvars.iv253 to i32
  br label %.critedge2

.critedge2:                                       ; preds = %22, %.critedge2.split.loop.exit273
  %.0154.lcssa = phi i32 [ %28, %.critedge2.split.loop.exit273 ], [ %smin, %22 ]
  %29 = sub nsw i32 %.0154.lcssa, %.0153.lcssa
  %30 = icmp slt i32 %29, 16
  %31 = zext i1 %30 to i8
  %32 = icmp slt i32 %.0153.lcssa, %.0154.lcssa
  %or.cond246 = and i1 %30, %32
  br i1 %or.cond246, label %.lr.ph223, label %.loopexit217

.lr.ph223:                                        ; preds = %.critedge2
  %33 = zext i32 %.0153.lcssa to i64
  %xtraiter = and i32 %29, 3
  %34 = sub i32 %.0153.lcssa, %.0154.lcssa
  %35 = icmp ugt i32 %34, -4
  br i1 %35, label %.loopexit217.loopexit.unr-lcssa, label %.lr.ph223.new

.lr.ph223.new:                                    ; preds = %.lr.ph223
  %unroll_iter = and i32 %29, -4
  br label %36

36:                                               ; preds = %36, %.lr.ph223.new
  %indvars.iv256 = phi i64 [ %33, %.lr.ph223.new ], [ %indvars.iv.next257.3, %36 ]
  %.0160221 = phi i64 [ 0, %.lr.ph223.new ], [ %60, %36 ]
  %niter = phi i32 [ 0, %.lr.ph223.new ], [ %niter.next.3, %36 ]
  %37 = mul i64 %.0160221, 10
  %38 = getelementptr inbounds [1025 x i8], ptr %13, i64 0, i64 %indvars.iv256
  %39 = load i8, ptr %38, align 1, !tbaa !11
  %40 = sext i8 %39 to i64
  %41 = add i64 %37, -48
  %42 = add i64 %41, %40
  %indvars.iv.next257 = add nuw nsw i64 %indvars.iv256, 1
  %43 = mul i64 %42, 10
  %44 = getelementptr inbounds [1025 x i8], ptr %13, i64 0, i64 %indvars.iv.next257
  %45 = load i8, ptr %44, align 1, !tbaa !11
  %46 = sext i8 %45 to i64
  %47 = add i64 %43, -48
  %48 = add i64 %47, %46
  %indvars.iv.next257.1 = add nuw nsw i64 %indvars.iv256, 2
  %49 = mul i64 %48, 10
  %50 = getelementptr inbounds [1025 x i8], ptr %13, i64 0, i64 %indvars.iv.next257.1
  %51 = load i8, ptr %50, align 1, !tbaa !11
  %52 = sext i8 %51 to i64
  %53 = add i64 %49, -48
  %54 = add i64 %53, %52
  %indvars.iv.next257.2 = add nuw nsw i64 %indvars.iv256, 3
  %55 = mul i64 %54, 10
  %56 = getelementptr inbounds [1025 x i8], ptr %13, i64 0, i64 %indvars.iv.next257.2
  %57 = load i8, ptr %56, align 1, !tbaa !11
  %58 = sext i8 %57 to i64
  %59 = add i64 %55, -48
  %60 = add i64 %59, %58
  %indvars.iv.next257.3 = add nuw nsw i64 %indvars.iv256, 4
  %niter.next.3 = add i32 %niter, 4
  %niter.ncmp.3.not = icmp eq i32 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3.not, label %.loopexit217.loopexit.unr-lcssa, label %36, !llvm.loop !15

.loopexit217.loopexit.unr-lcssa:                  ; preds = %36, %.lr.ph223
  %.lcssa284.ph = phi i64 [ poison, %.lr.ph223 ], [ %60, %36 ]
  %indvars.iv256.unr = phi i64 [ %33, %.lr.ph223 ], [ %indvars.iv.next257.3, %36 ]
  %.0160221.unr = phi i64 [ 0, %.lr.ph223 ], [ %60, %36 ]
  %lcmp.mod.not = icmp eq i32 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.loopexit217, label %.epil.preheader

.epil.preheader:                                  ; preds = %.loopexit217.loopexit.unr-lcssa, %.epil.preheader
  %indvars.iv256.epil = phi i64 [ %indvars.iv.next257.epil, %.epil.preheader ], [ %indvars.iv256.unr, %.loopexit217.loopexit.unr-lcssa ]
  %.0160221.epil = phi i64 [ %66, %.epil.preheader ], [ %.0160221.unr, %.loopexit217.loopexit.unr-lcssa ]
  %epil.iter = phi i32 [ %epil.iter.next, %.epil.preheader ], [ 0, %.loopexit217.loopexit.unr-lcssa ]
  %61 = mul i64 %.0160221.epil, 10
  %62 = getelementptr inbounds [1025 x i8], ptr %13, i64 0, i64 %indvars.iv256.epil
  %63 = load i8, ptr %62, align 1, !tbaa !11
  %64 = sext i8 %63 to i64
  %65 = add i64 %61, -48
  %66 = add i64 %65, %64
  %indvars.iv.next257.epil = add nuw nsw i64 %indvars.iv256.epil, 1
  %epil.iter.next = add i32 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i32 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %.loopexit217, label %.epil.preheader, !llvm.loop !16

.loopexit217:                                     ; preds = %.loopexit217.loopexit.unr-lcssa, %.epil.preheader, %.critedge2
  %.1161 = phi i64 [ 0, %.critedge2 ], [ %.lcssa284.ph, %.loopexit217.loopexit.unr-lcssa ], [ %66, %.epil.preheader ]
  %67 = sub nsw i32 %1, %.0154.lcssa
  %68 = icmp eq i32 %2, 46
  br i1 %68, label %69, label %._crit_edge231.thread

69:                                               ; preds = %.loopexit217
  call void @"_ZZN7glslang10TPpContext11lFloatConstEiiPNS_8TPpTokenEENK3$_0clEi"(ptr noundef nonnull align 8 dereferenceable(16) %7, i32 noundef 46)
  %70 = call noundef i32 @_ZN7glslang10TPpContext7getCharEv(ptr noundef nonnull align 8 dereferenceable(921) %0)
  %71 = load i32, ptr %5, align 4, !tbaa !5
  %72 = icmp eq i32 %70, 48
  br i1 %72, label %.lr.ph225, label %._crit_edge

.lr.ph225:                                        ; preds = %69, %.lr.ph225
  call void @"_ZZN7glslang10TPpContext11lFloatConstEiiPNS_8TPpTokenEENK3$_0clEi"(ptr noundef nonnull align 8 dereferenceable(16) %7, i32 noundef 48)
  %73 = call noundef i32 @_ZN7glslang10TPpContext7getCharEv(ptr noundef nonnull align 8 dereferenceable(921) %0)
  %74 = icmp eq i32 %73, 48
  br i1 %74, label %.lr.ph225, label %._crit_edge.loopexit, !llvm.loop !18

._crit_edge.loopexit:                             ; preds = %.lr.ph225
  %.pre = load i32, ptr %5, align 4, !tbaa !5
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %69
  %75 = phi i32 [ %71, %69 ], [ %.pre, %._crit_edge.loopexit ]
  %.0132.lcssa = phi i32 [ %70, %69 ], [ %73, %._crit_edge.loopexit ]
  %76 = add i32 %.0132.lcssa, -48
  %77 = icmp ult i32 %76, 10
  br i1 %77, label %.lr.ph230, label %._crit_edge231.thread

.lr.ph230:                                        ; preds = %._crit_edge, %.lr.ph230
  %.1133228 = phi i32 [ %79, %.lr.ph230 ], [ %.0132.lcssa, %._crit_edge ]
  %.0151227 = phi i32 [ %spec.select, %.lr.ph230 ], [ %75, %._crit_edge ]
  call void @"_ZZN7glslang10TPpContext11lFloatConstEiiPNS_8TPpTokenEENK3$_0clEi"(ptr noundef nonnull align 8 dereferenceable(16) %7, i32 noundef %.1133228)
  %.not182 = icmp eq i32 %.1133228, 48
  %78 = load i32, ptr %5, align 4
  %spec.select = select i1 %.not182, i32 %.0151227, i32 %78
  %79 = call noundef i32 @_ZN7glslang10TPpContext7getCharEv(ptr noundef nonnull align 8 dereferenceable(921) %0)
  %80 = add i32 %79, -48
  %81 = icmp ult i32 %80, 10
  br i1 %81, label %.lr.ph230, label %._crit_edge231, !llvm.loop !19

._crit_edge231:                                   ; preds = %.lr.ph230
  %82 = icmp sgt i32 %spec.select, %75
  br i1 %82, label %83, label %._crit_edge231.thread

83:                                               ; preds = %._crit_edge231
  %84 = xor i32 %.0154.lcssa, -1
  %85 = add i32 %29, %84
  %86 = add i32 %85, %spec.select
  %87 = icmp sgt i32 %86, 15
  %spec.select183 = select i1 %87, i8 0, i8 %31
  %88 = trunc nuw i8 %spec.select183 to i1
  %89 = icmp slt i32 %.0154.lcssa, %spec.select
  %or.cond247 = and i1 %89, %88
  br i1 %or.cond247, label %.lr.ph236, label %.loopexit215

.lr.ph236:                                        ; preds = %83
  %90 = load ptr, ptr %6, align 8, !tbaa !9
  %91 = getelementptr inbounds i8, ptr %90, i64 40
  %92 = sext i32 %.0154.lcssa to i64
  %wide.trip.count262 = sext i32 %spec.select to i64
  %93 = sub nsw i64 %wide.trip.count262, %92
  %xtraiter288 = and i64 %93, 1
  %lcmp.mod289.not = icmp eq i64 %xtraiter288, 0
  br i1 %lcmp.mod289.not, label %.prol.loopexit, label %.prol.loopexit.unr-lcssa

.prol.loopexit.unr-lcssa:                         ; preds = %.lr.ph236
  %94 = getelementptr inbounds [1025 x i8], ptr %91, i64 0, i64 %92
  %95 = load i8, ptr %94, align 1, !tbaa !11
  %.not181.prol = icmp eq i8 %95, 46
  %96 = sext i8 %95 to i64
  %97 = mul i64 %.1161, 10
  %98 = add i64 %97, -48
  %99 = add i64 %98, %96
  %.3163.prol = select i1 %.not181.prol, i64 %.1161, i64 %99
  %indvars.iv.next260.prol = add nsw i64 %92, 1
  br label %.prol.loopexit

.prol.loopexit:                                   ; preds = %.prol.loopexit.unr-lcssa, %.lr.ph236
  %.3163.lcssa.unr = phi i64 [ poison, %.lr.ph236 ], [ %.3163.prol, %.prol.loopexit.unr-lcssa ]
  %indvars.iv259.unr = phi i64 [ %92, %.lr.ph236 ], [ %indvars.iv.next260.prol, %.prol.loopexit.unr-lcssa ]
  %.2162234.unr = phi i64 [ %.1161, %.lr.ph236 ], [ %.3163.prol, %.prol.loopexit.unr-lcssa ]
  %100 = add nsw i64 %wide.trip.count262, -1
  %101 = icmp eq i64 %100, %92
  br i1 %101, label %.loopexit215, label %.lr.ph236.new

.lr.ph236.new:                                    ; preds = %.prol.loopexit, %.lr.ph236.new
  %indvars.iv259 = phi i64 [ %indvars.iv.next260.1, %.lr.ph236.new ], [ %indvars.iv259.unr, %.prol.loopexit ]
  %.2162234 = phi i64 [ %.3163.1, %.lr.ph236.new ], [ %.2162234.unr, %.prol.loopexit ]
  %102 = getelementptr inbounds [1025 x i8], ptr %91, i64 0, i64 %indvars.iv259
  %103 = load i8, ptr %102, align 1, !tbaa !11
  %.not181 = icmp eq i8 %103, 46
  %104 = sext i8 %103 to i64
  %105 = mul i64 %.2162234, 10
  %106 = add i64 %105, -48
  %107 = add i64 %106, %104
  %.3163 = select i1 %.not181, i64 %.2162234, i64 %107
  %indvars.iv.next260 = add nsw i64 %indvars.iv259, 1
  %108 = getelementptr inbounds [1025 x i8], ptr %91, i64 0, i64 %indvars.iv.next260
  %109 = load i8, ptr %108, align 1, !tbaa !11
  %.not181.1 = icmp eq i8 %109, 46
  %110 = sext i8 %109 to i64
  %111 = mul i64 %.3163, 10
  %112 = add i64 %111, -48
  %113 = add i64 %112, %110
  %.3163.1 = select i1 %.not181.1, i64 %.3163, i64 %113
  %indvars.iv.next260.1 = add nsw i64 %indvars.iv259, 2
  %exitcond263.not.1 = icmp eq i64 %indvars.iv.next260.1, %wide.trip.count262
  br i1 %exitcond263.not.1, label %.loopexit215, label %.lr.ph236.new, !llvm.loop !20

.loopexit215:                                     ; preds = %.prol.loopexit, %.lr.ph236.new, %83
  %.4164 = phi i64 [ %.1161, %83 ], [ %.3163.lcssa.unr, %.prol.loopexit ], [ %.3163.1, %.lr.ph236.new ]
  %114 = sub nsw i32 %71, %spec.select
  br label %._crit_edge231.thread

._crit_edge231.thread:                            ; preds = %._crit_edge, %._crit_edge231, %.loopexit215, %.loopexit217
  %.1171 = phi i32 [ %29, %.loopexit217 ], [ %86, %.loopexit215 ], [ %29, %._crit_edge231 ], [ %29, %._crit_edge ]
  %.2168 = phi i8 [ %31, %.loopexit217 ], [ %spec.select183, %.loopexit215 ], [ %31, %._crit_edge231 ], [ %31, %._crit_edge ]
  %.6 = phi i64 [ %.1161, %.loopexit217 ], [ %.4164, %.loopexit215 ], [ %.1161, %._crit_edge231 ], [ %.1161, %._crit_edge ]
  %.1158 = phi i32 [ %67, %.loopexit217 ], [ %114, %.loopexit215 ], [ %67, %._crit_edge231 ], [ %67, %._crit_edge ]
  %.0155 = phi i8 [ 0, %.loopexit217 ], [ 1, %.loopexit215 ], [ 1, %._crit_edge231 ], [ 1, %._crit_edge ]
  %.2 = phi i32 [ %2, %.loopexit217 ], [ %79, %.loopexit215 ], [ %79, %._crit_edge231 ], [ %.0132.lcssa, %._crit_edge ]
  %115 = and i32 %.2, -33
  %or.cond = icmp eq i32 %115, 69
  br i1 %or.cond, label %116, label %.thread

116:                                              ; preds = %._crit_edge231.thread
  call void @"_ZZN7glslang10TPpContext11lFloatConstEiiPNS_8TPpTokenEENK3$_0clEi"(ptr noundef nonnull align 8 dereferenceable(16) %7, i32 noundef %.2)
  %117 = call noundef i32 @_ZN7glslang10TPpContext7getCharEv(ptr noundef nonnull align 8 dereferenceable(921) %0)
  switch i32 %117, label %122 [
    i32 45, label %118
    i32 43, label %118
  ]

118:                                              ; preds = %116, %116
  %119 = icmp eq i32 %117, 45
  %120 = zext i1 %119 to i8
  call void @"_ZZN7glslang10TPpContext11lFloatConstEiiPNS_8TPpTokenEENK3$_0clEi"(ptr noundef nonnull align 8 dereferenceable(16) %7, i32 noundef %117)
  %121 = call noundef i32 @_ZN7glslang10TPpContext7getCharEv(ptr noundef nonnull align 8 dereferenceable(921) %0)
  br label %122

122:                                              ; preds = %116, %118
  %.0147 = phi i8 [ %120, %118 ], [ 0, %116 ]
  %.3 = phi i32 [ %121, %118 ], [ %117, %116 ]
  %123 = add i32 %.3, -48
  %or.cond7 = icmp ult i32 %123, 10
  br i1 %or.cond7, label %.lr.ph240, label %130

.lr.ph240:                                        ; preds = %122, %.lr.ph240
  %124 = phi i32 [ %128, %.lr.ph240 ], [ %123, %122 ]
  %.4239 = phi i32 [ %127, %.lr.ph240 ], [ %.3, %122 ]
  %.0139238 = phi i32 [ %126, %.lr.ph240 ], [ 0, %122 ]
  %125 = mul nsw i32 %.0139238, 10
  %126 = add nsw i32 %124, %125
  call void @"_ZZN7glslang10TPpContext11lFloatConstEiiPNS_8TPpTokenEENK3$_0clEi"(ptr noundef nonnull align 8 dereferenceable(16) %7, i32 noundef %.4239)
  %127 = call noundef i32 @_ZN7glslang10TPpContext7getCharEv(ptr noundef nonnull align 8 dereferenceable(921) %0)
  %128 = add i32 %127, -48
  %129 = icmp ult i32 %128, 10
  br i1 %129, label %.lr.ph240, label %.loopexit213, !llvm.loop !21

130:                                              ; preds = %122
  %131 = getelementptr inbounds i8, ptr %0, i64 256
  %132 = load ptr, ptr %131, align 8, !tbaa !22
  %133 = load ptr, ptr %6, align 8, !tbaa !9
  %134 = load ptr, ptr %132, align 8, !tbaa !73
  %135 = getelementptr inbounds i8, ptr %134, i64 352
  %136 = load ptr, ptr %135, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %136(ptr noundef nonnull align 8 dereferenceable(1176) %132, ptr noundef nonnull align 8 dereferenceable(24) %133, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.1)
  br label %.loopexit213

.loopexit213:                                     ; preds = %.lr.ph240, %130
  %.1140 = phi i32 [ 0, %130 ], [ %126, %.lr.ph240 ]
  %.5 = phi i32 [ %.3, %130 ], [ %127, %.lr.ph240 ]
  %137 = trunc nuw i8 %.0147 to i1
  br i1 %137, label %138, label %.thread

138:                                              ; preds = %.loopexit213
  %139 = sub nsw i32 %.1140, %.1158
  br label %142

.thread:                                          ; preds = %._crit_edge231.thread, %.loopexit213
  %.5201 = phi i32 [ %.5, %.loopexit213 ], [ %.2, %._crit_edge231.thread ]
  %.1140199 = phi i32 [ %.1140, %.loopexit213 ], [ 0, %._crit_edge231.thread ]
  %.1148198 = phi i8 [ %.0147, %.loopexit213 ], [ 0, %._crit_edge231.thread ]
  %.1156197 = phi i8 [ 1, %.loopexit213 ], [ %.0155, %._crit_edge231.thread ]
  %140 = add nsw i32 %.1140199, %.1158
  %141 = icmp slt i32 %140, 0
  %spec.select184 = select i1 %141, i8 1, i8 %.1148198
  %spec.select185 = call i32 @llvm.abs.i32(i32 %140, i1 true)
  br label %142

142:                                              ; preds = %.thread, %138
  %.5200 = phi i32 [ %.5, %138 ], [ %.5201, %.thread ]
  %.1156196 = phi i8 [ 1, %138 ], [ %.1156197, %.thread ]
  %.2149 = phi i8 [ %.0147, %138 ], [ %spec.select184, %.thread ]
  %.2141 = phi i32 [ %139, %138 ], [ %spec.select185, %.thread ]
  %143 = icmp slt i32 %.2141, 23
  %144 = trunc nuw i8 %.2168 to i1
  %145 = select i1 %143, i1 %144, i1 false
  br i1 %145, label %146, label %.loopexit

146:                                              ; preds = %142
  %147 = icmp sgt i32 %.2141, 0
  br i1 %147, label %.preheader, label %.loopexit

.preheader:                                       ; preds = %146, %.preheader
  %.0138245 = phi double [ %150, %.preheader ], [ 1.000000e+01, %146 ]
  %.3142244 = phi i32 [ %151, %.preheader ], [ %.2141, %146 ]
  %.0144243 = phi double [ %.1145, %.preheader ], [ 1.000000e+00, %146 ]
  %148 = and i32 %.3142244, 1
  %.not = icmp eq i32 %148, 0
  %149 = fmul double %.0144243, %.0138245
  %.1145 = select i1 %.not, double %.0144243, double %149
  %150 = fmul double %.0138245, %.0138245
  %151 = lshr i32 %.3142244, 1
  %.not211 = icmp ult i32 %.3142244, 2
  br i1 %.not211, label %.loopexit, label %.preheader, !llvm.loop !75

.loopexit:                                        ; preds = %.preheader, %146, %142
  %.2146 = phi double [ 1.000000e+00, %146 ], [ 0.000000e+00, %142 ], [ %.1145, %.preheader ]
  %.4143 = phi i32 [ %.2141, %146 ], [ %.2141, %142 ], [ 0, %.preheader ]
  %152 = and i32 %.5200, -33
  switch i32 %152, label %268 [
    i32 76, label %153
    i32 72, label %198
    i32 70, label %243
  ]

153:                                              ; preds = %.loopexit
  %154 = getelementptr inbounds i8, ptr %0, i64 264
  %155 = load i32, ptr %154, align 8, !tbaa !76
  %156 = icmp eq i32 %155, 0
  br i1 %156, label %157, label %.thread202

157:                                              ; preds = %153
  %158 = getelementptr inbounds i8, ptr %0, i64 256
  %159 = load ptr, ptr %158, align 8, !tbaa !22
  %160 = getelementptr inbounds i8, ptr %159, i64 56
  %161 = load ptr, ptr %160, align 8, !tbaa !77
  %162 = call noundef i32 @_ZNK7glslang13TIntermediate9getSourceEv(ptr noundef nonnull align 8 dereferenceable(1784) %161)
  %163 = icmp eq i32 %162, 1
  br i1 %163, label %164, label %170

164:                                              ; preds = %157
  %165 = load ptr, ptr %158, align 8, !tbaa !22
  %166 = load ptr, ptr %6, align 8, !tbaa !9
  %167 = load ptr, ptr %165, align 8, !tbaa !73
  %168 = getelementptr inbounds i8, ptr %167, i64 136
  %169 = load ptr, ptr %168, align 8
  call void %169(ptr noundef nonnull align 8 dereferenceable(192) %165, ptr noundef nonnull align 8 dereferenceable(24) %166, ptr noundef nonnull @.str.2)
  br label %170

170:                                              ; preds = %164, %157
  %.pr = load i32, ptr %154, align 8, !tbaa !76
  %171 = icmp eq i32 %.pr, 0
  br i1 %171, label %172, label %.thread202

172:                                              ; preds = %170
  %173 = trunc nuw i8 %.1156196 to i1
  br i1 %173, label %.thread202, label %174

174:                                              ; preds = %172
  %175 = load ptr, ptr %158, align 8, !tbaa !22
  %176 = load ptr, ptr %6, align 8, !tbaa !9
  %177 = load ptr, ptr %175, align 8, !tbaa !73
  %178 = getelementptr inbounds i8, ptr %177, i64 352
  %179 = load ptr, ptr %178, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %179(ptr noundef nonnull align 8 dereferenceable(1176) %175, ptr noundef nonnull align 8 dereferenceable(24) %176, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.1)
  br label %.thread202

.thread202:                                       ; preds = %153, %174, %172, %170
  %180 = getelementptr inbounds i8, ptr %0, i64 256
  %181 = load ptr, ptr %180, align 8, !tbaa !22
  %182 = getelementptr inbounds i8, ptr %181, i64 56
  %183 = load ptr, ptr %182, align 8, !tbaa !77
  %184 = call noundef i32 @_ZNK7glslang13TIntermediate9getSourceEv(ptr noundef nonnull align 8 dereferenceable(1784) %183)
  %185 = icmp eq i32 %184, 1
  br i1 %185, label %186, label %191

186:                                              ; preds = %.thread202
  %187 = call noundef i32 @_ZN7glslang10TPpContext7getCharEv(ptr noundef nonnull align 8 dereferenceable(921) %0)
  %188 = and i32 %187, -33
  %or.cond11.not = icmp eq i32 %188, 70
  br i1 %or.cond11.not, label %190, label %189

189:                                              ; preds = %186
  call void @_ZN7glslang10TPpContext9ungetCharEv(ptr noundef nonnull align 8 dereferenceable(921) %0)
  call void @_ZN7glslang10TPpContext9ungetCharEv(ptr noundef nonnull align 8 dereferenceable(921) %0)
  br label %269

190:                                              ; preds = %186
  call void @"_ZZN7glslang10TPpContext11lFloatConstEiiPNS_8TPpTokenEENK3$_0clEi"(ptr noundef nonnull align 8 dereferenceable(16) %7, i32 noundef %.5200)
  call void @"_ZZN7glslang10TPpContext11lFloatConstEiiPNS_8TPpTokenEENK3$_0clEi"(ptr noundef nonnull align 8 dereferenceable(16) %7, i32 noundef %187)
  br label %269

191:                                              ; preds = %.thread202
  %192 = load ptr, ptr %180, align 8, !tbaa !22
  %193 = getelementptr inbounds i8, ptr %192, i64 56
  %194 = load ptr, ptr %193, align 8, !tbaa !77
  %195 = call noundef i32 @_ZNK7glslang13TIntermediate9getSourceEv(ptr noundef nonnull align 8 dereferenceable(1784) %194)
  %196 = icmp eq i32 %195, 2
  br i1 %196, label %197, label %269

197:                                              ; preds = %191
  call void @"_ZZN7glslang10TPpContext11lFloatConstEiiPNS_8TPpTokenEENK3$_0clEi"(ptr noundef nonnull align 8 dereferenceable(16) %7, i32 noundef %.5200)
  br label %269

198:                                              ; preds = %.loopexit
  %199 = getelementptr inbounds i8, ptr %0, i64 264
  %200 = load i32, ptr %199, align 8, !tbaa !76
  %201 = icmp eq i32 %200, 0
  br i1 %201, label %202, label %.thread205

202:                                              ; preds = %198
  %203 = getelementptr inbounds i8, ptr %0, i64 256
  %204 = load ptr, ptr %203, align 8, !tbaa !22
  %205 = getelementptr inbounds i8, ptr %204, i64 56
  %206 = load ptr, ptr %205, align 8, !tbaa !77
  %207 = call noundef i32 @_ZNK7glslang13TIntermediate9getSourceEv(ptr noundef nonnull align 8 dereferenceable(1784) %206)
  %208 = icmp eq i32 %207, 1
  br i1 %208, label %209, label %215

209:                                              ; preds = %202
  %210 = load ptr, ptr %203, align 8, !tbaa !22
  %211 = load ptr, ptr %6, align 8, !tbaa !9
  %212 = load ptr, ptr %210, align 8, !tbaa !73
  %213 = getelementptr inbounds i8, ptr %212, i64 144
  %214 = load ptr, ptr %213, align 8
  call void %214(ptr noundef nonnull align 8 dereferenceable(192) %210, ptr noundef nonnull align 8 dereferenceable(24) %211, ptr noundef nonnull @.str.4, i1 noundef zeroext false)
  br label %215

215:                                              ; preds = %209, %202
  %.pr204 = load i32, ptr %199, align 8, !tbaa !76
  %216 = icmp eq i32 %.pr204, 0
  br i1 %216, label %217, label %.thread205

217:                                              ; preds = %215
  %218 = trunc nuw i8 %.1156196 to i1
  br i1 %218, label %.thread205, label %219

219:                                              ; preds = %217
  %220 = load ptr, ptr %203, align 8, !tbaa !22
  %221 = load ptr, ptr %6, align 8, !tbaa !9
  %222 = load ptr, ptr %220, align 8, !tbaa !73
  %223 = getelementptr inbounds i8, ptr %222, i64 352
  %224 = load ptr, ptr %223, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %224(ptr noundef nonnull align 8 dereferenceable(1176) %220, ptr noundef nonnull align 8 dereferenceable(24) %221, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.1)
  br label %.thread205

.thread205:                                       ; preds = %198, %219, %217, %215
  %225 = getelementptr inbounds i8, ptr %0, i64 256
  %226 = load ptr, ptr %225, align 8, !tbaa !22
  %227 = getelementptr inbounds i8, ptr %226, i64 56
  %228 = load ptr, ptr %227, align 8, !tbaa !77
  %229 = call noundef i32 @_ZNK7glslang13TIntermediate9getSourceEv(ptr noundef nonnull align 8 dereferenceable(1784) %228)
  %230 = icmp eq i32 %229, 1
  br i1 %230, label %231, label %236

231:                                              ; preds = %.thread205
  %232 = call noundef i32 @_ZN7glslang10TPpContext7getCharEv(ptr noundef nonnull align 8 dereferenceable(921) %0)
  %233 = and i32 %232, -33
  %or.cond15.not = icmp eq i32 %233, 70
  br i1 %or.cond15.not, label %235, label %234

234:                                              ; preds = %231
  call void @_ZN7glslang10TPpContext9ungetCharEv(ptr noundef nonnull align 8 dereferenceable(921) %0)
  call void @_ZN7glslang10TPpContext9ungetCharEv(ptr noundef nonnull align 8 dereferenceable(921) %0)
  br label %269

235:                                              ; preds = %231
  call void @"_ZZN7glslang10TPpContext11lFloatConstEiiPNS_8TPpTokenEENK3$_0clEi"(ptr noundef nonnull align 8 dereferenceable(16) %7, i32 noundef %.5200)
  call void @"_ZZN7glslang10TPpContext11lFloatConstEiiPNS_8TPpTokenEENK3$_0clEi"(ptr noundef nonnull align 8 dereferenceable(16) %7, i32 noundef %232)
  br label %269

236:                                              ; preds = %.thread205
  %237 = load ptr, ptr %225, align 8, !tbaa !22
  %238 = getelementptr inbounds i8, ptr %237, i64 56
  %239 = load ptr, ptr %238, align 8, !tbaa !77
  %240 = call noundef i32 @_ZNK7glslang13TIntermediate9getSourceEv(ptr noundef nonnull align 8 dereferenceable(1784) %239)
  %241 = icmp eq i32 %240, 2
  br i1 %241, label %242, label %269

242:                                              ; preds = %236
  call void @"_ZZN7glslang10TPpContext11lFloatConstEiiPNS_8TPpTokenEENK3$_0clEi"(ptr noundef nonnull align 8 dereferenceable(16) %7, i32 noundef %.5200)
  br label %269

243:                                              ; preds = %.loopexit
  %244 = getelementptr inbounds i8, ptr %0, i64 264
  %245 = load i32, ptr %244, align 8, !tbaa !76
  %246 = icmp eq i32 %245, 0
  br i1 %246, label %247, label %.thread210

247:                                              ; preds = %243
  %248 = getelementptr inbounds i8, ptr %0, i64 256
  %249 = load ptr, ptr %248, align 8, !tbaa !22
  %250 = load ptr, ptr %6, align 8, !tbaa !9
  call void @_ZN7glslang14TParseVersions15profileRequiresERKNS_10TSourceLocEiiPKcS5_(ptr noundef nonnull align 8 dereferenceable(192) %249, ptr noundef nonnull align 8 dereferenceable(24) %250, i32 noundef 8, i32 noundef 300, ptr noundef null, ptr noundef nonnull @.str.5)
  %.pr206 = load i32, ptr %244, align 8, !tbaa !76
  %251 = icmp eq i32 %.pr206, 0
  br i1 %251, label %252, label %.thread210

252:                                              ; preds = %247
  %253 = load ptr, ptr %248, align 8, !tbaa !22
  %254 = call noundef zeroext i1 @_ZNK7glslang14TParseVersions13relaxedErrorsEv(ptr noundef nonnull align 8 dereferenceable(192) %253)
  br i1 %254, label %258, label %255

255:                                              ; preds = %252
  %256 = load ptr, ptr %248, align 8, !tbaa !22
  %257 = load ptr, ptr %6, align 8, !tbaa !9
  call void @_ZN7glslang14TParseVersions15profileRequiresERKNS_10TSourceLocEiiPKcS5_(ptr noundef nonnull align 8 dereferenceable(192) %256, ptr noundef nonnull align 8 dereferenceable(24) %257, i32 noundef -9, i32 noundef 120, ptr noundef null, ptr noundef nonnull @.str.5)
  br label %258

258:                                              ; preds = %255, %252
  %.pr209 = load i32, ptr %244, align 8, !tbaa !76
  %259 = icmp eq i32 %.pr209, 0
  br i1 %259, label %260, label %.thread210

260:                                              ; preds = %258
  %261 = trunc nuw i8 %.1156196 to i1
  br i1 %261, label %.thread210, label %262

262:                                              ; preds = %260
  %263 = load ptr, ptr %248, align 8, !tbaa !22
  %264 = load ptr, ptr %6, align 8, !tbaa !9
  %265 = load ptr, ptr %263, align 8, !tbaa !73
  %266 = getelementptr inbounds i8, ptr %265, i64 352
  %267 = load ptr, ptr %266, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %267(ptr noundef nonnull align 8 dereferenceable(1176) %263, ptr noundef nonnull align 8 dereferenceable(24) %264, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.1)
  br label %.thread210

.thread210:                                       ; preds = %243, %247, %262, %260, %258
  call void @"_ZZN7glslang10TPpContext11lFloatConstEiiPNS_8TPpTokenEENK3$_0clEi"(ptr noundef nonnull align 8 dereferenceable(16) %7, i32 noundef %.5200)
  br label %269

268:                                              ; preds = %.loopexit
  call void @_ZN7glslang10TPpContext9ungetCharEv(ptr noundef nonnull align 8 dereferenceable(921) %0)
  br label %269

269:                                              ; preds = %234, %235, %189, %190, %236, %242, %268, %.thread210, %197, %191
  %.1137 = phi i32 [ 159, %197 ], [ 158, %191 ], [ 160, %242 ], [ 158, %236 ], [ 158, %.thread210 ], [ 158, %268 ], [ 159, %190 ], [ 158, %189 ], [ 160, %235 ], [ 158, %234 ]
  %270 = load i32, ptr %5, align 4, !tbaa !5
  %271 = icmp sgt i32 %270, 1024
  br i1 %271, label %272, label %279

272:                                              ; preds = %269
  store i32 1024, ptr %5, align 4, !tbaa !5
  %273 = getelementptr inbounds i8, ptr %0, i64 256
  %274 = load ptr, ptr %273, align 8, !tbaa !22
  %275 = load ptr, ptr %6, align 8, !tbaa !9
  %276 = load ptr, ptr %274, align 8, !tbaa !73
  %277 = getelementptr inbounds i8, ptr %276, i64 352
  %278 = load ptr, ptr %277, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %278(ptr noundef nonnull align 8 dereferenceable(1176) %274, ptr noundef nonnull align 8 dereferenceable(24) %275, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.1)
  %.pre264 = load i32, ptr %5, align 4, !tbaa !5
  br label %279

279:                                              ; preds = %272, %269
  %280 = phi i32 [ %.pre264, %272 ], [ %270, %269 ]
  %281 = load ptr, ptr %6, align 8, !tbaa !9
  %282 = getelementptr inbounds i8, ptr %281, i64 40
  %283 = sext i32 %280 to i64
  %284 = getelementptr inbounds [1025 x i8], ptr %282, i64 0, i64 %283
  store i8 0, ptr %284, align 1, !tbaa !11
  br i1 %145, label %285, label %300

285:                                              ; preds = %279
  %286 = fcmp oeq double %.2146, 0.000000e+00
  br i1 %286, label %287, label %291

287:                                              ; preds = %285
  %288 = uitofp i64 %.6 to double
  %289 = load ptr, ptr %6, align 8, !tbaa !9
  %290 = getelementptr inbounds i8, ptr %289, i64 32
  store double %288, ptr %290, align 8, !tbaa !11
  br label %370

291:                                              ; preds = %285
  %292 = trunc nuw i8 %.2149 to i1
  %293 = uitofp i64 %.6 to double
  %294 = load ptr, ptr %6, align 8, !tbaa !9
  %295 = getelementptr inbounds i8, ptr %294, i64 32
  br i1 %292, label %296, label %298

296:                                              ; preds = %291
  %297 = fdiv double %293, %.2146
  store double %297, ptr %295, align 8, !tbaa !11
  br label %370

298:                                              ; preds = %291
  %299 = fmul double %.2146, %293
  store double %299, ptr %295, align 8, !tbaa !11
  br label %370

300:                                              ; preds = %279
  %301 = load ptr, ptr %6, align 8, !tbaa !9
  %302 = getelementptr inbounds i8, ptr %301, i64 32
  store double 0.000000e+00, ptr %302, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %8) #6
  %303 = getelementptr inbounds i8, ptr %301, i64 40
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #6
  call void @_ZN7glslang14pool_allocatorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %9)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(40) %8, ptr noundef nonnull %303, ptr noundef nonnull align 8 dereferenceable(8) %9)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #6
  %304 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE4backEv(ptr noundef nonnull align 8 dereferenceable(40) %8) #6
  %305 = load i8, ptr %304, align 1, !tbaa !11
  %306 = icmp eq i8 %305, 102
  br i1 %306, label %311, label %307

307:                                              ; preds = %300
  %308 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE4backEv(ptr noundef nonnull align 8 dereferenceable(40) %8) #6
  %309 = load i8, ptr %308, align 1, !tbaa !11
  %310 = icmp eq i8 %309, 70
  br i1 %310, label %311, label %312

311:                                              ; preds = %307, %300
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(40) %8) #6
  br label %312

312:                                              ; preds = %311, %307
  %313 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE4backEv(ptr noundef nonnull align 8 dereferenceable(40) %8) #6
  %314 = load i8, ptr %313, align 1, !tbaa !11
  %315 = icmp eq i8 %314, 104
  br i1 %315, label %320, label %316

316:                                              ; preds = %312
  %317 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE4backEv(ptr noundef nonnull align 8 dereferenceable(40) %8) #6
  %318 = load i8, ptr %317, align 1, !tbaa !11
  %319 = icmp eq i8 %318, 72
  br i1 %319, label %320, label %321

320:                                              ; preds = %316, %312
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(40) %8) #6
  br label %321

321:                                              ; preds = %320, %316
  %322 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE4backEv(ptr noundef nonnull align 8 dereferenceable(40) %8) #6
  %323 = load i8, ptr %322, align 1, !tbaa !11
  %324 = icmp eq i8 %323, 108
  br i1 %324, label %329, label %325

325:                                              ; preds = %321
  %326 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE4backEv(ptr noundef nonnull align 8 dereferenceable(40) %8) #6
  %327 = load i8, ptr %326, align 1, !tbaa !11
  %328 = icmp eq i8 %327, 76
  br i1 %328, label %329, label %330

329:                                              ; preds = %325, %321
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(40) %8) #6
  br label %330

330:                                              ; preds = %329, %325
  %331 = getelementptr inbounds i8, ptr %0, i64 536
  %332 = load ptr, ptr %331, align 8, !tbaa !73
  %333 = getelementptr i8, ptr %332, i64 -24
  %334 = load i64, ptr %333, align 8
  %335 = getelementptr inbounds i8, ptr %331, i64 %334
  invoke void @_ZNSt9basic_iosIcSt11char_traitsIcEE5clearESt12_Ios_Iostate(ptr noundef nonnull align 8 dereferenceable(264) %335, i32 noundef 0)
          to label %336 unwind label %357

336:                                              ; preds = %330
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #6
  %337 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %8) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %11) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef %337, ptr noundef nonnull align 1 dereferenceable(1) %11)
          to label %338 unwind label %359

338:                                              ; preds = %336
  invoke void @_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEE3strERKNS_12basic_stringIcS2_S3_EE(ptr noundef nonnull align 8 dereferenceable(120) %331, ptr noundef nonnull align 8 dereferenceable(32) %10)
          to label %339 unwind label %361

339:                                              ; preds = %338
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #6
  %340 = load ptr, ptr %6, align 8, !tbaa !9
  %341 = getelementptr inbounds i8, ptr %340, i64 32
  %342 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERd(ptr noundef nonnull align 8 dereferenceable(16) %331, ptr noundef nonnull align 8 dereferenceable(8) %341)
          to label %343 unwind label %357

343:                                              ; preds = %339
  %344 = load ptr, ptr %331, align 8, !tbaa !73
  %345 = getelementptr i8, ptr %344, i64 -24
  %346 = load i64, ptr %345, align 8
  %347 = getelementptr inbounds i8, ptr %331, i64 %346
  %348 = invoke noundef zeroext i1 @_ZNKSt9basic_iosIcSt11char_traitsIcEE4failEv(ptr noundef nonnull align 8 dereferenceable(264) %347)
          to label %349 unwind label %357

349:                                              ; preds = %343
  br i1 %348, label %350, label %368

350:                                              ; preds = %349
  %351 = trunc nuw i8 %.2149 to i1
  %.not187 = xor i1 %351, true
  %352 = add nsw i32 %.4143, %.1171
  %353 = icmp sgt i32 %352, 300
  %or.cond189 = select i1 %.not187, i1 %353, i1 false
  br i1 %or.cond189, label %354, label %364

354:                                              ; preds = %350
  %355 = load ptr, ptr %6, align 8, !tbaa !9
  %356 = getelementptr inbounds i8, ptr %355, i64 32
  store i64 9218868437227405312, ptr %356, align 8, !tbaa !11
  br label %364

357:                                              ; preds = %343, %339, %330
  %358 = landingpad { ptr, i32 }
          cleanup
  br label %369

359:                                              ; preds = %336
  %360 = landingpad { ptr, i32 }
          cleanup
  br label %363

361:                                              ; preds = %338
  %362 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #6
  br label %363

363:                                              ; preds = %361, %359
  %.pn = phi { ptr, i32 } [ %362, %361 ], [ %360, %359 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #6
  br label %369

364:                                              ; preds = %354, %350
  %or.cond191 = select i1 %351, i1 %353, i1 false
  br i1 %or.cond191, label %365, label %368

365:                                              ; preds = %364
  %366 = load ptr, ptr %6, align 8, !tbaa !9
  %367 = getelementptr inbounds i8, ptr %366, i64 32
  store double 0.000000e+00, ptr %367, align 8, !tbaa !11
  br label %368

368:                                              ; preds = %364, %365, %349
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %8) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %8) #6
  br label %370

369:                                              ; preds = %363, %357
  %.pn179 = phi { ptr, i32 } [ %358, %357 ], [ %.pn, %363 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %8) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #6
  resume { ptr, i32 } %.pn179

370:                                              ; preds = %287, %298, %296, %368
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #6
  ret i32 %.1137
}

; 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: inlinehint mustprogress nounwind uwtable
declare hidden void @"_ZZN7glslang10TPpContext11lFloatConstEiiPNS_8TPpTokenEENK3$_0clEi"(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) local_unnamed_addr #2 align 2

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

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

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

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

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

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

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

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

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

declare void @_ZNSt9basic_iosIcSt11char_traitsIcEE5clearESt12_Ios_Iostate(ptr noundef nonnull align 8 dereferenceable(264), i32 noundef) local_unnamed_addr #4

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
declare void @_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEE3strERKNS_12basic_stringIcS2_S3_EE(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 align 2

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

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

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

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.abs.i32(i32, i1 immarg) #5

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

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


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