; LLVM IR from ronan-kerviche/glip-lib :: GLIP-Lib/src/Core/HdlFBO.ll (ZN4Glip6CoreGL6HdlFBOC2ERKNS0_24HdlAbstractTextureFormatEi)

; 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::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"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::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::allocator.0" = type { i8 }
%"class.Glip::CoreGL::HdlFBO" = type <{ %"class.Glip::CoreGL::HdlAbstractTextureFormat.base", [4 x i8], %"class.std::vector", i32, i8, [3 x i8], ptr, i8, [7 x i8] }>
%"class.Glip::CoreGL::HdlAbstractTextureFormat.base" = type <{ ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }>
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<Glip::CoreGL::HdlTexture *, std::allocator<Glip::CoreGL::HdlTexture *>>::_Vector_impl" }
%"struct.std::_Vector_base<Glip::CoreGL::HdlTexture *, std::allocator<Glip::CoreGL::HdlTexture *>>::_Vector_impl" = type { %"struct.std::_Vector_base<Glip::CoreGL::HdlTexture *, std::allocator<Glip::CoreGL::HdlTexture *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Glip::CoreGL::HdlTexture *, std::allocator<Glip::CoreGL::HdlTexture *>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@_ZTVN4Glip6CoreGL6HdlFBOE = external dso_local unnamed_addr constant { [7 x ptr] }, align 8
@__glewGenFramebuffers = external global ptr, align 8
@_ZSt4cerr = external global %"class.std::basic_ostream", align 8
@.str = external hidden unnamed_addr constant [134 x i8], align 1
@__glewGenFramebuffersEXT = external global ptr, align 8
@.str.1 = external hidden unnamed_addr constant [129 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [86 x i8], align 1
@_ZTIN4Glip9ExceptionE = external constant ptr
@__glewBindFramebuffer = external global ptr, align 8
@.str.3 = external hidden unnamed_addr constant [134 x i8], align 1
@__glewBindFramebufferEXT = external global ptr, align 8
@.str.4 = external hidden unnamed_addr constant [129 x i8], align 1
@__glewDeleteFramebuffers = external global ptr, align 8
@.str.5 = external hidden unnamed_addr constant [140 x i8], align 1
@__glewDeleteFramebuffersEXT = external global ptr, align 8
@.str.6 = external hidden unnamed_addr constant [135 x i8], align 1
@__glewFramebufferTexture2D = external global ptr, align 8
@.str.7 = external hidden unnamed_addr constant [144 x i8], align 1
@__glewFramebufferTexture2DEXT = external global ptr, align 8
@.str.8 = external hidden unnamed_addr constant [139 x i8], align 1
@__glewDrawBuffers = external global ptr, align 8
@.str.9 = external hidden unnamed_addr constant [126 x i8], align 1
@__glewDrawBuffersARB = external global ptr, align 8
@.str.10 = external hidden unnamed_addr constant [121 x i8], align 1
@__glewGenerateMipmap = external global ptr, align 8
@.str.11 = external hidden unnamed_addr constant [132 x i8], align 1
@__glewGenerateMipmapEXT = external global ptr, align 8
@.str.12 = external hidden unnamed_addr constant [127 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [4 x i8], align 1

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN4Glip6CoreGL6HdlFBOC2ERKNS0_24HdlAbstractTextureFormatEi(ptr noundef nonnull align 8 dereferenceable(97) %0, ptr noundef nonnull align 8 dereferenceable(52) %1, i32 noundef %2) unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca %"class.std::allocator.0", align 1
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::allocator.0", align 1
  %13 = alloca i32, align 4
  %14 = alloca i1, align 1
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca %"class.std::allocator.0", align 1
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca %"class.std::allocator.0", align 1
  %19 = alloca i32, align 4
  %20 = alloca i1, align 1
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca %"class.std::allocator.0", align 1
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.std::allocator.0", align 1
  %25 = alloca i32, align 4
  %26 = alloca i1, align 1
  %27 = alloca %"class.std::__cxx11::basic_string", align 8
  %28 = alloca %"class.std::allocator.0", align 1
  %29 = alloca %"class.std::__cxx11::basic_string", align 8
  %30 = alloca %"class.std::allocator.0", align 1
  %31 = alloca i32, align 4
  %32 = alloca i1, align 1
  %33 = alloca %"class.std::__cxx11::basic_string", align 8
  %34 = alloca %"class.std::allocator.0", align 1
  %35 = alloca %"class.std::__cxx11::basic_string", align 8
  %36 = alloca %"class.std::allocator.0", align 1
  %37 = alloca i32, align 4
  %38 = alloca i1, align 1
  %39 = alloca %"class.std::__cxx11::basic_string", align 8
  %40 = alloca %"class.std::allocator.0", align 1
  %41 = alloca %"class.std::__cxx11::basic_string", align 8
  %42 = alloca %"class.std::allocator.0", align 1
  %43 = alloca i32, align 4
  %44 = alloca i1, align 1
  %45 = alloca %"class.std::__cxx11::basic_string", align 8
  %46 = alloca %"class.std::__cxx11::basic_string", align 8
  %47 = alloca %"class.std::__cxx11::basic_string", align 8
  %48 = alloca i32, align 4
  %49 = alloca %"class.std::__cxx11::basic_string", align 8
  %50 = alloca %"class.std::allocator.0", align 1
  %51 = alloca i32, align 4
  %52 = alloca i1, align 1
  %53 = alloca i32, align 4
  %54 = alloca %"class.std::__cxx11::basic_string", align 8
  %55 = alloca %"class.std::__cxx11::basic_string", align 8
  %56 = alloca %"class.std::__cxx11::basic_string", align 8
  %57 = alloca %"class.std::__cxx11::basic_string", align 8
  %58 = alloca %"class.std::__cxx11::basic_string", align 8
  %59 = alloca %"class.std::__cxx11::basic_string", align 8
  %60 = alloca %"class.std::allocator.0", align 1
  %61 = alloca i32, align 4
  %62 = alloca i1, align 1
  %63 = alloca i32, align 4
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  store i32 %2, ptr %6, align 4, !tbaa !9
  %64 = load ptr, ptr %4, align 8
  %65 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN4Glip6CoreGL24HdlAbstractTextureFormatC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(52) %64, ptr noundef nonnull align 8 dereferenceable(52) %65)
  store ptr getelementptr inbounds inrange(-16, 40) ({ [7 x ptr] }, ptr @_ZTVN4Glip6CoreGL6HdlFBOE, i32 0, i32 0, i32 2), ptr %64, align 8, !tbaa !11
  %66 = getelementptr inbounds %"class.Glip::CoreGL::HdlFBO", ptr %64, i32 0, i32 2
  call void @_ZNSt6vectorIPN4Glip6CoreGL10HdlTextureESaIS3_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %66) #6
  %67 = getelementptr inbounds %"class.Glip::CoreGL::HdlFBO", ptr %64, i32 0, i32 3
  store i32 0, ptr %67, align 8, !tbaa !13
  %68 = getelementptr inbounds %"class.Glip::CoreGL::HdlFBO", ptr %64, i32 0, i32 4
  store i8 1, ptr %68, align 4, !tbaa !21
  %69 = getelementptr inbounds %"class.Glip::CoreGL::HdlFBO", ptr %64, i32 0, i32 6
  store ptr null, ptr %69, align 8, !tbaa !22
  %70 = getelementptr inbounds %"class.Glip::CoreGL::HdlFBO", ptr %64, i32 0, i32 7
  store i8 0, ptr %70, align 8, !tbaa !23
  %71 = load ptr, ptr @__glewGenFramebuffers, align 8, !tbaa !5
  %72 = icmp eq ptr %71, null
  br i1 %72, label %73, label %108

73:                                               ; preds = %3
  %74 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str)
          to label %75 unwind label %85

75:                                               ; preds = %73
  %76 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %74, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %77 unwind label %85

77:                                               ; preds = %75
  %78 = load ptr, ptr @__glewGenFramebuffersEXT, align 8, !tbaa !5
  %79 = icmp eq ptr %78, null
  br i1 %79, label %80, label %106

80:                                               ; preds = %77
  store i1 true, ptr %14, align 1
  %81 = call ptr @__cxa_allocate_exception(i64 152) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %9) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %10) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %10)
          to label %82 unwind label %89

82:                                               ; preds = %80
  call void @llvm.lifetime.start.p0(i64 1, ptr %12) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %83 unwind label %93

83:                                               ; preds = %82
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #6
  store i32 3, ptr %13, align 4, !tbaa !24
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %81, ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef %11, i32 noundef 137, ptr noundef nonnull align 4 dereferenceable(4) %13)
          to label %84 unwind label %97

84:                                               ; preds = %83
  store i1 false, ptr %14, align 1
  invoke void @__cxa_throw(ptr %81, ptr @_ZTIN4Glip9ExceptionE, ptr @_ZN4Glip9ExceptionD1Ev) #7
          to label %397 unwind label %97

85:                                               ; preds = %388, %317, %316, %278, %249, %247, %215, %213, %181, %179, %147, %145, %113, %111, %75, %73
  %86 = landingpad { ptr, i32 }
          cleanup
  %87 = extractvalue { ptr, i32 } %86, 0
  store ptr %87, ptr %7, align 8
  %88 = extractvalue { ptr, i32 } %86, 1
  store i32 %88, ptr %8, align 4
  br label %391

89:                                               ; preds = %80
  %90 = landingpad { ptr, i32 }
          cleanup
  %91 = extractvalue { ptr, i32 } %90, 0
  store ptr %91, ptr %7, align 8
  %92 = extractvalue { ptr, i32 } %90, 1
  store i32 %92, ptr %8, align 4
  br label %102

93:                                               ; preds = %82
  %94 = landingpad { ptr, i32 }
          cleanup
  %95 = extractvalue { ptr, i32 } %94, 0
  store ptr %95, ptr %7, align 8
  %96 = extractvalue { ptr, i32 } %94, 1
  store i32 %96, ptr %8, align 4
  br label %101

97:                                               ; preds = %84, %83
  %98 = landingpad { ptr, i32 }
          cleanup
  %99 = extractvalue { ptr, i32 } %98, 0
  store ptr %99, ptr %7, align 8
  %100 = extractvalue { ptr, i32 } %98, 1
  store i32 %100, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #6
  br label %101

101:                                              ; preds = %97, %93
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %12) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #6
  br label %102

102:                                              ; preds = %101, %89
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %9) #6
  %103 = load i1, ptr %14, align 1
  br i1 %103, label %104, label %105

104:                                              ; preds = %102
  call void @__cxa_free_exception(ptr %81) #6
  br label %105

105:                                              ; preds = %104, %102
  br label %391

106:                                              ; preds = %77
  %107 = load ptr, ptr @__glewGenFramebuffersEXT, align 8, !tbaa !5
  store ptr %107, ptr @__glewGenFramebuffers, align 8, !tbaa !5
  br label %108

108:                                              ; preds = %106, %3
  %109 = load ptr, ptr @__glewBindFramebuffer, align 8, !tbaa !5
  %110 = icmp eq ptr %109, null
  br i1 %110, label %111, label %142

111:                                              ; preds = %108
  %112 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.3)
          to label %113 unwind label %85

113:                                              ; preds = %111
  %114 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %112, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %115 unwind label %85

115:                                              ; preds = %113
  %116 = load ptr, ptr @__glewBindFramebufferEXT, align 8, !tbaa !5
  %117 = icmp eq ptr %116, null
  br i1 %117, label %118, label %140

118:                                              ; preds = %115
  store i1 true, ptr %20, align 1
  %119 = call ptr @__cxa_allocate_exception(i64 152) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %15) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef @.str.4, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %120 unwind label %123

120:                                              ; preds = %118
  call void @llvm.lifetime.start.p0(i64 1, ptr %18) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %18)
          to label %121 unwind label %127

121:                                              ; preds = %120
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #6
  store i32 3, ptr %19, align 4, !tbaa !24
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %119, ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef %17, i32 noundef 138, ptr noundef nonnull align 4 dereferenceable(4) %19)
          to label %122 unwind label %131

122:                                              ; preds = %121
  store i1 false, ptr %20, align 1
  invoke void @__cxa_throw(ptr %119, ptr @_ZTIN4Glip9ExceptionE, ptr @_ZN4Glip9ExceptionD1Ev) #7
          to label %397 unwind label %131

123:                                              ; preds = %118
  %124 = landingpad { ptr, i32 }
          cleanup
  %125 = extractvalue { ptr, i32 } %124, 0
  store ptr %125, ptr %7, align 8
  %126 = extractvalue { ptr, i32 } %124, 1
  store i32 %126, ptr %8, align 4
  br label %136

127:                                              ; preds = %120
  %128 = landingpad { ptr, i32 }
          cleanup
  %129 = extractvalue { ptr, i32 } %128, 0
  store ptr %129, ptr %7, align 8
  %130 = extractvalue { ptr, i32 } %128, 1
  store i32 %130, ptr %8, align 4
  br label %135

131:                                              ; preds = %122, %121
  %132 = landingpad { ptr, i32 }
          cleanup
  %133 = extractvalue { ptr, i32 } %132, 0
  store ptr %133, ptr %7, align 8
  %134 = extractvalue { ptr, i32 } %132, 1
  store i32 %134, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #6
  br label %135

135:                                              ; preds = %131, %127
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #6
  br label %136

136:                                              ; preds = %135, %123
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %15) #6
  %137 = load i1, ptr %20, align 1
  br i1 %137, label %138, label %139

138:                                              ; preds = %136
  call void @__cxa_free_exception(ptr %119) #6
  br label %139

139:                                              ; preds = %138, %136
  br label %391

140:                                              ; preds = %115
  %141 = load ptr, ptr @__glewBindFramebufferEXT, align 8, !tbaa !5
  store ptr %141, ptr @__glewBindFramebuffer, align 8, !tbaa !5
  br label %142

142:                                              ; preds = %140, %108
  %143 = load ptr, ptr @__glewDeleteFramebuffers, align 8, !tbaa !5
  %144 = icmp eq ptr %143, null
  br i1 %144, label %145, label %176

145:                                              ; preds = %142
  %146 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.5)
          to label %147 unwind label %85

147:                                              ; preds = %145
  %148 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %146, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %149 unwind label %85

149:                                              ; preds = %147
  %150 = load ptr, ptr @__glewDeleteFramebuffersEXT, align 8, !tbaa !5
  %151 = icmp eq ptr %150, null
  br i1 %151, label %152, label %174

152:                                              ; preds = %149
  store i1 true, ptr %26, align 1
  %153 = call ptr @__cxa_allocate_exception(i64 152) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %21) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %22) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef @.str.6, ptr noundef nonnull align 1 dereferenceable(1) %22)
          to label %154 unwind label %157

154:                                              ; preds = %152
  call void @llvm.lifetime.start.p0(i64 1, ptr %24) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %24)
          to label %155 unwind label %161

155:                                              ; preds = %154
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #6
  store i32 3, ptr %25, align 4, !tbaa !24
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %153, ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef %23, i32 noundef 139, ptr noundef nonnull align 4 dereferenceable(4) %25)
          to label %156 unwind label %165

156:                                              ; preds = %155
  store i1 false, ptr %26, align 1
  invoke void @__cxa_throw(ptr %153, ptr @_ZTIN4Glip9ExceptionE, ptr @_ZN4Glip9ExceptionD1Ev) #7
          to label %397 unwind label %165

157:                                              ; preds = %152
  %158 = landingpad { ptr, i32 }
          cleanup
  %159 = extractvalue { ptr, i32 } %158, 0
  store ptr %159, ptr %7, align 8
  %160 = extractvalue { ptr, i32 } %158, 1
  store i32 %160, ptr %8, align 4
  br label %170

161:                                              ; preds = %154
  %162 = landingpad { ptr, i32 }
          cleanup
  %163 = extractvalue { ptr, i32 } %162, 0
  store ptr %163, ptr %7, align 8
  %164 = extractvalue { ptr, i32 } %162, 1
  store i32 %164, ptr %8, align 4
  br label %169

165:                                              ; preds = %156, %155
  %166 = landingpad { ptr, i32 }
          cleanup
  %167 = extractvalue { ptr, i32 } %166, 0
  store ptr %167, ptr %7, align 8
  %168 = extractvalue { ptr, i32 } %166, 1
  store i32 %168, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #6
  br label %169

169:                                              ; preds = %165, %161
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #6
  br label %170

170:                                              ; preds = %169, %157
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #6
  %171 = load i1, ptr %26, align 1
  br i1 %171, label %172, label %173

172:                                              ; preds = %170
  call void @__cxa_free_exception(ptr %153) #6
  br label %173

173:                                              ; preds = %172, %170
  br label %391

174:                                              ; preds = %149
  %175 = load ptr, ptr @__glewDeleteFramebuffersEXT, align 8, !tbaa !5
  store ptr %175, ptr @__glewDeleteFramebuffers, align 8, !tbaa !5
  br label %176

176:                                              ; preds = %174, %142
  %177 = load ptr, ptr @__glewFramebufferTexture2D, align 8, !tbaa !5
  %178 = icmp eq ptr %177, null
  br i1 %178, label %179, label %210

179:                                              ; preds = %176
  %180 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.7)
          to label %181 unwind label %85

181:                                              ; preds = %179
  %182 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %180, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %183 unwind label %85

183:                                              ; preds = %181
  %184 = load ptr, ptr @__glewFramebufferTexture2DEXT, align 8, !tbaa !5
  %185 = icmp eq ptr %184, null
  br i1 %185, label %186, label %208

186:                                              ; preds = %183
  store i1 true, ptr %32, align 1
  %187 = call ptr @__cxa_allocate_exception(i64 152) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %27) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %28) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef @.str.8, ptr noundef nonnull align 1 dereferenceable(1) %28)
          to label %188 unwind label %191

188:                                              ; preds = %186
  call void @llvm.lifetime.start.p0(i64 1, ptr %30) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %30)
          to label %189 unwind label %195

189:                                              ; preds = %188
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #6
  store i32 3, ptr %31, align 4, !tbaa !24
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %187, ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef %29, i32 noundef 140, ptr noundef nonnull align 4 dereferenceable(4) %31)
          to label %190 unwind label %199

190:                                              ; preds = %189
  store i1 false, ptr %32, align 1
  invoke void @__cxa_throw(ptr %187, ptr @_ZTIN4Glip9ExceptionE, ptr @_ZN4Glip9ExceptionD1Ev) #7
          to label %397 unwind label %199

191:                                              ; preds = %186
  %192 = landingpad { ptr, i32 }
          cleanup
  %193 = extractvalue { ptr, i32 } %192, 0
  store ptr %193, ptr %7, align 8
  %194 = extractvalue { ptr, i32 } %192, 1
  store i32 %194, ptr %8, align 4
  br label %204

195:                                              ; preds = %188
  %196 = landingpad { ptr, i32 }
          cleanup
  %197 = extractvalue { ptr, i32 } %196, 0
  store ptr %197, ptr %7, align 8
  %198 = extractvalue { ptr, i32 } %196, 1
  store i32 %198, ptr %8, align 4
  br label %203

199:                                              ; preds = %190, %189
  %200 = landingpad { ptr, i32 }
          cleanup
  %201 = extractvalue { ptr, i32 } %200, 0
  store ptr %201, ptr %7, align 8
  %202 = extractvalue { ptr, i32 } %200, 1
  store i32 %202, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #6
  br label %203

203:                                              ; preds = %199, %195
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #6
  br label %204

204:                                              ; preds = %203, %191
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #6
  %205 = load i1, ptr %32, align 1
  br i1 %205, label %206, label %207

206:                                              ; preds = %204
  call void @__cxa_free_exception(ptr %187) #6
  br label %207

207:                                              ; preds = %206, %204
  br label %391

208:                                              ; preds = %183
  %209 = load ptr, ptr @__glewFramebufferTexture2DEXT, align 8, !tbaa !5
  store ptr %209, ptr @__glewFramebufferTexture2D, align 8, !tbaa !5
  br label %210

210:                                              ; preds = %208, %176
  %211 = load ptr, ptr @__glewDrawBuffers, align 8, !tbaa !5
  %212 = icmp eq ptr %211, null
  br i1 %212, label %213, label %244

213:                                              ; preds = %210
  %214 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.9)
          to label %215 unwind label %85

215:                                              ; preds = %213
  %216 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %214, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %217 unwind label %85

217:                                              ; preds = %215
  %218 = load ptr, ptr @__glewDrawBuffersARB, align 8, !tbaa !5
  %219 = icmp eq ptr %218, null
  br i1 %219, label %220, label %242

220:                                              ; preds = %217
  store i1 true, ptr %38, align 1
  %221 = call ptr @__cxa_allocate_exception(i64 152) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %33) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %34) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef @.str.10, ptr noundef nonnull align 1 dereferenceable(1) %34)
          to label %222 unwind label %225

222:                                              ; preds = %220
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %36)
          to label %223 unwind label %229

223:                                              ; preds = %222
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #6
  store i32 3, ptr %37, align 4, !tbaa !24
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %221, ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef %35, i32 noundef 141, ptr noundef nonnull align 4 dereferenceable(4) %37)
          to label %224 unwind label %233

224:                                              ; preds = %223
  store i1 false, ptr %38, align 1
  invoke void @__cxa_throw(ptr %221, ptr @_ZTIN4Glip9ExceptionE, ptr @_ZN4Glip9ExceptionD1Ev) #7
          to label %397 unwind label %233

225:                                              ; preds = %220
  %226 = landingpad { ptr, i32 }
          cleanup
  %227 = extractvalue { ptr, i32 } %226, 0
  store ptr %227, ptr %7, align 8
  %228 = extractvalue { ptr, i32 } %226, 1
  store i32 %228, ptr %8, align 4
  br label %238

229:                                              ; preds = %222
  %230 = landingpad { ptr, i32 }
          cleanup
  %231 = extractvalue { ptr, i32 } %230, 0
  store ptr %231, ptr %7, align 8
  %232 = extractvalue { ptr, i32 } %230, 1
  store i32 %232, ptr %8, align 4
  br label %237

233:                                              ; preds = %224, %223
  %234 = landingpad { ptr, i32 }
          cleanup
  %235 = extractvalue { ptr, i32 } %234, 0
  store ptr %235, ptr %7, align 8
  %236 = extractvalue { ptr, i32 } %234, 1
  store i32 %236, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #6
  br label %237

237:                                              ; preds = %233, %229
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #6
  br label %238

238:                                              ; preds = %237, %225
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %33) #6
  %239 = load i1, ptr %38, align 1
  br i1 %239, label %240, label %241

240:                                              ; preds = %238
  call void @__cxa_free_exception(ptr %221) #6
  br label %241

241:                                              ; preds = %240, %238
  br label %391

242:                                              ; preds = %217
  %243 = load ptr, ptr @__glewDrawBuffersARB, align 8, !tbaa !5
  store ptr %243, ptr @__glewDrawBuffers, align 8, !tbaa !5
  br label %244

244:                                              ; preds = %242, %210
  %245 = load ptr, ptr @__glewGenerateMipmap, align 8, !tbaa !5
  %246 = icmp eq ptr %245, null
  br i1 %246, label %247, label %278

247:                                              ; preds = %244
  %248 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.11)
          to label %249 unwind label %85

249:                                              ; preds = %247
  %250 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %248, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %251 unwind label %85

251:                                              ; preds = %249
  %252 = load ptr, ptr @__glewGenerateMipmapEXT, align 8, !tbaa !5
  %253 = icmp eq ptr %252, null
  br i1 %253, label %254, label %276

254:                                              ; preds = %251
  store i1 true, ptr %44, align 1
  %255 = call ptr @__cxa_allocate_exception(i64 152) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %39) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %40) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %39, ptr noundef @.str.12, ptr noundef nonnull align 1 dereferenceable(1) %40)
          to label %256 unwind label %259

256:                                              ; preds = %254
  call void @llvm.lifetime.start.p0(i64 1, ptr %42) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %41, ptr noundef @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %42)
          to label %257 unwind label %263

257:                                              ; preds = %256
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #6
  store i32 3, ptr %43, align 4, !tbaa !24
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %255, ptr noundef nonnull align 8 dereferenceable(32) %39, ptr noundef %41, i32 noundef 142, ptr noundef nonnull align 4 dereferenceable(4) %43)
          to label %258 unwind label %267

258:                                              ; preds = %257
  store i1 false, ptr %44, align 1
  invoke void @__cxa_throw(ptr %255, ptr @_ZTIN4Glip9ExceptionE, ptr @_ZN4Glip9ExceptionD1Ev) #7
          to label %397 unwind label %267

259:                                              ; preds = %254
  %260 = landingpad { ptr, i32 }
          cleanup
  %261 = extractvalue { ptr, i32 } %260, 0
  store ptr %261, ptr %7, align 8
  %262 = extractvalue { ptr, i32 } %260, 1
  store i32 %262, ptr %8, align 4
  br label %272

263:                                              ; preds = %256
  %264 = landingpad { ptr, i32 }
          cleanup
  %265 = extractvalue { ptr, i32 } %264, 0
  store ptr %265, ptr %7, align 8
  %266 = extractvalue { ptr, i32 } %264, 1
  store i32 %266, ptr %8, align 4
  br label %271

267:                                              ; preds = %258, %257
  %268 = landingpad { ptr, i32 }
          cleanup
  %269 = extractvalue { ptr, i32 } %268, 0
  store ptr %269, ptr %7, align 8
  %270 = extractvalue { ptr, i32 } %268, 1
  store i32 %270, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #6
  br label %271

271:                                              ; preds = %267, %263
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #6
  br label %272

272:                                              ; preds = %271, %259
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %39) #6
  %273 = load i1, ptr %44, align 1
  br i1 %273, label %274, label %275

274:                                              ; preds = %272
  call void @__cxa_free_exception(ptr %255) #6
  br label %275

275:                                              ; preds = %274, %272
  br label %391

276:                                              ; preds = %251
  %277 = load ptr, ptr @__glewGenerateMipmapEXT, align 8, !tbaa !5
  store ptr %277, ptr @__glewGenerateMipmap, align 8, !tbaa !5
  br label %278

278:                                              ; preds = %276, %244
  %279 = invoke noundef zeroext i1 @_ZNK4Glip6CoreGL24HdlAbstractTextureFormat12isCompressedEv(ptr noundef nonnull align 8 dereferenceable(52) %64)
          to label %280 unwind label %85

280:                                              ; preds = %278
  br i1 %279, label %281, label %316

281:                                              ; preds = %280
  store i1 true, ptr %52, align 1
  %282 = call ptr @__cxa_allocate_exception(i64 152) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %45) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %46) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %47) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #6
  %283 = invoke noundef i32 @_ZNK4Glip6CoreGL24HdlAbstractTextureFormat9getGLModeEv(ptr noundef nonnull align 8 dereferenceable(52) %64)
          to label %284 unwind label %289

284:                                              ; preds = %281
  store i32 %283, ptr %48, align 4, !tbaa !9
  call void @_ZN4Glip6CoreGL17getGLEnumNameSafeB5cxx11ERKj(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %47, ptr noundef nonnull align 4 dereferenceable(4) %48) #6
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %46, ptr noundef @.str.13, ptr noundef nonnull align 8 dereferenceable(32) %47)
          to label %285 unwind label %293

285:                                              ; preds = %284
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %45, ptr noundef nonnull align 8 dereferenceable(32) %46, ptr noundef @.str.14)
          to label %286 unwind label %297

286:                                              ; preds = %285
  call void @llvm.lifetime.start.p0(i64 1, ptr %50) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %49, ptr noundef @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %50)
          to label %287 unwind label %301

287:                                              ; preds = %286
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #6
  store i32 3, ptr %51, align 4, !tbaa !24
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %282, ptr noundef nonnull align 8 dereferenceable(32) %45, ptr noundef %49, i32 noundef 146, ptr noundef nonnull align 4 dereferenceable(4) %51)
          to label %288 unwind label %305

288:                                              ; preds = %287
  store i1 false, ptr %52, align 1
  invoke void @__cxa_throw(ptr %282, ptr @_ZTIN4Glip9ExceptionE, ptr @_ZN4Glip9ExceptionD1Ev) #7
          to label %397 unwind label %305

289:                                              ; preds = %281
  %290 = landingpad { ptr, i32 }
          cleanup
  %291 = extractvalue { ptr, i32 } %290, 0
  store ptr %291, ptr %7, align 8
  %292 = extractvalue { ptr, i32 } %290, 1
  store i32 %292, ptr %8, align 4
  br label %312

293:                                              ; preds = %284
  %294 = landingpad { ptr, i32 }
          cleanup
  %295 = extractvalue { ptr, i32 } %294, 0
  store ptr %295, ptr %7, align 8
  %296 = extractvalue { ptr, i32 } %294, 1
  store i32 %296, ptr %8, align 4
  br label %311

297:                                              ; preds = %285
  %298 = landingpad { ptr, i32 }
          cleanup
  %299 = extractvalue { ptr, i32 } %298, 0
  store ptr %299, ptr %7, align 8
  %300 = extractvalue { ptr, i32 } %298, 1
  store i32 %300, ptr %8, align 4
  br label %310

301:                                              ; preds = %286
  %302 = landingpad { ptr, i32 }
          cleanup
  %303 = extractvalue { ptr, i32 } %302, 0
  store ptr %303, ptr %7, align 8
  %304 = extractvalue { ptr, i32 } %302, 1
  store i32 %304, ptr %8, align 4
  br label %309

305:                                              ; preds = %288, %287
  %306 = landingpad { ptr, i32 }
          cleanup
  %307 = extractvalue { ptr, i32 } %306, 0
  store ptr %307, ptr %7, align 8
  %308 = extractvalue { ptr, i32 } %306, 1
  store i32 %308, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #6
  br label %309

309:                                              ; preds = %305, %301
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %50) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #6
  br label %310

310:                                              ; preds = %309, %297
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #6
  br label %311

311:                                              ; preds = %310, %293
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #6
  br label %312

312:                                              ; preds = %311, %289
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %47) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %46) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %45) #6
  %313 = load i1, ptr %52, align 1
  br i1 %313, label %314, label %315

314:                                              ; preds = %312
  call void @__cxa_free_exception(ptr %282) #6
  br label %315

315:                                              ; preds = %314, %312
  br label %391

316:                                              ; preds = %280
  invoke void @glDisable(i32 noundef 2929)
          to label %317 unwind label %85

317:                                              ; preds = %316
  %318 = load ptr, ptr @__glewGenFramebuffers, align 8, !tbaa !5
  %319 = getelementptr inbounds %"class.Glip::CoreGL::HdlFBO", ptr %64, i32 0, i32 3
  invoke void %318(i32 noundef 1, ptr noundef %319)
          to label %320 unwind label %85

320:                                              ; preds = %317
  %321 = getelementptr inbounds %"class.Glip::CoreGL::HdlFBO", ptr %64, i32 0, i32 3
  %322 = load i32, ptr %321, align 8, !tbaa !13
  %323 = icmp eq i32 %322, 0
  br i1 %323, label %324, label %371

324:                                              ; preds = %320
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #6
  %325 = invoke i32 @glGetError()
          to label %326 unwind label %334

326:                                              ; preds = %324
  store i32 %325, ptr %53, align 4, !tbaa !9
  store i1 true, ptr %62, align 1
  %327 = call ptr @__cxa_allocate_exception(i64 152) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %54) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %55) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %56) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %57) #6
  call void @_ZN4Glip6CoreGL17getGLEnumNameSafeB5cxx11ERKj(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %57, ptr noundef nonnull align 4 dereferenceable(4) %53) #6
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %56, ptr noundef @.str.15, ptr noundef nonnull align 8 dereferenceable(32) %57)
          to label %328 unwind label %338

328:                                              ; preds = %326
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %55, ptr noundef nonnull align 8 dereferenceable(32) %56, ptr noundef @.str.16)
          to label %329 unwind label %342

329:                                              ; preds = %328
  call void @llvm.lifetime.start.p0(i64 32, ptr %58) #6
  invoke void @_ZN4Glip6CoreGL21getGLErrorDescriptionB5cxx11ERKj(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %58, ptr noundef nonnull align 4 dereferenceable(4) %53)
          to label %330 unwind label %346

330:                                              ; preds = %329
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %54, ptr noundef nonnull align 8 dereferenceable(32) %55, ptr noundef nonnull align 8 dereferenceable(32) %58)
          to label %331 unwind label %350

331:                                              ; preds = %330
  call void @llvm.lifetime.start.p0(i64 1, ptr %60) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %60) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %59, ptr noundef @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %60)
          to label %332 unwind label %354

332:                                              ; preds = %331
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #6
  store i32 3, ptr %61, align 4, !tbaa !24
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %327, ptr noundef nonnull align 8 dereferenceable(32) %54, ptr noundef %59, i32 noundef 159, ptr noundef nonnull align 4 dereferenceable(4) %61)
          to label %333 unwind label %358

333:                                              ; preds = %332
  store i1 false, ptr %62, align 1
  invoke void @__cxa_throw(ptr %327, ptr @_ZTIN4Glip9ExceptionE, ptr @_ZN4Glip9ExceptionD1Ev) #7
          to label %397 unwind label %358

334:                                              ; preds = %324
  %335 = landingpad { ptr, i32 }
          cleanup
  %336 = extractvalue { ptr, i32 } %335, 0
  store ptr %336, ptr %7, align 8
  %337 = extractvalue { ptr, i32 } %335, 1
  store i32 %337, ptr %8, align 4
  br label %370

338:                                              ; preds = %326
  %339 = landingpad { ptr, i32 }
          cleanup
  %340 = extractvalue { ptr, i32 } %339, 0
  store ptr %340, ptr %7, align 8
  %341 = extractvalue { ptr, i32 } %339, 1
  store i32 %341, ptr %8, align 4
  br label %366

342:                                              ; preds = %328
  %343 = landingpad { ptr, i32 }
          cleanup
  %344 = extractvalue { ptr, i32 } %343, 0
  store ptr %344, ptr %7, align 8
  %345 = extractvalue { ptr, i32 } %343, 1
  store i32 %345, ptr %8, align 4
  br label %365

346:                                              ; preds = %329
  %347 = landingpad { ptr, i32 }
          cleanup
  %348 = extractvalue { ptr, i32 } %347, 0
  store ptr %348, ptr %7, align 8
  %349 = extractvalue { ptr, i32 } %347, 1
  store i32 %349, ptr %8, align 4
  br label %364

350:                                              ; preds = %330
  %351 = landingpad { ptr, i32 }
          cleanup
  %352 = extractvalue { ptr, i32 } %351, 0
  store ptr %352, ptr %7, align 8
  %353 = extractvalue { ptr, i32 } %351, 1
  store i32 %353, ptr %8, align 4
  br label %363

354:                                              ; preds = %331
  %355 = landingpad { ptr, i32 }
          cleanup
  %356 = extractvalue { ptr, i32 } %355, 0
  store ptr %356, ptr %7, align 8
  %357 = extractvalue { ptr, i32 } %355, 1
  store i32 %357, ptr %8, align 4
  br label %362

358:                                              ; preds = %333, %332
  %359 = landingpad { ptr, i32 }
          cleanup
  %360 = extractvalue { ptr, i32 } %359, 0
  store ptr %360, ptr %7, align 8
  %361 = extractvalue { ptr, i32 } %359, 1
  store i32 %361, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #6
  br label %362

362:                                              ; preds = %358, %354
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %60) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %60) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #6
  br label %363

363:                                              ; preds = %362, %350
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #6
  br label %364

364:                                              ; preds = %363, %346
  call void @llvm.lifetime.end.p0(i64 32, ptr %58) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #6
  br label %365

365:                                              ; preds = %364, %342
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #6
  br label %366

366:                                              ; preds = %365, %338
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %57) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %56) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %55) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %54) #6
  %367 = load i1, ptr %62, align 1
  br i1 %367, label %368, label %369

368:                                              ; preds = %366
  call void @__cxa_free_exception(ptr %327) #6
  br label %369

369:                                              ; preds = %368, %366
  br label %370

370:                                              ; preds = %369, %334
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #6
  br label %391

371:                                              ; preds = %320
  br label %372

372:                                              ; preds = %371
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #6
  store i32 0, ptr %63, align 4, !tbaa !9
  br label %373

373:                                              ; preds = %381, %372
  %374 = load i32, ptr %63, align 4, !tbaa !9
  %375 = load i32, ptr %6, align 4, !tbaa !9
  %376 = icmp slt i32 %374, %375
  br i1 %376, label %378, label %377

377:                                              ; preds = %373
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #6
  br label %388

378:                                              ; preds = %373
  %379 = invoke noundef i32 @_ZN4Glip6CoreGL6HdlFBO9addTargetEv(ptr noundef nonnull align 8 dereferenceable(97) %64)
          to label %380 unwind label %384

380:                                              ; preds = %378
  br label %381

381:                                              ; preds = %380
  %382 = load i32, ptr %63, align 4, !tbaa !9
  %383 = add nsw i32 %382, 1
  store i32 %383, ptr %63, align 4, !tbaa !9
  br label %373, !llvm.loop !26

384:                                              ; preds = %378
  %385 = landingpad { ptr, i32 }
          cleanup
  %386 = extractvalue { ptr, i32 } %385, 0
  store ptr %386, ptr %7, align 8
  %387 = extractvalue { ptr, i32 } %385, 1
  store i32 %387, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #6
  br label %391

388:                                              ; preds = %377
  %389 = load ptr, ptr @__glewBindFramebuffer, align 8, !tbaa !5
  invoke void %389(i32 noundef 36160, i32 noundef 0)
          to label %390 unwind label %85

390:                                              ; preds = %388
  ret void

391:                                              ; preds = %384, %370, %315, %275, %241, %207, %173, %139, %105, %85
  call void @_ZNSt6vectorIPN4Glip6CoreGL10HdlTextureESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %66) #6
  call void @_ZN4Glip6CoreGL24HdlAbstractTextureFormatD2Ev(ptr noundef nonnull align 8 dereferenceable(52) %64) #6
  br label %392

392:                                              ; preds = %391
  %393 = load ptr, ptr %7, align 8
  %394 = load i32, ptr %8, align 4
  %395 = insertvalue { ptr, i32 } poison, ptr %393, 0
  %396 = insertvalue { ptr, i32 } %395, i32 %394, 1
  resume { ptr, i32 } %396

397:                                              ; preds = %333, %288, %258, %224, %190, %156, %122, %84
  unreachable
}

declare void @_ZN4Glip6CoreGL24HdlAbstractTextureFormatC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(52), ptr noundef nonnull align 8 dereferenceable(52)) unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIPN4Glip6CoreGL10HdlTextureESaIS3_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) 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: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #0 align 2

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

declare ptr @__cxa_allocate_exception(i64)

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

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

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

declare void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, i32 noundef, ptr noundef nonnull align 4 dereferenceable(4)) unnamed_addr #1

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

declare void @__cxa_throw(ptr, ptr, ptr)

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

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

declare void @__cxa_free_exception(ptr)

declare noundef zeroext i1 @_ZNK4Glip6CoreGL24HdlAbstractTextureFormat12isCompressedEv(ptr noundef nonnull align 8 dereferenceable(52)) #1

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #3

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) #3

; Function Attrs: nounwind
declare void @_ZN4Glip6CoreGL17getGLEnumNameSafeB5cxx11ERKj(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 4 dereferenceable(4)) #5

declare noundef i32 @_ZNK4Glip6CoreGL24HdlAbstractTextureFormat9getGLModeEv(ptr noundef nonnull align 8 dereferenceable(52)) #1

declare void @glDisable(i32 noundef) #1

declare i32 @glGetError() #1

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) #3

declare void @_ZN4Glip6CoreGL21getGLErrorDescriptionB5cxx11ERKj(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 4 dereferenceable(4)) #1

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

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

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

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

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

!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, !12, i64 0}
!12 = !{!"vtable pointer", !8, i64 0}
!13 = !{!14, !10, i64 80}
!14 = !{!"_ZTSN4Glip6CoreGL6HdlFBOE", !15, i64 0, !16, i64 56, !10, i64 80, !20, i64 84, !6, i64 88, !20, i64 96}
!15 = !{!"_ZTSN4Glip6CoreGL24HdlAbstractTextureFormatE", !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48}
!16 = !{!"_ZTSSt6vectorIPN4Glip6CoreGL10HdlTextureESaIS3_EE", !17, i64 0}
!17 = !{!"_ZTSSt12_Vector_baseIPN4Glip6CoreGL10HdlTextureESaIS3_EE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseIPN4Glip6CoreGL10HdlTextureESaIS3_EE12_Vector_implE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIPN4Glip6CoreGL10HdlTextureESaIS3_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!20 = !{!"bool", !7, i64 0}
!21 = !{!14, !20, i64 84}
!22 = !{!14, !6, i64 88}
!23 = !{!14, !20, i64 96}
!24 = !{!25, !25, i64 0}
!25 = !{!"_ZTSN4Glip9Exception4TypeE", !7, i64 0}
!26 = distinct !{!26, !27}
!27 = !{!"llvm.loop.mustprogress"}


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

%"class.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"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::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::allocator.0" = type { i8 }

@_ZTVN4Glip6CoreGL6HdlFBOE = external dso_local unnamed_addr constant { [7 x ptr] }, align 8
@__glewGenFramebuffers = external local_unnamed_addr global ptr, align 8
@_ZSt4cerr = external global %"class.std::basic_ostream", align 8
@.str = external hidden unnamed_addr constant [134 x i8], align 1
@__glewGenFramebuffersEXT = external local_unnamed_addr global ptr, align 8
@.str.1 = external hidden unnamed_addr constant [129 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [86 x i8], align 1
@_ZTIN4Glip9ExceptionE = external constant ptr
@__glewBindFramebuffer = external local_unnamed_addr global ptr, align 8
@.str.3 = external hidden unnamed_addr constant [134 x i8], align 1
@__glewBindFramebufferEXT = external local_unnamed_addr global ptr, align 8
@.str.4 = external hidden unnamed_addr constant [129 x i8], align 1
@__glewDeleteFramebuffers = external local_unnamed_addr global ptr, align 8
@.str.5 = external hidden unnamed_addr constant [140 x i8], align 1
@__glewDeleteFramebuffersEXT = external local_unnamed_addr global ptr, align 8
@.str.6 = external hidden unnamed_addr constant [135 x i8], align 1
@__glewFramebufferTexture2D = external local_unnamed_addr global ptr, align 8
@.str.7 = external hidden unnamed_addr constant [144 x i8], align 1
@__glewFramebufferTexture2DEXT = external local_unnamed_addr global ptr, align 8
@.str.8 = external hidden unnamed_addr constant [139 x i8], align 1
@__glewDrawBuffers = external local_unnamed_addr global ptr, align 8
@.str.9 = external hidden unnamed_addr constant [126 x i8], align 1
@__glewDrawBuffersARB = external local_unnamed_addr global ptr, align 8
@.str.10 = external hidden unnamed_addr constant [121 x i8], align 1
@__glewGenerateMipmap = external local_unnamed_addr global ptr, align 8
@.str.11 = external hidden unnamed_addr constant [132 x i8], align 1
@__glewGenerateMipmapEXT = external local_unnamed_addr global ptr, align 8
@.str.12 = external hidden unnamed_addr constant [127 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [4 x i8], align 1

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN4Glip6CoreGL6HdlFBOC2ERKNS0_24HdlAbstractTextureFormatEi(ptr noundef nonnull align 8 dereferenceable(97) %0, ptr noundef nonnull align 8 dereferenceable(52) %1, i32 noundef %2) unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca %"class.std::__cxx11::basic_string", align 8
  %5 = alloca %"class.std::allocator.0", align 1
  %6 = alloca %"class.std::__cxx11::basic_string", align 8
  %7 = alloca %"class.std::allocator.0", align 1
  %8 = alloca i32, align 4
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca %"class.std::allocator.0", align 1
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::allocator.0", align 1
  %13 = alloca i32, align 4
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %"class.std::allocator.0", align 1
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca %"class.std::allocator.0", align 1
  %18 = alloca i32, align 4
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"class.std::allocator.0", align 1
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca %"class.std::allocator.0", align 1
  %23 = alloca i32, align 4
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.std::allocator.0", align 1
  %26 = alloca %"class.std::__cxx11::basic_string", align 8
  %27 = alloca %"class.std::allocator.0", align 1
  %28 = alloca i32, align 4
  %29 = alloca %"class.std::__cxx11::basic_string", align 8
  %30 = alloca %"class.std::allocator.0", align 1
  %31 = alloca %"class.std::__cxx11::basic_string", align 8
  %32 = alloca %"class.std::allocator.0", align 1
  %33 = alloca i32, align 4
  %34 = alloca %"class.std::__cxx11::basic_string", align 8
  %35 = alloca %"class.std::__cxx11::basic_string", align 8
  %36 = alloca %"class.std::__cxx11::basic_string", align 8
  %37 = alloca i32, align 4
  %38 = alloca %"class.std::__cxx11::basic_string", align 8
  %39 = alloca %"class.std::allocator.0", align 1
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca %"class.std::__cxx11::basic_string", align 8
  %43 = alloca %"class.std::__cxx11::basic_string", align 8
  %44 = alloca %"class.std::__cxx11::basic_string", align 8
  %45 = alloca %"class.std::__cxx11::basic_string", align 8
  %46 = alloca %"class.std::__cxx11::basic_string", align 8
  %47 = alloca %"class.std::__cxx11::basic_string", align 8
  %48 = alloca %"class.std::allocator.0", align 1
  %49 = alloca i32, align 4
  tail call void @_ZN4Glip6CoreGL24HdlAbstractTextureFormatC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(52) %0, ptr noundef nonnull align 8 dereferenceable(52) %1)
  store ptr getelementptr inbounds inrange(-16, 40) (i8, ptr @_ZTVN4Glip6CoreGL6HdlFBOE, i64 16), ptr %0, align 8, !tbaa !5
  %50 = getelementptr inbounds i8, ptr %0, i64 56
  tail call void @_ZNSt6vectorIPN4Glip6CoreGL10HdlTextureESaIS3_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %50) #6
  %51 = getelementptr inbounds i8, ptr %0, i64 80
  store i32 0, ptr %51, align 8, !tbaa !8
  %52 = getelementptr inbounds i8, ptr %0, i64 84
  store i8 1, ptr %52, align 4, !tbaa !19
  %53 = getelementptr inbounds i8, ptr %0, i64 88
  store ptr null, ptr %53, align 8, !tbaa !20
  %54 = getelementptr inbounds i8, ptr %0, i64 96
  store i8 0, ptr %54, align 8, !tbaa !21
  %55 = load ptr, ptr @__glewGenFramebuffers, align 8, !tbaa !22
  %56 = icmp eq ptr %55, null
  br i1 %56, label %57, label %79

57:                                               ; preds = %3
  %58 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @.str)
          to label %59 unwind label %69

59:                                               ; preds = %57
  %60 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %58, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %61 unwind label %69

61:                                               ; preds = %59
  %62 = load ptr, ptr @__glewGenFramebuffersEXT, align 8, !tbaa !22
  %63 = icmp eq ptr %62, null
  br i1 %63, label %64, label %78

64:                                               ; preds = %61
  %65 = tail call ptr @__cxa_allocate_exception(i64 152) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %5) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %5)
          to label %66 unwind label %.thread

66:                                               ; preds = %64
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %7) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %7)
          to label %67 unwind label %72

67:                                               ; preds = %66
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #6
  store i32 3, ptr %8, align 4, !tbaa !23
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %65, ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull %6, i32 noundef 137, ptr noundef nonnull align 4 dereferenceable(4) %8)
          to label %68 unwind label %74

68:                                               ; preds = %67
  invoke void @__cxa_throw(ptr nonnull %65, ptr nonnull @_ZTIN4Glip9ExceptionE, ptr nonnull @_ZN4Glip9ExceptionD1Ev) #7
          to label %260 unwind label %74

69:                                               ; preds = %._crit_edge, %217, %216, %194, %176, %174, %153, %151, %130, %128, %107, %105, %84, %82, %59, %57
  %70 = landingpad { ptr, i32 }
          cleanup
  br label %259

.thread:                                          ; preds = %64
  %71 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #6
  br label %77

72:                                               ; preds = %66
  %73 = landingpad { ptr, i32 }
          cleanup
  br label %76

74:                                               ; preds = %68, %67
  %.035 = phi i1 [ false, %68 ], [ true, %67 ]
  %75 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #6
  br label %76

76:                                               ; preds = %72, %74
  %.pn99 = phi { ptr, i32 } [ %75, %74 ], [ %73, %72 ]
  %.136 = phi i1 [ %.035, %74 ], [ true, %72 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #6
  br i1 %.136, label %77, label %259

77:                                               ; preds = %.thread, %76
  %.pn99.pn105 = phi { ptr, i32 } [ %71, %.thread ], [ %.pn99, %76 ]
  call void @__cxa_free_exception(ptr %65) #6
  br label %259

78:                                               ; preds = %61
  store ptr %62, ptr @__glewGenFramebuffers, align 8, !tbaa !22
  br label %79

79:                                               ; preds = %78, %3
  %80 = load ptr, ptr @__glewBindFramebuffer, align 8, !tbaa !22
  %81 = icmp eq ptr %80, null
  br i1 %81, label %82, label %102

82:                                               ; preds = %79
  %83 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @.str.3)
          to label %84 unwind label %69

84:                                               ; preds = %82
  %85 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %83, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %86 unwind label %69

86:                                               ; preds = %84
  %87 = load ptr, ptr @__glewBindFramebufferEXT, align 8, !tbaa !22
  %88 = icmp eq ptr %87, null
  br i1 %88, label %89, label %101

89:                                               ; preds = %86
  %90 = tail call ptr @__cxa_allocate_exception(i64 152) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull @.str.4, ptr noundef nonnull align 1 dereferenceable(1) %10)
          to label %91 unwind label %.thread106

91:                                               ; preds = %89
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %12) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %92 unwind label %95

92:                                               ; preds = %91
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #6
  store i32 3, ptr %13, align 4, !tbaa !23
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %90, ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull %11, i32 noundef 138, ptr noundef nonnull align 4 dereferenceable(4) %13)
          to label %93 unwind label %97

93:                                               ; preds = %92
  invoke void @__cxa_throw(ptr nonnull %90, ptr nonnull @_ZTIN4Glip9ExceptionE, ptr nonnull @_ZN4Glip9ExceptionD1Ev) #7
          to label %260 unwind label %97

.thread106:                                       ; preds = %89
  %94 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #6
  br label %100

95:                                               ; preds = %91
  %96 = landingpad { ptr, i32 }
          cleanup
  br label %99

97:                                               ; preds = %93, %92
  %.032 = phi i1 [ false, %93 ], [ true, %92 ]
  %98 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #6
  br label %99

99:                                               ; preds = %95, %97
  %.pn96 = phi { ptr, i32 } [ %98, %97 ], [ %96, %95 ]
  %.133 = phi i1 [ %.032, %97 ], [ true, %95 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #6
  br i1 %.133, label %100, label %259

100:                                              ; preds = %.thread106, %99
  %.pn96.pn109 = phi { ptr, i32 } [ %94, %.thread106 ], [ %.pn96, %99 ]
  call void @__cxa_free_exception(ptr %90) #6
  br label %259

101:                                              ; preds = %86
  store ptr %87, ptr @__glewBindFramebuffer, align 8, !tbaa !22
  br label %102

102:                                              ; preds = %101, %79
  %103 = load ptr, ptr @__glewDeleteFramebuffers, align 8, !tbaa !22
  %104 = icmp eq ptr %103, null
  br i1 %104, label %105, label %125

105:                                              ; preds = %102
  %106 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @.str.5)
          to label %107 unwind label %69

107:                                              ; preds = %105
  %108 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %106, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %109 unwind label %69

109:                                              ; preds = %107
  %110 = load ptr, ptr @__glewDeleteFramebuffersEXT, align 8, !tbaa !22
  %111 = icmp eq ptr %110, null
  br i1 %111, label %112, label %124

112:                                              ; preds = %109
  %113 = tail call ptr @__cxa_allocate_exception(i64 152) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %15) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull @.str.6, ptr noundef nonnull align 1 dereferenceable(1) %15)
          to label %114 unwind label %.thread110

114:                                              ; preds = %112
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %17) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %17)
          to label %115 unwind label %118

115:                                              ; preds = %114
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #6
  store i32 3, ptr %18, align 4, !tbaa !23
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %113, ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull %16, i32 noundef 139, ptr noundef nonnull align 4 dereferenceable(4) %18)
          to label %116 unwind label %120

116:                                              ; preds = %115
  invoke void @__cxa_throw(ptr nonnull %113, ptr nonnull @_ZTIN4Glip9ExceptionE, ptr nonnull @_ZN4Glip9ExceptionD1Ev) #7
          to label %260 unwind label %120

.thread110:                                       ; preds = %112
  %117 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #6
  br label %123

118:                                              ; preds = %114
  %119 = landingpad { ptr, i32 }
          cleanup
  br label %122

120:                                              ; preds = %116, %115
  %.029 = phi i1 [ false, %116 ], [ true, %115 ]
  %121 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #6
  br label %122

122:                                              ; preds = %118, %120
  %.pn93 = phi { ptr, i32 } [ %121, %120 ], [ %119, %118 ]
  %.130 = phi i1 [ %.029, %120 ], [ true, %118 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %17) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #6
  br i1 %.130, label %123, label %259

123:                                              ; preds = %.thread110, %122
  %.pn93.pn113 = phi { ptr, i32 } [ %117, %.thread110 ], [ %.pn93, %122 ]
  call void @__cxa_free_exception(ptr %113) #6
  br label %259

124:                                              ; preds = %109
  store ptr %110, ptr @__glewDeleteFramebuffers, align 8, !tbaa !22
  br label %125

125:                                              ; preds = %124, %102
  %126 = load ptr, ptr @__glewFramebufferTexture2D, align 8, !tbaa !22
  %127 = icmp eq ptr %126, null
  br i1 %127, label %128, label %148

128:                                              ; preds = %125
  %129 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @.str.7)
          to label %130 unwind label %69

130:                                              ; preds = %128
  %131 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %129, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %132 unwind label %69

132:                                              ; preds = %130
  %133 = load ptr, ptr @__glewFramebufferTexture2DEXT, align 8, !tbaa !22
  %134 = icmp eq ptr %133, null
  br i1 %134, label %135, label %147

135:                                              ; preds = %132
  %136 = tail call ptr @__cxa_allocate_exception(i64 152) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %20) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull @.str.8, ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %137 unwind label %.thread114

137:                                              ; preds = %135
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %22) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %22)
          to label %138 unwind label %141

138:                                              ; preds = %137
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #6
  store i32 3, ptr %23, align 4, !tbaa !23
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %136, ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull %21, i32 noundef 140, ptr noundef nonnull align 4 dereferenceable(4) %23)
          to label %139 unwind label %143

139:                                              ; preds = %138
  invoke void @__cxa_throw(ptr nonnull %136, ptr nonnull @_ZTIN4Glip9ExceptionE, ptr nonnull @_ZN4Glip9ExceptionD1Ev) #7
          to label %260 unwind label %143

.thread114:                                       ; preds = %135
  %140 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #6
  br label %146

141:                                              ; preds = %137
  %142 = landingpad { ptr, i32 }
          cleanup
  br label %145

143:                                              ; preds = %139, %138
  %.026 = phi i1 [ false, %139 ], [ true, %138 ]
  %144 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #6
  br label %145

145:                                              ; preds = %141, %143
  %.pn90 = phi { ptr, i32 } [ %144, %143 ], [ %142, %141 ]
  %.127 = phi i1 [ %.026, %143 ], [ true, %141 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %22) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #6
  br i1 %.127, label %146, label %259

146:                                              ; preds = %.thread114, %145
  %.pn90.pn117 = phi { ptr, i32 } [ %140, %.thread114 ], [ %.pn90, %145 ]
  call void @__cxa_free_exception(ptr %136) #6
  br label %259

147:                                              ; preds = %132
  store ptr %133, ptr @__glewFramebufferTexture2D, align 8, !tbaa !22
  br label %148

148:                                              ; preds = %147, %125
  %149 = load ptr, ptr @__glewDrawBuffers, align 8, !tbaa !22
  %150 = icmp eq ptr %149, null
  br i1 %150, label %151, label %171

151:                                              ; preds = %148
  %152 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @.str.9)
          to label %153 unwind label %69

153:                                              ; preds = %151
  %154 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %152, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %155 unwind label %69

155:                                              ; preds = %153
  %156 = load ptr, ptr @__glewDrawBuffersARB, align 8, !tbaa !22
  %157 = icmp eq ptr %156, null
  br i1 %157, label %158, label %170

158:                                              ; preds = %155
  %159 = tail call ptr @__cxa_allocate_exception(i64 152) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %24) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %25) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull @.str.10, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %160 unwind label %.thread118

160:                                              ; preds = %158
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %27) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef nonnull @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %27)
          to label %161 unwind label %164

161:                                              ; preds = %160
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %28) #6
  store i32 3, ptr %28, align 4, !tbaa !23
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %159, ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull %26, i32 noundef 141, ptr noundef nonnull align 4 dereferenceable(4) %28)
          to label %162 unwind label %166

162:                                              ; preds = %161
  invoke void @__cxa_throw(ptr nonnull %159, ptr nonnull @_ZTIN4Glip9ExceptionE, ptr nonnull @_ZN4Glip9ExceptionD1Ev) #7
          to label %260 unwind label %166

.thread118:                                       ; preds = %158
  %163 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #6
  br label %169

164:                                              ; preds = %160
  %165 = landingpad { ptr, i32 }
          cleanup
  br label %168

166:                                              ; preds = %162, %161
  %.023 = phi i1 [ false, %162 ], [ true, %161 ]
  %167 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #6
  br label %168

168:                                              ; preds = %164, %166
  %.pn87 = phi { ptr, i32 } [ %167, %166 ], [ %165, %164 ]
  %.124 = phi i1 [ %.023, %166 ], [ true, %164 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #6
  br i1 %.124, label %169, label %259

169:                                              ; preds = %.thread118, %168
  %.pn87.pn121 = phi { ptr, i32 } [ %163, %.thread118 ], [ %.pn87, %168 ]
  call void @__cxa_free_exception(ptr %159) #6
  br label %259

170:                                              ; preds = %155
  store ptr %156, ptr @__glewDrawBuffers, align 8, !tbaa !22
  br label %171

171:                                              ; preds = %170, %148
  %172 = load ptr, ptr @__glewGenerateMipmap, align 8, !tbaa !22
  %173 = icmp eq ptr %172, null
  br i1 %173, label %174, label %194

174:                                              ; preds = %171
  %175 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @.str.11)
          to label %176 unwind label %69

176:                                              ; preds = %174
  %177 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %175, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %178 unwind label %69

178:                                              ; preds = %176
  %179 = load ptr, ptr @__glewGenerateMipmapEXT, align 8, !tbaa !22
  %180 = icmp eq ptr %179, null
  br i1 %180, label %181, label %193

181:                                              ; preds = %178
  %182 = tail call ptr @__cxa_allocate_exception(i64 152) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %29) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %30) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef nonnull @.str.12, ptr noundef nonnull align 1 dereferenceable(1) %30)
          to label %183 unwind label %.thread122

183:                                              ; preds = %181
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %32) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef nonnull @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %32)
          to label %184 unwind label %187

184:                                              ; preds = %183
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %33) #6
  store i32 3, ptr %33, align 4, !tbaa !23
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %182, ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef nonnull %31, i32 noundef 142, ptr noundef nonnull align 4 dereferenceable(4) %33)
          to label %185 unwind label %189

185:                                              ; preds = %184
  invoke void @__cxa_throw(ptr nonnull %182, ptr nonnull @_ZTIN4Glip9ExceptionE, ptr nonnull @_ZN4Glip9ExceptionD1Ev) #7
          to label %260 unwind label %189

.thread122:                                       ; preds = %181
  %186 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %30) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %29) #6
  br label %192

187:                                              ; preds = %183
  %188 = landingpad { ptr, i32 }
          cleanup
  br label %191

189:                                              ; preds = %185, %184
  %.020 = phi i1 [ false, %185 ], [ true, %184 ]
  %190 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %33) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #6
  br label %191

191:                                              ; preds = %187, %189
  %.pn84 = phi { ptr, i32 } [ %190, %189 ], [ %188, %187 ]
  %.121 = phi i1 [ %.020, %189 ], [ true, %187 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %32) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %30) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %29) #6
  br i1 %.121, label %192, label %259

192:                                              ; preds = %.thread122, %191
  %.pn84.pn125 = phi { ptr, i32 } [ %186, %.thread122 ], [ %.pn84, %191 ]
  call void @__cxa_free_exception(ptr %182) #6
  br label %259

193:                                              ; preds = %178
  store ptr %179, ptr @__glewGenerateMipmap, align 8, !tbaa !22
  br label %194

194:                                              ; preds = %193, %171
  %195 = invoke noundef zeroext i1 @_ZNK4Glip6CoreGL24HdlAbstractTextureFormat12isCompressedEv(ptr noundef nonnull align 8 dereferenceable(52) %0)
          to label %196 unwind label %69

196:                                              ; preds = %194
  br i1 %195, label %197, label %216

197:                                              ; preds = %196
  %198 = tail call ptr @__cxa_allocate_exception(i64 152) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %34) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %35) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %36) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %37) #6
  %199 = invoke noundef i32 @_ZNK4Glip6CoreGL24HdlAbstractTextureFormat9getGLModeEv(ptr noundef nonnull align 8 dereferenceable(52) %0)
          to label %200 unwind label %.thread126

200:                                              ; preds = %197
  store i32 %199, ptr %37, align 4, !tbaa !25
  call void @_ZN4Glip6CoreGL17getGLEnumNameSafeB5cxx11ERKj(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %36, ptr noundef nonnull align 4 dereferenceable(4) %37) #6
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %35, ptr noundef nonnull @.str.13, ptr noundef nonnull align 8 dereferenceable(32) %36)
          to label %201 unwind label %.thread130

201:                                              ; preds = %200
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %34, ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef nonnull @.str.14)
          to label %202 unwind label %207

202:                                              ; preds = %201
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %39) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef nonnull @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %39)
          to label %203 unwind label %209

203:                                              ; preds = %202
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %40) #6
  store i32 3, ptr %40, align 4, !tbaa !23
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %198, ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef nonnull %38, i32 noundef 146, ptr noundef nonnull align 4 dereferenceable(4) %40)
          to label %204 unwind label %211

204:                                              ; preds = %203
  invoke void @__cxa_throw(ptr nonnull %198, ptr nonnull @_ZTIN4Glip9ExceptionE, ptr nonnull @_ZN4Glip9ExceptionD1Ev) #7
          to label %260 unwind label %211

.thread126:                                       ; preds = %197
  %205 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %37) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %36) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %35) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #6
  br label %215

.thread130:                                       ; preds = %200
  %206 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %37) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %36) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %35) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #6
  br label %215

207:                                              ; preds = %201
  %208 = landingpad { ptr, i32 }
          cleanup
  br label %214

209:                                              ; preds = %202
  %210 = landingpad { ptr, i32 }
          cleanup
  br label %213

211:                                              ; preds = %204, %203
  %.015 = phi i1 [ false, %204 ], [ true, %203 ]
  %212 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %40) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #6
  br label %213

213:                                              ; preds = %211, %209
  %.pn79 = phi { ptr, i32 } [ %212, %211 ], [ %210, %209 ]
  %.116 = phi i1 [ %.015, %211 ], [ true, %209 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %39) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #6
  br label %214

214:                                              ; preds = %207, %213
  %.pn79.pn = phi { ptr, i32 } [ %.pn79, %213 ], [ %208, %207 ]
  %.217 = phi i1 [ %.116, %213 ], [ true, %207 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %37) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %36) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %35) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #6
  br i1 %.217, label %215, label %259

215:                                              ; preds = %.thread130, %.thread126, %214
  %.pn79.pn.pn.pn129 = phi { ptr, i32 } [ %205, %.thread126 ], [ %.pn79.pn, %214 ], [ %206, %.thread130 ]
  call void @__cxa_free_exception(ptr %198) #6
  br label %259

216:                                              ; preds = %196
  invoke void @glDisable(i32 noundef 2929)
          to label %217 unwind label %69

217:                                              ; preds = %216
  %218 = load ptr, ptr @__glewGenFramebuffers, align 8, !tbaa !22
  invoke void %218(i32 noundef 1, ptr noundef nonnull %51)
          to label %219 unwind label %69

219:                                              ; preds = %217
  %220 = load i32, ptr %51, align 8, !tbaa !8
  %221 = icmp eq i32 %220, 0
  br i1 %221, label %223, label %.preheader

.preheader:                                       ; preds = %219
  %222 = icmp sgt i32 %2, 0
  br i1 %222, label %.lr.ph, label %._crit_edge

223:                                              ; preds = %219
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %41) #6
  %224 = invoke i32 @glGetError()
          to label %225 unwind label %233

225:                                              ; preds = %223
  store i32 %224, ptr %41, align 4, !tbaa !25
  %226 = tail call ptr @__cxa_allocate_exception(i64 152) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %42) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %43) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %44) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %45) #6
  call void @_ZN4Glip6CoreGL17getGLEnumNameSafeB5cxx11ERKj(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %45, ptr noundef nonnull align 4 dereferenceable(4) %41) #6
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %44, ptr noundef nonnull @.str.15, ptr noundef nonnull align 8 dereferenceable(32) %45)
          to label %227 unwind label %.thread133

227:                                              ; preds = %225
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %43, ptr noundef nonnull align 8 dereferenceable(32) %44, ptr noundef nonnull @.str.16)
          to label %228 unwind label %236

228:                                              ; preds = %227
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %46) #6
  invoke void @_ZN4Glip6CoreGL21getGLErrorDescriptionB5cxx11ERKj(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %46, ptr noundef nonnull align 4 dereferenceable(4) %41)
          to label %229 unwind label %238

229:                                              ; preds = %228
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %42, ptr noundef nonnull align 8 dereferenceable(32) %43, ptr noundef nonnull align 8 dereferenceable(32) %46)
          to label %230 unwind label %240

230:                                              ; preds = %229
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %48) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef nonnull @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %48)
          to label %231 unwind label %242

231:                                              ; preds = %230
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %49) #6
  store i32 3, ptr %49, align 4, !tbaa !23
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %226, ptr noundef nonnull align 8 dereferenceable(32) %42, ptr noundef nonnull %47, i32 noundef 159, ptr noundef nonnull align 4 dereferenceable(4) %49)
          to label %232 unwind label %244

232:                                              ; preds = %231
  invoke void @__cxa_throw(ptr nonnull %226, ptr nonnull @_ZTIN4Glip9ExceptionE, ptr nonnull @_ZN4Glip9ExceptionD1Ev) #7
          to label %260 unwind label %244

233:                                              ; preds = %223
  %234 = landingpad { ptr, i32 }
          cleanup
  br label %251

.thread133:                                       ; preds = %225
  %235 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %45) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %44) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %43) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %42) #6
  br label %250

236:                                              ; preds = %227
  %237 = landingpad { ptr, i32 }
          cleanup
  br label %249

238:                                              ; preds = %228
  %239 = landingpad { ptr, i32 }
          cleanup
  br label %248

240:                                              ; preds = %229
  %241 = landingpad { ptr, i32 }
          cleanup
  br label %247

242:                                              ; preds = %230
  %243 = landingpad { ptr, i32 }
          cleanup
  br label %246

244:                                              ; preds = %232, %231
  %.014 = phi i1 [ false, %232 ], [ true, %231 ]
  %245 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %49) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #6
  br label %246

246:                                              ; preds = %244, %242
  %.pn = phi { ptr, i32 } [ %245, %244 ], [ %243, %242 ]
  %.1 = phi i1 [ %.014, %244 ], [ true, %242 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %48) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #6
  br label %247

247:                                              ; preds = %246, %240
  %.pn.pn = phi { ptr, i32 } [ %.pn, %246 ], [ %241, %240 ]
  %.2 = phi i1 [ %.1, %246 ], [ true, %240 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #6
  br label %248

248:                                              ; preds = %247, %238
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %247 ], [ %239, %238 ]
  %.3 = phi i1 [ %.2, %247 ], [ true, %238 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %46) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #6
  br label %249

249:                                              ; preds = %236, %248
  %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn, %248 ], [ %237, %236 ]
  %.4 = phi i1 [ %.3, %248 ], [ true, %236 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %45) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %44) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %43) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %42) #6
  br i1 %.4, label %250, label %251

250:                                              ; preds = %.thread133, %249
  %.pn.pn.pn.pn.pn136 = phi { ptr, i32 } [ %235, %.thread133 ], [ %.pn.pn.pn.pn, %249 ]
  call void @__cxa_free_exception(ptr %226) #6
  br label %251

251:                                              ; preds = %249, %250, %233
  %.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn136, %250 ], [ %.pn.pn.pn.pn, %249 ], [ %234, %233 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %41) #6
  br label %259

._crit_edge:                                      ; preds = %254, %.preheader
  %252 = load ptr, ptr @__glewBindFramebuffer, align 8, !tbaa !22
  invoke void %252(i32 noundef 36160, i32 noundef 0)
          to label %258 unwind label %69

.lr.ph:                                           ; preds = %.preheader, %254
  %.0137 = phi i32 [ %255, %254 ], [ 0, %.preheader ]
  %253 = invoke noundef i32 @_ZN4Glip6CoreGL6HdlFBO9addTargetEv(ptr noundef nonnull align 8 dereferenceable(97) %0)
          to label %254 unwind label %256

254:                                              ; preds = %.lr.ph
  %255 = add nuw nsw i32 %.0137, 1
  %exitcond.not = icmp eq i32 %255, %2
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !26

256:                                              ; preds = %.lr.ph
  %257 = landingpad { ptr, i32 }
          cleanup
  br label %259

258:                                              ; preds = %._crit_edge
  ret void

259:                                              ; preds = %214, %215, %191, %192, %168, %169, %145, %146, %122, %123, %99, %100, %76, %77, %256, %251, %69
  %.pn99.pn.pn = phi { ptr, i32 } [ %.pn99.pn105, %77 ], [ %.pn99, %76 ], [ %.pn96.pn109, %100 ], [ %.pn96, %99 ], [ %.pn93.pn113, %123 ], [ %.pn93, %122 ], [ %.pn90.pn117, %146 ], [ %.pn90, %145 ], [ %.pn87.pn121, %169 ], [ %.pn87, %168 ], [ %.pn84.pn125, %192 ], [ %.pn84, %191 ], [ %.pn79.pn.pn.pn129, %215 ], [ %.pn79.pn, %214 ], [ %.pn.pn.pn.pn.pn.pn, %251 ], [ %257, %256 ], [ %70, %69 ]
  call void @_ZNSt6vectorIPN4Glip6CoreGL10HdlTextureESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %50) #6
  call void @_ZN4Glip6CoreGL24HdlAbstractTextureFormatD2Ev(ptr noundef nonnull align 8 dereferenceable(52) %0) #6
  resume { ptr, i32 } %.pn99.pn.pn

260:                                              ; preds = %232, %204, %185, %162, %139, %116, %93, %68
  unreachable
}

declare void @_ZN4Glip6CoreGL24HdlAbstractTextureFormatC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(52), ptr noundef nonnull align 8 dereferenceable(52)) unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIPN4Glip6CoreGL10HdlTextureESaIS3_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) 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: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #0 align 2

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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

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

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

declare void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, i32 noundef, ptr noundef nonnull align 4 dereferenceable(4)) unnamed_addr #1

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

declare void @__cxa_throw(ptr, ptr, ptr) local_unnamed_addr

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

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

declare void @__cxa_free_exception(ptr) local_unnamed_addr

declare noundef zeroext i1 @_ZNK4Glip6CoreGL24HdlAbstractTextureFormat12isCompressedEv(ptr noundef nonnull align 8 dereferenceable(52)) local_unnamed_addr #1

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #3

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #3

; Function Attrs: nounwind
declare void @_ZN4Glip6CoreGL17getGLEnumNameSafeB5cxx11ERKj(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #5

declare noundef i32 @_ZNK4Glip6CoreGL24HdlAbstractTextureFormat9getGLModeEv(ptr noundef nonnull align 8 dereferenceable(52)) local_unnamed_addr #1

declare void @glDisable(i32 noundef) local_unnamed_addr #1

declare i32 @glGetError() local_unnamed_addr #1

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #3

declare void @_ZN4Glip6CoreGL21getGLErrorDescriptionB5cxx11ERKj(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #1

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

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

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

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

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

!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, !11, i64 80}
!9 = !{!"_ZTSN4Glip6CoreGL6HdlFBOE", !10, i64 0, !13, i64 56, !11, i64 80, !18, i64 84, !17, i64 88, !18, i64 96}
!10 = !{!"_ZTSN4Glip6CoreGL24HdlAbstractTextureFormatE", !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20, !11, i64 24, !11, i64 28, !11, i64 32, !11, i64 36, !11, i64 40, !11, i64 44, !11, i64 48}
!11 = !{!"int", !12, i64 0}
!12 = !{!"omnipotent char", !7, i64 0}
!13 = !{!"_ZTSSt6vectorIPN4Glip6CoreGL10HdlTextureESaIS3_EE", !14, i64 0}
!14 = !{!"_ZTSSt12_Vector_baseIPN4Glip6CoreGL10HdlTextureESaIS3_EE", !15, i64 0}
!15 = !{!"_ZTSNSt12_Vector_baseIPN4Glip6CoreGL10HdlTextureESaIS3_EE12_Vector_implE", !16, i64 0}
!16 = !{!"_ZTSNSt12_Vector_baseIPN4Glip6CoreGL10HdlTextureESaIS3_EE17_Vector_impl_dataE", !17, i64 0, !17, i64 8, !17, i64 16}
!17 = !{!"any pointer", !12, i64 0}
!18 = !{!"bool", !12, i64 0}
!19 = !{!9, !18, i64 84}
!20 = !{!9, !17, i64 88}
!21 = !{!9, !18, i64 96}
!22 = !{!17, !17, i64 0}
!23 = !{!24, !24, i64 0}
!24 = !{!"_ZTSN4Glip9Exception4TypeE", !12, i64 0}
!25 = !{!11, !11, i64 0}
!26 = distinct !{!26, !27}
!27 = !{!"llvm.loop.mustprogress"}


; Effective O3 passes: EarlyCSEPass,GlobalOptPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,SROAPass,SimplifyCFGPass,TailCallElimPass