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

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

%"class.glslang::TPpToken" = type <{ %"struct.glslang::TSourceLoc", i8, [7 x i8], %union.anon.67, [1025 x i8], [7 x i8] }>
%"struct.glslang::TSourceLoc" = type { ptr, i32, i32, i32 }
%union.anon.67 = type { double }
%"class.glslang::TScanContext" = type <{ ptr, ptr, i8, i8, i8, i8, [4 x i8], %"struct.glslang::TSourceLoc", ptr, ptr, ptr, i32, [4 x i8] }>
%"class.glslang::TParserToken" = type { ptr }
%struct.anon = type { %"struct.glslang::TSourceLoc", %union.anon, ptr }
%union.anon = type { ptr }

@.str.435 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.436 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.437 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.438 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.439 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.440 = external hidden unnamed_addr constant [17 x i8], align 1

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN7glslang12TScanContext8tokenizeEPNS_10TPpContextERNS_12TParserTokenE(ptr noundef nonnull align 8 dereferenceable(76) %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(8) %2) #1 align 2 {
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca %"class.glslang::TPpToken", align 8
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca [2 x i8], align 1
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store ptr %2, ptr %7, align 8, !tbaa !5
  %13 = load ptr, ptr %5, align 8
  br label %14

14:                                               ; preds = %205, %3
  %15 = load ptr, ptr %7, align 8, !tbaa !5
  %16 = getelementptr inbounds %"class.glslang::TScanContext", ptr %13, i32 0, i32 8
  store ptr %15, ptr %16, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1072, ptr %8) #5
  call void @_ZN7glslang8TPpTokenC2Ev(ptr noundef nonnull align 8 dereferenceable(1065) %8)
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #5
  %17 = load ptr, ptr %6, align 8, !tbaa !5
  %18 = call noundef i32 @_ZN7glslang10TPpContext8tokenizeERNS_8TPpTokenE(ptr noundef nonnull align 8 dereferenceable(921) %17, ptr noundef nonnull align 8 dereferenceable(1065) %8)
  store i32 %18, ptr %9, align 4, !tbaa !14
  %19 = load i32, ptr %9, align 4, !tbaa !14
  %20 = icmp eq i32 %19, -1
  br i1 %20, label %21, label %22

21:                                               ; preds = %14
  store i32 0, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

22:                                               ; preds = %14
  %23 = getelementptr inbounds %"class.glslang::TPpToken", ptr %8, i32 0, i32 4
  %24 = getelementptr inbounds [1025 x i8], ptr %23, i64 0, i64 0
  %25 = getelementptr inbounds %"class.glslang::TScanContext", ptr %13, i32 0, i32 10
  store ptr %24, ptr %25, align 8, !tbaa !15
  %26 = getelementptr inbounds %"class.glslang::TPpToken", ptr %8, i32 0, i32 0
  %27 = getelementptr inbounds %"class.glslang::TScanContext", ptr %13, i32 0, i32 7
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %27, ptr align 8 %26, i64 24, i1 false), !tbaa.struct !16
  %28 = getelementptr inbounds %"class.glslang::TScanContext", ptr %13, i32 0, i32 7
  %29 = getelementptr inbounds %"class.glslang::TScanContext", ptr %13, i32 0, i32 8
  %30 = load ptr, ptr %29, align 8, !tbaa !9
  %31 = getelementptr inbounds %"class.glslang::TParserToken", ptr %30, i32 0, i32 0
  %32 = load ptr, ptr %31, align 8, !tbaa !17
  %33 = getelementptr inbounds %struct.anon, ptr %32, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %33, ptr align 8 %28, i64 24, i1 false), !tbaa.struct !16
  %34 = load i32, ptr %9, align 4, !tbaa !14
  switch i32 %34, label %189 [
    i32 59, label %35
    i32 44, label %38
    i32 58, label %40
    i32 61, label %41
    i32 40, label %43
    i32 41, label %45
    i32 46, label %47
    i32 33, label %49
    i32 45, label %50
    i32 126, label %51
    i32 43, label %52
    i32 42, label %53
    i32 47, label %54
    i32 37, label %55
    i32 60, label %56
    i32 62, label %57
    i32 124, label %58
    i32 94, label %59
    i32 38, label %60
    i32 63, label %61
    i32 91, label %62
    i32 93, label %63
    i32 123, label %64
    i32 125, label %67
    i32 92, label %68
    i32 129, label %75
    i32 130, label %76
    i32 131, label %77
    i32 132, label %78
    i32 133, label %79
    i32 134, label %80
    i32 135, label %81
    i32 136, label %82
    i32 137, label %83
    i32 138, label %84
    i32 139, label %85
    i32 140, label %86
    i32 141, label %87
    i32 142, label %88
    i32 143, label %89
    i32 144, label %90
    i32 146, label %91
    i32 145, label %92
    i32 147, label %93
    i32 148, label %94
    i32 149, label %95
    i32 150, label %96
    i32 161, label %103
    i32 152, label %112
    i32 153, label %120
    i32 158, label %128
    i32 156, label %136
    i32 157, label %144
    i32 154, label %152
    i32 155, label %160
    i32 159, label %168
    i32 160, label %176
    i32 162, label %184
    i32 -1, label %188
  ]

35:                                               ; preds = %22
  %36 = getelementptr inbounds %"class.glslang::TScanContext", ptr %13, i32 0, i32 2
  store i8 0, ptr %36, align 8, !tbaa !19
  %37 = getelementptr inbounds %"class.glslang::TScanContext", ptr %13, i32 0, i32 5
  store i8 0, ptr %37, align 1, !tbaa !20
  store i32 614, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

38:                                               ; preds = %22
  %39 = getelementptr inbounds %"class.glslang::TScanContext", ptr %13, i32 0, i32 2
  store i8 0, ptr %39, align 8, !tbaa !19
  store i32 611, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

40:                                               ; preds = %22
  store i32 612, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

41:                                               ; preds = %22
  %42 = getelementptr inbounds %"class.glslang::TScanContext", ptr %13, i32 0, i32 2
  store i8 0, ptr %42, align 8, !tbaa !19
  store i32 613, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

43:                                               ; preds = %22
  %44 = getelementptr inbounds %"class.glslang::TScanContext", ptr %13, i32 0, i32 2
  store i8 0, ptr %44, align 8, !tbaa !19
  store i32 604, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

45:                                               ; preds = %22
  %46 = getelementptr inbounds %"class.glslang::TScanContext", ptr %13, i32 0, i32 2
  store i8 0, ptr %46, align 8, !tbaa !19
  store i32 605, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

47:                                               ; preds = %22
  %48 = getelementptr inbounds %"class.glslang::TScanContext", ptr %13, i32 0, i32 4
  store i8 1, ptr %48, align 2, !tbaa !21
  store i32 610, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

49:                                               ; preds = %22
  store i32 615, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

50:                                               ; preds = %22
  store i32 616, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

51:                                               ; preds = %22
  store i32 617, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

52:                                               ; preds = %22
  store i32 618, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

53:                                               ; preds = %22
  store i32 619, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

54:                                               ; preds = %22
  store i32 620, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

55:                                               ; preds = %22
  store i32 621, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

56:                                               ; preds = %22
  store i32 622, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

57:                                               ; preds = %22
  store i32 623, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

58:                                               ; preds = %22
  store i32 624, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

59:                                               ; preds = %22
  store i32 625, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

60:                                               ; preds = %22
  store i32 626, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

61:                                               ; preds = %22
  store i32 627, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

62:                                               ; preds = %22
  store i32 606, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

63:                                               ; preds = %22
  store i32 607, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

64:                                               ; preds = %22
  %65 = getelementptr inbounds %"class.glslang::TScanContext", ptr %13, i32 0, i32 3
  store i8 0, ptr %65, align 1, !tbaa !22
  %66 = getelementptr inbounds %"class.glslang::TScanContext", ptr %13, i32 0, i32 5
  store i8 0, ptr %66, align 1, !tbaa !20
  store i32 608, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

67:                                               ; preds = %22
  store i32 609, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

68:                                               ; preds = %22
  %69 = getelementptr inbounds %"class.glslang::TScanContext", ptr %13, i32 0, i32 1
  %70 = load ptr, ptr %69, align 8, !tbaa !23
  %71 = getelementptr inbounds %"class.glslang::TScanContext", ptr %13, i32 0, i32 7
  %72 = load ptr, ptr %70, align 8, !tbaa !24
  %73 = getelementptr inbounds ptr, ptr %72, i64 42
  %74 = load ptr, ptr %73, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %74(ptr noundef nonnull align 8 dereferenceable(1176) %70, ptr noundef nonnull align 8 dereferenceable(24) %71, ptr noundef @.str.435, ptr noundef @.str.436, ptr noundef @.str.437)
  br label %201

75:                                               ; preds = %22
  store i32 595, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

76:                                               ; preds = %22
  store i32 602, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

77:                                               ; preds = %22
  store i32 593, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

78:                                               ; preds = %22
  store i32 594, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

79:                                               ; preds = %22
  store i32 596, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

80:                                               ; preds = %22
  store i32 583, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

81:                                               ; preds = %22
  store i32 582, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

82:                                               ; preds = %22
  store i32 598, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

83:                                               ; preds = %22
  store i32 597, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

84:                                               ; preds = %22
  store i32 599, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

85:                                               ; preds = %22
  store i32 601, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

86:                                               ; preds = %22
  store i32 600, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

87:                                               ; preds = %22
  store i32 590, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

88:                                               ; preds = %22
  store i32 591, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

89:                                               ; preds = %22
  store i32 592, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

90:                                               ; preds = %22
  store i32 588, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

91:                                               ; preds = %22
  store i32 587, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

92:                                               ; preds = %22
  store i32 589, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

93:                                               ; preds = %22
  store i32 586, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

94:                                               ; preds = %22
  store i32 585, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

95:                                               ; preds = %22
  store i32 584, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

96:                                               ; preds = %22
  %97 = getelementptr inbounds %"class.glslang::TScanContext", ptr %13, i32 0, i32 1
  %98 = load ptr, ptr %97, align 8, !tbaa !23
  %99 = getelementptr inbounds %"class.glslang::TScanContext", ptr %13, i32 0, i32 7
  %100 = load ptr, ptr %98, align 8, !tbaa !24
  %101 = getelementptr inbounds ptr, ptr %100, i64 42
  %102 = load ptr, ptr %101, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %102(ptr noundef nonnull align 8 dereferenceable(1176) %98, ptr noundef nonnull align 8 dereferenceable(24) %99, ptr noundef @.str.438, ptr noundef @.str.439, ptr noundef @.str.437)
  br label %201

103:                                              ; preds = %22
  %104 = getelementptr inbounds %"class.glslang::TScanContext", ptr %13, i32 0, i32 10
  %105 = load ptr, ptr %104, align 8, !tbaa !15
  %106 = call noundef ptr @_ZN7glslang14NewPoolTStringB5cxx11EPKc(ptr noundef %105)
  %107 = getelementptr inbounds %"class.glslang::TScanContext", ptr %13, i32 0, i32 8
  %108 = load ptr, ptr %107, align 8, !tbaa !9
  %109 = getelementptr inbounds %"class.glslang::TParserToken", ptr %108, i32 0, i32 0
  %110 = load ptr, ptr %109, align 8, !tbaa !17
  %111 = getelementptr inbounds %struct.anon, ptr %110, i32 0, i32 1
  store ptr %106, ptr %111, align 8, !tbaa !26
  store i32 603, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

112:                                              ; preds = %22
  %113 = getelementptr inbounds %"class.glslang::TPpToken", ptr %8, i32 0, i32 3
  %114 = load i32, ptr %113, align 8, !tbaa !26
  %115 = getelementptr inbounds %"class.glslang::TScanContext", ptr %13, i32 0, i32 8
  %116 = load ptr, ptr %115, align 8, !tbaa !9
  %117 = getelementptr inbounds %"class.glslang::TParserToken", ptr %116, i32 0, i32 0
  %118 = load ptr, ptr %117, align 8, !tbaa !17
  %119 = getelementptr inbounds %struct.anon, ptr %118, i32 0, i32 1
  store i32 %114, ptr %119, align 8, !tbaa !26
  store i32 637, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

120:                                              ; preds = %22
  %121 = getelementptr inbounds %"class.glslang::TPpToken", ptr %8, i32 0, i32 3
  %122 = load i32, ptr %121, align 8, !tbaa !26
  %123 = getelementptr inbounds %"class.glslang::TScanContext", ptr %13, i32 0, i32 8
  %124 = load ptr, ptr %123, align 8, !tbaa !9
  %125 = getelementptr inbounds %"class.glslang::TParserToken", ptr %124, i32 0, i32 0
  %126 = load ptr, ptr %125, align 8, !tbaa !17
  %127 = getelementptr inbounds %struct.anon, ptr %126, i32 0, i32 1
  store i32 %122, ptr %127, align 8, !tbaa !26
  store i32 638, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

128:                                              ; preds = %22
  %129 = getelementptr inbounds %"class.glslang::TPpToken", ptr %8, i32 0, i32 3
  %130 = load double, ptr %129, align 8, !tbaa !26
  %131 = getelementptr inbounds %"class.glslang::TScanContext", ptr %13, i32 0, i32 8
  %132 = load ptr, ptr %131, align 8, !tbaa !9
  %133 = getelementptr inbounds %"class.glslang::TParserToken", ptr %132, i32 0, i32 0
  %134 = load ptr, ptr %133, align 8, !tbaa !17
  %135 = getelementptr inbounds %struct.anon, ptr %134, i32 0, i32 1
  store double %130, ptr %135, align 8, !tbaa !26
  store i32 636, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

136:                                              ; preds = %22
  %137 = getelementptr inbounds %"class.glslang::TPpToken", ptr %8, i32 0, i32 3
  %138 = load i32, ptr %137, align 8, !tbaa !26
  %139 = getelementptr inbounds %"class.glslang::TScanContext", ptr %13, i32 0, i32 8
  %140 = load ptr, ptr %139, align 8, !tbaa !9
  %141 = getelementptr inbounds %"class.glslang::TParserToken", ptr %140, i32 0, i32 0
  %142 = load ptr, ptr %141, align 8, !tbaa !17
  %143 = getelementptr inbounds %struct.anon, ptr %142, i32 0, i32 1
  store i32 %138, ptr %143, align 8, !tbaa !26
  store i32 670, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

144:                                              ; preds = %22
  %145 = getelementptr inbounds %"class.glslang::TPpToken", ptr %8, i32 0, i32 3
  %146 = load i32, ptr %145, align 8, !tbaa !26
  %147 = getelementptr inbounds %"class.glslang::TScanContext", ptr %13, i32 0, i32 8
  %148 = load ptr, ptr %147, align 8, !tbaa !9
  %149 = getelementptr inbounds %"class.glslang::TParserToken", ptr %148, i32 0, i32 0
  %150 = load ptr, ptr %149, align 8, !tbaa !17
  %151 = getelementptr inbounds %struct.anon, ptr %150, i32 0, i32 1
  store i32 %146, ptr %151, align 8, !tbaa !26
  store i32 671, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

152:                                              ; preds = %22
  %153 = getelementptr inbounds %"class.glslang::TPpToken", ptr %8, i32 0, i32 3
  %154 = load i64, ptr %153, align 8, !tbaa !26
  %155 = getelementptr inbounds %"class.glslang::TScanContext", ptr %13, i32 0, i32 8
  %156 = load ptr, ptr %155, align 8, !tbaa !9
  %157 = getelementptr inbounds %"class.glslang::TParserToken", ptr %156, i32 0, i32 0
  %158 = load ptr, ptr %157, align 8, !tbaa !17
  %159 = getelementptr inbounds %struct.anon, ptr %158, i32 0, i32 1
  store i64 %154, ptr %159, align 8, !tbaa !26
  store i32 675, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

160:                                              ; preds = %22
  %161 = getelementptr inbounds %"class.glslang::TPpToken", ptr %8, i32 0, i32 3
  %162 = load i64, ptr %161, align 8, !tbaa !26
  %163 = getelementptr inbounds %"class.glslang::TScanContext", ptr %13, i32 0, i32 8
  %164 = load ptr, ptr %163, align 8, !tbaa !9
  %165 = getelementptr inbounds %"class.glslang::TParserToken", ptr %164, i32 0, i32 0
  %166 = load ptr, ptr %165, align 8, !tbaa !17
  %167 = getelementptr inbounds %struct.anon, ptr %166, i32 0, i32 1
  store i64 %162, ptr %167, align 8, !tbaa !26
  store i32 676, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

168:                                              ; preds = %22
  %169 = getelementptr inbounds %"class.glslang::TPpToken", ptr %8, i32 0, i32 3
  %170 = load double, ptr %169, align 8, !tbaa !26
  %171 = getelementptr inbounds %"class.glslang::TScanContext", ptr %13, i32 0, i32 8
  %172 = load ptr, ptr %171, align 8, !tbaa !9
  %173 = getelementptr inbounds %"class.glslang::TParserToken", ptr %172, i32 0, i32 0
  %174 = load ptr, ptr %173, align 8, !tbaa !17
  %175 = getelementptr inbounds %struct.anon, ptr %174, i32 0, i32 1
  store double %170, ptr %175, align 8, !tbaa !26
  store i32 669, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

176:                                              ; preds = %22
  %177 = getelementptr inbounds %"class.glslang::TPpToken", ptr %8, i32 0, i32 3
  %178 = load double, ptr %177, align 8, !tbaa !26
  %179 = getelementptr inbounds %"class.glslang::TScanContext", ptr %13, i32 0, i32 8
  %180 = load ptr, ptr %179, align 8, !tbaa !9
  %181 = getelementptr inbounds %"class.glslang::TParserToken", ptr %180, i32 0, i32 0
  %182 = load ptr, ptr %181, align 8, !tbaa !17
  %183 = getelementptr inbounds %struct.anon, ptr %182, i32 0, i32 1
  store double %178, ptr %183, align 8, !tbaa !26
  store i32 672, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

184:                                              ; preds = %22
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #5
  %185 = call noundef i32 @_ZN7glslang12TScanContext18tokenizeIdentifierEv(ptr noundef nonnull align 8 dereferenceable(76) %13)
  store i32 %185, ptr %11, align 4, !tbaa !14
  %186 = getelementptr inbounds %"class.glslang::TScanContext", ptr %13, i32 0, i32 4
  store i8 0, ptr %186, align 2, !tbaa !21
  %187 = load i32, ptr %11, align 4, !tbaa !14
  store i32 %187, ptr %4, align 4
  store i32 1, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #5
  br label %202

188:                                              ; preds = %22
  store i32 0, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %202

189:                                              ; preds = %22
  call void @llvm.lifetime.start.p0(i64 2, ptr %12) #5
  %190 = load i32, ptr %9, align 4, !tbaa !14
  %191 = trunc i32 %190 to i8
  %192 = getelementptr inbounds [2 x i8], ptr %12, i64 0, i64 0
  store i8 %191, ptr %192, align 1, !tbaa !26
  %193 = getelementptr inbounds [2 x i8], ptr %12, i64 0, i64 1
  store i8 0, ptr %193, align 1, !tbaa !26
  %194 = getelementptr inbounds %"class.glslang::TScanContext", ptr %13, i32 0, i32 1
  %195 = load ptr, ptr %194, align 8, !tbaa !23
  %196 = getelementptr inbounds %"class.glslang::TScanContext", ptr %13, i32 0, i32 7
  %197 = getelementptr inbounds [2 x i8], ptr %12, i64 0, i64 0
  %198 = load ptr, ptr %195, align 8, !tbaa !24
  %199 = getelementptr inbounds ptr, ptr %198, i64 42
  %200 = load ptr, ptr %199, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %200(ptr noundef nonnull align 8 dereferenceable(1176) %195, ptr noundef nonnull align 8 dereferenceable(24) %196, ptr noundef @.str.440, ptr noundef %197, ptr noundef @.str.437)
  store i32 4, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 2, ptr %12) #5
  br label %201

201:                                              ; preds = %189, %96, %68
  store i32 0, ptr %10, align 4
  br label %202

202:                                              ; preds = %201, %188, %184, %176, %168, %160, %152, %144, %136, %128, %120, %112, %103, %95, %94, %93, %92, %91, %90, %89, %88, %87, %86, %85, %84, %83, %82, %81, %80, %79, %78, %77, %76, %75, %67, %64, %63, %62, %61, %60, %59, %58, %57, %56, %55, %54, %53, %52, %51, %50, %49, %47, %45, %43, %41, %40, %38, %35, %21
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #5
  call void @llvm.lifetime.end.p0(i64 1072, ptr %8) #5
  %203 = load i32, ptr %10, align 4
  switch i32 %203, label %209 [
    i32 0, label %204
    i32 1, label %207
  ]

204:                                              ; preds = %202
  br label %205

205:                                              ; preds = %204
  br i1 true, label %14, label %206, !llvm.loop !27

206:                                              ; preds = %205
  unreachable

207:                                              ; preds = %202
  %208 = load i32, ptr %4, align 4
  ret i32 %208

209:                                              ; preds = %202
  unreachable
}

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

declare noundef i32 @_ZN7glslang10TPpContext8tokenizeERNS_8TPpTokenE(ptr noundef nonnull align 8 dereferenceable(921), ptr noundef nonnull align 8 dereferenceable(1065)) #2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZN7glslang14NewPoolTStringB5cxx11EPKc(ptr noundef) #4

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { inlinehint 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 #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, !6, i64 48}
!10 = !{!"_ZTSN7glslang12TScanContextE", !6, i64 8, !11, i64 16, !11, i64 17, !11, i64 18, !11, i64 19, !12, i64 24, !6, i64 48, !6, i64 56, !6, i64 64, !13, i64 72}
!11 = !{!"bool", !7, i64 0}
!12 = !{!"_ZTSN7glslang10TSourceLocE", !6, i64 0, !13, i64 8, !13, i64 12, !13, i64 16}
!13 = !{!"int", !7, i64 0}
!14 = !{!13, !13, i64 0}
!15 = !{!10, !6, i64 64}
!16 = !{i64 0, i64 8, !5, i64 8, i64 4, !14, i64 12, i64 4, !14, i64 16, i64 4, !14}
!17 = !{!18, !6, i64 0}
!18 = !{!"_ZTSN7glslang12TParserTokenE", !6, i64 0}
!19 = !{!10, !11, i64 16}
!20 = !{!10, !11, i64 19}
!21 = !{!10, !11, i64 18}
!22 = !{!10, !11, i64 17}
!23 = !{!10, !6, i64 8}
!24 = !{!25, !25, i64 0}
!25 = !{!"vtable pointer", !8, i64 0}
!26 = !{!7, !7, i64 0}
!27 = distinct !{!27, !28}
!28 = !{!"llvm.loop.mustprogress"}


; 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.glslang::TPpToken" = type <{ %"struct.glslang::TSourceLoc", i8, [7 x i8], %union.anon.67, [1025 x i8], [7 x i8] }>
%"struct.glslang::TSourceLoc" = type { ptr, i32, i32, i32 }
%union.anon.67 = type { double }

@.str.435 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.436 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.437 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.438 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.439 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.440 = external hidden unnamed_addr constant [17 x i8], align 1

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN7glslang12TScanContext8tokenizeEPNS_10TPpContextERNS_12TParserTokenE(ptr noundef nonnull align 8 dereferenceable(76) %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(8) %2) local_unnamed_addr #1 align 2 {
  %4 = alloca %"class.glslang::TPpToken", align 8
  %5 = alloca [2 x i8], align 1
  %6 = getelementptr inbounds i8, ptr %0, i64 48
  store ptr %2, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1072, ptr nonnull %4) #6
  call void @_ZN7glslang8TPpTokenC2Ev(ptr noundef nonnull align 8 dereferenceable(1065) %4)
  %7 = call noundef i32 @_ZN7glslang10TPpContext8tokenizeERNS_8TPpTokenE(ptr noundef nonnull align 8 dereferenceable(921) %1, ptr noundef nonnull align 8 dereferenceable(1065) %4)
  %8 = icmp eq i32 %7, -1
  br i1 %8, label %148, label %.lr.ph

.lr.ph:                                           ; preds = %3
  %9 = getelementptr inbounds i8, ptr %4, i64 40
  %10 = getelementptr inbounds i8, ptr %0, i64 64
  %11 = getelementptr inbounds i8, ptr %0, i64 24
  %12 = getelementptr inbounds i8, ptr %0, i64 8
  %13 = getelementptr inbounds i8, ptr %5, i64 1
  br label %14

14:                                               ; preds = %.lr.ph, %145
  %15 = phi i32 [ %7, %.lr.ph ], [ %146, %145 ]
  store ptr %9, ptr %10, align 8, !tbaa !13
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull align 8 dereferenceable(24) %4, i64 24, i1 false), !tbaa.struct !14
  %16 = load ptr, ptr %6, align 8, !tbaa !5
  %17 = load ptr, ptr %16, align 8, !tbaa !17
  call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %17, ptr noundef nonnull align 8 dereferenceable(24) %4, i64 24, i1 false)
  switch i32 %15, label %139 [
    i32 59, label %18
    i32 44, label %21
    i32 58, label %.loopexit
    i32 61, label %23
    i32 40, label %25
    i32 41, label %27
    i32 46, label %29
    i32 33, label %.loopexit126
    i32 45, label %.loopexit127
    i32 126, label %.loopexit128
    i32 43, label %.loopexit129
    i32 42, label %148
    i32 47, label %31
    i32 37, label %32
    i32 60, label %33
    i32 62, label %34
    i32 124, label %35
    i32 94, label %36
    i32 38, label %37
    i32 63, label %38
    i32 91, label %39
    i32 93, label %40
    i32 123, label %41
    i32 125, label %44
    i32 92, label %45
    i32 129, label %50
    i32 130, label %51
    i32 131, label %52
    i32 132, label %53
    i32 133, label %54
    i32 134, label %55
    i32 135, label %56
    i32 136, label %57
    i32 137, label %58
    i32 138, label %59
    i32 139, label %60
    i32 140, label %61
    i32 141, label %62
    i32 142, label %63
    i32 143, label %64
    i32 144, label %65
    i32 146, label %66
    i32 145, label %67
    i32 147, label %68
    i32 148, label %69
    i32 149, label %70
    i32 150, label %71
    i32 161, label %76
    i32 152, label %82
    i32 153, label %88
    i32 158, label %94
    i32 156, label %100
    i32 157, label %106
    i32 154, label %112
    i32 155, label %118
    i32 159, label %124
    i32 160, label %130
    i32 162, label %136
  ]

18:                                               ; preds = %14
  %19 = getelementptr inbounds i8, ptr %0, i64 16
  store i8 0, ptr %19, align 8, !tbaa !19
  %20 = getelementptr inbounds i8, ptr %0, i64 19
  store i8 0, ptr %20, align 1, !tbaa !20
  br label %148

21:                                               ; preds = %14
  %22 = getelementptr inbounds i8, ptr %0, i64 16
  store i8 0, ptr %22, align 8, !tbaa !19
  br label %148

23:                                               ; preds = %14
  %24 = getelementptr inbounds i8, ptr %0, i64 16
  store i8 0, ptr %24, align 8, !tbaa !19
  br label %148

25:                                               ; preds = %14
  %26 = getelementptr inbounds i8, ptr %0, i64 16
  store i8 0, ptr %26, align 8, !tbaa !19
  br label %148

27:                                               ; preds = %14
  %28 = getelementptr inbounds i8, ptr %0, i64 16
  store i8 0, ptr %28, align 8, !tbaa !19
  br label %148

29:                                               ; preds = %14
  %30 = getelementptr inbounds i8, ptr %0, i64 18
  store i8 1, ptr %30, align 2, !tbaa !21
  br label %148

31:                                               ; preds = %14
  br label %148

32:                                               ; preds = %14
  br label %148

33:                                               ; preds = %14
  br label %148

34:                                               ; preds = %14
  br label %148

35:                                               ; preds = %14
  br label %148

36:                                               ; preds = %14
  br label %148

37:                                               ; preds = %14
  br label %148

38:                                               ; preds = %14
  br label %148

39:                                               ; preds = %14
  br label %148

40:                                               ; preds = %14
  br label %148

41:                                               ; preds = %14
  %42 = getelementptr inbounds i8, ptr %0, i64 17
  store i8 0, ptr %42, align 1, !tbaa !22
  %43 = getelementptr inbounds i8, ptr %0, i64 19
  store i8 0, ptr %43, align 1, !tbaa !20
  br label %148

44:                                               ; preds = %14
  br label %148

45:                                               ; preds = %14
  %46 = load ptr, ptr %12, align 8, !tbaa !23
  %47 = load ptr, ptr %46, align 8, !tbaa !24
  %48 = getelementptr inbounds i8, ptr %47, i64 336
  %49 = load ptr, ptr %48, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %49(ptr noundef nonnull align 8 dereferenceable(1176) %46, ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull @.str.435, ptr noundef nonnull @.str.436, ptr noundef nonnull @.str.437)
  br label %145

50:                                               ; preds = %14
  br label %148

51:                                               ; preds = %14
  br label %148

52:                                               ; preds = %14
  br label %148

53:                                               ; preds = %14
  br label %148

54:                                               ; preds = %14
  br label %148

55:                                               ; preds = %14
  br label %148

56:                                               ; preds = %14
  br label %148

57:                                               ; preds = %14
  br label %148

58:                                               ; preds = %14
  br label %148

59:                                               ; preds = %14
  br label %148

60:                                               ; preds = %14
  br label %148

61:                                               ; preds = %14
  br label %148

62:                                               ; preds = %14
  br label %148

63:                                               ; preds = %14
  br label %148

64:                                               ; preds = %14
  br label %148

65:                                               ; preds = %14
  br label %148

66:                                               ; preds = %14
  br label %148

67:                                               ; preds = %14
  br label %148

68:                                               ; preds = %14
  br label %148

69:                                               ; preds = %14
  br label %148

70:                                               ; preds = %14
  br label %148

71:                                               ; preds = %14
  %72 = load ptr, ptr %12, align 8, !tbaa !23
  %73 = load ptr, ptr %72, align 8, !tbaa !24
  %74 = getelementptr inbounds i8, ptr %73, i64 336
  %75 = load ptr, ptr %74, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %75(ptr noundef nonnull align 8 dereferenceable(1176) %72, ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull @.str.438, ptr noundef nonnull @.str.439, ptr noundef nonnull @.str.437)
  br label %145

76:                                               ; preds = %14
  %77 = load ptr, ptr %10, align 8, !tbaa !13
  %78 = call noundef ptr @_ZN7glslang14NewPoolTStringB5cxx11EPKc(ptr noundef %77)
  %79 = load ptr, ptr %6, align 8, !tbaa !5
  %80 = load ptr, ptr %79, align 8, !tbaa !17
  %81 = getelementptr inbounds i8, ptr %80, i64 24
  store ptr %78, ptr %81, align 8, !tbaa !26
  br label %148

82:                                               ; preds = %14
  %83 = getelementptr inbounds i8, ptr %4, i64 32
  %84 = load i32, ptr %83, align 8, !tbaa !26
  %85 = load ptr, ptr %6, align 8, !tbaa !5
  %86 = load ptr, ptr %85, align 8, !tbaa !17
  %87 = getelementptr inbounds i8, ptr %86, i64 24
  store i32 %84, ptr %87, align 8, !tbaa !26
  br label %148

88:                                               ; preds = %14
  %89 = getelementptr inbounds i8, ptr %4, i64 32
  %90 = load i32, ptr %89, align 8, !tbaa !26
  %91 = load ptr, ptr %6, align 8, !tbaa !5
  %92 = load ptr, ptr %91, align 8, !tbaa !17
  %93 = getelementptr inbounds i8, ptr %92, i64 24
  store i32 %90, ptr %93, align 8, !tbaa !26
  br label %148

94:                                               ; preds = %14
  %95 = getelementptr inbounds i8, ptr %4, i64 32
  %96 = load double, ptr %95, align 8, !tbaa !26
  %97 = load ptr, ptr %6, align 8, !tbaa !5
  %98 = load ptr, ptr %97, align 8, !tbaa !17
  %99 = getelementptr inbounds i8, ptr %98, i64 24
  store double %96, ptr %99, align 8, !tbaa !26
  br label %148

100:                                              ; preds = %14
  %101 = getelementptr inbounds i8, ptr %4, i64 32
  %102 = load i32, ptr %101, align 8, !tbaa !26
  %103 = load ptr, ptr %6, align 8, !tbaa !5
  %104 = load ptr, ptr %103, align 8, !tbaa !17
  %105 = getelementptr inbounds i8, ptr %104, i64 24
  store i32 %102, ptr %105, align 8, !tbaa !26
  br label %148

106:                                              ; preds = %14
  %107 = getelementptr inbounds i8, ptr %4, i64 32
  %108 = load i32, ptr %107, align 8, !tbaa !26
  %109 = load ptr, ptr %6, align 8, !tbaa !5
  %110 = load ptr, ptr %109, align 8, !tbaa !17
  %111 = getelementptr inbounds i8, ptr %110, i64 24
  store i32 %108, ptr %111, align 8, !tbaa !26
  br label %148

112:                                              ; preds = %14
  %113 = getelementptr inbounds i8, ptr %4, i64 32
  %114 = load i64, ptr %113, align 8, !tbaa !26
  %115 = load ptr, ptr %6, align 8, !tbaa !5
  %116 = load ptr, ptr %115, align 8, !tbaa !17
  %117 = getelementptr inbounds i8, ptr %116, i64 24
  store i64 %114, ptr %117, align 8, !tbaa !26
  br label %148

118:                                              ; preds = %14
  %119 = getelementptr inbounds i8, ptr %4, i64 32
  %120 = load i64, ptr %119, align 8, !tbaa !26
  %121 = load ptr, ptr %6, align 8, !tbaa !5
  %122 = load ptr, ptr %121, align 8, !tbaa !17
  %123 = getelementptr inbounds i8, ptr %122, i64 24
  store i64 %120, ptr %123, align 8, !tbaa !26
  br label %148

124:                                              ; preds = %14
  %125 = getelementptr inbounds i8, ptr %4, i64 32
  %126 = load double, ptr %125, align 8, !tbaa !26
  %127 = load ptr, ptr %6, align 8, !tbaa !5
  %128 = load ptr, ptr %127, align 8, !tbaa !17
  %129 = getelementptr inbounds i8, ptr %128, i64 24
  store double %126, ptr %129, align 8, !tbaa !26
  br label %148

130:                                              ; preds = %14
  %131 = getelementptr inbounds i8, ptr %4, i64 32
  %132 = load double, ptr %131, align 8, !tbaa !26
  %133 = load ptr, ptr %6, align 8, !tbaa !5
  %134 = load ptr, ptr %133, align 8, !tbaa !17
  %135 = getelementptr inbounds i8, ptr %134, i64 24
  store double %132, ptr %135, align 8, !tbaa !26
  br label %148

136:                                              ; preds = %14
  %137 = call noundef i32 @_ZN7glslang12TScanContext18tokenizeIdentifierEv(ptr noundef nonnull align 8 dereferenceable(76) %0)
  %138 = getelementptr inbounds i8, ptr %0, i64 18
  store i8 0, ptr %138, align 2, !tbaa !21
  br label %148

139:                                              ; preds = %14
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %5) #6
  %140 = trunc i32 %15 to i8
  store i8 %140, ptr %5, align 1, !tbaa !26
  store i8 0, ptr %13, align 1, !tbaa !26
  %141 = load ptr, ptr %12, align 8, !tbaa !23
  %142 = load ptr, ptr %141, align 8, !tbaa !24
  %143 = getelementptr inbounds i8, ptr %142, i64 336
  %144 = load ptr, ptr %143, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %144(ptr noundef nonnull align 8 dereferenceable(1176) %141, ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull @.str.440, ptr noundef nonnull %5, ptr noundef nonnull @.str.437)
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %5) #6
  br label %145

145:                                              ; preds = %45, %71, %139
  call void @llvm.lifetime.end.p0(i64 1072, ptr nonnull %4) #6
  store ptr %2, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1072, ptr nonnull %4) #6
  call void @_ZN7glslang8TPpTokenC2Ev(ptr noundef nonnull align 8 dereferenceable(1065) %4)
  %146 = call noundef i32 @_ZN7glslang10TPpContext8tokenizeERNS_8TPpTokenE(ptr noundef nonnull align 8 dereferenceable(921) %1, ptr noundef nonnull align 8 dereferenceable(1065) %4)
  %147 = icmp eq i32 %146, -1
  br i1 %147, label %148, label %14

.loopexit:                                        ; preds = %14
  br label %148

.loopexit126:                                     ; preds = %14
  br label %148

.loopexit127:                                     ; preds = %14
  br label %148

.loopexit128:                                     ; preds = %14
  br label %148

.loopexit129:                                     ; preds = %14
  br label %148

148:                                              ; preds = %145, %14, %.loopexit129, %.loopexit128, %.loopexit127, %.loopexit126, %3, %.loopexit, %136, %130, %124, %118, %112, %106, %100, %94, %88, %82, %76, %70, %69, %68, %67, %66, %65, %64, %63, %62, %61, %60, %59, %58, %57, %56, %55, %54, %53, %52, %51, %50, %44, %41, %40, %39, %38, %37, %36, %35, %34, %33, %32, %31, %29, %27, %25, %23, %21, %18
  %.1.ph = phi i32 [ 614, %18 ], [ 611, %21 ], [ 613, %23 ], [ 604, %25 ], [ 605, %27 ], [ 610, %29 ], [ 620, %31 ], [ 621, %32 ], [ 622, %33 ], [ 623, %34 ], [ 624, %35 ], [ 625, %36 ], [ 626, %37 ], [ 627, %38 ], [ 606, %39 ], [ 607, %40 ], [ 608, %41 ], [ 609, %44 ], [ 595, %50 ], [ 602, %51 ], [ 593, %52 ], [ 594, %53 ], [ 596, %54 ], [ 583, %55 ], [ 582, %56 ], [ 598, %57 ], [ 597, %58 ], [ 599, %59 ], [ 601, %60 ], [ 600, %61 ], [ 590, %62 ], [ 591, %63 ], [ 592, %64 ], [ 588, %65 ], [ 587, %66 ], [ 589, %67 ], [ 586, %68 ], [ 585, %69 ], [ 584, %70 ], [ 603, %76 ], [ 637, %82 ], [ 638, %88 ], [ 636, %94 ], [ 670, %100 ], [ 671, %106 ], [ 675, %112 ], [ 676, %118 ], [ 669, %124 ], [ 672, %130 ], [ %137, %136 ], [ 0, %3 ], [ 612, %.loopexit ], [ 615, %.loopexit126 ], [ 616, %.loopexit127 ], [ 617, %.loopexit128 ], [ 619, %14 ], [ 0, %145 ], [ 618, %.loopexit129 ]
  call void @llvm.lifetime.end.p0(i64 1072, ptr nonnull %4) #6
  ret i32 %.1.ph
}

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

declare noundef i32 @_ZN7glslang10TPpContext8tokenizeERNS_8TPpTokenE(ptr noundef nonnull align 8 dereferenceable(921), ptr noundef nonnull align 8 dereferenceable(1065)) local_unnamed_addr #2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZN7glslang14NewPoolTStringB5cxx11EPKc(ptr noundef) local_unnamed_addr #4

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

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { inlinehint 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 #5 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
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, !7, i64 48}
!6 = !{!"_ZTSN7glslang12TScanContextE", !7, i64 8, !10, i64 16, !10, i64 17, !10, i64 18, !10, i64 19, !11, i64 24, !7, i64 48, !7, i64 56, !7, i64 64, !12, i64 72}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"bool", !8, i64 0}
!11 = !{!"_ZTSN7glslang10TSourceLocE", !7, i64 0, !12, i64 8, !12, i64 12, !12, i64 16}
!12 = !{!"int", !8, i64 0}
!13 = !{!6, !7, i64 64}
!14 = !{i64 0, i64 8, !15, i64 8, i64 4, !16, i64 12, i64 4, !16, i64 16, i64 4, !16}
!15 = !{!7, !7, i64 0}
!16 = !{!12, !12, i64 0}
!17 = !{!18, !7, i64 0}
!18 = !{!"_ZTSN7glslang12TParserTokenE", !7, i64 0}
!19 = !{!6, !10, i64 16}
!20 = !{!6, !10, i64 19}
!21 = !{!6, !10, i64 18}
!22 = !{!6, !10, i64 17}
!23 = !{!6, !7, i64 8}
!24 = !{!25, !25, i64 0}
!25 = !{!"vtable pointer", !9, i64 0}
!26 = !{!8, !8, i64 0}


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