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

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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>::_Alloc_hider" = type { %"class.glslang::pool_allocator.14", ptr }
%"class.glslang::pool_allocator.14" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.glslang::TType" = type { ptr, i32, [4 x i8], %"class.glslang::TQualifier", ptr, %union.anon.179, ptr, ptr, %"struct.glslang::TSampler", ptr, ptr }
%"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 }>
%union.anon.179 = type { ptr }
%"struct.glslang::TSampler" = type { i32 }
%"class.glslang::TFunction" = type { %"class.glslang::TSymbol.base", %"class.glslang::TVector.189", %"class.glslang::TType", i32, %"class.std::__cxx11::basic_string", i32, i8, i8, i8, i8, i32, [4 x i8], %"struct.glslang::TSpirvInstruction" }
%"class.glslang::TSymbol.base" = type <{ ptr, ptr, i64, ptr, i8 }>
%"class.glslang::TVector.189" = type { %"class.std::vector.190" }
%"class.std::vector.190" = type { %"struct.std::_Vector_base.191" }
%"struct.std::_Vector_base.191" = type { %"struct.std::_Vector_base<glslang::TParameter, glslang::pool_allocator<glslang::TParameter>>::_Vector_impl" }
%"struct.std::_Vector_base<glslang::TParameter, glslang::pool_allocator<glslang::TParameter>>::_Vector_impl" = type { %"class.glslang::pool_allocator.192", %"struct.std::_Vector_base<glslang::TParameter, glslang::pool_allocator<glslang::TParameter>>::_Vector_impl_data" }
%"class.glslang::pool_allocator.192" = type { ptr }
%"struct.std::_Vector_base<glslang::TParameter, glslang::pool_allocator<glslang::TParameter>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.glslang::TSpirvInstruction" = type <{ %"class.std::__cxx11::basic_string", i32, [4 x i8] }>
%"struct.glslang::TParameter" = type { ptr, ptr, 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.771 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.772 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.773 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.774 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.775 = external hidden unnamed_addr constant [14 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang5TTypeC2ENS_10TBasicTypeENS_17TStorageQualifierEiiib(ptr noundef nonnull align 8 dereferenceable(144), i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i1 noundef zeroext) unnamed_addr #2 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN7glslang13TParseContext16handleBinaryMathERKNS_10TSourceLocEPKcNS_9TOperatorEPNS_12TIntermTypedES8_(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef, i32 noundef, ptr noundef, ptr noundef) #2 align 2

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

declare noundef ptr @_ZNK7glslang13TIntermediate16addConstantUnionEiRKNS_10TSourceLocEb(ptr noundef nonnull align 8 dereferenceable(1784), i32 noundef, ptr noundef nonnull align 8 dereferenceable(24), i1 noundef zeroext) #4

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN7glslang13TParseContext18handleFunctionCallERKNS_10TSourceLocEPNS_9TFunctionEP11TIntermNode(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef, ptr noundef) #2 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef ptr @_ZN7glslang13TParseContext26vkRelaxedRemapFunctionCallERKNS_10TSourceLocEPNS_9TFunctionEP11TIntermNode(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef %2, ptr noundef %3) #2 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca ptr, align 8
  %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 i32, align 4
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.glslang::pool_allocator.14", align 8
  %14 = alloca %"class.glslang::TType", align 8
  %15 = alloca ptr, align 8
  %16 = alloca i32, align 4
  %17 = alloca %"class.glslang::TFunction", align 8
  %18 = alloca i32, align 4
  %19 = alloca %"struct.glslang::TParameter", align 8
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %"class.glslang::pool_allocator.14", align 8
  %22 = alloca %"class.glslang::TType", align 8
  %23 = alloca %"class.glslang::TFunction", align 8
  %24 = alloca i32, align 4
  %25 = alloca %"struct.glslang::TParameter", 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
  %26 = load ptr, ptr %6, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #6
  store ptr null, ptr %10, align 8, !tbaa !5
  %27 = load ptr, ptr %8, align 8, !tbaa !5
  %28 = load ptr, ptr %27, align 8, !tbaa !9
  %29 = getelementptr inbounds ptr, ptr %28, i64 27
  %30 = load ptr, ptr %29, align 8
  %31 = call noundef i32 %30(ptr noundef nonnull align 8 dereferenceable(328) %27)
  %32 = icmp ne i32 %31, 0
  br i1 %32, label %33, label %34

33:                                               ; preds = %4
  store ptr null, ptr %5, align 8
  store i32 1, ptr %11, align 4
  br label %224

34:                                               ; preds = %4
  %35 = load ptr, ptr %8, align 8, !tbaa !5
  %36 = load ptr, ptr %35, align 8, !tbaa !9
  %37 = getelementptr inbounds ptr, ptr %36, i64 3
  %38 = load ptr, ptr %37, align 8
  %39 = call noundef nonnull align 8 dereferenceable(40) ptr %38(ptr noundef nonnull align 8 dereferenceable(33) %35)
  %40 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS7_(ptr noundef nonnull align 8 dereferenceable(40) %39, ptr noundef @.str.771)
  br i1 %40, label %41, label %110

41:                                               ; preds = %34
  call void @llvm.lifetime.start.p0(i64 40, ptr %12) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #6
  call void @_ZN7glslang14pool_allocatorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %13)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(40) %12, ptr noundef @.str.772, ptr noundef nonnull align 8 dereferenceable(8) %13)
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #6
  call void @llvm.lifetime.start.p0(i64 144, ptr %14) #6
  invoke void @_ZN7glslang5TTypeC2ENS_10TBasicTypeENS_17TStorageQualifierEiiib(ptr noundef nonnull align 8 dereferenceable(144) %14, i32 noundef 9, i32 noundef 0, i32 noundef 1, i32 noundef 0, i32 noundef 0, i1 noundef zeroext false)
          to label %42 unwind label %60

42:                                               ; preds = %41
  call void @llvm.lifetime.start.p0(i64 328, ptr %17) #6
  %43 = load ptr, ptr %8, align 8, !tbaa !5
  %44 = load ptr, ptr %43, align 8, !tbaa !9
  %45 = getelementptr inbounds ptr, ptr %44, i64 12
  %46 = load ptr, ptr %45, align 8
  %47 = invoke noundef nonnull align 8 dereferenceable(144) ptr %46(ptr noundef nonnull align 8 dereferenceable(328) %43)
          to label %48 unwind label %64

48:                                               ; preds = %42
  invoke void @_ZN7glslang9TFunctionC2EPKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEERKNS_5TTypeENS_9TOperatorE(ptr noundef nonnull align 8 dereferenceable(328) %17, ptr noundef %12, ptr noundef nonnull align 8 dereferenceable(144) %47, i32 noundef 0)
          to label %49 unwind label %64

49:                                               ; preds = %48
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #6
  store i32 0, ptr %18, align 4, !tbaa !11
  br label %50

50:                                               ; preds = %81, %49
  %51 = load i32, ptr %18, align 4, !tbaa !11
  %52 = load ptr, ptr %8, align 8, !tbaa !5
  %53 = load ptr, ptr %52, align 8, !tbaa !9
  %54 = getelementptr inbounds ptr, ptr %53, i64 36
  %55 = load ptr, ptr %54, align 8
  %56 = invoke noundef i32 %55(ptr noundef nonnull align 8 dereferenceable(328) %52)
          to label %57 unwind label %68

57:                                               ; preds = %50
  %58 = icmp slt i32 %51, %56
  br i1 %58, label %72, label %59

59:                                               ; preds = %57
  store i32 2, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #6
  br label %84

60:                                               ; preds = %41
  %61 = landingpad { ptr, i32 }
          cleanup
  %62 = extractvalue { ptr, i32 } %61, 0
  store ptr %62, ptr %15, align 8
  %63 = extractvalue { ptr, i32 } %61, 1
  store i32 %63, ptr %16, align 4
  br label %109

64:                                               ; preds = %48, %42
  %65 = landingpad { ptr, i32 }
          cleanup
  %66 = extractvalue { ptr, i32 } %65, 0
  store ptr %66, ptr %15, align 8
  %67 = extractvalue { ptr, i32 } %65, 1
  store i32 %67, ptr %16, align 4
  br label %108

68:                                               ; preds = %79, %72, %50
  %69 = landingpad { ptr, i32 }
          cleanup
  %70 = extractvalue { ptr, i32 } %69, 0
  store ptr %70, ptr %15, align 8
  %71 = extractvalue { ptr, i32 } %69, 1
  store i32 %71, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #6
  br label %107

72:                                               ; preds = %57
  %73 = load ptr, ptr %8, align 8, !tbaa !5
  %74 = load i32, ptr %18, align 4, !tbaa !11
  %75 = load ptr, ptr %73, align 8, !tbaa !9
  %76 = getelementptr inbounds ptr, ptr %75, i64 39
  %77 = load ptr, ptr %76, align 8
  %78 = invoke noundef nonnull align 8 dereferenceable(24) ptr %77(ptr noundef nonnull align 8 dereferenceable(328) %73, i32 noundef %74)
          to label %79 unwind label %68

79:                                               ; preds = %72
  invoke void @_ZN7glslang9TFunction12addParameterERNS_10TParameterE(ptr noundef nonnull align 8 dereferenceable(328) %17, ptr noundef nonnull align 8 dereferenceable(24) %78)
          to label %80 unwind label %68

80:                                               ; preds = %79
  br label %81

81:                                               ; preds = %80
  %82 = load i32, ptr %18, align 4, !tbaa !11
  %83 = add nsw i32 %82, 1
  store i32 %83, ptr %18, align 4, !tbaa !11
  br label %50, !llvm.loop !13

84:                                               ; preds = %59
  call void @llvm.lifetime.start.p0(i64 24, ptr %19) #6
  %85 = getelementptr inbounds %"struct.glslang::TParameter", ptr %19, i32 0, i32 0
  store ptr null, ptr %85, align 8, !tbaa !15
  %86 = getelementptr inbounds %"struct.glslang::TParameter", ptr %19, i32 0, i32 1
  store ptr %14, ptr %86, align 8, !tbaa !17
  %87 = getelementptr inbounds %"struct.glslang::TParameter", ptr %19, i32 0, i32 2
  store ptr null, ptr %87, align 8, !tbaa !18
  invoke void @_ZN7glslang9TFunction12addParameterERNS_10TParameterE(ptr noundef nonnull align 8 dereferenceable(328) %17, ptr noundef nonnull align 8 dereferenceable(24) %19)
          to label %88 unwind label %103

88:                                               ; preds = %84
  %89 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %26, i32 0, i32 7
  %90 = load ptr, ptr %89, align 8, !tbaa !19
  %91 = load ptr, ptr %9, align 8, !tbaa !5
  %92 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %26, i32 0, i32 7
  %93 = load ptr, ptr %92, align 8, !tbaa !19
  %94 = load ptr, ptr %7, align 8, !tbaa !5
  %95 = invoke noundef ptr @_ZNK7glslang13TIntermediate16addConstantUnionEiRKNS_10TSourceLocEb(ptr noundef nonnull align 8 dereferenceable(1784) %93, i32 noundef 1, ptr noundef nonnull align 8 dereferenceable(24) %94, i1 noundef zeroext true)
          to label %96 unwind label %103

96:                                               ; preds = %88
  %97 = invoke noundef ptr @_ZN7glslang13TIntermediate13growAggregateEP11TIntermNodeS2_(ptr noundef nonnull align 8 dereferenceable(1784) %90, ptr noundef %91, ptr noundef %95)
          to label %98 unwind label %103

98:                                               ; preds = %96
  store ptr %97, ptr %9, align 8, !tbaa !5
  %99 = load ptr, ptr %7, align 8, !tbaa !5
  %100 = load ptr, ptr %9, align 8, !tbaa !5
  %101 = invoke noundef ptr @_ZN7glslang13TParseContext18handleFunctionCallERKNS_10TSourceLocEPNS_9TFunctionEP11TIntermNode(ptr noundef nonnull align 8 dereferenceable(24912) %26, ptr noundef nonnull align 8 dereferenceable(24) %99, ptr noundef %17, ptr noundef %100)
          to label %102 unwind label %103

102:                                              ; preds = %98
  store ptr %101, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 24, ptr %19) #6
  call void @_ZN7glslang9TFunctionD1Ev(ptr noundef nonnull align 8 dereferenceable(328) %17) #6
  call void @llvm.lifetime.end.p0(i64 328, ptr %17) #6
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %14) #6
  call void @llvm.lifetime.end.p0(i64 144, ptr %14) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %12) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr %12) #6
  br label %222

103:                                              ; preds = %98, %96, %88, %84
  %104 = landingpad { ptr, i32 }
          cleanup
  %105 = extractvalue { ptr, i32 } %104, 0
  store ptr %105, ptr %15, align 8
  %106 = extractvalue { ptr, i32 } %104, 1
  store i32 %106, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %19) #6
  br label %107

107:                                              ; preds = %103, %68
  call void @_ZN7glslang9TFunctionD1Ev(ptr noundef nonnull align 8 dereferenceable(328) %17) #6
  br label %108

108:                                              ; preds = %107, %64
  call void @llvm.lifetime.end.p0(i64 328, ptr %17) #6
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %14) #6
  br label %109

109:                                              ; preds = %108, %60
  call void @llvm.lifetime.end.p0(i64 144, ptr %14) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %12) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr %12) #6
  br label %226

110:                                              ; preds = %34
  %111 = load ptr, ptr %8, align 8, !tbaa !5
  %112 = load ptr, ptr %111, align 8, !tbaa !9
  %113 = getelementptr inbounds ptr, ptr %112, i64 3
  %114 = load ptr, ptr %113, align 8
  %115 = call noundef nonnull align 8 dereferenceable(40) ptr %114(ptr noundef nonnull align 8 dereferenceable(33) %111)
  %116 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS7_(ptr noundef nonnull align 8 dereferenceable(40) %115, ptr noundef @.str.773)
  br i1 %116, label %117, label %199

117:                                              ; preds = %110
  call void @llvm.lifetime.start.p0(i64 40, ptr %20) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #6
  call void @_ZN7glslang14pool_allocatorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %21)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(40) %20, ptr noundef @.str.772, ptr noundef nonnull align 8 dereferenceable(8) %21)
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #6
  call void @llvm.lifetime.start.p0(i64 144, ptr %22) #6
  invoke void @_ZN7glslang5TTypeC2ENS_10TBasicTypeENS_17TStorageQualifierEiiib(ptr noundef nonnull align 8 dereferenceable(144) %22, i32 noundef 9, i32 noundef 0, i32 noundef 1, i32 noundef 0, i32 noundef 0, i1 noundef zeroext false)
          to label %118 unwind label %136

118:                                              ; preds = %117
  call void @llvm.lifetime.start.p0(i64 328, ptr %23) #6
  %119 = load ptr, ptr %8, align 8, !tbaa !5
  %120 = load ptr, ptr %119, align 8, !tbaa !9
  %121 = getelementptr inbounds ptr, ptr %120, i64 12
  %122 = load ptr, ptr %121, align 8
  %123 = invoke noundef nonnull align 8 dereferenceable(144) ptr %122(ptr noundef nonnull align 8 dereferenceable(328) %119)
          to label %124 unwind label %140

124:                                              ; preds = %118
  invoke void @_ZN7glslang9TFunctionC2EPKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEERKNS_5TTypeENS_9TOperatorE(ptr noundef nonnull align 8 dereferenceable(328) %23, ptr noundef %20, ptr noundef nonnull align 8 dereferenceable(144) %123, i32 noundef 0)
          to label %125 unwind label %140

125:                                              ; preds = %124
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #6
  store i32 0, ptr %24, align 4, !tbaa !11
  br label %126

126:                                              ; preds = %157, %125
  %127 = load i32, ptr %24, align 4, !tbaa !11
  %128 = load ptr, ptr %8, align 8, !tbaa !5
  %129 = load ptr, ptr %128, align 8, !tbaa !9
  %130 = getelementptr inbounds ptr, ptr %129, i64 36
  %131 = load ptr, ptr %130, align 8
  %132 = invoke noundef i32 %131(ptr noundef nonnull align 8 dereferenceable(328) %128)
          to label %133 unwind label %144

133:                                              ; preds = %126
  %134 = icmp slt i32 %127, %132
  br i1 %134, label %148, label %135

135:                                              ; preds = %133
  store i32 5, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #6
  br label %160

136:                                              ; preds = %117
  %137 = landingpad { ptr, i32 }
          cleanup
  %138 = extractvalue { ptr, i32 } %137, 0
  store ptr %138, ptr %15, align 8
  %139 = extractvalue { ptr, i32 } %137, 1
  store i32 %139, ptr %16, align 4
  br label %198

140:                                              ; preds = %124, %118
  %141 = landingpad { ptr, i32 }
          cleanup
  %142 = extractvalue { ptr, i32 } %141, 0
  store ptr %142, ptr %15, align 8
  %143 = extractvalue { ptr, i32 } %141, 1
  store i32 %143, ptr %16, align 4
  br label %197

144:                                              ; preds = %155, %148, %126
  %145 = landingpad { ptr, i32 }
          cleanup
  %146 = extractvalue { ptr, i32 } %145, 0
  store ptr %146, ptr %15, align 8
  %147 = extractvalue { ptr, i32 } %145, 1
  store i32 %147, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #6
  br label %196

148:                                              ; preds = %133
  %149 = load ptr, ptr %8, align 8, !tbaa !5
  %150 = load i32, ptr %24, align 4, !tbaa !11
  %151 = load ptr, ptr %149, align 8, !tbaa !9
  %152 = getelementptr inbounds ptr, ptr %151, i64 39
  %153 = load ptr, ptr %152, align 8
  %154 = invoke noundef nonnull align 8 dereferenceable(24) ptr %153(ptr noundef nonnull align 8 dereferenceable(328) %149, i32 noundef %150)
          to label %155 unwind label %144

155:                                              ; preds = %148
  invoke void @_ZN7glslang9TFunction12addParameterERNS_10TParameterE(ptr noundef nonnull align 8 dereferenceable(328) %23, ptr noundef nonnull align 8 dereferenceable(24) %154)
          to label %156 unwind label %144

156:                                              ; preds = %155
  br label %157

157:                                              ; preds = %156
  %158 = load i32, ptr %24, align 4, !tbaa !11
  %159 = add nsw i32 %158, 1
  store i32 %159, ptr %24, align 4, !tbaa !11
  br label %126, !llvm.loop !42

160:                                              ; preds = %135
  call void @llvm.lifetime.start.p0(i64 24, ptr %25) #6
  %161 = getelementptr inbounds %"struct.glslang::TParameter", ptr %25, i32 0, i32 0
  store ptr null, ptr %161, align 8, !tbaa !15
  %162 = getelementptr inbounds %"struct.glslang::TParameter", ptr %25, i32 0, i32 1
  store ptr %22, ptr %162, align 8, !tbaa !17
  %163 = getelementptr inbounds %"struct.glslang::TParameter", ptr %25, i32 0, i32 2
  store ptr null, ptr %163, align 8, !tbaa !18
  invoke void @_ZN7glslang9TFunction12addParameterERNS_10TParameterE(ptr noundef nonnull align 8 dereferenceable(328) %23, ptr noundef nonnull align 8 dereferenceable(24) %25)
          to label %164 unwind label %191

164:                                              ; preds = %160
  %165 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %26, i32 0, i32 7
  %166 = load ptr, ptr %165, align 8, !tbaa !19
  %167 = load ptr, ptr %9, align 8, !tbaa !5
  %168 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %26, i32 0, i32 7
  %169 = load ptr, ptr %168, align 8, !tbaa !19
  %170 = load ptr, ptr %7, align 8, !tbaa !5
  %171 = invoke noundef ptr @_ZNK7glslang13TIntermediate16addConstantUnionEiRKNS_10TSourceLocEb(ptr noundef nonnull align 8 dereferenceable(1784) %169, i32 noundef -1, ptr noundef nonnull align 8 dereferenceable(24) %170, i1 noundef zeroext true)
          to label %172 unwind label %191

172:                                              ; preds = %164
  %173 = invoke noundef ptr @_ZN7glslang13TIntermediate13growAggregateEP11TIntermNodeS2_(ptr noundef nonnull align 8 dereferenceable(1784) %166, ptr noundef %167, ptr noundef %171)
          to label %174 unwind label %191

174:                                              ; preds = %172
  store ptr %173, ptr %9, align 8, !tbaa !5
  %175 = load ptr, ptr %7, align 8, !tbaa !5
  %176 = load ptr, ptr %9, align 8, !tbaa !5
  %177 = invoke noundef ptr @_ZN7glslang13TParseContext18handleFunctionCallERKNS_10TSourceLocEPNS_9TFunctionEP11TIntermNode(ptr noundef nonnull align 8 dereferenceable(24912) %26, ptr noundef nonnull align 8 dereferenceable(24) %175, ptr noundef %23, ptr noundef %176)
          to label %178 unwind label %191

178:                                              ; preds = %174
  store ptr %177, ptr %10, align 8, !tbaa !5
  %179 = load ptr, ptr %10, align 8, !tbaa !5
  %180 = icmp ne ptr %179, null
  br i1 %180, label %181, label %195

181:                                              ; preds = %178
  %182 = load ptr, ptr %7, align 8, !tbaa !5
  %183 = load ptr, ptr %10, align 8, !tbaa !5
  %184 = getelementptr inbounds %"class.glslang::TParseVersions", ptr %26, i32 0, i32 7
  %185 = load ptr, ptr %184, align 8, !tbaa !19
  %186 = load ptr, ptr %7, align 8, !tbaa !5
  %187 = invoke noundef ptr @_ZNK7glslang13TIntermediate16addConstantUnionEiRKNS_10TSourceLocEb(ptr noundef nonnull align 8 dereferenceable(1784) %185, i32 noundef 1, ptr noundef nonnull align 8 dereferenceable(24) %186, i1 noundef zeroext true)
          to label %188 unwind label %191

188:                                              ; preds = %181
  %189 = invoke noundef ptr @_ZN7glslang13TParseContext16handleBinaryMathERKNS_10TSourceLocEPKcNS_9TOperatorEPNS_12TIntermTypedES8_(ptr noundef nonnull align 8 dereferenceable(24912) %26, ptr noundef nonnull align 8 dereferenceable(24) %182, ptr noundef @.str.774, i32 noundef 155, ptr noundef %183, ptr noundef %187)
          to label %190 unwind label %191

190:                                              ; preds = %188
  store ptr %189, ptr %10, align 8, !tbaa !5
  br label %195

191:                                              ; preds = %188, %181, %174, %172, %164, %160
  %192 = landingpad { ptr, i32 }
          cleanup
  %193 = extractvalue { ptr, i32 } %192, 0
  store ptr %193, ptr %15, align 8
  %194 = extractvalue { ptr, i32 } %192, 1
  store i32 %194, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %25) #6
  br label %196

195:                                              ; preds = %190, %178
  call void @llvm.lifetime.end.p0(i64 24, ptr %25) #6
  call void @_ZN7glslang9TFunctionD1Ev(ptr noundef nonnull align 8 dereferenceable(328) %23) #6
  call void @llvm.lifetime.end.p0(i64 328, ptr %23) #6
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %22) #6
  call void @llvm.lifetime.end.p0(i64 144, ptr %22) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %20) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr %20) #6
  br label %221

196:                                              ; preds = %191, %144
  call void @_ZN7glslang9TFunctionD1Ev(ptr noundef nonnull align 8 dereferenceable(328) %23) #6
  br label %197

197:                                              ; preds = %196, %140
  call void @llvm.lifetime.end.p0(i64 328, ptr %23) #6
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %22) #6
  br label %198

198:                                              ; preds = %197, %136
  call void @llvm.lifetime.end.p0(i64 144, ptr %22) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %20) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr %20) #6
  br label %226

199:                                              ; preds = %110
  %200 = load ptr, ptr %8, align 8, !tbaa !5
  %201 = load ptr, ptr %200, align 8, !tbaa !9
  %202 = getelementptr inbounds ptr, ptr %201, i64 3
  %203 = load ptr, ptr %202, align 8
  %204 = call noundef nonnull align 8 dereferenceable(40) ptr %203(ptr noundef nonnull align 8 dereferenceable(33) %200)
  %205 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS7_(ptr noundef nonnull align 8 dereferenceable(40) %204, ptr noundef @.str.775)
  br i1 %205, label %206, label %220

206:                                              ; preds = %199
  %207 = load ptr, ptr %9, align 8, !tbaa !5
  %208 = load ptr, ptr %207, align 8, !tbaa !9
  %209 = getelementptr inbounds ptr, ptr %208, i64 3
  %210 = load ptr, ptr %209, align 8
  %211 = call noundef ptr %210(ptr noundef nonnull align 8 dereferenceable(32) %207)
  %212 = icmp ne ptr %211, null
  br i1 %212, label %213, label %219

213:                                              ; preds = %206
  %214 = load ptr, ptr %9, align 8, !tbaa !5
  %215 = load ptr, ptr %214, align 8, !tbaa !9
  %216 = getelementptr inbounds ptr, ptr %215, i64 3
  %217 = load ptr, ptr %216, align 8
  %218 = call noundef ptr %217(ptr noundef nonnull align 8 dereferenceable(32) %214)
  store ptr %218, ptr %10, align 8, !tbaa !5
  br label %219

219:                                              ; preds = %213, %206
  br label %220

220:                                              ; preds = %219, %199
  br label %221

221:                                              ; preds = %220, %195
  br label %222

222:                                              ; preds = %221, %102
  %223 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %223, ptr %5, align 8
  store i32 1, ptr %11, align 4
  br label %224

224:                                              ; preds = %222, %33
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #6
  %225 = load ptr, ptr %5, align 8
  ret ptr %225

226:                                              ; preds = %198, %109
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #6
  br label %227

227:                                              ; preds = %226
  %228 = load ptr, ptr %15, align 8
  %229 = load i32, ptr %16, align 4
  %230 = insertvalue { ptr, i32 } poison, ptr %228, 0
  %231 = insertvalue { ptr, i32 } %230, i32 %229, 1
  resume { ptr, i32 } %231
}

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang9TFunction12addParameterERNS_10TParameterE(ptr noundef nonnull align 8 dereferenceable(328), ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #2 align 2

declare noundef ptr @_ZN7glslang13TIntermediate13growAggregateEP11TIntermNodeS2_(ptr noundef nonnull align 8 dereferenceable(1784), ptr noundef, ptr noundef) #4

; Function Attrs: nounwind
declare void @_ZN7glslang9TFunctionD1Ev(ptr noundef nonnull align 8 dereferenceable(328)) unnamed_addr #5

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

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

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


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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>::_Alloc_hider" = type { %"class.glslang::pool_allocator.14", ptr }
%"class.glslang::pool_allocator.14" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.glslang::TType" = type { ptr, i32, [4 x i8], %"class.glslang::TQualifier", ptr, %union.anon.179, ptr, ptr, %"struct.glslang::TSampler", ptr, ptr }
%"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 }>
%union.anon.179 = type { ptr }
%"struct.glslang::TSampler" = type { i32 }
%"class.glslang::TFunction" = type { %"class.glslang::TSymbol.base", %"class.glslang::TVector.189", %"class.glslang::TType", i32, %"class.std::__cxx11::basic_string", i32, i8, i8, i8, i8, i32, [4 x i8], %"struct.glslang::TSpirvInstruction" }
%"class.glslang::TSymbol.base" = type <{ ptr, ptr, i64, ptr, i8 }>
%"class.glslang::TVector.189" = type { %"class.std::vector.190" }
%"class.std::vector.190" = type { %"struct.std::_Vector_base.191" }
%"struct.std::_Vector_base.191" = type { %"struct.std::_Vector_base<glslang::TParameter, glslang::pool_allocator<glslang::TParameter>>::_Vector_impl" }
%"struct.std::_Vector_base<glslang::TParameter, glslang::pool_allocator<glslang::TParameter>>::_Vector_impl" = type { %"class.glslang::pool_allocator.192", %"struct.std::_Vector_base<glslang::TParameter, glslang::pool_allocator<glslang::TParameter>>::_Vector_impl_data" }
%"class.glslang::pool_allocator.192" = type { ptr }
%"struct.std::_Vector_base<glslang::TParameter, glslang::pool_allocator<glslang::TParameter>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.glslang::TSpirvInstruction" = type <{ %"class.std::__cxx11::basic_string", i32, [4 x i8] }>
%"struct.glslang::TParameter" = type { ptr, ptr, ptr }

@.str.771 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.772 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.773 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.774 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.775 = external hidden unnamed_addr constant [14 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang5TTypeC2ENS_10TBasicTypeENS_17TStorageQualifierEiiib(ptr noundef nonnull align 8 dereferenceable(144), i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i1 noundef zeroext) unnamed_addr #2 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN7glslang13TParseContext16handleBinaryMathERKNS_10TSourceLocEPKcNS_9TOperatorEPNS_12TIntermTypedES8_(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #2 align 2

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

declare noundef ptr @_ZNK7glslang13TIntermediate16addConstantUnionEiRKNS_10TSourceLocEb(ptr noundef nonnull align 8 dereferenceable(1784), i32 noundef, ptr noundef nonnull align 8 dereferenceable(24), i1 noundef zeroext) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN7glslang13TParseContext18handleFunctionCallERKNS_10TSourceLocEPNS_9TFunctionEP11TIntermNode(ptr noundef nonnull align 8 dereferenceable(24912), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef, ptr noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef ptr @_ZN7glslang13TParseContext26vkRelaxedRemapFunctionCallERKNS_10TSourceLocEPNS_9TFunctionEP11TIntermNode(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef %2, ptr noundef %3) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca %"class.glslang::pool_allocator.14", align 8
  %7 = alloca %"class.glslang::TType", align 8
  %8 = alloca %"class.glslang::TFunction", align 8
  %9 = alloca %"struct.glslang::TParameter", align 8
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.glslang::pool_allocator.14", align 8
  %12 = alloca %"class.glslang::TType", align 8
  %13 = alloca %"class.glslang::TFunction", align 8
  %14 = alloca %"struct.glslang::TParameter", align 8
  %15 = load ptr, ptr %2, align 8, !tbaa !5
  %16 = getelementptr inbounds i8, ptr %15, i64 216
  %17 = load ptr, ptr %16, align 8
  %18 = tail call noundef i32 %17(ptr noundef nonnull align 8 dereferenceable(328) %2)
  %.not = icmp eq i32 %18, 0
  br i1 %.not, label %19, label %141

19:                                               ; preds = %4
  %20 = load ptr, ptr %2, align 8, !tbaa !5
  %21 = getelementptr inbounds i8, ptr %20, i64 24
  %22 = load ptr, ptr %21, align 8
  %23 = tail call noundef nonnull align 8 dereferenceable(40) ptr %22(ptr noundef nonnull align 8 dereferenceable(33) %2)
  %24 = tail call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS7_(ptr noundef nonnull align 8 dereferenceable(40) %23, ptr noundef nonnull @.str.771)
  br i1 %24, label %25, label %69

25:                                               ; preds = %19
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %5) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #6
  call void @_ZN7glslang14pool_allocatorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %6)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(40) %5, ptr noundef nonnull @.str.772, ptr noundef nonnull align 8 dereferenceable(8) %6)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #6
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %7) #6
  invoke void @_ZN7glslang5TTypeC2ENS_10TBasicTypeENS_17TStorageQualifierEiiib(ptr noundef nonnull align 8 dereferenceable(144) %7, i32 noundef 9, i32 noundef 0, i32 noundef 1, i32 noundef 0, i32 noundef 0, i1 noundef zeroext false)
          to label %26 unwind label %41

26:                                               ; preds = %25
  call void @llvm.lifetime.start.p0(i64 328, ptr nonnull %8) #6
  %27 = load ptr, ptr %2, align 8, !tbaa !5
  %28 = getelementptr inbounds i8, ptr %27, i64 96
  %29 = load ptr, ptr %28, align 8
  %30 = invoke noundef nonnull align 8 dereferenceable(144) ptr %29(ptr noundef nonnull align 8 dereferenceable(328) %2)
          to label %31 unwind label %43

31:                                               ; preds = %26
  invoke void @_ZN7glslang9TFunctionC2EPKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEERKNS_5TTypeENS_9TOperatorE(ptr noundef nonnull align 8 dereferenceable(328) %8, ptr noundef nonnull %5, ptr noundef nonnull align 8 dereferenceable(144) %30, i32 noundef 0)
          to label %.preheader unwind label %43

.preheader:                                       ; preds = %31, %53
  %.034 = phi i32 [ %54, %53 ], [ 0, %31 ]
  %32 = load ptr, ptr %2, align 8, !tbaa !5
  %33 = getelementptr inbounds i8, ptr %32, i64 288
  %34 = load ptr, ptr %33, align 8
  %35 = invoke noundef i32 %34(ptr noundef nonnull align 8 dereferenceable(328) %2)
          to label %36 unwind label %45

36:                                               ; preds = %.preheader
  %37 = icmp slt i32 %.034, %35
  br i1 %37, label %47, label %38

38:                                               ; preds = %36
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9) #6
  store ptr null, ptr %9, align 8, !tbaa !8
  %39 = getelementptr inbounds i8, ptr %9, i64 8
  store ptr %7, ptr %39, align 8, !tbaa !12
  %40 = getelementptr inbounds i8, ptr %9, i64 16
  store ptr null, ptr %40, align 8, !tbaa !13
  invoke void @_ZN7glslang9TFunction12addParameterERNS_10TParameterE(ptr noundef nonnull align 8 dereferenceable(328) %8, ptr noundef nonnull align 8 dereferenceable(24) %9)
          to label %55 unwind label %64

41:                                               ; preds = %25
  %42 = landingpad { ptr, i32 }
          cleanup
  br label %68

43:                                               ; preds = %31, %26
  %44 = landingpad { ptr, i32 }
          cleanup
  br label %67

45:                                               ; preds = %52, %47, %.preheader
  %46 = landingpad { ptr, i32 }
          cleanup
  br label %66

47:                                               ; preds = %36
  %48 = load ptr, ptr %2, align 8, !tbaa !5
  %49 = getelementptr inbounds i8, ptr %48, i64 312
  %50 = load ptr, ptr %49, align 8
  %51 = invoke noundef nonnull align 8 dereferenceable(24) ptr %50(ptr noundef nonnull align 8 dereferenceable(328) %2, i32 noundef %.034)
          to label %52 unwind label %45

52:                                               ; preds = %47
  invoke void @_ZN7glslang9TFunction12addParameterERNS_10TParameterE(ptr noundef nonnull align 8 dereferenceable(328) %8, ptr noundef nonnull align 8 dereferenceable(24) %51)
          to label %53 unwind label %45

53:                                               ; preds = %52
  %54 = add nuw nsw i32 %.034, 1
  br label %.preheader, !llvm.loop !14

55:                                               ; preds = %38
  %56 = getelementptr inbounds i8, ptr %0, i64 56
  %57 = load ptr, ptr %56, align 8, !tbaa !16
  %58 = invoke noundef ptr @_ZNK7glslang13TIntermediate16addConstantUnionEiRKNS_10TSourceLocEb(ptr noundef nonnull align 8 dereferenceable(1784) %57, i32 noundef 1, ptr noundef nonnull align 8 dereferenceable(24) %1, i1 noundef zeroext true)
          to label %59 unwind label %64

59:                                               ; preds = %55
  %60 = invoke noundef ptr @_ZN7glslang13TIntermediate13growAggregateEP11TIntermNodeS2_(ptr noundef nonnull align 8 dereferenceable(1784) %57, ptr noundef %3, ptr noundef %58)
          to label %61 unwind label %64

61:                                               ; preds = %59
  %62 = invoke noundef ptr @_ZN7glslang13TParseContext18handleFunctionCallERKNS_10TSourceLocEPNS_9TFunctionEP11TIntermNode(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull %8, ptr noundef %60)
          to label %63 unwind label %64

63:                                               ; preds = %61
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #6
  call void @_ZN7glslang9TFunctionD1Ev(ptr noundef nonnull align 8 dereferenceable(328) %8) #6
  call void @llvm.lifetime.end.p0(i64 328, ptr nonnull %8) #6
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %7) #6
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %7) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %5) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %5) #6
  br label %141

64:                                               ; preds = %61, %59, %55, %38
  %65 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #6
  br label %66

66:                                               ; preds = %64, %45
  %.pn53 = phi { ptr, i32 } [ %46, %45 ], [ %65, %64 ]
  call void @_ZN7glslang9TFunctionD1Ev(ptr noundef nonnull align 8 dereferenceable(328) %8) #6
  br label %67

67:                                               ; preds = %66, %43
  %.pn53.pn = phi { ptr, i32 } [ %.pn53, %66 ], [ %44, %43 ]
  call void @llvm.lifetime.end.p0(i64 328, ptr nonnull %8) #6
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %7) #6
  br label %68

68:                                               ; preds = %67, %41
  %.pn53.pn.pn = phi { ptr, i32 } [ %.pn53.pn, %67 ], [ %42, %41 ]
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %7) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %5) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %5) #6
  br label %142

69:                                               ; preds = %19
  %70 = load ptr, ptr %2, align 8, !tbaa !5
  %71 = getelementptr inbounds i8, ptr %70, i64 24
  %72 = load ptr, ptr %71, align 8
  %73 = tail call noundef nonnull align 8 dereferenceable(40) ptr %72(ptr noundef nonnull align 8 dereferenceable(33) %2)
  %74 = tail call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS7_(ptr noundef nonnull align 8 dereferenceable(40) %73, ptr noundef nonnull @.str.773)
  br i1 %74, label %75, label %125

75:                                               ; preds = %69
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %10) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #6
  call void @_ZN7glslang14pool_allocatorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %11)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(40) %10, ptr noundef nonnull @.str.772, ptr noundef nonnull align 8 dereferenceable(8) %11)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #6
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %12) #6
  invoke void @_ZN7glslang5TTypeC2ENS_10TBasicTypeENS_17TStorageQualifierEiiib(ptr noundef nonnull align 8 dereferenceable(144) %12, i32 noundef 9, i32 noundef 0, i32 noundef 1, i32 noundef 0, i32 noundef 0, i1 noundef zeroext false)
          to label %76 unwind label %91

76:                                               ; preds = %75
  call void @llvm.lifetime.start.p0(i64 328, ptr nonnull %13) #6
  %77 = load ptr, ptr %2, align 8, !tbaa !5
  %78 = getelementptr inbounds i8, ptr %77, i64 96
  %79 = load ptr, ptr %78, align 8
  %80 = invoke noundef nonnull align 8 dereferenceable(144) ptr %79(ptr noundef nonnull align 8 dereferenceable(328) %2)
          to label %81 unwind label %93

81:                                               ; preds = %76
  invoke void @_ZN7glslang9TFunctionC2EPKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEERKNS_5TTypeENS_9TOperatorE(ptr noundef nonnull align 8 dereferenceable(328) %13, ptr noundef nonnull %10, ptr noundef nonnull align 8 dereferenceable(144) %80, i32 noundef 0)
          to label %.preheader58 unwind label %93

.preheader58:                                     ; preds = %81, %103
  %.0 = phi i32 [ %104, %103 ], [ 0, %81 ]
  %82 = load ptr, ptr %2, align 8, !tbaa !5
  %83 = getelementptr inbounds i8, ptr %82, i64 288
  %84 = load ptr, ptr %83, align 8
  %85 = invoke noundef i32 %84(ptr noundef nonnull align 8 dereferenceable(328) %2)
          to label %86 unwind label %95

86:                                               ; preds = %.preheader58
  %87 = icmp slt i32 %.0, %85
  br i1 %87, label %97, label %88

88:                                               ; preds = %86
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %14) #6
  store ptr null, ptr %14, align 8, !tbaa !8
  %89 = getelementptr inbounds i8, ptr %14, i64 8
  store ptr %12, ptr %89, align 8, !tbaa !12
  %90 = getelementptr inbounds i8, ptr %14, i64 16
  store ptr null, ptr %90, align 8, !tbaa !13
  invoke void @_ZN7glslang9TFunction12addParameterERNS_10TParameterE(ptr noundef nonnull align 8 dereferenceable(328) %13, ptr noundef nonnull align 8 dereferenceable(24) %14)
          to label %105 unwind label %119

91:                                               ; preds = %75
  %92 = landingpad { ptr, i32 }
          cleanup
  br label %124

93:                                               ; preds = %81, %76
  %94 = landingpad { ptr, i32 }
          cleanup
  br label %123

95:                                               ; preds = %102, %97, %.preheader58
  %96 = landingpad { ptr, i32 }
          cleanup
  br label %122

97:                                               ; preds = %86
  %98 = load ptr, ptr %2, align 8, !tbaa !5
  %99 = getelementptr inbounds i8, ptr %98, i64 312
  %100 = load ptr, ptr %99, align 8
  %101 = invoke noundef nonnull align 8 dereferenceable(24) ptr %100(ptr noundef nonnull align 8 dereferenceable(328) %2, i32 noundef %.0)
          to label %102 unwind label %95

102:                                              ; preds = %97
  invoke void @_ZN7glslang9TFunction12addParameterERNS_10TParameterE(ptr noundef nonnull align 8 dereferenceable(328) %13, ptr noundef nonnull align 8 dereferenceable(24) %101)
          to label %103 unwind label %95

103:                                              ; preds = %102
  %104 = add nuw nsw i32 %.0, 1
  br label %.preheader58, !llvm.loop !40

105:                                              ; preds = %88
  %106 = getelementptr inbounds i8, ptr %0, i64 56
  %107 = load ptr, ptr %106, align 8, !tbaa !16
  %108 = invoke noundef ptr @_ZNK7glslang13TIntermediate16addConstantUnionEiRKNS_10TSourceLocEb(ptr noundef nonnull align 8 dereferenceable(1784) %107, i32 noundef -1, ptr noundef nonnull align 8 dereferenceable(24) %1, i1 noundef zeroext true)
          to label %109 unwind label %119

109:                                              ; preds = %105
  %110 = invoke noundef ptr @_ZN7glslang13TIntermediate13growAggregateEP11TIntermNodeS2_(ptr noundef nonnull align 8 dereferenceable(1784) %107, ptr noundef %3, ptr noundef %108)
          to label %111 unwind label %119

111:                                              ; preds = %109
  %112 = invoke noundef ptr @_ZN7glslang13TParseContext18handleFunctionCallERKNS_10TSourceLocEPNS_9TFunctionEP11TIntermNode(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull %13, ptr noundef %110)
          to label %113 unwind label %119

113:                                              ; preds = %111
  %.not49 = icmp eq ptr %112, null
  br i1 %.not49, label %121, label %114

114:                                              ; preds = %113
  %115 = load ptr, ptr %106, align 8, !tbaa !16
  %116 = invoke noundef ptr @_ZNK7glslang13TIntermediate16addConstantUnionEiRKNS_10TSourceLocEb(ptr noundef nonnull align 8 dereferenceable(1784) %115, i32 noundef 1, ptr noundef nonnull align 8 dereferenceable(24) %1, i1 noundef zeroext true)
          to label %117 unwind label %119

117:                                              ; preds = %114
  %118 = invoke noundef ptr @_ZN7glslang13TParseContext16handleBinaryMathERKNS_10TSourceLocEPKcNS_9TOperatorEPNS_12TIntermTypedES8_(ptr noundef nonnull align 8 dereferenceable(24912) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.774, i32 noundef 155, ptr noundef nonnull %112, ptr noundef %116)
          to label %121 unwind label %119

119:                                              ; preds = %117, %114, %111, %109, %105, %88
  %120 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #6
  br label %122

121:                                              ; preds = %117, %113
  %.043 = phi ptr [ null, %113 ], [ %118, %117 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #6
  call void @_ZN7glslang9TFunctionD1Ev(ptr noundef nonnull align 8 dereferenceable(328) %13) #6
  call void @llvm.lifetime.end.p0(i64 328, ptr nonnull %13) #6
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %12) #6
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %12) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %10) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %10) #6
  br label %141

122:                                              ; preds = %119, %95
  %.pn = phi { ptr, i32 } [ %96, %95 ], [ %120, %119 ]
  call void @_ZN7glslang9TFunctionD1Ev(ptr noundef nonnull align 8 dereferenceable(328) %13) #6
  br label %123

123:                                              ; preds = %122, %93
  %.pn.pn = phi { ptr, i32 } [ %.pn, %122 ], [ %94, %93 ]
  call void @llvm.lifetime.end.p0(i64 328, ptr nonnull %13) #6
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %12) #6
  br label %124

124:                                              ; preds = %123, %91
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %123 ], [ %92, %91 ]
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %12) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %10) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %10) #6
  br label %142

125:                                              ; preds = %69
  %126 = load ptr, ptr %2, align 8, !tbaa !5
  %127 = getelementptr inbounds i8, ptr %126, i64 24
  %128 = load ptr, ptr %127, align 8
  %129 = tail call noundef nonnull align 8 dereferenceable(40) ptr %128(ptr noundef nonnull align 8 dereferenceable(33) %2)
  %130 = tail call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS7_(ptr noundef nonnull align 8 dereferenceable(40) %129, ptr noundef nonnull @.str.775)
  br i1 %130, label %131, label %141

131:                                              ; preds = %125
  %132 = load ptr, ptr %3, align 8, !tbaa !5
  %133 = getelementptr inbounds i8, ptr %132, i64 24
  %134 = load ptr, ptr %133, align 8
  %135 = tail call noundef ptr %134(ptr noundef nonnull align 8 dereferenceable(32) %3)
  %.not48 = icmp eq ptr %135, null
  br i1 %.not48, label %141, label %136

136:                                              ; preds = %131
  %137 = load ptr, ptr %3, align 8, !tbaa !5
  %138 = getelementptr inbounds i8, ptr %137, i64 24
  %139 = load ptr, ptr %138, align 8
  %140 = tail call noundef ptr %139(ptr noundef nonnull align 8 dereferenceable(32) %3)
  br label %141

141:                                              ; preds = %63, %125, %136, %131, %121, %4
  %.045 = phi ptr [ null, %4 ], [ %62, %63 ], [ %.043, %121 ], [ %140, %136 ], [ null, %131 ], [ null, %125 ]
  ret ptr %.045

142:                                              ; preds = %124, %68
  %.pn53.pn.pn.pn = phi { ptr, i32 } [ %.pn53.pn.pn, %68 ], [ %.pn.pn.pn, %124 ]
  resume { ptr, i32 } %.pn53.pn.pn.pn
}

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang9TFunction12addParameterERNS_10TParameterE(ptr noundef nonnull align 8 dereferenceable(328), ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #2 align 2

declare noundef ptr @_ZN7glslang13TIntermediate13growAggregateEP11TIntermNodeS2_(ptr noundef nonnull align 8 dereferenceable(1784), ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: nounwind
declare void @_ZN7glslang9TFunctionD1Ev(ptr noundef nonnull align 8 dereferenceable(328)) unnamed_addr #5

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

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

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


; Effective O3 passes: EarlyCSEPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,LoopSimplifyPass,LoopUnrollPass,SROAPass,SimplifyCFGPass,TailCallElimPass