; LLVM IR from openxrlab/xrsfm :: 3rdparty/SiftGPU/SiftMatch.ll (ZN11SiftMatchGL24LoadSiftMatchShadersGLSLEv)

; 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_ostringstream" = type { %"class.std::basic_ostream.base", %"class.std::__cxx11::basic_stringbuf", %"class.std::basic_ios" }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string" }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::fpos" = type { i64, %struct.__mbstate_t }
%struct.__mbstate_t = type { i32, %union.anon.3 }
%union.anon.3 = type { i32 }
%class.SiftMatchGL = type { %class.SiftMatchGPU.base, [4 x i8], [2 x %class.GLTexImage], [2 x %class.GLTexImage], %class.GLTexImage, [2 x %class.GLTexImage], ptr, ptr, ptr, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [2 x i32], [2 x i32], [2 x i32], i32, i32, i32, i32, i32, %"class.std::vector" }
%class.SiftMatchGPU.base = type <{ ptr, i32, i32, ptr, i32 }>
%class.GLTexImage = type <{ ptr, i32, i32, i32, i32, i32, i32, i32, [4 x i8] }>
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl" }
%"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl" = type { %"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl_data" }
%"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@_ZN11GlobalParam9_IsNvidiaE = external global i32, align 4
@.str = external hidden unnamed_addr constant [59 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [923 x i8], align 1
@__glewGetUniformLocation = external global ptr, align 8
@.str.5 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [165 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [1579 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [548 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [549 x i8], align 1

declare i32 @__gxx_personality_v0(...)

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) #0

; 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
define dso_local void @_ZN11SiftMatchGL24LoadSiftMatchShadersGLSLEv(ptr noundef nonnull align 8 dereferenceable(464) %0) #2 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca ptr, align 8
  %4 = alloca %"class.std::__cxx11::basic_ostringstream", align 8
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca i1, align 1
  %9 = alloca %"class.std::fpos", align 8
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca i1, align 1
  %12 = alloca %"class.std::fpos", align 8
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca i1, align 1
  %15 = alloca %"class.std::fpos", align 8
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca i1, align 1
  store ptr %0, ptr %2, align 8, !tbaa !5
  %18 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %3) #7
  call void @llvm.lifetime.start.p0(i64 376, ptr %4) #7
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(112) %4)
  %19 = load i32, ptr @_ZN11GlobalParam9_IsNvidiaE, align 4, !tbaa !9
  %20 = icmp ne i32 %19, 0
  br i1 %20, label %21, label %28

21:                                               ; preds = %1
  %22 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef @.str)
          to label %23 unwind label %24

23:                                               ; preds = %21
  br label %28

24:                                               ; preds = %216, %211, %206, %204, %202, %196, %194, %192, %187, %182, %180, %178, %172, %170, %168, %163, %161, %156, %154, %149, %147, %142, %140, %135, %133, %128, %126, %121, %116, %114, %112, %110, %106, %104, %100, %98, %83, %74, %72, %70, %65, %63, %58, %56, %51, %46, %44, %42, %40, %36, %34, %30, %28, %21
  %25 = landingpad { ptr, i32 }
          cleanup
  %26 = extractvalue { ptr, i32 } %25, 0
  store ptr %26, ptr %5, align 8
  %27 = extractvalue { ptr, i32 } %25, 1
  store i32 %27, ptr %6, align 4
  br label %256

28:                                               ; preds = %23, %1
  %29 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef @.str.1)
          to label %30 unwind label %24

30:                                               ; preds = %28
  %31 = getelementptr inbounds %class.SiftMatchGL, ptr %18, i32 0, i32 25
  %32 = load i32, ptr %31, align 8, !tbaa !11
  %33 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %29, i32 noundef %32)
          to label %34 unwind label %24

34:                                               ; preds = %30
  %35 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %33, ptr noundef @.str.2)
          to label %36 unwind label %24

36:                                               ; preds = %34
  %37 = getelementptr inbounds %class.SiftMatchGL, ptr %18, i32 0, i32 28
  %38 = load i32, ptr %37, align 4, !tbaa !19
  %39 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %35, i32 noundef %38)
          to label %40 unwind label %24

40:                                               ; preds = %36
  %41 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef @.str.3)
          to label %42 unwind label %24

42:                                               ; preds = %40
  %43 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %41, ptr noundef @.str.4)
          to label %44 unwind label %24

44:                                               ; preds = %42
  %45 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %43, i8 noundef signext 0)
          to label %46 unwind label %24

46:                                               ; preds = %44
  %47 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 24) #8
          to label %48 unwind label %24

48:                                               ; preds = %46
  store i1 true, ptr %8, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %7) #7
  invoke void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %7, ptr noundef nonnull align 8 dereferenceable(112) %4)
          to label %49 unwind label %86

49:                                               ; preds = %48
  %50 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %7) #7
  invoke void @_ZN11ProgramGLSLC1EPKc(ptr noundef nonnull align 8 dereferenceable(20) %47, ptr noundef %50)
          to label %51 unwind label %90

51:                                               ; preds = %49
  store i1 false, ptr %8, align 1
  store ptr %47, ptr %3, align 8, !tbaa !5
  %52 = getelementptr inbounds %class.SiftMatchGL, ptr %18, i32 0, i32 6
  store ptr %47, ptr %52, align 8, !tbaa !20
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %7) #7
  %53 = load ptr, ptr @__glewGetUniformLocation, align 8, !tbaa !5
  %54 = load ptr, ptr %3, align 8, !tbaa !5
  %55 = invoke noundef i32 @_ZN11ProgramGLSLcvjEv(ptr noundef nonnull align 8 dereferenceable(20) %54)
          to label %56 unwind label %24

56:                                               ; preds = %51
  %57 = invoke i32 %53(i32 noundef %55, ptr noundef @.str.5)
          to label %58 unwind label %24

58:                                               ; preds = %56
  %59 = getelementptr inbounds %class.SiftMatchGL, ptr %18, i32 0, i32 10
  store i32 %57, ptr %59, align 8, !tbaa !21
  %60 = load ptr, ptr @__glewGetUniformLocation, align 8, !tbaa !5
  %61 = load ptr, ptr %3, align 8, !tbaa !5
  %62 = invoke noundef i32 @_ZN11ProgramGLSLcvjEv(ptr noundef nonnull align 8 dereferenceable(20) %61)
          to label %63 unwind label %24

63:                                               ; preds = %58
  %64 = invoke i32 %60(i32 noundef %62, ptr noundef @.str.6)
          to label %65 unwind label %24

65:                                               ; preds = %63
  %66 = getelementptr inbounds %class.SiftMatchGL, ptr %18, i32 0, i32 11
  store i32 %64, ptr %66, align 4, !tbaa !22
  %67 = load ptr, ptr @__glewGetUniformLocation, align 8, !tbaa !5
  %68 = load ptr, ptr %3, align 8, !tbaa !5
  %69 = invoke noundef i32 @_ZN11ProgramGLSLcvjEv(ptr noundef nonnull align 8 dereferenceable(20) %68)
          to label %70 unwind label %24

70:                                               ; preds = %65
  %71 = invoke i32 %67(i32 noundef %69, ptr noundef @.str.7)
          to label %72 unwind label %24

72:                                               ; preds = %70
  %73 = getelementptr inbounds %class.SiftMatchGL, ptr %18, i32 0, i32 12
  store i32 %71, ptr %73, align 8, !tbaa !23
  invoke void @_ZNSt4fposI11__mbstate_tEC2El(ptr noundef nonnull align 8 dereferenceable(16) %9, i64 noundef 0)
          to label %74 unwind label %24

74:                                               ; preds = %72
  %75 = getelementptr inbounds { i64, i64 }, ptr %9, i32 0, i32 0
  %76 = load i64, ptr %75, align 8
  %77 = getelementptr inbounds { i64, i64 }, ptr %9, i32 0, i32 1
  %78 = load i64, ptr %77, align 8
  %79 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSo5seekpESt4fposI11__mbstate_tE(ptr noundef nonnull align 8 dereferenceable(8) %4, i64 %76, i64 %78)
          to label %80 unwind label %24

80:                                               ; preds = %74
  %81 = load i32, ptr @_ZN11GlobalParam9_IsNvidiaE, align 4, !tbaa !9
  %82 = icmp ne i32 %81, 0
  br i1 %82, label %83, label %98

83:                                               ; preds = %80
  %84 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef @.str)
          to label %85 unwind label %24

85:                                               ; preds = %83
  br label %98

86:                                               ; preds = %48
  %87 = landingpad { ptr, i32 }
          cleanup
  %88 = extractvalue { ptr, i32 } %87, 0
  store ptr %88, ptr %5, align 8
  %89 = extractvalue { ptr, i32 } %87, 1
  store i32 %89, ptr %6, align 4
  br label %94

90:                                               ; preds = %49
  %91 = landingpad { ptr, i32 }
          cleanup
  %92 = extractvalue { ptr, i32 } %91, 0
  store ptr %92, ptr %5, align 8
  %93 = extractvalue { ptr, i32 } %91, 1
  store i32 %93, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #7
  br label %94

94:                                               ; preds = %90, %86
  call void @llvm.lifetime.end.p0(i64 32, ptr %7) #7
  %95 = load i1, ptr %8, align 1
  br i1 %95, label %96, label %97

96:                                               ; preds = %94
  call void @_ZdlPvm(ptr noundef %47, i64 noundef 24) #9
  br label %97

97:                                               ; preds = %96, %94
  br label %256

98:                                               ; preds = %85, %80
  %99 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef @.str.1)
          to label %100 unwind label %24

100:                                              ; preds = %98
  %101 = getelementptr inbounds %class.SiftMatchGL, ptr %18, i32 0, i32 25
  %102 = load i32, ptr %101, align 8, !tbaa !11
  %103 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %99, i32 noundef %102)
          to label %104 unwind label %24

104:                                              ; preds = %100
  %105 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %103, ptr noundef @.str.2)
          to label %106 unwind label %24

106:                                              ; preds = %104
  %107 = getelementptr inbounds %class.SiftMatchGL, ptr %18, i32 0, i32 28
  %108 = load i32, ptr %107, align 4, !tbaa !19
  %109 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %105, i32 noundef %108)
          to label %110 unwind label %24

110:                                              ; preds = %106
  %111 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %109, ptr noundef @.str.8)
          to label %112 unwind label %24

112:                                              ; preds = %110
  %113 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %111, ptr noundef @.str.9)
          to label %114 unwind label %24

114:                                              ; preds = %112
  %115 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %113, i8 noundef signext 0)
          to label %116 unwind label %24

116:                                              ; preds = %114
  %117 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 24) #8
          to label %118 unwind label %24

118:                                              ; preds = %116
  store i1 true, ptr %11, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %10) #7
  invoke void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %10, ptr noundef nonnull align 8 dereferenceable(112) %4)
          to label %119 unwind label %220

119:                                              ; preds = %118
  %120 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %10) #7
  invoke void @_ZN11ProgramGLSLC1EPKc(ptr noundef nonnull align 8 dereferenceable(20) %117, ptr noundef %120)
          to label %121 unwind label %224

121:                                              ; preds = %119
  store i1 false, ptr %11, align 1
  store ptr %117, ptr %3, align 8, !tbaa !5
  %122 = getelementptr inbounds %class.SiftMatchGL, ptr %18, i32 0, i32 7
  store ptr %117, ptr %122, align 8, !tbaa !24
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %10) #7
  %123 = load ptr, ptr @__glewGetUniformLocation, align 8, !tbaa !5
  %124 = load ptr, ptr %3, align 8, !tbaa !5
  %125 = invoke noundef i32 @_ZN11ProgramGLSLcvjEv(ptr noundef nonnull align 8 dereferenceable(20) %124)
          to label %126 unwind label %24

126:                                              ; preds = %121
  %127 = invoke i32 %123(i32 noundef %125, ptr noundef @.str.5)
          to label %128 unwind label %24

128:                                              ; preds = %126
  %129 = getelementptr inbounds %class.SiftMatchGL, ptr %18, i32 0, i32 15
  store i32 %127, ptr %129, align 4, !tbaa !25
  %130 = load ptr, ptr @__glewGetUniformLocation, align 8, !tbaa !5
  %131 = load ptr, ptr %3, align 8, !tbaa !5
  %132 = invoke noundef i32 @_ZN11ProgramGLSLcvjEv(ptr noundef nonnull align 8 dereferenceable(20) %131)
          to label %133 unwind label %24

133:                                              ; preds = %128
  %134 = invoke i32 %130(i32 noundef %132, ptr noundef @.str.6)
          to label %135 unwind label %24

135:                                              ; preds = %133
  %136 = getelementptr inbounds %class.SiftMatchGL, ptr %18, i32 0, i32 16
  store i32 %134, ptr %136, align 8, !tbaa !26
  %137 = load ptr, ptr @__glewGetUniformLocation, align 8, !tbaa !5
  %138 = load ptr, ptr %3, align 8, !tbaa !5
  %139 = invoke noundef i32 @_ZN11ProgramGLSLcvjEv(ptr noundef nonnull align 8 dereferenceable(20) %138)
          to label %140 unwind label %24

140:                                              ; preds = %135
  %141 = invoke i32 %137(i32 noundef %139, ptr noundef @.str.10)
          to label %142 unwind label %24

142:                                              ; preds = %140
  %143 = getelementptr inbounds %class.SiftMatchGL, ptr %18, i32 0, i32 17
  store i32 %141, ptr %143, align 4, !tbaa !27
  %144 = load ptr, ptr @__glewGetUniformLocation, align 8, !tbaa !5
  %145 = load ptr, ptr %3, align 8, !tbaa !5
  %146 = invoke noundef i32 @_ZN11ProgramGLSLcvjEv(ptr noundef nonnull align 8 dereferenceable(20) %145)
          to label %147 unwind label %24

147:                                              ; preds = %142
  %148 = invoke i32 %144(i32 noundef %146, ptr noundef @.str.11)
          to label %149 unwind label %24

149:                                              ; preds = %147
  %150 = getelementptr inbounds %class.SiftMatchGL, ptr %18, i32 0, i32 18
  store i32 %148, ptr %150, align 8, !tbaa !28
  %151 = load ptr, ptr @__glewGetUniformLocation, align 8, !tbaa !5
  %152 = load ptr, ptr %3, align 8, !tbaa !5
  %153 = invoke noundef i32 @_ZN11ProgramGLSLcvjEv(ptr noundef nonnull align 8 dereferenceable(20) %152)
          to label %154 unwind label %24

154:                                              ; preds = %149
  %155 = invoke i32 %151(i32 noundef %153, ptr noundef @.str.12)
          to label %156 unwind label %24

156:                                              ; preds = %154
  %157 = getelementptr inbounds %class.SiftMatchGL, ptr %18, i32 0, i32 19
  store i32 %155, ptr %157, align 4, !tbaa !29
  %158 = load ptr, ptr @__glewGetUniformLocation, align 8, !tbaa !5
  %159 = load ptr, ptr %3, align 8, !tbaa !5
  %160 = invoke noundef i32 @_ZN11ProgramGLSLcvjEv(ptr noundef nonnull align 8 dereferenceable(20) %159)
          to label %161 unwind label %24

161:                                              ; preds = %156
  %162 = invoke i32 %158(i32 noundef %160, ptr noundef @.str.13)
          to label %163 unwind label %24

163:                                              ; preds = %161
  %164 = getelementptr inbounds %class.SiftMatchGL, ptr %18, i32 0, i32 20
  store i32 %162, ptr %164, align 8, !tbaa !30
  %165 = load ptr, ptr @__glewGetUniformLocation, align 8, !tbaa !5
  %166 = load ptr, ptr %3, align 8, !tbaa !5
  %167 = invoke noundef i32 @_ZN11ProgramGLSLcvjEv(ptr noundef nonnull align 8 dereferenceable(20) %166)
          to label %168 unwind label %24

168:                                              ; preds = %163
  %169 = invoke i32 %165(i32 noundef %167, ptr noundef @.str.7)
          to label %170 unwind label %24

170:                                              ; preds = %168
  %171 = getelementptr inbounds %class.SiftMatchGL, ptr %18, i32 0, i32 21
  store i32 %169, ptr %171, align 4, !tbaa !31
  invoke void @_ZNSt4fposI11__mbstate_tEC2El(ptr noundef nonnull align 8 dereferenceable(16) %12, i64 noundef 0)
          to label %172 unwind label %24

172:                                              ; preds = %170
  %173 = getelementptr inbounds { i64, i64 }, ptr %12, i32 0, i32 0
  %174 = load i64, ptr %173, align 8
  %175 = getelementptr inbounds { i64, i64 }, ptr %12, i32 0, i32 1
  %176 = load i64, ptr %175, align 8
  %177 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSo5seekpESt4fposI11__mbstate_tE(ptr noundef nonnull align 8 dereferenceable(8) %4, i64 %174, i64 %176)
          to label %178 unwind label %24

178:                                              ; preds = %172
  %179 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef @.str.14)
          to label %180 unwind label %24

180:                                              ; preds = %178
  %181 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %179, i8 noundef signext 0)
          to label %182 unwind label %24

182:                                              ; preds = %180
  %183 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 24) #8
          to label %184 unwind label %24

184:                                              ; preds = %182
  store i1 true, ptr %14, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %13) #7
  invoke void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %13, ptr noundef nonnull align 8 dereferenceable(112) %4)
          to label %185 unwind label %232

185:                                              ; preds = %184
  %186 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  invoke void @_ZN11ProgramGLSLC1EPKc(ptr noundef nonnull align 8 dereferenceable(20) %183, ptr noundef %186)
          to label %187 unwind label %236

187:                                              ; preds = %185
  store i1 false, ptr %14, align 1
  store ptr %183, ptr %3, align 8, !tbaa !5
  %188 = getelementptr inbounds %class.SiftMatchGL, ptr %18, i32 0, i32 9
  store ptr %183, ptr %188, align 8, !tbaa !32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %13) #7
  %189 = load ptr, ptr @__glewGetUniformLocation, align 8, !tbaa !5
  %190 = load ptr, ptr %3, align 8, !tbaa !5
  %191 = invoke noundef i32 @_ZN11ProgramGLSLcvjEv(ptr noundef nonnull align 8 dereferenceable(20) %190)
          to label %192 unwind label %24

192:                                              ; preds = %187
  %193 = invoke i32 %189(i32 noundef %191, ptr noundef @.str.15)
          to label %194 unwind label %24

194:                                              ; preds = %192
  %195 = getelementptr inbounds %class.SiftMatchGL, ptr %18, i32 0, i32 13
  store i32 %193, ptr %195, align 4, !tbaa !33
  invoke void @_ZNSt4fposI11__mbstate_tEC2El(ptr noundef nonnull align 8 dereferenceable(16) %15, i64 noundef 0)
          to label %196 unwind label %24

196:                                              ; preds = %194
  %197 = getelementptr inbounds { i64, i64 }, ptr %15, i32 0, i32 0
  %198 = load i64, ptr %197, align 8
  %199 = getelementptr inbounds { i64, i64 }, ptr %15, i32 0, i32 1
  %200 = load i64, ptr %199, align 8
  %201 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSo5seekpESt4fposI11__mbstate_tE(ptr noundef nonnull align 8 dereferenceable(8) %4, i64 %198, i64 %200)
          to label %202 unwind label %24

202:                                              ; preds = %196
  %203 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef @.str.16)
          to label %204 unwind label %24

204:                                              ; preds = %202
  %205 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %203, i8 noundef signext 0)
          to label %206 unwind label %24

206:                                              ; preds = %204
  %207 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 24) #8
          to label %208 unwind label %24

208:                                              ; preds = %206
  store i1 true, ptr %17, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %16) #7
  invoke void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %16, ptr noundef nonnull align 8 dereferenceable(112) %4)
          to label %209 unwind label %244

209:                                              ; preds = %208
  %210 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %16) #7
  invoke void @_ZN11ProgramGLSLC1EPKc(ptr noundef nonnull align 8 dereferenceable(20) %207, ptr noundef %210)
          to label %211 unwind label %248

211:                                              ; preds = %209
  store i1 false, ptr %17, align 1
  store ptr %207, ptr %3, align 8, !tbaa !5
  %212 = getelementptr inbounds %class.SiftMatchGL, ptr %18, i32 0, i32 8
  store ptr %207, ptr %212, align 8, !tbaa !34
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #7
  %213 = load ptr, ptr @__glewGetUniformLocation, align 8, !tbaa !5
  %214 = load ptr, ptr %3, align 8, !tbaa !5
  %215 = invoke noundef i32 @_ZN11ProgramGLSLcvjEv(ptr noundef nonnull align 8 dereferenceable(20) %214)
          to label %216 unwind label %24

216:                                              ; preds = %211
  %217 = invoke i32 %213(i32 noundef %215, ptr noundef @.str.15)
          to label %218 unwind label %24

218:                                              ; preds = %216
  %219 = getelementptr inbounds %class.SiftMatchGL, ptr %18, i32 0, i32 14
  store i32 %217, ptr %219, align 8, !tbaa !35
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %4) #7
  call void @llvm.lifetime.end.p0(i64 376, ptr %4) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #7
  ret void

220:                                              ; preds = %118
  %221 = landingpad { ptr, i32 }
          cleanup
  %222 = extractvalue { ptr, i32 } %221, 0
  store ptr %222, ptr %5, align 8
  %223 = extractvalue { ptr, i32 } %221, 1
  store i32 %223, ptr %6, align 4
  br label %228

224:                                              ; preds = %119
  %225 = landingpad { ptr, i32 }
          cleanup
  %226 = extractvalue { ptr, i32 } %225, 0
  store ptr %226, ptr %5, align 8
  %227 = extractvalue { ptr, i32 } %225, 1
  store i32 %227, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #7
  br label %228

228:                                              ; preds = %224, %220
  call void @llvm.lifetime.end.p0(i64 32, ptr %10) #7
  %229 = load i1, ptr %11, align 1
  br i1 %229, label %230, label %231

230:                                              ; preds = %228
  call void @_ZdlPvm(ptr noundef %117, i64 noundef 24) #9
  br label %231

231:                                              ; preds = %230, %228
  br label %256

232:                                              ; preds = %184
  %233 = landingpad { ptr, i32 }
          cleanup
  %234 = extractvalue { ptr, i32 } %233, 0
  store ptr %234, ptr %5, align 8
  %235 = extractvalue { ptr, i32 } %233, 1
  store i32 %235, ptr %6, align 4
  br label %240

236:                                              ; preds = %185
  %237 = landingpad { ptr, i32 }
          cleanup
  %238 = extractvalue { ptr, i32 } %237, 0
  store ptr %238, ptr %5, align 8
  %239 = extractvalue { ptr, i32 } %237, 1
  store i32 %239, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  br label %240

240:                                              ; preds = %236, %232
  call void @llvm.lifetime.end.p0(i64 32, ptr %13) #7
  %241 = load i1, ptr %14, align 1
  br i1 %241, label %242, label %243

242:                                              ; preds = %240
  call void @_ZdlPvm(ptr noundef %183, i64 noundef 24) #9
  br label %243

243:                                              ; preds = %242, %240
  br label %256

244:                                              ; preds = %208
  %245 = landingpad { ptr, i32 }
          cleanup
  %246 = extractvalue { ptr, i32 } %245, 0
  store ptr %246, ptr %5, align 8
  %247 = extractvalue { ptr, i32 } %245, 1
  store i32 %247, ptr %6, align 4
  br label %252

248:                                              ; preds = %209
  %249 = landingpad { ptr, i32 }
          cleanup
  %250 = extractvalue { ptr, i32 } %249, 0
  store ptr %250, ptr %5, align 8
  %251 = extractvalue { ptr, i32 } %249, 1
  store i32 %251, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #7
  br label %252

252:                                              ; preds = %248, %244
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #7
  %253 = load i1, ptr %17, align 1
  br i1 %253, label %254, label %255

254:                                              ; preds = %252
  call void @_ZdlPvm(ptr noundef %207, i64 noundef 24) #9
  br label %255

255:                                              ; preds = %254, %252
  br label %256

256:                                              ; preds = %255, %243, %231, %97, %24
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %4) #7
  call void @llvm.lifetime.end.p0(i64 376, ptr %4) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #7
  br label %257

257:                                              ; preds = %256
  %258 = load ptr, ptr %5, align 8
  %259 = load i32, ptr %6, align 4
  %260 = insertvalue { ptr, i32 } poison, ptr %258, 0
  %261 = insertvalue { ptr, i32 } %260, i32 %259, 1
  resume { ptr, i32 } %261
}

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #3

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8), i8 noundef signext) #3

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) #4

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) #5

; Function Attrs: mustprogress uwtable
declare void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(112)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32)) #6 align 2

declare void @_ZN11ProgramGLSLC1EPKc(ptr noundef nonnull align 8 dereferenceable(20), ptr noundef) unnamed_addr #4

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSo5seekpESt4fposI11__mbstate_tE(ptr noundef nonnull align 8 dereferenceable(8), i64, i64) #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt4fposI11__mbstate_tEC2El(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef) unnamed_addr #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112)) unnamed_addr #6 align 2

attributes #0 = { nobuiltin 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 #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 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 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { 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 #7 = { nounwind }
attributes #8 = { builtin allocsize(0) }
attributes #9 = { builtin nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !10, i64 416}
!12 = !{!"_ZTS11SiftMatchGL", !13, i64 0, !7, i64 32, !7, i64 112, !14, i64 192, !7, i64 232, !6, i64 312, !6, i64 320, !6, i64 328, !6, i64 336, !10, i64 344, !10, i64 348, !10, i64 352, !10, i64 356, !10, i64 360, !10, i64 364, !10, i64 368, !10, i64 372, !10, i64 376, !10, i64 380, !10, i64 384, !10, i64 388, !7, i64 392, !7, i64 400, !7, i64 408, !10, i64 416, !10, i64 420, !10, i64 424, !10, i64 428, !10, i64 432, !15, i64 440}
!13 = !{!"_ZTS12SiftMatchGPU", !10, i64 8, !10, i64 12, !6, i64 16, !10, i64 24}
!14 = !{!"_ZTS10GLTexImage", !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32}
!15 = !{!"_ZTSSt6vectorIfSaIfEE", !16, i64 0}
!16 = !{!"_ZTSSt12_Vector_baseIfSaIfEE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseIfSaIfEE12_Vector_implE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseIfSaIfEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!19 = !{!12, !10, i64 428}
!20 = !{!12, !6, i64 312}
!21 = !{!12, !10, i64 344}
!22 = !{!12, !10, i64 348}
!23 = !{!12, !10, i64 352}
!24 = !{!12, !6, i64 320}
!25 = !{!12, !10, i64 364}
!26 = !{!12, !10, i64 368}
!27 = !{!12, !10, i64 372}
!28 = !{!12, !10, i64 376}
!29 = !{!12, !10, i64 380}
!30 = !{!12, !10, i64 384}
!31 = !{!12, !10, i64 388}
!32 = !{!12, !6, i64 336}
!33 = !{!12, !10, i64 356}
!34 = !{!12, !6, i64 328}
!35 = !{!12, !10, i64 360}


; 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_ostringstream" = type { %"class.std::basic_ostream.base", %"class.std::__cxx11::basic_stringbuf", %"class.std::basic_ios" }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string" }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::fpos" = type { i64, %struct.__mbstate_t }
%struct.__mbstate_t = type { i32, %union.anon.3 }
%union.anon.3 = type { i32 }

@_ZN11GlobalParam9_IsNvidiaE = external local_unnamed_addr global i32, align 4
@.str = external hidden unnamed_addr constant [59 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [923 x i8], align 1
@__glewGetUniformLocation = external local_unnamed_addr global ptr, align 8
@.str.5 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [165 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [1579 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [548 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [549 x i8], align 1

declare i32 @__gxx_personality_v0(...)

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) local_unnamed_addr #0

; 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
define dso_local void @_ZN11SiftMatchGL24LoadSiftMatchShadersGLSLEv(ptr nocapture noundef nonnull align 8 dereferenceable(464) %0) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"class.std::__cxx11::basic_ostringstream", align 8
  %3 = alloca %"class.std::__cxx11::basic_string", align 8
  %4 = alloca %"class.std::fpos", align 8
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca %"class.std::fpos", align 8
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.std::fpos", align 8
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  call void @llvm.lifetime.start.p0(i64 376, ptr nonnull %2) #7
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(112) %2)
  %10 = load i32, ptr @_ZN11GlobalParam9_IsNvidiaE, align 4, !tbaa !5
  %.not = icmp eq i32 %10, 0
  br i1 %.not, label %15, label %11

11:                                               ; preds = %1
  %12 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull @.str)
          to label %15 unwind label %13

13:                                               ; preds = %159, %154, %152, %150, %144, %139, %134, %132, %130, %124, %119, %114, %109, %104, %99, %94, %89, %84, %82, %80, %78, %75, %73, %70, %68, %61, %53, %48, %43, %38, %33, %31, %29, %27, %23, %21, %17, %15, %11
  %14 = landingpad { ptr, i32 }
          cleanup
  br label %181

15:                                               ; preds = %11, %1
  %16 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull @.str.1)
          to label %17 unwind label %13

17:                                               ; preds = %15
  %18 = getelementptr inbounds i8, ptr %0, i64 416
  %19 = load i32, ptr %18, align 8, !tbaa !9
  %20 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %16, i32 noundef %19)
          to label %21 unwind label %13

21:                                               ; preds = %17
  %22 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull @.str.2)
          to label %23 unwind label %13

23:                                               ; preds = %21
  %24 = getelementptr inbounds i8, ptr %0, i64 428
  %25 = load i32, ptr %24, align 4, !tbaa !18
  %26 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %22, i32 noundef %25)
          to label %27 unwind label %13

27:                                               ; preds = %23
  %28 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull @.str.3)
          to label %29 unwind label %13

29:                                               ; preds = %27
  %30 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull @.str.4)
          to label %31 unwind label %13

31:                                               ; preds = %29
  %32 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %30, i8 noundef signext 0)
          to label %33 unwind label %13

33:                                               ; preds = %31
  %34 = invoke noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #8
          to label %35 unwind label %13

35:                                               ; preds = %33
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #7
  invoke void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %3, ptr noundef nonnull align 8 dereferenceable(112) %2)
          to label %36 unwind label %63

36:                                               ; preds = %35
  %37 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %3) #7
  invoke void @_ZN11ProgramGLSLC1EPKc(ptr noundef nonnull align 8 dereferenceable(20) %34, ptr noundef %37)
          to label %38 unwind label %65

38:                                               ; preds = %36
  %39 = getelementptr inbounds i8, ptr %0, i64 312
  store ptr %34, ptr %39, align 8, !tbaa !19
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #7
  %40 = load ptr, ptr @__glewGetUniformLocation, align 8, !tbaa !20
  %41 = call noundef i32 @_ZN11ProgramGLSLcvjEv(ptr noundef nonnull align 8 dereferenceable(20) %34)
  %42 = invoke i32 %40(i32 noundef %41, ptr noundef nonnull @.str.5)
          to label %43 unwind label %13

43:                                               ; preds = %38
  %44 = getelementptr inbounds i8, ptr %0, i64 344
  store i32 %42, ptr %44, align 8, !tbaa !21
  %45 = load ptr, ptr @__glewGetUniformLocation, align 8, !tbaa !20
  %46 = call noundef i32 @_ZN11ProgramGLSLcvjEv(ptr noundef nonnull align 8 dereferenceable(20) %34)
  %47 = invoke i32 %45(i32 noundef %46, ptr noundef nonnull @.str.6)
          to label %48 unwind label %13

48:                                               ; preds = %43
  %49 = getelementptr inbounds i8, ptr %0, i64 348
  store i32 %47, ptr %49, align 4, !tbaa !22
  %50 = load ptr, ptr @__glewGetUniformLocation, align 8, !tbaa !20
  %51 = call noundef i32 @_ZN11ProgramGLSLcvjEv(ptr noundef nonnull align 8 dereferenceable(20) %34)
  %52 = invoke i32 %50(i32 noundef %51, ptr noundef nonnull @.str.7)
          to label %53 unwind label %13

53:                                               ; preds = %48
  %54 = getelementptr inbounds i8, ptr %0, i64 352
  store i32 %52, ptr %54, align 8, !tbaa !23
  call void @_ZNSt4fposI11__mbstate_tEC2El(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef 0)
  %55 = load i64, ptr %4, align 8
  %56 = getelementptr inbounds i8, ptr %4, i64 8
  %57 = load i64, ptr %56, align 8
  %58 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSo5seekpESt4fposI11__mbstate_tE(ptr noundef nonnull align 8 dereferenceable(8) %2, i64 %55, i64 %57)
          to label %59 unwind label %13

59:                                               ; preds = %53
  %60 = load i32, ptr @_ZN11GlobalParam9_IsNvidiaE, align 4, !tbaa !5
  %.not24 = icmp eq i32 %60, 0
  br i1 %.not24, label %68, label %61

61:                                               ; preds = %59
  %62 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull @.str)
          to label %68 unwind label %13

63:                                               ; preds = %35
  %64 = landingpad { ptr, i32 }
          cleanup
  br label %67

65:                                               ; preds = %36
  %66 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #7
  br label %67

67:                                               ; preds = %65, %63
  %.pn = phi { ptr, i32 } [ %66, %65 ], [ %64, %63 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #7
  call void @_ZdlPvm(ptr noundef nonnull %34, i64 noundef 24) #9
  br label %181

68:                                               ; preds = %61, %59
  %69 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull @.str.1)
          to label %70 unwind label %13

70:                                               ; preds = %68
  %71 = load i32, ptr %18, align 8, !tbaa !9
  %72 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %69, i32 noundef %71)
          to label %73 unwind label %13

73:                                               ; preds = %70
  %74 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %72, ptr noundef nonnull @.str.2)
          to label %75 unwind label %13

75:                                               ; preds = %73
  %76 = load i32, ptr %24, align 4, !tbaa !18
  %77 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %74, i32 noundef %76)
          to label %78 unwind label %13

78:                                               ; preds = %75
  %79 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %77, ptr noundef nonnull @.str.8)
          to label %80 unwind label %13

80:                                               ; preds = %78
  %81 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %79, ptr noundef nonnull @.str.9)
          to label %82 unwind label %13

82:                                               ; preds = %80
  %83 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %81, i8 noundef signext 0)
          to label %84 unwind label %13

84:                                               ; preds = %82
  %85 = invoke noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #8
          to label %86 unwind label %13

86:                                               ; preds = %84
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #7
  invoke void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %5, ptr noundef nonnull align 8 dereferenceable(112) %2)
          to label %87 unwind label %166

87:                                               ; preds = %86
  %88 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %5) #7
  invoke void @_ZN11ProgramGLSLC1EPKc(ptr noundef nonnull align 8 dereferenceable(20) %85, ptr noundef %88)
          to label %89 unwind label %168

89:                                               ; preds = %87
  %90 = getelementptr inbounds i8, ptr %0, i64 320
  store ptr %85, ptr %90, align 8, !tbaa !24
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #7
  %91 = load ptr, ptr @__glewGetUniformLocation, align 8, !tbaa !20
  %92 = call noundef i32 @_ZN11ProgramGLSLcvjEv(ptr noundef nonnull align 8 dereferenceable(20) %85)
  %93 = invoke i32 %91(i32 noundef %92, ptr noundef nonnull @.str.5)
          to label %94 unwind label %13

94:                                               ; preds = %89
  %95 = getelementptr inbounds i8, ptr %0, i64 364
  store i32 %93, ptr %95, align 4, !tbaa !25
  %96 = load ptr, ptr @__glewGetUniformLocation, align 8, !tbaa !20
  %97 = call noundef i32 @_ZN11ProgramGLSLcvjEv(ptr noundef nonnull align 8 dereferenceable(20) %85)
  %98 = invoke i32 %96(i32 noundef %97, ptr noundef nonnull @.str.6)
          to label %99 unwind label %13

99:                                               ; preds = %94
  %100 = getelementptr inbounds i8, ptr %0, i64 368
  store i32 %98, ptr %100, align 8, !tbaa !26
  %101 = load ptr, ptr @__glewGetUniformLocation, align 8, !tbaa !20
  %102 = call noundef i32 @_ZN11ProgramGLSLcvjEv(ptr noundef nonnull align 8 dereferenceable(20) %85)
  %103 = invoke i32 %101(i32 noundef %102, ptr noundef nonnull @.str.10)
          to label %104 unwind label %13

104:                                              ; preds = %99
  %105 = getelementptr inbounds i8, ptr %0, i64 372
  store i32 %103, ptr %105, align 4, !tbaa !27
  %106 = load ptr, ptr @__glewGetUniformLocation, align 8, !tbaa !20
  %107 = call noundef i32 @_ZN11ProgramGLSLcvjEv(ptr noundef nonnull align 8 dereferenceable(20) %85)
  %108 = invoke i32 %106(i32 noundef %107, ptr noundef nonnull @.str.11)
          to label %109 unwind label %13

109:                                              ; preds = %104
  %110 = getelementptr inbounds i8, ptr %0, i64 376
  store i32 %108, ptr %110, align 8, !tbaa !28
  %111 = load ptr, ptr @__glewGetUniformLocation, align 8, !tbaa !20
  %112 = call noundef i32 @_ZN11ProgramGLSLcvjEv(ptr noundef nonnull align 8 dereferenceable(20) %85)
  %113 = invoke i32 %111(i32 noundef %112, ptr noundef nonnull @.str.12)
          to label %114 unwind label %13

114:                                              ; preds = %109
  %115 = getelementptr inbounds i8, ptr %0, i64 380
  store i32 %113, ptr %115, align 4, !tbaa !29
  %116 = load ptr, ptr @__glewGetUniformLocation, align 8, !tbaa !20
  %117 = call noundef i32 @_ZN11ProgramGLSLcvjEv(ptr noundef nonnull align 8 dereferenceable(20) %85)
  %118 = invoke i32 %116(i32 noundef %117, ptr noundef nonnull @.str.13)
          to label %119 unwind label %13

119:                                              ; preds = %114
  %120 = getelementptr inbounds i8, ptr %0, i64 384
  store i32 %118, ptr %120, align 8, !tbaa !30
  %121 = load ptr, ptr @__glewGetUniformLocation, align 8, !tbaa !20
  %122 = call noundef i32 @_ZN11ProgramGLSLcvjEv(ptr noundef nonnull align 8 dereferenceable(20) %85)
  %123 = invoke i32 %121(i32 noundef %122, ptr noundef nonnull @.str.7)
          to label %124 unwind label %13

124:                                              ; preds = %119
  %125 = getelementptr inbounds i8, ptr %0, i64 388
  store i32 %123, ptr %125, align 4, !tbaa !31
  call void @_ZNSt4fposI11__mbstate_tEC2El(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef 0)
  %126 = load i64, ptr %6, align 8
  %127 = getelementptr inbounds i8, ptr %6, i64 8
  %128 = load i64, ptr %127, align 8
  %129 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSo5seekpESt4fposI11__mbstate_tE(ptr noundef nonnull align 8 dereferenceable(8) %2, i64 %126, i64 %128)
          to label %130 unwind label %13

130:                                              ; preds = %124
  %131 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull @.str.14)
          to label %132 unwind label %13

132:                                              ; preds = %130
  %133 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %131, i8 noundef signext 0)
          to label %134 unwind label %13

134:                                              ; preds = %132
  %135 = invoke noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #8
          to label %136 unwind label %13

136:                                              ; preds = %134
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #7
  invoke void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %7, ptr noundef nonnull align 8 dereferenceable(112) %2)
          to label %137 unwind label %171

137:                                              ; preds = %136
  %138 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %7) #7
  invoke void @_ZN11ProgramGLSLC1EPKc(ptr noundef nonnull align 8 dereferenceable(20) %135, ptr noundef %138)
          to label %139 unwind label %173

139:                                              ; preds = %137
  %140 = getelementptr inbounds i8, ptr %0, i64 336
  store ptr %135, ptr %140, align 8, !tbaa !32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #7
  %141 = load ptr, ptr @__glewGetUniformLocation, align 8, !tbaa !20
  %142 = call noundef i32 @_ZN11ProgramGLSLcvjEv(ptr noundef nonnull align 8 dereferenceable(20) %135)
  %143 = invoke i32 %141(i32 noundef %142, ptr noundef nonnull @.str.15)
          to label %144 unwind label %13

144:                                              ; preds = %139
  %145 = getelementptr inbounds i8, ptr %0, i64 356
  store i32 %143, ptr %145, align 4, !tbaa !33
  call void @_ZNSt4fposI11__mbstate_tEC2El(ptr noundef nonnull align 8 dereferenceable(16) %8, i64 noundef 0)
  %146 = load i64, ptr %8, align 8
  %147 = getelementptr inbounds i8, ptr %8, i64 8
  %148 = load i64, ptr %147, align 8
  %149 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSo5seekpESt4fposI11__mbstate_tE(ptr noundef nonnull align 8 dereferenceable(8) %2, i64 %146, i64 %148)
          to label %150 unwind label %13

150:                                              ; preds = %144
  %151 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull @.str.16)
          to label %152 unwind label %13

152:                                              ; preds = %150
  %153 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %151, i8 noundef signext 0)
          to label %154 unwind label %13

154:                                              ; preds = %152
  %155 = invoke noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #8
          to label %156 unwind label %13

156:                                              ; preds = %154
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #7
  invoke void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %9, ptr noundef nonnull align 8 dereferenceable(112) %2)
          to label %157 unwind label %176

157:                                              ; preds = %156
  %158 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %9) #7
  invoke void @_ZN11ProgramGLSLC1EPKc(ptr noundef nonnull align 8 dereferenceable(20) %155, ptr noundef %158)
          to label %159 unwind label %178

159:                                              ; preds = %157
  %160 = getelementptr inbounds i8, ptr %0, i64 328
  store ptr %155, ptr %160, align 8, !tbaa !34
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #7
  %161 = load ptr, ptr @__glewGetUniformLocation, align 8, !tbaa !20
  %162 = call noundef i32 @_ZN11ProgramGLSLcvjEv(ptr noundef nonnull align 8 dereferenceable(20) %155)
  %163 = invoke i32 %161(i32 noundef %162, ptr noundef nonnull @.str.15)
          to label %164 unwind label %13

164:                                              ; preds = %159
  %165 = getelementptr inbounds i8, ptr %0, i64 360
  store i32 %163, ptr %165, align 8, !tbaa !35
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %2) #7
  call void @llvm.lifetime.end.p0(i64 376, ptr nonnull %2) #7
  ret void

166:                                              ; preds = %86
  %167 = landingpad { ptr, i32 }
          cleanup
  br label %170

168:                                              ; preds = %87
  %169 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #7
  br label %170

170:                                              ; preds = %168, %166
  %.pn25 = phi { ptr, i32 } [ %169, %168 ], [ %167, %166 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #7
  call void @_ZdlPvm(ptr noundef nonnull %85, i64 noundef 24) #9
  br label %181

171:                                              ; preds = %136
  %172 = landingpad { ptr, i32 }
          cleanup
  br label %175

173:                                              ; preds = %137
  %174 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #7
  br label %175

175:                                              ; preds = %173, %171
  %.pn27 = phi { ptr, i32 } [ %174, %173 ], [ %172, %171 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #7
  call void @_ZdlPvm(ptr noundef nonnull %135, i64 noundef 24) #9
  br label %181

176:                                              ; preds = %156
  %177 = landingpad { ptr, i32 }
          cleanup
  br label %180

178:                                              ; preds = %157
  %179 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #7
  br label %180

180:                                              ; preds = %178, %176
  %.pn29 = phi { ptr, i32 } [ %179, %178 ], [ %177, %176 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #7
  call void @_ZdlPvm(ptr noundef nonnull %155, i64 noundef 24) #9
  br label %181

181:                                              ; preds = %180, %175, %170, %67, %13
  %.pn31 = phi { ptr, i32 } [ %14, %13 ], [ %.pn29, %180 ], [ %.pn27, %175 ], [ %.pn25, %170 ], [ %.pn, %67 ]
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %2) #7
  call void @llvm.lifetime.end.p0(i64 376, ptr nonnull %2) #7
  resume { ptr, i32 } %.pn31
}

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #3

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8), i8 noundef signext) local_unnamed_addr #3

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) local_unnamed_addr #4

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
declare void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(112)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #6 align 2

declare void @_ZN11ProgramGLSLC1EPKc(ptr noundef nonnull align 8 dereferenceable(20), ptr noundef) unnamed_addr #4

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSo5seekpESt4fposI11__mbstate_tE(ptr noundef nonnull align 8 dereferenceable(8), i64, i64) local_unnamed_addr #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt4fposI11__mbstate_tEC2El(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef) unnamed_addr #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112)) unnamed_addr #6 align 2

attributes #0 = { nobuiltin 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 #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 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 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { 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 #7 = { nounwind }
attributes #8 = { builtin allocsize(0) }
attributes #9 = { builtin nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 416}
!10 = !{!"_ZTS11SiftMatchGL", !11, i64 0, !7, i64 32, !7, i64 112, !13, i64 192, !7, i64 232, !12, i64 312, !12, i64 320, !12, i64 328, !12, i64 336, !6, i64 344, !6, i64 348, !6, i64 352, !6, i64 356, !6, i64 360, !6, i64 364, !6, i64 368, !6, i64 372, !6, i64 376, !6, i64 380, !6, i64 384, !6, i64 388, !7, i64 392, !7, i64 400, !7, i64 408, !6, i64 416, !6, i64 420, !6, i64 424, !6, i64 428, !6, i64 432, !14, i64 440}
!11 = !{!"_ZTS12SiftMatchGPU", !6, i64 8, !6, i64 12, !12, i64 16, !6, i64 24}
!12 = !{!"any pointer", !7, i64 0}
!13 = !{!"_ZTS10GLTexImage", !6, i64 8, !6, i64 12, !6, i64 16, !6, i64 20, !6, i64 24, !6, i64 28, !6, i64 32}
!14 = !{!"_ZTSSt6vectorIfSaIfEE", !15, i64 0}
!15 = !{!"_ZTSSt12_Vector_baseIfSaIfEE", !16, i64 0}
!16 = !{!"_ZTSNSt12_Vector_baseIfSaIfEE12_Vector_implE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseIfSaIfEE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!18 = !{!10, !6, i64 428}
!19 = !{!10, !12, i64 312}
!20 = !{!12, !12, i64 0}
!21 = !{!10, !6, i64 344}
!22 = !{!10, !6, i64 348}
!23 = !{!10, !6, i64 352}
!24 = !{!10, !12, i64 320}
!25 = !{!10, !6, i64 364}
!26 = !{!10, !6, i64 368}
!27 = !{!10, !6, i64 372}
!28 = !{!10, !6, i64 376}
!29 = !{!10, !6, i64 380}
!30 = !{!10, !6, i64 384}
!31 = !{!10, !6, i64 388}
!32 = !{!10, !12, i64 336}
!33 = !{!10, !6, i64 356}
!34 = !{!10, !12, i64 328}
!35 = !{!10, !6, i64 360}


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