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

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

@.str.4 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [5 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 zeroext i1 @_ZN7glslang17TParseContextBase16lValueErrorCheckERKNS_10TSourceLocEPKcPNS_12TIntermTypedE(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef %2, ptr noundef %3) unnamed_addr #1 align 2 {
  %5 = alloca i1, align 1
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca i32, align 4
  %15 = alloca ptr, align 8
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store ptr %2, ptr %8, align 8, !tbaa !5
  store ptr %3, ptr %9, align 8, !tbaa !5
  %16 = load ptr, ptr %6, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #5
  %17 = load ptr, ptr %9, align 8, !tbaa !5
  %18 = load ptr, ptr %17, align 8, !tbaa !9
  %19 = getelementptr inbounds ptr, ptr %18, i64 8
  %20 = load ptr, ptr %19, align 8
  %21 = call noundef ptr %20(ptr noundef nonnull align 8 dereferenceable(32) %17)
  store ptr %21, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #5
  store ptr null, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #5
  %22 = load ptr, ptr %9, align 8, !tbaa !5
  %23 = load ptr, ptr %22, align 8, !tbaa !9
  %24 = getelementptr inbounds ptr, ptr %23, i64 12
  %25 = load ptr, ptr %24, align 8
  %26 = call noundef ptr %25(ptr noundef nonnull align 8 dereferenceable(32) %22)
  store ptr %26, ptr %12, align 8, !tbaa !5
  %27 = load ptr, ptr %12, align 8, !tbaa !5
  %28 = icmp ne ptr %27, null
  br i1 %28, label %29, label %36

29:                                               ; preds = %4
  %30 = load ptr, ptr %12, align 8, !tbaa !5
  %31 = load ptr, ptr %30, align 8, !tbaa !9
  %32 = getelementptr inbounds ptr, ptr %31, i64 50
  %33 = load ptr, ptr %32, align 8
  %34 = call noundef nonnull align 8 dereferenceable(40) ptr %33(ptr noundef nonnull align 8 dereferenceable(256) %30)
  %35 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %34) #5
  store ptr %35, ptr %11, align 8, !tbaa !5
  br label %36

36:                                               ; preds = %29, %4
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #5
  store ptr null, ptr %13, align 8, !tbaa !5
  %37 = load ptr, ptr %9, align 8, !tbaa !5
  %38 = load ptr, ptr %37, align 8, !tbaa !9
  %39 = getelementptr inbounds ptr, ptr %38, i64 33
  %40 = load ptr, ptr %39, align 8
  %41 = call noundef nonnull align 8 dereferenceable(72) ptr %40(ptr noundef nonnull align 8 dereferenceable(176) %37)
  %42 = getelementptr inbounds %"class.glslang::TQualifier", ptr %41, i32 0, i32 1
  %43 = load i64, ptr %42, align 8
  %44 = and i64 %43, 63
  %45 = trunc i64 %44 to i32
  switch i32 %45, label %72 [
    i32 2, label %46
    i32 17, label %47
    i32 5, label %48
    i32 6, label %49
    i32 11, label %66
  ]

46:                                               ; preds = %36
  store ptr @.str.4, ptr %13, align 8, !tbaa !5
  br label %85

47:                                               ; preds = %36
  store ptr @.str.4, ptr %13, align 8, !tbaa !5
  br label %85

48:                                               ; preds = %36
  store ptr @.str.5, ptr %13, align 8, !tbaa !5
  br label %85

49:                                               ; preds = %36
  %50 = load ptr, ptr %9, align 8, !tbaa !5
  %51 = load ptr, ptr %50, align 8, !tbaa !9
  %52 = getelementptr inbounds ptr, ptr %51, i64 33
  %53 = load ptr, ptr %52, align 8
  %54 = call noundef nonnull align 8 dereferenceable(72) ptr %53(ptr noundef nonnull align 8 dereferenceable(176) %50)
  %55 = call noundef zeroext i1 @_ZNK7glslang10TQualifier10isReadOnlyEv(ptr noundef nonnull align 8 dereferenceable(72) %54)
  br i1 %55, label %56, label %57

56:                                               ; preds = %49
  store ptr @.str.6, ptr %13, align 8, !tbaa !5
  br label %57

57:                                               ; preds = %56, %49
  %58 = load ptr, ptr %9, align 8, !tbaa !5
  %59 = load ptr, ptr %58, align 8, !tbaa !9
  %60 = getelementptr inbounds ptr, ptr %59, i64 33
  %61 = load ptr, ptr %60, align 8
  %62 = call noundef nonnull align 8 dereferenceable(72) ptr %61(ptr noundef nonnull align 8 dereferenceable(176) %58)
  %63 = call noundef zeroext i1 @_ZNK7glslang10TQualifier14isShaderRecordEv(ptr noundef nonnull align 8 dereferenceable(72) %62)
  br i1 %63, label %64, label %65

64:                                               ; preds = %57
  store ptr @.str.7, ptr %13, align 8, !tbaa !5
  br label %65

65:                                               ; preds = %64, %57
  br label %85

66:                                               ; preds = %36
  %67 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %16, i32 0, i32 5
  %68 = load i32, ptr %67, align 4, !tbaa !11
  %69 = icmp ne i32 %68, 7
  br i1 %69, label %70, label %71

70:                                               ; preds = %66
  store ptr @.str.8, ptr %13, align 8, !tbaa !5
  br label %71

71:                                               ; preds = %70, %66
  br label %85

72:                                               ; preds = %36
  %73 = load ptr, ptr %9, align 8, !tbaa !5
  %74 = load ptr, ptr %73, align 8, !tbaa !9
  %75 = getelementptr inbounds ptr, ptr %74, i64 32
  %76 = load ptr, ptr %75, align 8
  %77 = call noundef i32 %76(ptr noundef nonnull align 8 dereferenceable(176) %73)
  switch i32 %77, label %83 [
    i32 14, label %78
    i32 0, label %79
    i32 13, label %80
    i32 17, label %81
    i32 19, label %82
  ]

78:                                               ; preds = %72
  store ptr @.str.9, ptr %13, align 8, !tbaa !5
  br label %84

79:                                               ; preds = %72
  store ptr @.str.10, ptr %13, align 8, !tbaa !5
  br label %84

80:                                               ; preds = %72
  store ptr @.str.11, ptr %13, align 8, !tbaa !5
  br label %84

81:                                               ; preds = %72
  store ptr @.str.12, ptr %13, align 8, !tbaa !5
  br label %84

82:                                               ; preds = %72
  store ptr @.str.13, ptr %13, align 8, !tbaa !5
  br label %84

83:                                               ; preds = %72
  br label %84

84:                                               ; preds = %83, %82, %81, %80, %79, %78
  br label %85

85:                                               ; preds = %84, %71, %65, %48, %47, %46
  %86 = load ptr, ptr %13, align 8, !tbaa !5
  %87 = icmp eq ptr %86, null
  br i1 %87, label %88, label %100

88:                                               ; preds = %85
  %89 = load ptr, ptr %10, align 8, !tbaa !5
  %90 = icmp eq ptr %89, null
  br i1 %90, label %91, label %100

91:                                               ; preds = %88
  %92 = load ptr, ptr %12, align 8, !tbaa !5
  %93 = icmp eq ptr %92, null
  br i1 %93, label %94, label %100

94:                                               ; preds = %91
  %95 = load ptr, ptr %7, align 8, !tbaa !5
  %96 = load ptr, ptr %8, align 8, !tbaa !5
  %97 = load ptr, ptr %16, align 8, !tbaa !9
  %98 = getelementptr inbounds ptr, ptr %97, i64 42
  %99 = load ptr, ptr %98, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %99(ptr noundef nonnull align 8 dereferenceable(1176) %16, ptr noundef nonnull align 8 dereferenceable(24) %95, ptr noundef @.str.14, ptr noundef %96, ptr noundef @.str.15, ptr noundef @.str.15)
  store i1 true, ptr %5, align 1
  store i32 1, ptr %14, align 4
  br label %208

100:                                              ; preds = %91, %88, %85
  %101 = load ptr, ptr %13, align 8, !tbaa !5
  %102 = icmp eq ptr %101, null
  br i1 %102, label %103, label %129

103:                                              ; preds = %100
  %104 = load ptr, ptr %10, align 8, !tbaa !5
  %105 = icmp ne ptr %104, null
  br i1 %105, label %106, label %128

106:                                              ; preds = %103
  %107 = load ptr, ptr %10, align 8, !tbaa !5
  %108 = call noundef i32 @_ZNK7glslang15TIntermOperator5getOpEv(ptr noundef nonnull align 8 dereferenceable(184) %107)
  switch i32 %108, label %121 [
    i32 180, label %109
    i32 181, label %109
    i32 182, label %109
    i32 183, label %109
    i32 787, label %109
  ]

109:                                              ; preds = %106, %106, %106, %106, %106
  %110 = load ptr, ptr %7, align 8, !tbaa !5
  %111 = load ptr, ptr %8, align 8, !tbaa !5
  %112 = load ptr, ptr %10, align 8, !tbaa !5
  %113 = load ptr, ptr %112, align 8, !tbaa !9
  %114 = getelementptr inbounds ptr, ptr %113, i64 50
  %115 = load ptr, ptr %114, align 8
  %116 = call noundef ptr %115(ptr noundef nonnull align 8 dereferenceable(200) %112)
  %117 = load ptr, ptr %16, align 8, !tbaa !9
  %118 = getelementptr inbounds ptr, ptr %117, i64 63
  %119 = load ptr, ptr %118, align 8
  %120 = call noundef zeroext i1 %119(ptr noundef nonnull align 8 dereferenceable(1176) %16, ptr noundef nonnull align 8 dereferenceable(24) %110, ptr noundef %111, ptr noundef %116)
  store i1 %120, ptr %5, align 1
  store i32 1, ptr %14, align 4
  br label %208

121:                                              ; preds = %106
  br label %122

122:                                              ; preds = %121
  %123 = load ptr, ptr %7, align 8, !tbaa !5
  %124 = load ptr, ptr %8, align 8, !tbaa !5
  %125 = load ptr, ptr %16, align 8, !tbaa !9
  %126 = getelementptr inbounds ptr, ptr %125, i64 42
  %127 = load ptr, ptr %126, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %127(ptr noundef nonnull align 8 dereferenceable(1176) %16, ptr noundef nonnull align 8 dereferenceable(24) %123, ptr noundef @.str.14, ptr noundef %124, ptr noundef @.str.15, ptr noundef @.str.15)
  store i1 true, ptr %5, align 1
  store i32 1, ptr %14, align 4
  br label %208

128:                                              ; preds = %103
  store i1 false, ptr %5, align 1
  store i32 1, ptr %14, align 4
  br label %208

129:                                              ; preds = %100
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #5
  %130 = load ptr, ptr %9, align 8, !tbaa !5
  %131 = call noundef ptr @_ZN7glslang13TIntermediate14findLValueBaseEPKNS_12TIntermTypedEbb(ptr noundef %130, i1 noundef zeroext true, i1 noundef zeroext false)
  store ptr %131, ptr %15, align 8, !tbaa !5
  %132 = load ptr, ptr %12, align 8, !tbaa !5
  %133 = icmp ne ptr %132, null
  br i1 %133, label %134, label %142

134:                                              ; preds = %129
  %135 = load ptr, ptr %7, align 8, !tbaa !5
  %136 = load ptr, ptr %8, align 8, !tbaa !5
  %137 = load ptr, ptr %11, align 8, !tbaa !5
  %138 = load ptr, ptr %13, align 8, !tbaa !5
  %139 = load ptr, ptr %16, align 8, !tbaa !9
  %140 = getelementptr inbounds ptr, ptr %139, i64 42
  %141 = load ptr, ptr %140, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %141(ptr noundef nonnull align 8 dereferenceable(1176) %16, ptr noundef nonnull align 8 dereferenceable(24) %135, ptr noundef @.str.14, ptr noundef %136, ptr noundef @.str.16, ptr noundef %137, ptr noundef %138)
  br label %207

142:                                              ; preds = %129
  %143 = load ptr, ptr %10, align 8, !tbaa !5
  %144 = icmp ne ptr %143, null
  br i1 %144, label %145, label %199

145:                                              ; preds = %142
  %146 = load ptr, ptr %10, align 8, !tbaa !5
  %147 = load ptr, ptr %146, align 8, !tbaa !9
  %148 = getelementptr inbounds ptr, ptr %147, i64 4
  %149 = load ptr, ptr %148, align 8
  %150 = call noundef ptr %149(ptr noundef nonnull align 8 dereferenceable(184) %146)
  %151 = call noundef i32 @_ZNK7glslang15TIntermOperator5getOpEv(ptr noundef nonnull align 8 dereferenceable(184) %150)
  %152 = icmp eq i32 %151, 182
  br i1 %152, label %153, label %199

153:                                              ; preds = %145
  %154 = load ptr, ptr %15, align 8, !tbaa !5
  %155 = load ptr, ptr %154, align 8, !tbaa !9
  %156 = getelementptr inbounds ptr, ptr %155, i64 24
  %157 = load ptr, ptr %156, align 8
  %158 = call noundef ptr %157(ptr noundef nonnull align 8 dereferenceable(32) %154)
  %159 = load ptr, ptr %158, align 8, !tbaa !9
  %160 = getelementptr inbounds ptr, ptr %159, i64 50
  %161 = load ptr, ptr %160, align 8
  %162 = call noundef nonnull align 8 dereferenceable(40) ptr %161(ptr noundef nonnull align 8 dereferenceable(256) %158)
  %163 = call noundef zeroext i1 @_ZN7glslang11IsAnonymousERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEE(ptr noundef nonnull align 8 dereferenceable(40) %162)
  br i1 %163, label %164, label %181

164:                                              ; preds = %153
  %165 = load ptr, ptr %7, align 8, !tbaa !5
  %166 = load ptr, ptr %8, align 8, !tbaa !5
  %167 = load ptr, ptr %15, align 8, !tbaa !5
  %168 = load ptr, ptr %167, align 8, !tbaa !9
  %169 = getelementptr inbounds ptr, ptr %168, i64 24
  %170 = load ptr, ptr %169, align 8
  %171 = call noundef ptr %170(ptr noundef nonnull align 8 dereferenceable(32) %167)
  %172 = load ptr, ptr %171, align 8, !tbaa !9
  %173 = getelementptr inbounds ptr, ptr %172, i64 51
  %174 = load ptr, ptr %173, align 8
  %175 = call noundef nonnull align 8 dereferenceable(40) ptr %174(ptr noundef nonnull align 8 dereferenceable(256) %171)
  %176 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %175) #5
  %177 = load ptr, ptr %13, align 8, !tbaa !5
  %178 = load ptr, ptr %16, align 8, !tbaa !9
  %179 = getelementptr inbounds ptr, ptr %178, i64 42
  %180 = load ptr, ptr %179, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %180(ptr noundef nonnull align 8 dereferenceable(1176) %16, ptr noundef nonnull align 8 dereferenceable(24) %165, ptr noundef @.str.14, ptr noundef %166, ptr noundef @.str.16, ptr noundef %176, ptr noundef %177)
  br label %198

181:                                              ; preds = %153
  %182 = load ptr, ptr %7, align 8, !tbaa !5
  %183 = load ptr, ptr %8, align 8, !tbaa !5
  %184 = load ptr, ptr %15, align 8, !tbaa !5
  %185 = load ptr, ptr %184, align 8, !tbaa !9
  %186 = getelementptr inbounds ptr, ptr %185, i64 24
  %187 = load ptr, ptr %186, align 8
  %188 = call noundef ptr %187(ptr noundef nonnull align 8 dereferenceable(32) %184)
  %189 = load ptr, ptr %188, align 8, !tbaa !9
  %190 = getelementptr inbounds ptr, ptr %189, i64 50
  %191 = load ptr, ptr %190, align 8
  %192 = call noundef nonnull align 8 dereferenceable(40) ptr %191(ptr noundef nonnull align 8 dereferenceable(256) %188)
  %193 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %192) #5
  %194 = load ptr, ptr %13, align 8, !tbaa !5
  %195 = load ptr, ptr %16, align 8, !tbaa !9
  %196 = getelementptr inbounds ptr, ptr %195, i64 42
  %197 = load ptr, ptr %196, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %197(ptr noundef nonnull align 8 dereferenceable(1176) %16, ptr noundef nonnull align 8 dereferenceable(24) %182, ptr noundef @.str.14, ptr noundef %183, ptr noundef @.str.16, ptr noundef %193, ptr noundef %194)
  br label %198

198:                                              ; preds = %181, %164
  br label %206

199:                                              ; preds = %145, %142
  %200 = load ptr, ptr %7, align 8, !tbaa !5
  %201 = load ptr, ptr %8, align 8, !tbaa !5
  %202 = load ptr, ptr %13, align 8, !tbaa !5
  %203 = load ptr, ptr %16, align 8, !tbaa !9
  %204 = getelementptr inbounds ptr, ptr %203, i64 42
  %205 = load ptr, ptr %204, align 8
  call void (ptr, ptr, ptr, ptr, ptr, ...) %205(ptr noundef nonnull align 8 dereferenceable(1176) %16, ptr noundef nonnull align 8 dereferenceable(24) %200, ptr noundef @.str.14, ptr noundef %201, ptr noundef @.str.17, ptr noundef %202)
  br label %206

206:                                              ; preds = %199, %198
  br label %207

207:                                              ; preds = %206, %134
  store i1 true, ptr %5, align 1
  store i32 1, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #5
  br label %208

208:                                              ; preds = %207, %128, %122, %109, %94
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #5
  %209 = load i1, ptr %5, align 1
  ret i1 %209
}

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

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

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

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

declare noundef ptr @_ZN7glslang13TIntermediate14findLValueBaseEPKNS_12TIntermTypedEbb(ptr noundef, i1 noundef zeroext, i1 noundef zeroext) #3

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN7glslang11IsAnonymousERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEE(ptr noundef nonnull align 8 dereferenceable(40)) #4

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 = { 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 = { "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 = { 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, !10, i64 0}
!10 = !{!"vtable pointer", !8, i64 0}
!11 = !{!12, !16, i64 28}
!12 = !{!"_ZTSN7glslang14TParseVersionsE", !13, i64 8, !14, i64 12, !6, i64 16, !15, i64 24, !16, i64 28, !17, i64 32, !6, i64 56, !18, i64 64, !29, i64 120, !34, i64 176, !15, i64 180, !6, i64 184}
!13 = !{!"bool", !7, i64 0}
!14 = !{!"_ZTS8EProfile", !7, i64 0}
!15 = !{!"int", !7, i64 0}
!16 = !{!"_ZTS11EShLanguage", !7, i64 0}
!17 = !{!"_ZTSN7glslang10SpvVersionE", !15, i64 0, !15, i64 4, !15, i64 8, !15, i64 12, !13, i64 16}
!18 = !{!"_ZTSN7glslang4TMapINSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEENS_18TExtensionBehaviorESt4lessIS7_EEE", !19, i64 0}
!19 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEENS4_18TExtensionBehaviorESt4lessIS7_ENS5_ISt4pairIKS7_S8_EEEE", !20, i64 0}
!20 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_NS4_18TExtensionBehaviorEESt10_Select1stISB_ESt4lessIS7_ENS5_ISB_EEE", !21, i64 0}
!21 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_NS4_18TExtensionBehaviorEESt10_Select1stISB_ESt4lessIS7_ENS5_ISB_EEE13_Rb_tree_implISF_Lb1EEE", !22, i64 0, !23, i64 8, !25, i64 16}
!22 = !{!"_ZTSN7glslang14pool_allocatorISt13_Rb_tree_nodeISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_IcEEEENS_18TExtensionBehaviorEEEEE", !6, i64 0}
!23 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEEE", !24, i64 0}
!24 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEE"}
!25 = !{!"_ZTSSt15_Rb_tree_header", !26, i64 0, !28, i64 32}
!26 = !{!"_ZTSSt18_Rb_tree_node_base", !27, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!27 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!28 = !{!"long", !7, i64 0}
!29 = !{!"_ZTSN7glslang4TMapINSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEEjSt4lessIS7_EEE", !30, i64 0}
!30 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEjSt4lessIS7_ENS5_ISt4pairIKS7_jEEEE", !31, i64 0}
!31 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_jESt10_Select1stISA_ESt4lessIS7_ENS5_ISA_EEE", !32, i64 0}
!32 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEESt4pairIKS7_jESt10_Select1stISA_ESt4lessIS7_ENS5_ISA_EEE13_Rb_tree_implISE_Lb1EEE", !33, i64 0, !23, i64 8, !25, i64 16}
!33 = !{!"_ZTSN7glslang14pool_allocatorISt13_Rb_tree_nodeISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_IcEEEEjEEEE", !6, i64 0}
!34 = !{!"_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"

@.str.4 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [5 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN7glslang17TParseContextBase16lValueErrorCheckERKNS_10TSourceLocEPKcPNS_12TIntermTypedE(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef %2, ptr noundef %3) unnamed_addr #0 align 2 {
  %5 = load ptr, ptr %3, align 8, !tbaa !5
  %6 = getelementptr inbounds i8, ptr %5, i64 64
  %7 = load ptr, ptr %6, align 8
  %8 = tail call noundef ptr %7(ptr noundef nonnull align 8 dereferenceable(32) %3)
  %9 = load ptr, ptr %3, align 8, !tbaa !5
  %10 = getelementptr inbounds i8, ptr %9, i64 96
  %11 = load ptr, ptr %10, align 8
  %12 = tail call noundef ptr %11(ptr noundef nonnull align 8 dereferenceable(32) %3)
  %.not = icmp eq ptr %12, null
  br i1 %.not, label %19, label %13

13:                                               ; preds = %4
  %14 = load ptr, ptr %12, align 8, !tbaa !5
  %15 = getelementptr inbounds i8, ptr %14, i64 400
  %16 = load ptr, ptr %15, align 8
  %17 = tail call noundef nonnull align 8 dereferenceable(40) ptr %16(ptr noundef nonnull align 8 dereferenceable(256) %12)
  %18 = tail call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %17) #4
  br label %19

19:                                               ; preds = %13, %4
  %.047 = phi ptr [ %18, %13 ], [ null, %4 ]
  %20 = load ptr, ptr %3, align 8, !tbaa !5
  %21 = getelementptr inbounds i8, ptr %20, i64 264
  %22 = load ptr, ptr %21, align 8
  %23 = tail call noundef nonnull align 8 dereferenceable(72) ptr %22(ptr noundef nonnull align 8 dereferenceable(176) %3)
  %24 = getelementptr inbounds i8, ptr %23, i64 8
  %25 = load i64, ptr %24, align 8
  %26 = trunc i64 %25 to i32
  %27 = and i32 %26, 63
  switch i32 %27, label %43 [
    i32 2, label %.thread59
    i32 17, label %.thread59
    i32 5, label %28
    i32 6, label %29
    i32 11, label %40
  ]

28:                                               ; preds = %19
  br label %.thread59

29:                                               ; preds = %19
  %30 = load ptr, ptr %3, align 8, !tbaa !5
  %31 = getelementptr inbounds i8, ptr %30, i64 264
  %32 = load ptr, ptr %31, align 8
  %33 = tail call noundef nonnull align 8 dereferenceable(72) ptr %32(ptr noundef nonnull align 8 dereferenceable(176) %3)
  %34 = tail call noundef zeroext i1 @_ZNK7glslang10TQualifier10isReadOnlyEv(ptr noundef nonnull align 8 dereferenceable(72) %33)
  %spec.select = select i1 %34, ptr @.str.6, ptr null
  %35 = load ptr, ptr %3, align 8, !tbaa !5
  %36 = getelementptr inbounds i8, ptr %35, i64 264
  %37 = load ptr, ptr %36, align 8
  %38 = tail call noundef nonnull align 8 dereferenceable(72) ptr %37(ptr noundef nonnull align 8 dereferenceable(176) %3)
  %39 = tail call noundef zeroext i1 @_ZNK7glslang10TQualifier14isShaderRecordEv(ptr noundef nonnull align 8 dereferenceable(72) %38)
  %spec.select55 = select i1 %39, ptr @.str.7, ptr %spec.select
  br label %53

40:                                               ; preds = %19
  %41 = getelementptr inbounds i8, ptr %0, i64 28
  %42 = load i32, ptr %41, align 4, !tbaa !8
  %.not51 = icmp eq i32 %42, 7
  %spec.select54 = select i1 %.not51, ptr null, ptr @.str.8
  br label %53

43:                                               ; preds = %19
  %44 = load ptr, ptr %3, align 8, !tbaa !5
  %45 = getelementptr inbounds i8, ptr %44, i64 256
  %46 = load ptr, ptr %45, align 8
  %47 = tail call noundef i32 %46(ptr noundef nonnull align 8 dereferenceable(176) %3)
  switch i32 %47, label %53 [
    i32 14, label %.thread59
    i32 0, label %48
    i32 13, label %49
    i32 17, label %50
    i32 19, label %51
  ]

48:                                               ; preds = %43
  br label %.thread59

49:                                               ; preds = %43
  br label %.thread59

50:                                               ; preds = %43
  br label %.thread59

51:                                               ; preds = %43
  br label %.thread59

.thread59:                                        ; preds = %43, %19, %19, %28, %48, %49, %50, %51
  %.1.ph = phi ptr [ @.str.4, %19 ], [ @.str.4, %19 ], [ @.str.5, %28 ], [ @.str.10, %48 ], [ @.str.11, %49 ], [ @.str.12, %50 ], [ @.str.13, %51 ], [ @.str.9, %43 ]
  %52 = icmp eq ptr %8, null
  br label %78

53:                                               ; preds = %29, %40, %43
  %.1 = phi ptr [ null, %43 ], [ %spec.select54, %40 ], [ %spec.select55, %29 ]
  %54 = icmp eq ptr %.1, null
  %55 = icmp eq ptr %8, null
  %56 = and i1 %55, %.not
  %or.cond3 = and i1 %56, %54
  br i1 %or.cond3, label %57, label %61

57:                                               ; preds = %53
  %58 = load ptr, ptr %0, align 8, !tbaa !5
  %59 = getelementptr inbounds i8, ptr %58, i64 336
  %60 = load ptr, ptr %59, align 8
  tail call void (ptr, ptr, ptr, ptr, ptr, ...) %60(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.14, ptr noundef %2, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.15)
  br label %128

61:                                               ; preds = %53
  br i1 %54, label %62, label %78

62:                                               ; preds = %61
  br i1 %55, label %128, label %63

63:                                               ; preds = %62
  %64 = tail call noundef i32 @_ZNK7glslang15TIntermOperator5getOpEv(ptr noundef nonnull align 8 dereferenceable(184) %8)
  switch i32 %64, label %74 [
    i32 180, label %65
    i32 181, label %65
    i32 182, label %65
    i32 183, label %65
    i32 787, label %65
  ]

65:                                               ; preds = %63, %63, %63, %63, %63
  %66 = load ptr, ptr %8, align 8, !tbaa !5
  %67 = getelementptr inbounds i8, ptr %66, i64 400
  %68 = load ptr, ptr %67, align 8
  %69 = tail call noundef ptr %68(ptr noundef nonnull align 8 dereferenceable(200) %8)
  %70 = load ptr, ptr %0, align 8, !tbaa !5
  %71 = getelementptr inbounds i8, ptr %70, i64 504
  %72 = load ptr, ptr %71, align 8
  %73 = tail call noundef zeroext i1 %72(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef %2, ptr noundef %69)
  br label %128

74:                                               ; preds = %63
  %75 = load ptr, ptr %0, align 8, !tbaa !5
  %76 = getelementptr inbounds i8, ptr %75, i64 336
  %77 = load ptr, ptr %76, align 8
  tail call void (ptr, ptr, ptr, ptr, ptr, ...) %77(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.14, ptr noundef %2, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.15)
  br label %128

78:                                               ; preds = %.thread59, %61
  %.15861 = phi ptr [ %.1.ph, %.thread59 ], [ %.1, %61 ]
  %79 = phi i1 [ %52, %.thread59 ], [ %55, %61 ]
  %80 = tail call noundef ptr @_ZN7glslang13TIntermediate14findLValueBaseEPKNS_12TIntermTypedEbb(ptr noundef nonnull %3, i1 noundef zeroext true, i1 noundef zeroext false)
  br i1 %.not, label %85, label %81

81:                                               ; preds = %78
  %82 = load ptr, ptr %0, align 8, !tbaa !5
  %83 = getelementptr inbounds i8, ptr %82, i64 336
  %84 = load ptr, ptr %83, align 8
  tail call void (ptr, ptr, ptr, ptr, ptr, ...) %84(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.14, ptr noundef %2, ptr noundef nonnull @.str.16, ptr noundef %.047, ptr noundef nonnull %.15861)
  br label %128

85:                                               ; preds = %78
  br i1 %79, label %124, label %86

86:                                               ; preds = %85
  %87 = load ptr, ptr %8, align 8, !tbaa !5
  %88 = getelementptr inbounds i8, ptr %87, i64 32
  %89 = load ptr, ptr %88, align 8
  %90 = tail call noundef ptr %89(ptr noundef nonnull align 8 dereferenceable(184) %8)
  %91 = tail call noundef i32 @_ZNK7glslang15TIntermOperator5getOpEv(ptr noundef nonnull align 8 dereferenceable(184) %90)
  %92 = icmp eq i32 %91, 182
  br i1 %92, label %93, label %124

93:                                               ; preds = %86
  %94 = load ptr, ptr %80, align 8, !tbaa !5
  %95 = getelementptr inbounds i8, ptr %94, i64 192
  %96 = load ptr, ptr %95, align 8
  %97 = tail call noundef ptr %96(ptr noundef nonnull align 8 dereferenceable(32) %80)
  %98 = load ptr, ptr %97, align 8, !tbaa !5
  %99 = getelementptr inbounds i8, ptr %98, i64 400
  %100 = load ptr, ptr %99, align 8
  %101 = tail call noundef nonnull align 8 dereferenceable(40) ptr %100(ptr noundef nonnull align 8 dereferenceable(256) %97)
  %102 = tail call noundef zeroext i1 @_ZN7glslang11IsAnonymousERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEE(ptr noundef nonnull align 8 dereferenceable(40) %101)
  %103 = load ptr, ptr %80, align 8, !tbaa !5
  %104 = getelementptr inbounds i8, ptr %103, i64 192
  %105 = load ptr, ptr %104, align 8
  %106 = tail call noundef ptr %105(ptr noundef nonnull align 8 dereferenceable(32) %80)
  %107 = load ptr, ptr %106, align 8, !tbaa !5
  br i1 %102, label %108, label %116

108:                                              ; preds = %93
  %109 = getelementptr inbounds i8, ptr %107, i64 408
  %110 = load ptr, ptr %109, align 8
  %111 = tail call noundef nonnull align 8 dereferenceable(40) ptr %110(ptr noundef nonnull align 8 dereferenceable(256) %106)
  %112 = tail call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %111) #4
  %113 = load ptr, ptr %0, align 8, !tbaa !5
  %114 = getelementptr inbounds i8, ptr %113, i64 336
  %115 = load ptr, ptr %114, align 8
  tail call void (ptr, ptr, ptr, ptr, ptr, ...) %115(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.14, ptr noundef %2, ptr noundef nonnull @.str.16, ptr noundef %112, ptr noundef nonnull %.15861)
  br label %128

116:                                              ; preds = %93
  %117 = getelementptr inbounds i8, ptr %107, i64 400
  %118 = load ptr, ptr %117, align 8
  %119 = tail call noundef nonnull align 8 dereferenceable(40) ptr %118(ptr noundef nonnull align 8 dereferenceable(256) %106)
  %120 = tail call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(40) %119) #4
  %121 = load ptr, ptr %0, align 8, !tbaa !5
  %122 = getelementptr inbounds i8, ptr %121, i64 336
  %123 = load ptr, ptr %122, align 8
  tail call void (ptr, ptr, ptr, ptr, ptr, ...) %123(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.14, ptr noundef %2, ptr noundef nonnull @.str.16, ptr noundef %120, ptr noundef nonnull %.15861)
  br label %128

124:                                              ; preds = %86, %85
  %125 = load ptr, ptr %0, align 8, !tbaa !5
  %126 = getelementptr inbounds i8, ptr %125, i64 336
  %127 = load ptr, ptr %126, align 8
  tail call void (ptr, ptr, ptr, ptr, ptr, ...) %127(ptr noundef nonnull align 8 dereferenceable(1176) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.14, ptr noundef %2, ptr noundef nonnull @.str.17, ptr noundef nonnull %.15861)
  br label %128

128:                                              ; preds = %81, %108, %116, %124, %62, %74, %65, %57
  %.0 = phi i1 [ true, %57 ], [ true, %74 ], [ %73, %65 ], [ false, %62 ], [ true, %124 ], [ true, %116 ], [ true, %108 ], [ true, %81 ]
  ret i1 %.0
}

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

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

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

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

declare noundef ptr @_ZN7glslang13TIntermediate14findLValueBaseEPKNS_12TIntermTypedEbb(ptr noundef, i1 noundef zeroext, i1 noundef zeroext) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN7glslang11IsAnonymousERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEE(ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #3

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { "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 = { 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 #4 = { nounwind }

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

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


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