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

; 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" = type { i8 }
%"class.Glip::Exception" = type { %"class.std::exception", i32, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", i32, %"class.std::__cxx11::basic_string", i8, i8, %"class.std::vector.16" }
%"class.std::exception" = type { ptr }
%"class.std::vector.16" = type { %"struct.std::_Vector_base.17" }
%"struct.std::_Vector_base.17" = type { %"struct.std::_Vector_base<Glip::Exception, std::allocator<Glip::Exception>>::_Vector_impl" }
%"struct.std::_Vector_base<Glip::Exception, std::allocator<Glip::Exception>>::_Vector_impl" = type { %"struct.std::_Vector_base<Glip::Exception, std::allocator<Glip::Exception>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Glip::Exception, std::allocator<Glip::Exception>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.Glip::CoreGL::HdlShader" = type { %"class.Glip::CoreGL::ShaderSource", i32, i32 }
%"class.Glip::CoreGL::ShaderSource" = type { %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::vector", %"class.std::vector", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.8", %"class.std::vector.3", i8, i32, i32, %"class.std::map" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<int, std::pair<const int, Glip::CoreGL::ShaderSource::LineInfo>, std::_Select1st<std::pair<const int, Glip::CoreGL::ShaderSource::LineInfo>>, std::less<int>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<int, std::pair<const int, Glip::CoreGL::ShaderSource::LineInfo>, std::_Select1st<std::pair<const int, Glip::CoreGL::ShaderSource::LineInfo>>, std::less<int>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }

@__GLEW_VERSION_2_0 = external global i8, align 1
@.str = external hidden unnamed_addr constant [120 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [89 x i8], align 1
@_ZTIN4Glip9ExceptionE = external constant ptr
@__GLEW_ARB_fragment_shader = external global i8, align 1
@.str.2 = external hidden unnamed_addr constant [128 x i8], align 1
@__GLEW_ARB_fragment_program = external global i8, align 1
@.str.3 = external hidden unnamed_addr constant [129 x i8], align 1
@__GLEW_ARB_vertex_shader = external global i8, align 1
@.str.4 = external hidden unnamed_addr constant [126 x i8], align 1
@__GLEW_ARB_vertex_program = external global i8, align 1
@.str.5 = external hidden unnamed_addr constant [127 x i8], align 1
@__GLEW_ARB_compute_shader = external global i8, align 1
@.str.6 = external hidden unnamed_addr constant [127 x i8], align 1
@__GLEW_ARB_tessellation_shader = external global i8, align 1
@.str.7 = external hidden unnamed_addr constant [132 x i8], align 1
@__GLEW_ARB_geometry_shader4 = external global i8, align 1
@.str.8 = external hidden unnamed_addr constant [129 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [3 x i8], align 1
@__glewBindFragDataLocation = external global ptr, align 8
@_ZSt4cerr = external global %"class.std::basic_ostream", align 8
@.str.11 = external hidden unnamed_addr constant [144 x i8], align 1
@__glewBindFragDataLocationEXT = external global ptr, align 8
@.str.12 = external hidden unnamed_addr constant [139 x i8], align 1
@__glewCompileShader = external global ptr, align 8
@.str.13 = external hidden unnamed_addr constant [130 x i8], align 1
@__glewCompileShaderARB = external global ptr, align 8
@.str.14 = external hidden unnamed_addr constant [125 x i8], align 1
@__glewLinkProgram = external global ptr, align 8
@.str.15 = external hidden unnamed_addr constant [126 x i8], align 1
@__glewLinkProgramARB = external global ptr, align 8
@.str.16 = external hidden unnamed_addr constant [121 x i8], align 1
@__glewGetUniformLocation = external global ptr, align 8
@.str.17 = external hidden unnamed_addr constant [140 x i8], align 1
@__glewGetUniformLocationARB = external global ptr, align 8
@.str.18 = external hidden unnamed_addr constant [135 x i8], align 1
@__glewUniform1i = external global ptr, align 8
@.str.19 = external hidden unnamed_addr constant [122 x i8], align 1
@__glewUniform1iARB = external global ptr, align 8
@.str.20 = external hidden unnamed_addr constant [117 x i8], align 1
@__glewUniform2i = external global ptr, align 8
@.str.21 = external hidden unnamed_addr constant [122 x i8], align 1
@__glewUniform2iARB = external global ptr, align 8
@.str.22 = external hidden unnamed_addr constant [117 x i8], align 1
@__glewUniform3i = external global ptr, align 8
@.str.23 = external hidden unnamed_addr constant [122 x i8], align 1
@__glewUniform3iARB = external global ptr, align 8
@.str.24 = external hidden unnamed_addr constant [117 x i8], align 1
@__glewUniform4i = external global ptr, align 8
@.str.25 = external hidden unnamed_addr constant [122 x i8], align 1
@__glewUniform4iARB = external global ptr, align 8
@.str.26 = external hidden unnamed_addr constant [117 x i8], align 1
@__glewUniform1f = external global ptr, align 8
@.str.27 = external hidden unnamed_addr constant [122 x i8], align 1
@__glewUniform1fARB = external global ptr, align 8
@.str.28 = external hidden unnamed_addr constant [117 x i8], align 1
@__glewUniform2f = external global ptr, align 8
@.str.29 = external hidden unnamed_addr constant [122 x i8], align 1
@__glewUniform2fARB = external global ptr, align 8
@.str.30 = external hidden unnamed_addr constant [117 x i8], align 1
@__glewUniform3f = external global ptr, align 8
@.str.31 = external hidden unnamed_addr constant [122 x i8], align 1
@__glewUniform3fARB = external global ptr, align 8
@.str.32 = external hidden unnamed_addr constant [117 x i8], align 1
@__glewUniform4f = external global ptr, align 8
@.str.33 = external hidden unnamed_addr constant [122 x i8], align 1
@__glewUniform4fARB = external global ptr, align 8
@.str.34 = external hidden unnamed_addr constant [117 x i8], align 1
@__const.HdlShader.listCorrectEnum = external hidden unnamed_addr constant [6 x i32], align 16
@.str.35 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [2 x i8], align 1
@__glewCreateShader = external global ptr, align 8
@.str.37 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [4 x i8], align 1
@__glewShaderSource = external global ptr, align 8
@__glewGetShaderiv = external global ptr, align 8
@__glewGetShaderInfoLog = external global ptr, align 8
@__glewDeleteShader = external global ptr, align 8

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN4Glip6CoreGL9HdlShaderC2EjRKNS0_12ShaderSourceE(ptr noundef nonnull align 8 dereferenceable(280) %0, i32 noundef %1, ptr noundef nonnull align 8 dereferenceable(272) %2) unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca ptr, align 8
  %5 = alloca i32, align 4
  %6 = alloca ptr, align 8
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.std::allocator", align 1
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::allocator", 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", align 1
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca %"class.std::allocator", 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", align 1
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.std::allocator", 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", align 1
  %29 = alloca %"class.std::__cxx11::basic_string", align 8
  %30 = alloca %"class.std::allocator", 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", align 1
  %35 = alloca %"class.std::__cxx11::basic_string", align 8
  %36 = alloca %"class.std::allocator", 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", align 1
  %41 = alloca %"class.std::__cxx11::basic_string", align 8
  %42 = alloca %"class.std::allocator", 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::allocator", align 1
  %47 = alloca %"class.std::__cxx11::basic_string", align 8
  %48 = alloca %"class.std::allocator", align 1
  %49 = alloca i32, align 4
  %50 = alloca i1, align 1
  %51 = alloca %"class.std::__cxx11::basic_string", align 8
  %52 = alloca %"class.std::allocator", align 1
  %53 = alloca %"class.std::__cxx11::basic_string", align 8
  %54 = alloca %"class.std::allocator", align 1
  %55 = alloca i32, align 4
  %56 = alloca i1, align 1
  %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::__cxx11::basic_string", align 8
  %61 = alloca %"class.std::allocator", align 1
  %62 = alloca i32, align 4
  %63 = alloca i1, align 1
  %64 = alloca %"class.std::__cxx11::basic_string", align 8
  %65 = alloca %"class.std::allocator", align 1
  %66 = alloca %"class.std::__cxx11::basic_string", align 8
  %67 = alloca %"class.std::allocator", align 1
  %68 = alloca i32, align 4
  %69 = alloca i1, align 1
  %70 = alloca %"class.std::__cxx11::basic_string", align 8
  %71 = alloca %"class.std::allocator", align 1
  %72 = alloca %"class.std::__cxx11::basic_string", align 8
  %73 = alloca %"class.std::allocator", align 1
  %74 = alloca i32, align 4
  %75 = alloca i1, align 1
  %76 = alloca %"class.std::__cxx11::basic_string", align 8
  %77 = alloca %"class.std::allocator", align 1
  %78 = alloca %"class.std::__cxx11::basic_string", align 8
  %79 = alloca %"class.std::allocator", align 1
  %80 = alloca i32, align 4
  %81 = alloca i1, align 1
  %82 = alloca %"class.std::__cxx11::basic_string", align 8
  %83 = alloca %"class.std::allocator", align 1
  %84 = alloca %"class.std::__cxx11::basic_string", align 8
  %85 = alloca %"class.std::allocator", align 1
  %86 = alloca i32, align 4
  %87 = alloca i1, align 1
  %88 = alloca %"class.std::__cxx11::basic_string", align 8
  %89 = alloca %"class.std::allocator", align 1
  %90 = alloca %"class.std::__cxx11::basic_string", align 8
  %91 = alloca %"class.std::allocator", align 1
  %92 = alloca i32, align 4
  %93 = alloca i1, align 1
  %94 = alloca %"class.std::__cxx11::basic_string", align 8
  %95 = alloca %"class.std::allocator", align 1
  %96 = alloca %"class.std::__cxx11::basic_string", align 8
  %97 = alloca %"class.std::allocator", align 1
  %98 = alloca i32, align 4
  %99 = alloca i1, align 1
  %100 = alloca %"class.std::__cxx11::basic_string", align 8
  %101 = alloca %"class.std::allocator", align 1
  %102 = alloca %"class.std::__cxx11::basic_string", align 8
  %103 = alloca %"class.std::allocator", align 1
  %104 = alloca i32, align 4
  %105 = alloca i1, align 1
  %106 = alloca %"class.std::__cxx11::basic_string", align 8
  %107 = alloca %"class.std::allocator", align 1
  %108 = alloca %"class.std::__cxx11::basic_string", align 8
  %109 = alloca %"class.std::allocator", align 1
  %110 = alloca i32, align 4
  %111 = alloca i1, align 1
  %112 = alloca %"class.std::__cxx11::basic_string", align 8
  %113 = alloca %"class.std::allocator", align 1
  %114 = alloca %"class.std::__cxx11::basic_string", align 8
  %115 = alloca %"class.std::allocator", align 1
  %116 = alloca i32, align 4
  %117 = alloca i1, align 1
  %118 = alloca %"class.std::__cxx11::basic_string", align 8
  %119 = alloca %"class.std::allocator", align 1
  %120 = alloca %"class.std::__cxx11::basic_string", align 8
  %121 = alloca %"class.std::allocator", align 1
  %122 = alloca i32, align 4
  %123 = alloca i1, align 1
  %124 = alloca %"class.std::__cxx11::basic_string", align 8
  %125 = alloca %"class.std::allocator", align 1
  %126 = alloca %"class.std::__cxx11::basic_string", align 8
  %127 = alloca %"class.std::allocator", align 1
  %128 = alloca i32, align 4
  %129 = alloca i1, align 1
  %130 = alloca %"class.std::__cxx11::basic_string", align 8
  %131 = alloca %"class.std::allocator", align 1
  %132 = alloca %"class.std::__cxx11::basic_string", align 8
  %133 = alloca %"class.std::allocator", align 1
  %134 = alloca i32, align 4
  %135 = alloca i1, align 1
  %136 = alloca [6 x i32], align 16
  %137 = alloca %"class.std::__cxx11::basic_string", align 8
  %138 = alloca %"class.std::__cxx11::basic_string", align 8
  %139 = alloca %"class.std::__cxx11::basic_string", align 8
  %140 = alloca %"class.std::__cxx11::basic_string", align 8
  %141 = alloca %"class.std::allocator", align 1
  %142 = alloca i32, align 4
  %143 = alloca i1, align 1
  %144 = alloca i32, align 4
  %145 = alloca %"class.std::__cxx11::basic_string", align 8
  %146 = alloca %"class.std::__cxx11::basic_string", align 8
  %147 = alloca %"class.std::__cxx11::basic_string", align 8
  %148 = alloca %"class.std::__cxx11::basic_string", align 8
  %149 = alloca %"class.std::__cxx11::basic_string", align 8
  %150 = alloca %"class.std::__cxx11::basic_string", align 8
  %151 = alloca %"class.std::__cxx11::basic_string", align 8
  %152 = alloca %"class.std::__cxx11::basic_string", align 8
  %153 = alloca %"class.std::allocator", align 1
  %154 = alloca i32, align 4
  %155 = alloca i1, align 1
  %156 = alloca ptr, align 8
  %157 = alloca i32, align 4
  %158 = alloca i32, align 4
  %159 = alloca ptr, align 8
  %160 = alloca %"class.Glip::Exception", align 8
  %161 = alloca %"class.std::__cxx11::basic_string", align 8
  %162 = alloca %"class.std::allocator", align 1
  store ptr %0, ptr %4, align 8, !tbaa !5
  store i32 %1, ptr %5, align 4, !tbaa !9
  store ptr %2, ptr %6, align 8, !tbaa !5
  %163 = load ptr, ptr %4, align 8
  %164 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN4Glip6CoreGL12ShaderSourceC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(272) %163, ptr noundef nonnull align 8 dereferenceable(272) %164)
  %165 = getelementptr inbounds %"class.Glip::CoreGL::HdlShader", ptr %163, i32 0, i32 2
  %166 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %166, ptr %165, align 4, !tbaa !11
  %167 = load i8, ptr @__GLEW_VERSION_2_0, align 1, !tbaa !38
  %168 = icmp ne i8 %167, 0
  br i1 %168, label %191, label %169

169:                                              ; preds = %3
  store i1 true, ptr %14, align 1
  %170 = call ptr @__cxa_allocate_exception(i64 152) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %7) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %8) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef @.str, ptr noundef nonnull align 1 dereferenceable(1) %8)
          to label %171 unwind label %174

171:                                              ; preds = %169
  call void @llvm.lifetime.start.p0(i64 1, ptr %12) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %172 unwind label %178

172:                                              ; preds = %171
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #10
  store i32 3, ptr %13, align 4, !tbaa !39
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %170, ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef %11, i32 noundef 48, ptr noundef nonnull align 4 dereferenceable(4) %13)
          to label %173 unwind label %182

173:                                              ; preds = %172
  store i1 false, ptr %14, align 1
  invoke void @__cxa_throw(ptr %170, ptr @_ZTIN4Glip9ExceptionE, ptr @_ZN4Glip9ExceptionD1Ev) #11
          to label %1029 unwind label %182

174:                                              ; preds = %169
  %175 = landingpad { ptr, i32 }
          cleanup
  %176 = extractvalue { ptr, i32 } %175, 0
  store ptr %176, ptr %9, align 8
  %177 = extractvalue { ptr, i32 } %175, 1
  store i32 %177, ptr %10, align 4
  br label %187

178:                                              ; preds = %171
  %179 = landingpad { ptr, i32 }
          cleanup
  %180 = extractvalue { ptr, i32 } %179, 0
  store ptr %180, ptr %9, align 8
  %181 = extractvalue { ptr, i32 } %179, 1
  store i32 %181, ptr %10, align 4
  br label %186

182:                                              ; preds = %173, %172
  %183 = landingpad { ptr, i32 }
          cleanup
  %184 = extractvalue { ptr, i32 } %183, 0
  store ptr %184, ptr %9, align 8
  %185 = extractvalue { ptr, i32 } %183, 1
  store i32 %185, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #10
  br label %186

186:                                              ; preds = %182, %178
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %12) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #10
  br label %187

187:                                              ; preds = %186, %174
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %7) #10
  %188 = load i1, ptr %14, align 1
  br i1 %188, label %189, label %190

189:                                              ; preds = %187
  call void @__cxa_free_exception(ptr %170) #10
  br label %190

190:                                              ; preds = %189, %187
  br label %1023

191:                                              ; preds = %3
  %192 = getelementptr inbounds %"class.Glip::CoreGL::HdlShader", ptr %163, i32 0, i32 2
  %193 = load i32, ptr %192, align 4, !tbaa !11
  switch i32 %193, label %374 [
    i32 35632, label %194
    i32 35633, label %245
    i32 37305, label %296
    i32 36488, label %322
    i32 36487, label %322
    i32 36313, label %348
  ]

194:                                              ; preds = %191
  %195 = load i8, ptr @__GLEW_ARB_fragment_shader, align 1, !tbaa !38
  %196 = icmp ne i8 %195, 0
  br i1 %196, label %219, label %197

197:                                              ; preds = %194
  store i1 true, ptr %20, align 1
  %198 = call ptr @__cxa_allocate_exception(i64 152) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %15) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %199 unwind label %202

199:                                              ; preds = %197
  call void @llvm.lifetime.start.p0(i64 1, ptr %18) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %18)
          to label %200 unwind label %206

200:                                              ; preds = %199
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #10
  store i32 3, ptr %19, align 4, !tbaa !39
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %198, ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef %17, i32 noundef 54, ptr noundef nonnull align 4 dereferenceable(4) %19)
          to label %201 unwind label %210

201:                                              ; preds = %200
  store i1 false, ptr %20, align 1
  invoke void @__cxa_throw(ptr %198, ptr @_ZTIN4Glip9ExceptionE, ptr @_ZN4Glip9ExceptionD1Ev) #11
          to label %1029 unwind label %210

202:                                              ; preds = %197
  %203 = landingpad { ptr, i32 }
          cleanup
  %204 = extractvalue { ptr, i32 } %203, 0
  store ptr %204, ptr %9, align 8
  %205 = extractvalue { ptr, i32 } %203, 1
  store i32 %205, ptr %10, align 4
  br label %215

206:                                              ; preds = %199
  %207 = landingpad { ptr, i32 }
          cleanup
  %208 = extractvalue { ptr, i32 } %207, 0
  store ptr %208, ptr %9, align 8
  %209 = extractvalue { ptr, i32 } %207, 1
  store i32 %209, ptr %10, align 4
  br label %214

210:                                              ; preds = %201, %200
  %211 = landingpad { ptr, i32 }
          cleanup
  %212 = extractvalue { ptr, i32 } %211, 0
  store ptr %212, ptr %9, align 8
  %213 = extractvalue { ptr, i32 } %211, 1
  store i32 %213, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #10
  br label %214

214:                                              ; preds = %210, %206
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #10
  br label %215

215:                                              ; preds = %214, %202
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %15) #10
  %216 = load i1, ptr %20, align 1
  br i1 %216, label %217, label %218

217:                                              ; preds = %215
  call void @__cxa_free_exception(ptr %198) #10
  br label %218

218:                                              ; preds = %217, %215
  br label %1023

219:                                              ; preds = %194
  %220 = load i8, ptr @__GLEW_ARB_fragment_program, align 1, !tbaa !38
  %221 = icmp ne i8 %220, 0
  br i1 %221, label %244, label %222

222:                                              ; preds = %219
  store i1 true, ptr %26, align 1
  %223 = call ptr @__cxa_allocate_exception(i64 152) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %21) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %22) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %22)
          to label %224 unwind label %227

224:                                              ; preds = %222
  call void @llvm.lifetime.start.p0(i64 1, ptr %24) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %24)
          to label %225 unwind label %231

225:                                              ; preds = %224
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #10
  store i32 3, ptr %25, align 4, !tbaa !39
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %223, ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef %23, i32 noundef 55, ptr noundef nonnull align 4 dereferenceable(4) %25)
          to label %226 unwind label %235

226:                                              ; preds = %225
  store i1 false, ptr %26, align 1
  invoke void @__cxa_throw(ptr %223, ptr @_ZTIN4Glip9ExceptionE, ptr @_ZN4Glip9ExceptionD1Ev) #11
          to label %1029 unwind label %235

227:                                              ; preds = %222
  %228 = landingpad { ptr, i32 }
          cleanup
  %229 = extractvalue { ptr, i32 } %228, 0
  store ptr %229, ptr %9, align 8
  %230 = extractvalue { ptr, i32 } %228, 1
  store i32 %230, ptr %10, align 4
  br label %240

231:                                              ; preds = %224
  %232 = landingpad { ptr, i32 }
          cleanup
  %233 = extractvalue { ptr, i32 } %232, 0
  store ptr %233, ptr %9, align 8
  %234 = extractvalue { ptr, i32 } %232, 1
  store i32 %234, ptr %10, align 4
  br label %239

235:                                              ; preds = %226, %225
  %236 = landingpad { ptr, i32 }
          cleanup
  %237 = extractvalue { ptr, i32 } %236, 0
  store ptr %237, ptr %9, align 8
  %238 = extractvalue { ptr, i32 } %236, 1
  store i32 %238, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #10
  br label %239

239:                                              ; preds = %235, %231
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #10
  br label %240

240:                                              ; preds = %239, %227
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #10
  %241 = load i1, ptr %26, align 1
  br i1 %241, label %242, label %243

242:                                              ; preds = %240
  call void @__cxa_free_exception(ptr %223) #10
  br label %243

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

244:                                              ; preds = %219
  br label %403

245:                                              ; preds = %191
  %246 = load i8, ptr @__GLEW_ARB_vertex_shader, align 1, !tbaa !38
  %247 = icmp ne i8 %246, 0
  br i1 %247, label %270, label %248

248:                                              ; preds = %245
  store i1 true, ptr %32, align 1
  %249 = call ptr @__cxa_allocate_exception(i64 152) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %27) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %28) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef @.str.4, ptr noundef nonnull align 1 dereferenceable(1) %28)
          to label %250 unwind label %253

250:                                              ; preds = %248
  call void @llvm.lifetime.start.p0(i64 1, ptr %30) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %30)
          to label %251 unwind label %257

251:                                              ; preds = %250
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #10
  store i32 3, ptr %31, align 4, !tbaa !39
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %249, ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef %29, i32 noundef 58, ptr noundef nonnull align 4 dereferenceable(4) %31)
          to label %252 unwind label %261

252:                                              ; preds = %251
  store i1 false, ptr %32, align 1
  invoke void @__cxa_throw(ptr %249, ptr @_ZTIN4Glip9ExceptionE, ptr @_ZN4Glip9ExceptionD1Ev) #11
          to label %1029 unwind label %261

253:                                              ; preds = %248
  %254 = landingpad { ptr, i32 }
          cleanup
  %255 = extractvalue { ptr, i32 } %254, 0
  store ptr %255, ptr %9, align 8
  %256 = extractvalue { ptr, i32 } %254, 1
  store i32 %256, ptr %10, align 4
  br label %266

257:                                              ; preds = %250
  %258 = landingpad { ptr, i32 }
          cleanup
  %259 = extractvalue { ptr, i32 } %258, 0
  store ptr %259, ptr %9, align 8
  %260 = extractvalue { ptr, i32 } %258, 1
  store i32 %260, ptr %10, align 4
  br label %265

261:                                              ; preds = %252, %251
  %262 = landingpad { ptr, i32 }
          cleanup
  %263 = extractvalue { ptr, i32 } %262, 0
  store ptr %263, ptr %9, align 8
  %264 = extractvalue { ptr, i32 } %262, 1
  store i32 %264, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #10
  br label %265

265:                                              ; preds = %261, %257
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #10
  br label %266

266:                                              ; preds = %265, %253
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #10
  %267 = load i1, ptr %32, align 1
  br i1 %267, label %268, label %269

268:                                              ; preds = %266
  call void @__cxa_free_exception(ptr %249) #10
  br label %269

269:                                              ; preds = %268, %266
  br label %1023

270:                                              ; preds = %245
  %271 = load i8, ptr @__GLEW_ARB_vertex_program, align 1, !tbaa !38
  %272 = icmp ne i8 %271, 0
  br i1 %272, label %295, label %273

273:                                              ; preds = %270
  store i1 true, ptr %38, align 1
  %274 = call ptr @__cxa_allocate_exception(i64 152) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %33) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %34) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef @.str.5, ptr noundef nonnull align 1 dereferenceable(1) %34)
          to label %275 unwind label %278

275:                                              ; preds = %273
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %36)
          to label %276 unwind label %282

276:                                              ; preds = %275
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #10
  store i32 3, ptr %37, align 4, !tbaa !39
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %274, ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef %35, i32 noundef 59, ptr noundef nonnull align 4 dereferenceable(4) %37)
          to label %277 unwind label %286

277:                                              ; preds = %276
  store i1 false, ptr %38, align 1
  invoke void @__cxa_throw(ptr %274, ptr @_ZTIN4Glip9ExceptionE, ptr @_ZN4Glip9ExceptionD1Ev) #11
          to label %1029 unwind label %286

278:                                              ; preds = %273
  %279 = landingpad { ptr, i32 }
          cleanup
  %280 = extractvalue { ptr, i32 } %279, 0
  store ptr %280, ptr %9, align 8
  %281 = extractvalue { ptr, i32 } %279, 1
  store i32 %281, ptr %10, align 4
  br label %291

282:                                              ; preds = %275
  %283 = landingpad { ptr, i32 }
          cleanup
  %284 = extractvalue { ptr, i32 } %283, 0
  store ptr %284, ptr %9, align 8
  %285 = extractvalue { ptr, i32 } %283, 1
  store i32 %285, ptr %10, align 4
  br label %290

286:                                              ; preds = %277, %276
  %287 = landingpad { ptr, i32 }
          cleanup
  %288 = extractvalue { ptr, i32 } %287, 0
  store ptr %288, ptr %9, align 8
  %289 = extractvalue { ptr, i32 } %287, 1
  store i32 %289, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #10
  br label %290

290:                                              ; preds = %286, %282
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #10
  br label %291

291:                                              ; preds = %290, %278
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %33) #10
  %292 = load i1, ptr %38, align 1
  br i1 %292, label %293, label %294

293:                                              ; preds = %291
  call void @__cxa_free_exception(ptr %274) #10
  br label %294

294:                                              ; preds = %293, %291
  br label %1023

295:                                              ; preds = %270
  br label %403

296:                                              ; preds = %191
  %297 = load i8, ptr @__GLEW_ARB_compute_shader, align 1, !tbaa !38
  %298 = icmp ne i8 %297, 0
  br i1 %298, label %321, label %299

299:                                              ; preds = %296
  store i1 true, ptr %44, align 1
  %300 = call ptr @__cxa_allocate_exception(i64 152) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %39) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %40) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %39, ptr noundef @.str.6, ptr noundef nonnull align 1 dereferenceable(1) %40)
          to label %301 unwind label %304

301:                                              ; preds = %299
  call void @llvm.lifetime.start.p0(i64 1, ptr %42) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %41, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %42)
          to label %302 unwind label %308

302:                                              ; preds = %301
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #10
  store i32 3, ptr %43, align 4, !tbaa !39
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %300, ptr noundef nonnull align 8 dereferenceable(32) %39, ptr noundef %41, i32 noundef 62, ptr noundef nonnull align 4 dereferenceable(4) %43)
          to label %303 unwind label %312

303:                                              ; preds = %302
  store i1 false, ptr %44, align 1
  invoke void @__cxa_throw(ptr %300, ptr @_ZTIN4Glip9ExceptionE, ptr @_ZN4Glip9ExceptionD1Ev) #11
          to label %1029 unwind label %312

304:                                              ; preds = %299
  %305 = landingpad { ptr, i32 }
          cleanup
  %306 = extractvalue { ptr, i32 } %305, 0
  store ptr %306, ptr %9, align 8
  %307 = extractvalue { ptr, i32 } %305, 1
  store i32 %307, ptr %10, align 4
  br label %317

308:                                              ; preds = %301
  %309 = landingpad { ptr, i32 }
          cleanup
  %310 = extractvalue { ptr, i32 } %309, 0
  store ptr %310, ptr %9, align 8
  %311 = extractvalue { ptr, i32 } %309, 1
  store i32 %311, ptr %10, align 4
  br label %316

312:                                              ; preds = %303, %302
  %313 = landingpad { ptr, i32 }
          cleanup
  %314 = extractvalue { ptr, i32 } %313, 0
  store ptr %314, ptr %9, align 8
  %315 = extractvalue { ptr, i32 } %313, 1
  store i32 %315, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #10
  br label %316

316:                                              ; preds = %312, %308
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #10
  br label %317

317:                                              ; preds = %316, %304
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %39) #10
  %318 = load i1, ptr %44, align 1
  br i1 %318, label %319, label %320

319:                                              ; preds = %317
  call void @__cxa_free_exception(ptr %300) #10
  br label %320

320:                                              ; preds = %319, %317
  br label %1023

321:                                              ; preds = %296
  br label %403

322:                                              ; preds = %191, %191
  %323 = load i8, ptr @__GLEW_ARB_tessellation_shader, align 1, !tbaa !38
  %324 = icmp ne i8 %323, 0
  br i1 %324, label %347, label %325

325:                                              ; preds = %322
  store i1 true, ptr %50, align 1
  %326 = call ptr @__cxa_allocate_exception(i64 152) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %45) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %46) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %45, ptr noundef @.str.7, ptr noundef nonnull align 1 dereferenceable(1) %46)
          to label %327 unwind label %330

327:                                              ; preds = %325
  call void @llvm.lifetime.start.p0(i64 1, ptr %48) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %48)
          to label %328 unwind label %334

328:                                              ; preds = %327
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #10
  store i32 3, ptr %49, align 4, !tbaa !39
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %326, ptr noundef nonnull align 8 dereferenceable(32) %45, ptr noundef %47, i32 noundef 66, ptr noundef nonnull align 4 dereferenceable(4) %49)
          to label %329 unwind label %338

329:                                              ; preds = %328
  store i1 false, ptr %50, align 1
  invoke void @__cxa_throw(ptr %326, ptr @_ZTIN4Glip9ExceptionE, ptr @_ZN4Glip9ExceptionD1Ev) #11
          to label %1029 unwind label %338

330:                                              ; preds = %325
  %331 = landingpad { ptr, i32 }
          cleanup
  %332 = extractvalue { ptr, i32 } %331, 0
  store ptr %332, ptr %9, align 8
  %333 = extractvalue { ptr, i32 } %331, 1
  store i32 %333, ptr %10, align 4
  br label %343

334:                                              ; preds = %327
  %335 = landingpad { ptr, i32 }
          cleanup
  %336 = extractvalue { ptr, i32 } %335, 0
  store ptr %336, ptr %9, align 8
  %337 = extractvalue { ptr, i32 } %335, 1
  store i32 %337, ptr %10, align 4
  br label %342

338:                                              ; preds = %329, %328
  %339 = landingpad { ptr, i32 }
          cleanup
  %340 = extractvalue { ptr, i32 } %339, 0
  store ptr %340, ptr %9, align 8
  %341 = extractvalue { ptr, i32 } %339, 1
  store i32 %341, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #10
  br label %342

342:                                              ; preds = %338, %334
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #10
  br label %343

343:                                              ; preds = %342, %330
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %45) #10
  %344 = load i1, ptr %50, align 1
  br i1 %344, label %345, label %346

345:                                              ; preds = %343
  call void @__cxa_free_exception(ptr %326) #10
  br label %346

346:                                              ; preds = %345, %343
  br label %1023

347:                                              ; preds = %322
  br label %403

348:                                              ; preds = %191
  %349 = load i8, ptr @__GLEW_ARB_geometry_shader4, align 1, !tbaa !38
  %350 = icmp ne i8 %349, 0
  br i1 %350, label %373, label %351

351:                                              ; preds = %348
  store i1 true, ptr %56, align 1
  %352 = call ptr @__cxa_allocate_exception(i64 152) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %51) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %52) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %51, ptr noundef @.str.8, ptr noundef nonnull align 1 dereferenceable(1) %52)
          to label %353 unwind label %356

353:                                              ; preds = %351
  call void @llvm.lifetime.start.p0(i64 1, ptr %54) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %53, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %54)
          to label %354 unwind label %360

354:                                              ; preds = %353
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #10
  store i32 3, ptr %55, align 4, !tbaa !39
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %352, ptr noundef nonnull align 8 dereferenceable(32) %51, ptr noundef %53, i32 noundef 69, ptr noundef nonnull align 4 dereferenceable(4) %55)
          to label %355 unwind label %364

355:                                              ; preds = %354
  store i1 false, ptr %56, align 1
  invoke void @__cxa_throw(ptr %352, ptr @_ZTIN4Glip9ExceptionE, ptr @_ZN4Glip9ExceptionD1Ev) #11
          to label %1029 unwind label %364

356:                                              ; preds = %351
  %357 = landingpad { ptr, i32 }
          cleanup
  %358 = extractvalue { ptr, i32 } %357, 0
  store ptr %358, ptr %9, align 8
  %359 = extractvalue { ptr, i32 } %357, 1
  store i32 %359, ptr %10, align 4
  br label %369

360:                                              ; preds = %353
  %361 = landingpad { ptr, i32 }
          cleanup
  %362 = extractvalue { ptr, i32 } %361, 0
  store ptr %362, ptr %9, align 8
  %363 = extractvalue { ptr, i32 } %361, 1
  store i32 %363, ptr %10, align 4
  br label %368

364:                                              ; preds = %355, %354
  %365 = landingpad { ptr, i32 }
          cleanup
  %366 = extractvalue { ptr, i32 } %365, 0
  store ptr %366, ptr %9, align 8
  %367 = extractvalue { ptr, i32 } %365, 1
  store i32 %367, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #10
  br label %368

368:                                              ; preds = %364, %360
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %54) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #10
  br label %369

369:                                              ; preds = %368, %356
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %51) #10
  %370 = load i1, ptr %56, align 1
  br i1 %370, label %371, label %372

371:                                              ; preds = %369
  call void @__cxa_free_exception(ptr %352) #10
  br label %372

372:                                              ; preds = %371, %369
  br label %1023

373:                                              ; preds = %348
  br label %403

374:                                              ; preds = %191
  store i1 true, ptr %63, align 1
  %375 = call ptr @__cxa_allocate_exception(i64 152) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %57) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %58) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %59) #10
  %376 = getelementptr inbounds %"class.Glip::CoreGL::HdlShader", ptr %163, i32 0, i32 2
  call void @_ZN4Glip6CoreGL17getGLEnumNameSafeB5cxx11ERKj(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %59, ptr noundef nonnull align 4 dereferenceable(4) %376) #10
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %58, ptr noundef @.str.9, ptr noundef nonnull align 8 dereferenceable(32) %59)
          to label %377 unwind label %381

377:                                              ; preds = %374
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %57, ptr noundef nonnull align 8 dereferenceable(32) %58, ptr noundef @.str.10)
          to label %378 unwind label %385

378:                                              ; preds = %377
  call void @llvm.lifetime.start.p0(i64 1, ptr %61) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %61) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %60, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %61)
          to label %379 unwind label %389

379:                                              ; preds = %378
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #10
  store i32 3, ptr %62, align 4, !tbaa !39
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %375, ptr noundef nonnull align 8 dereferenceable(32) %57, ptr noundef %60, i32 noundef 72, ptr noundef nonnull align 4 dereferenceable(4) %62)
          to label %380 unwind label %393

380:                                              ; preds = %379
  store i1 false, ptr %63, align 1
  invoke void @__cxa_throw(ptr %375, ptr @_ZTIN4Glip9ExceptionE, ptr @_ZN4Glip9ExceptionD1Ev) #11
          to label %1029 unwind label %393

381:                                              ; preds = %374
  %382 = landingpad { ptr, i32 }
          cleanup
  %383 = extractvalue { ptr, i32 } %382, 0
  store ptr %383, ptr %9, align 8
  %384 = extractvalue { ptr, i32 } %382, 1
  store i32 %384, ptr %10, align 4
  br label %399

385:                                              ; preds = %377
  %386 = landingpad { ptr, i32 }
          cleanup
  %387 = extractvalue { ptr, i32 } %386, 0
  store ptr %387, ptr %9, align 8
  %388 = extractvalue { ptr, i32 } %386, 1
  store i32 %388, ptr %10, align 4
  br label %398

389:                                              ; preds = %378
  %390 = landingpad { ptr, i32 }
          cleanup
  %391 = extractvalue { ptr, i32 } %390, 0
  store ptr %391, ptr %9, align 8
  %392 = extractvalue { ptr, i32 } %390, 1
  store i32 %392, ptr %10, align 4
  br label %397

393:                                              ; preds = %380, %379
  %394 = landingpad { ptr, i32 }
          cleanup
  %395 = extractvalue { ptr, i32 } %394, 0
  store ptr %395, ptr %9, align 8
  %396 = extractvalue { ptr, i32 } %394, 1
  store i32 %396, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #10
  br label %397

397:                                              ; preds = %393, %389
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %61) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %61) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #10
  br label %398

398:                                              ; preds = %397, %385
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #10
  br label %399

399:                                              ; preds = %398, %381
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %59) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %58) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %57) #10
  %400 = load i1, ptr %63, align 1
  br i1 %400, label %401, label %402

401:                                              ; preds = %399
  call void @__cxa_free_exception(ptr %375) #10
  br label %402

402:                                              ; preds = %401, %399
  br label %1023

403:                                              ; preds = %373, %347, %321, %295, %244
  %404 = load ptr, ptr %6, align 8, !tbaa !5
  %405 = invoke noundef zeroext i1 @_ZNK4Glip6CoreGL12ShaderSource21requiresCompatibilityEv(ptr noundef nonnull align 8 dereferenceable(272) %404)
          to label %406 unwind label %422

406:                                              ; preds = %403
  br i1 %405, label %446, label %407

407:                                              ; preds = %406
  %408 = load ptr, ptr @__glewBindFragDataLocation, align 8, !tbaa !5
  %409 = icmp eq ptr %408, null
  br i1 %409, label %410, label %445

410:                                              ; preds = %407
  %411 = 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 %412 unwind label %422

412:                                              ; preds = %410
  %413 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %411, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %414 unwind label %422

414:                                              ; preds = %412
  %415 = load ptr, ptr @__glewBindFragDataLocationEXT, align 8, !tbaa !5
  %416 = icmp eq ptr %415, null
  br i1 %416, label %417, label %443

417:                                              ; preds = %414
  store i1 true, ptr %69, align 1
  %418 = call ptr @__cxa_allocate_exception(i64 152) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %64) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %65) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %65) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %64, ptr noundef @.str.12, ptr noundef nonnull align 1 dereferenceable(1) %65)
          to label %419 unwind label %426

419:                                              ; preds = %417
  call void @llvm.lifetime.start.p0(i64 1, ptr %67) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %67) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %66, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %67)
          to label %420 unwind label %430

420:                                              ; preds = %419
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #10
  store i32 3, ptr %68, align 4, !tbaa !39
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %418, ptr noundef nonnull align 8 dereferenceable(32) %64, ptr noundef %66, i32 noundef 76, ptr noundef nonnull align 4 dereferenceable(4) %68)
          to label %421 unwind label %434

421:                                              ; preds = %420
  store i1 false, ptr %69, align 1
  invoke void @__cxa_throw(ptr %418, ptr @_ZTIN4Glip9ExceptionE, ptr @_ZN4Glip9ExceptionD1Ev) #11
          to label %1029 unwind label %434

422:                                              ; preds = %791, %789, %757, %755, %723, %721, %689, %687, %655, %653, %621, %619, %587, %585, %553, %551, %519, %517, %485, %483, %451, %449, %412, %410, %403
  %423 = landingpad { ptr, i32 }
          cleanup
  %424 = extractvalue { ptr, i32 } %423, 0
  store ptr %424, ptr %9, align 8
  %425 = extractvalue { ptr, i32 } %423, 1
  store i32 %425, ptr %10, align 4
  br label %1023

426:                                              ; preds = %417
  %427 = landingpad { ptr, i32 }
          cleanup
  %428 = extractvalue { ptr, i32 } %427, 0
  store ptr %428, ptr %9, align 8
  %429 = extractvalue { ptr, i32 } %427, 1
  store i32 %429, ptr %10, align 4
  br label %439

430:                                              ; preds = %419
  %431 = landingpad { ptr, i32 }
          cleanup
  %432 = extractvalue { ptr, i32 } %431, 0
  store ptr %432, ptr %9, align 8
  %433 = extractvalue { ptr, i32 } %431, 1
  store i32 %433, ptr %10, align 4
  br label %438

434:                                              ; preds = %421, %420
  %435 = landingpad { ptr, i32 }
          cleanup
  %436 = extractvalue { ptr, i32 } %435, 0
  store ptr %436, ptr %9, align 8
  %437 = extractvalue { ptr, i32 } %435, 1
  store i32 %437, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #10
  br label %438

438:                                              ; preds = %434, %430
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %67) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %67) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #10
  br label %439

439:                                              ; preds = %438, %426
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %65) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %65) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %64) #10
  %440 = load i1, ptr %69, align 1
  br i1 %440, label %441, label %442

441:                                              ; preds = %439
  call void @__cxa_free_exception(ptr %418) #10
  br label %442

442:                                              ; preds = %441, %439
  br label %1023

443:                                              ; preds = %414
  %444 = load ptr, ptr @__glewBindFragDataLocationEXT, align 8, !tbaa !5
  store ptr %444, ptr @__glewBindFragDataLocation, align 8, !tbaa !5
  br label %445

445:                                              ; preds = %443, %407
  br label %446

446:                                              ; preds = %445, %406
  %447 = load ptr, ptr @__glewCompileShader, align 8, !tbaa !5
  %448 = icmp eq ptr %447, null
  br i1 %448, label %449, label %480

449:                                              ; preds = %446
  %450 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.13)
          to label %451 unwind label %422

451:                                              ; preds = %449
  %452 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %450, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %453 unwind label %422

453:                                              ; preds = %451
  %454 = load ptr, ptr @__glewCompileShaderARB, align 8, !tbaa !5
  %455 = icmp eq ptr %454, null
  br i1 %455, label %456, label %478

456:                                              ; preds = %453
  store i1 true, ptr %75, align 1
  %457 = call ptr @__cxa_allocate_exception(i64 152) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %70) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %71) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %70, ptr noundef @.str.14, ptr noundef nonnull align 1 dereferenceable(1) %71)
          to label %458 unwind label %461

458:                                              ; preds = %456
  call void @llvm.lifetime.start.p0(i64 1, ptr %73) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %73) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %72, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %73)
          to label %459 unwind label %465

459:                                              ; preds = %458
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #10
  store i32 3, ptr %74, align 4, !tbaa !39
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %457, ptr noundef nonnull align 8 dereferenceable(32) %70, ptr noundef %72, i32 noundef 78, ptr noundef nonnull align 4 dereferenceable(4) %74)
          to label %460 unwind label %469

460:                                              ; preds = %459
  store i1 false, ptr %75, align 1
  invoke void @__cxa_throw(ptr %457, ptr @_ZTIN4Glip9ExceptionE, ptr @_ZN4Glip9ExceptionD1Ev) #11
          to label %1029 unwind label %469

461:                                              ; preds = %456
  %462 = landingpad { ptr, i32 }
          cleanup
  %463 = extractvalue { ptr, i32 } %462, 0
  store ptr %463, ptr %9, align 8
  %464 = extractvalue { ptr, i32 } %462, 1
  store i32 %464, ptr %10, align 4
  br label %474

465:                                              ; preds = %458
  %466 = landingpad { ptr, i32 }
          cleanup
  %467 = extractvalue { ptr, i32 } %466, 0
  store ptr %467, ptr %9, align 8
  %468 = extractvalue { ptr, i32 } %466, 1
  store i32 %468, ptr %10, align 4
  br label %473

469:                                              ; preds = %460, %459
  %470 = landingpad { ptr, i32 }
          cleanup
  %471 = extractvalue { ptr, i32 } %470, 0
  store ptr %471, ptr %9, align 8
  %472 = extractvalue { ptr, i32 } %470, 1
  store i32 %472, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #10
  br label %473

473:                                              ; preds = %469, %465
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %73) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #10
  br label %474

474:                                              ; preds = %473, %461
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %71) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %70) #10
  %475 = load i1, ptr %75, align 1
  br i1 %475, label %476, label %477

476:                                              ; preds = %474
  call void @__cxa_free_exception(ptr %457) #10
  br label %477

477:                                              ; preds = %476, %474
  br label %1023

478:                                              ; preds = %453
  %479 = load ptr, ptr @__glewCompileShaderARB, align 8, !tbaa !5
  store ptr %479, ptr @__glewCompileShader, align 8, !tbaa !5
  br label %480

480:                                              ; preds = %478, %446
  %481 = load ptr, ptr @__glewLinkProgram, align 8, !tbaa !5
  %482 = icmp eq ptr %481, null
  br i1 %482, label %483, label %514

483:                                              ; preds = %480
  %484 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.15)
          to label %485 unwind label %422

485:                                              ; preds = %483
  %486 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %484, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %487 unwind label %422

487:                                              ; preds = %485
  %488 = load ptr, ptr @__glewLinkProgramARB, align 8, !tbaa !5
  %489 = icmp eq ptr %488, null
  br i1 %489, label %490, label %512

490:                                              ; preds = %487
  store i1 true, ptr %81, align 1
  %491 = call ptr @__cxa_allocate_exception(i64 152) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %76) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %77) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %77) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %76, ptr noundef @.str.16, ptr noundef nonnull align 1 dereferenceable(1) %77)
          to label %492 unwind label %495

492:                                              ; preds = %490
  call void @llvm.lifetime.start.p0(i64 1, ptr %79) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %79) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %78, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %79)
          to label %493 unwind label %499

493:                                              ; preds = %492
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #10
  store i32 3, ptr %80, align 4, !tbaa !39
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %491, ptr noundef nonnull align 8 dereferenceable(32) %76, ptr noundef %78, i32 noundef 79, ptr noundef nonnull align 4 dereferenceable(4) %80)
          to label %494 unwind label %503

494:                                              ; preds = %493
  store i1 false, ptr %81, align 1
  invoke void @__cxa_throw(ptr %491, ptr @_ZTIN4Glip9ExceptionE, ptr @_ZN4Glip9ExceptionD1Ev) #11
          to label %1029 unwind label %503

495:                                              ; preds = %490
  %496 = landingpad { ptr, i32 }
          cleanup
  %497 = extractvalue { ptr, i32 } %496, 0
  store ptr %497, ptr %9, align 8
  %498 = extractvalue { ptr, i32 } %496, 1
  store i32 %498, ptr %10, align 4
  br label %508

499:                                              ; preds = %492
  %500 = landingpad { ptr, i32 }
          cleanup
  %501 = extractvalue { ptr, i32 } %500, 0
  store ptr %501, ptr %9, align 8
  %502 = extractvalue { ptr, i32 } %500, 1
  store i32 %502, ptr %10, align 4
  br label %507

503:                                              ; preds = %494, %493
  %504 = landingpad { ptr, i32 }
          cleanup
  %505 = extractvalue { ptr, i32 } %504, 0
  store ptr %505, ptr %9, align 8
  %506 = extractvalue { ptr, i32 } %504, 1
  store i32 %506, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %78) #10
  br label %507

507:                                              ; preds = %503, %499
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %79) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %79) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #10
  br label %508

508:                                              ; preds = %507, %495
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %77) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %77) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %76) #10
  %509 = load i1, ptr %81, align 1
  br i1 %509, label %510, label %511

510:                                              ; preds = %508
  call void @__cxa_free_exception(ptr %491) #10
  br label %511

511:                                              ; preds = %510, %508
  br label %1023

512:                                              ; preds = %487
  %513 = load ptr, ptr @__glewLinkProgramARB, align 8, !tbaa !5
  store ptr %513, ptr @__glewLinkProgram, align 8, !tbaa !5
  br label %514

514:                                              ; preds = %512, %480
  %515 = load ptr, ptr @__glewGetUniformLocation, align 8, !tbaa !5
  %516 = icmp eq ptr %515, null
  br i1 %516, label %517, label %548

517:                                              ; preds = %514
  %518 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.17)
          to label %519 unwind label %422

519:                                              ; preds = %517
  %520 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %518, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %521 unwind label %422

521:                                              ; preds = %519
  %522 = load ptr, ptr @__glewGetUniformLocationARB, align 8, !tbaa !5
  %523 = icmp eq ptr %522, null
  br i1 %523, label %524, label %546

524:                                              ; preds = %521
  store i1 true, ptr %87, align 1
  %525 = call ptr @__cxa_allocate_exception(i64 152) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %82) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %83) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %83) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %82, ptr noundef @.str.18, ptr noundef nonnull align 1 dereferenceable(1) %83)
          to label %526 unwind label %529

526:                                              ; preds = %524
  call void @llvm.lifetime.start.p0(i64 1, ptr %85) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %85) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %84, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %85)
          to label %527 unwind label %533

527:                                              ; preds = %526
  call void @llvm.lifetime.start.p0(i64 4, ptr %86) #10
  store i32 3, ptr %86, align 4, !tbaa !39
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %525, ptr noundef nonnull align 8 dereferenceable(32) %82, ptr noundef %84, i32 noundef 80, ptr noundef nonnull align 4 dereferenceable(4) %86)
          to label %528 unwind label %537

528:                                              ; preds = %527
  store i1 false, ptr %87, align 1
  invoke void @__cxa_throw(ptr %525, ptr @_ZTIN4Glip9ExceptionE, ptr @_ZN4Glip9ExceptionD1Ev) #11
          to label %1029 unwind label %537

529:                                              ; preds = %524
  %530 = landingpad { ptr, i32 }
          cleanup
  %531 = extractvalue { ptr, i32 } %530, 0
  store ptr %531, ptr %9, align 8
  %532 = extractvalue { ptr, i32 } %530, 1
  store i32 %532, ptr %10, align 4
  br label %542

533:                                              ; preds = %526
  %534 = landingpad { ptr, i32 }
          cleanup
  %535 = extractvalue { ptr, i32 } %534, 0
  store ptr %535, ptr %9, align 8
  %536 = extractvalue { ptr, i32 } %534, 1
  store i32 %536, ptr %10, align 4
  br label %541

537:                                              ; preds = %528, %527
  %538 = landingpad { ptr, i32 }
          cleanup
  %539 = extractvalue { ptr, i32 } %538, 0
  store ptr %539, ptr %9, align 8
  %540 = extractvalue { ptr, i32 } %538, 1
  store i32 %540, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %84) #10
  br label %541

541:                                              ; preds = %537, %533
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %85) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %85) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %82) #10
  br label %542

542:                                              ; preds = %541, %529
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %83) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %83) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %82) #10
  %543 = load i1, ptr %87, align 1
  br i1 %543, label %544, label %545

544:                                              ; preds = %542
  call void @__cxa_free_exception(ptr %525) #10
  br label %545

545:                                              ; preds = %544, %542
  br label %1023

546:                                              ; preds = %521
  %547 = load ptr, ptr @__glewGetUniformLocationARB, align 8, !tbaa !5
  store ptr %547, ptr @__glewGetUniformLocation, align 8, !tbaa !5
  br label %548

548:                                              ; preds = %546, %514
  %549 = load ptr, ptr @__glewUniform1i, align 8, !tbaa !5
  %550 = icmp eq ptr %549, null
  br i1 %550, label %551, label %582

551:                                              ; preds = %548
  %552 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.19)
          to label %553 unwind label %422

553:                                              ; preds = %551
  %554 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %552, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %555 unwind label %422

555:                                              ; preds = %553
  %556 = load ptr, ptr @__glewUniform1iARB, align 8, !tbaa !5
  %557 = icmp eq ptr %556, null
  br i1 %557, label %558, label %580

558:                                              ; preds = %555
  store i1 true, ptr %93, align 1
  %559 = call ptr @__cxa_allocate_exception(i64 152) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %88) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %89) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %89) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %88, ptr noundef @.str.20, ptr noundef nonnull align 1 dereferenceable(1) %89)
          to label %560 unwind label %563

560:                                              ; preds = %558
  call void @llvm.lifetime.start.p0(i64 1, ptr %91) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %91) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %90, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %91)
          to label %561 unwind label %567

561:                                              ; preds = %560
  call void @llvm.lifetime.start.p0(i64 4, ptr %92) #10
  store i32 3, ptr %92, align 4, !tbaa !39
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %559, ptr noundef nonnull align 8 dereferenceable(32) %88, ptr noundef %90, i32 noundef 81, ptr noundef nonnull align 4 dereferenceable(4) %92)
          to label %562 unwind label %571

562:                                              ; preds = %561
  store i1 false, ptr %93, align 1
  invoke void @__cxa_throw(ptr %559, ptr @_ZTIN4Glip9ExceptionE, ptr @_ZN4Glip9ExceptionD1Ev) #11
          to label %1029 unwind label %571

563:                                              ; preds = %558
  %564 = landingpad { ptr, i32 }
          cleanup
  %565 = extractvalue { ptr, i32 } %564, 0
  store ptr %565, ptr %9, align 8
  %566 = extractvalue { ptr, i32 } %564, 1
  store i32 %566, ptr %10, align 4
  br label %576

567:                                              ; preds = %560
  %568 = landingpad { ptr, i32 }
          cleanup
  %569 = extractvalue { ptr, i32 } %568, 0
  store ptr %569, ptr %9, align 8
  %570 = extractvalue { ptr, i32 } %568, 1
  store i32 %570, ptr %10, align 4
  br label %575

571:                                              ; preds = %562, %561
  %572 = landingpad { ptr, i32 }
          cleanup
  %573 = extractvalue { ptr, i32 } %572, 0
  store ptr %573, ptr %9, align 8
  %574 = extractvalue { ptr, i32 } %572, 1
  store i32 %574, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %90) #10
  br label %575

575:                                              ; preds = %571, %567
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %91) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %91) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %88) #10
  br label %576

576:                                              ; preds = %575, %563
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %89) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %88) #10
  %577 = load i1, ptr %93, align 1
  br i1 %577, label %578, label %579

578:                                              ; preds = %576
  call void @__cxa_free_exception(ptr %559) #10
  br label %579

579:                                              ; preds = %578, %576
  br label %1023

580:                                              ; preds = %555
  %581 = load ptr, ptr @__glewUniform1iARB, align 8, !tbaa !5
  store ptr %581, ptr @__glewUniform1i, align 8, !tbaa !5
  br label %582

582:                                              ; preds = %580, %548
  %583 = load ptr, ptr @__glewUniform2i, align 8, !tbaa !5
  %584 = icmp eq ptr %583, null
  br i1 %584, label %585, label %616

585:                                              ; preds = %582
  %586 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.21)
          to label %587 unwind label %422

587:                                              ; preds = %585
  %588 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %586, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %589 unwind label %422

589:                                              ; preds = %587
  %590 = load ptr, ptr @__glewUniform2iARB, align 8, !tbaa !5
  %591 = icmp eq ptr %590, null
  br i1 %591, label %592, label %614

592:                                              ; preds = %589
  store i1 true, ptr %99, align 1
  %593 = call ptr @__cxa_allocate_exception(i64 152) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %94) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %95) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %95) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %94, ptr noundef @.str.22, ptr noundef nonnull align 1 dereferenceable(1) %95)
          to label %594 unwind label %597

594:                                              ; preds = %592
  call void @llvm.lifetime.start.p0(i64 1, ptr %97) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %97) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %96, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %97)
          to label %595 unwind label %601

595:                                              ; preds = %594
  call void @llvm.lifetime.start.p0(i64 4, ptr %98) #10
  store i32 3, ptr %98, align 4, !tbaa !39
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %593, ptr noundef nonnull align 8 dereferenceable(32) %94, ptr noundef %96, i32 noundef 82, ptr noundef nonnull align 4 dereferenceable(4) %98)
          to label %596 unwind label %605

596:                                              ; preds = %595
  store i1 false, ptr %99, align 1
  invoke void @__cxa_throw(ptr %593, ptr @_ZTIN4Glip9ExceptionE, ptr @_ZN4Glip9ExceptionD1Ev) #11
          to label %1029 unwind label %605

597:                                              ; preds = %592
  %598 = landingpad { ptr, i32 }
          cleanup
  %599 = extractvalue { ptr, i32 } %598, 0
  store ptr %599, ptr %9, align 8
  %600 = extractvalue { ptr, i32 } %598, 1
  store i32 %600, ptr %10, align 4
  br label %610

601:                                              ; preds = %594
  %602 = landingpad { ptr, i32 }
          cleanup
  %603 = extractvalue { ptr, i32 } %602, 0
  store ptr %603, ptr %9, align 8
  %604 = extractvalue { ptr, i32 } %602, 1
  store i32 %604, ptr %10, align 4
  br label %609

605:                                              ; preds = %596, %595
  %606 = landingpad { ptr, i32 }
          cleanup
  %607 = extractvalue { ptr, i32 } %606, 0
  store ptr %607, ptr %9, align 8
  %608 = extractvalue { ptr, i32 } %606, 1
  store i32 %608, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %98) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %96) #10
  br label %609

609:                                              ; preds = %605, %601
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %97) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %97) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %94) #10
  br label %610

610:                                              ; preds = %609, %597
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %95) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %95) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %94) #10
  %611 = load i1, ptr %99, align 1
  br i1 %611, label %612, label %613

612:                                              ; preds = %610
  call void @__cxa_free_exception(ptr %593) #10
  br label %613

613:                                              ; preds = %612, %610
  br label %1023

614:                                              ; preds = %589
  %615 = load ptr, ptr @__glewUniform2iARB, align 8, !tbaa !5
  store ptr %615, ptr @__glewUniform2i, align 8, !tbaa !5
  br label %616

616:                                              ; preds = %614, %582
  %617 = load ptr, ptr @__glewUniform3i, align 8, !tbaa !5
  %618 = icmp eq ptr %617, null
  br i1 %618, label %619, label %650

619:                                              ; preds = %616
  %620 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.23)
          to label %621 unwind label %422

621:                                              ; preds = %619
  %622 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %620, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %623 unwind label %422

623:                                              ; preds = %621
  %624 = load ptr, ptr @__glewUniform3iARB, align 8, !tbaa !5
  %625 = icmp eq ptr %624, null
  br i1 %625, label %626, label %648

626:                                              ; preds = %623
  store i1 true, ptr %105, align 1
  %627 = call ptr @__cxa_allocate_exception(i64 152) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %100) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %101) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %101) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %100, ptr noundef @.str.24, ptr noundef nonnull align 1 dereferenceable(1) %101)
          to label %628 unwind label %631

628:                                              ; preds = %626
  call void @llvm.lifetime.start.p0(i64 1, ptr %103) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %103) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %102, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %103)
          to label %629 unwind label %635

629:                                              ; preds = %628
  call void @llvm.lifetime.start.p0(i64 4, ptr %104) #10
  store i32 3, ptr %104, align 4, !tbaa !39
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %627, ptr noundef nonnull align 8 dereferenceable(32) %100, ptr noundef %102, i32 noundef 83, ptr noundef nonnull align 4 dereferenceable(4) %104)
          to label %630 unwind label %639

630:                                              ; preds = %629
  store i1 false, ptr %105, align 1
  invoke void @__cxa_throw(ptr %627, ptr @_ZTIN4Glip9ExceptionE, ptr @_ZN4Glip9ExceptionD1Ev) #11
          to label %1029 unwind label %639

631:                                              ; preds = %626
  %632 = landingpad { ptr, i32 }
          cleanup
  %633 = extractvalue { ptr, i32 } %632, 0
  store ptr %633, ptr %9, align 8
  %634 = extractvalue { ptr, i32 } %632, 1
  store i32 %634, ptr %10, align 4
  br label %644

635:                                              ; preds = %628
  %636 = landingpad { ptr, i32 }
          cleanup
  %637 = extractvalue { ptr, i32 } %636, 0
  store ptr %637, ptr %9, align 8
  %638 = extractvalue { ptr, i32 } %636, 1
  store i32 %638, ptr %10, align 4
  br label %643

639:                                              ; preds = %630, %629
  %640 = landingpad { ptr, i32 }
          cleanup
  %641 = extractvalue { ptr, i32 } %640, 0
  store ptr %641, ptr %9, align 8
  %642 = extractvalue { ptr, i32 } %640, 1
  store i32 %642, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %104) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %102) #10
  br label %643

643:                                              ; preds = %639, %635
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %103) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %103) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %100) #10
  br label %644

644:                                              ; preds = %643, %631
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %101) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %101) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %100) #10
  %645 = load i1, ptr %105, align 1
  br i1 %645, label %646, label %647

646:                                              ; preds = %644
  call void @__cxa_free_exception(ptr %627) #10
  br label %647

647:                                              ; preds = %646, %644
  br label %1023

648:                                              ; preds = %623
  %649 = load ptr, ptr @__glewUniform3iARB, align 8, !tbaa !5
  store ptr %649, ptr @__glewUniform3i, align 8, !tbaa !5
  br label %650

650:                                              ; preds = %648, %616
  %651 = load ptr, ptr @__glewUniform4i, align 8, !tbaa !5
  %652 = icmp eq ptr %651, null
  br i1 %652, label %653, label %684

653:                                              ; preds = %650
  %654 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.25)
          to label %655 unwind label %422

655:                                              ; preds = %653
  %656 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %654, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %657 unwind label %422

657:                                              ; preds = %655
  %658 = load ptr, ptr @__glewUniform4iARB, align 8, !tbaa !5
  %659 = icmp eq ptr %658, null
  br i1 %659, label %660, label %682

660:                                              ; preds = %657
  store i1 true, ptr %111, align 1
  %661 = call ptr @__cxa_allocate_exception(i64 152) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %106) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %107) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %107) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %106, ptr noundef @.str.26, ptr noundef nonnull align 1 dereferenceable(1) %107)
          to label %662 unwind label %665

662:                                              ; preds = %660
  call void @llvm.lifetime.start.p0(i64 1, ptr %109) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %109) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %108, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %109)
          to label %663 unwind label %669

663:                                              ; preds = %662
  call void @llvm.lifetime.start.p0(i64 4, ptr %110) #10
  store i32 3, ptr %110, align 4, !tbaa !39
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %661, ptr noundef nonnull align 8 dereferenceable(32) %106, ptr noundef %108, i32 noundef 84, ptr noundef nonnull align 4 dereferenceable(4) %110)
          to label %664 unwind label %673

664:                                              ; preds = %663
  store i1 false, ptr %111, align 1
  invoke void @__cxa_throw(ptr %661, ptr @_ZTIN4Glip9ExceptionE, ptr @_ZN4Glip9ExceptionD1Ev) #11
          to label %1029 unwind label %673

665:                                              ; preds = %660
  %666 = landingpad { ptr, i32 }
          cleanup
  %667 = extractvalue { ptr, i32 } %666, 0
  store ptr %667, ptr %9, align 8
  %668 = extractvalue { ptr, i32 } %666, 1
  store i32 %668, ptr %10, align 4
  br label %678

669:                                              ; preds = %662
  %670 = landingpad { ptr, i32 }
          cleanup
  %671 = extractvalue { ptr, i32 } %670, 0
  store ptr %671, ptr %9, align 8
  %672 = extractvalue { ptr, i32 } %670, 1
  store i32 %672, ptr %10, align 4
  br label %677

673:                                              ; preds = %664, %663
  %674 = landingpad { ptr, i32 }
          cleanup
  %675 = extractvalue { ptr, i32 } %674, 0
  store ptr %675, ptr %9, align 8
  %676 = extractvalue { ptr, i32 } %674, 1
  store i32 %676, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %110) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %108) #10
  br label %677

677:                                              ; preds = %673, %669
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %109) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %109) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %106) #10
  br label %678

678:                                              ; preds = %677, %665
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %107) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %107) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %106) #10
  %679 = load i1, ptr %111, align 1
  br i1 %679, label %680, label %681

680:                                              ; preds = %678
  call void @__cxa_free_exception(ptr %661) #10
  br label %681

681:                                              ; preds = %680, %678
  br label %1023

682:                                              ; preds = %657
  %683 = load ptr, ptr @__glewUniform4iARB, align 8, !tbaa !5
  store ptr %683, ptr @__glewUniform4i, align 8, !tbaa !5
  br label %684

684:                                              ; preds = %682, %650
  %685 = load ptr, ptr @__glewUniform1f, align 8, !tbaa !5
  %686 = icmp eq ptr %685, null
  br i1 %686, label %687, label %718

687:                                              ; preds = %684
  %688 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.27)
          to label %689 unwind label %422

689:                                              ; preds = %687
  %690 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %688, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %691 unwind label %422

691:                                              ; preds = %689
  %692 = load ptr, ptr @__glewUniform1fARB, align 8, !tbaa !5
  %693 = icmp eq ptr %692, null
  br i1 %693, label %694, label %716

694:                                              ; preds = %691
  store i1 true, ptr %117, align 1
  %695 = call ptr @__cxa_allocate_exception(i64 152) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %112) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %113) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %113) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %112, ptr noundef @.str.28, ptr noundef nonnull align 1 dereferenceable(1) %113)
          to label %696 unwind label %699

696:                                              ; preds = %694
  call void @llvm.lifetime.start.p0(i64 1, ptr %115) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %115) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %114, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %115)
          to label %697 unwind label %703

697:                                              ; preds = %696
  call void @llvm.lifetime.start.p0(i64 4, ptr %116) #10
  store i32 3, ptr %116, align 4, !tbaa !39
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %695, ptr noundef nonnull align 8 dereferenceable(32) %112, ptr noundef %114, i32 noundef 85, ptr noundef nonnull align 4 dereferenceable(4) %116)
          to label %698 unwind label %707

698:                                              ; preds = %697
  store i1 false, ptr %117, align 1
  invoke void @__cxa_throw(ptr %695, ptr @_ZTIN4Glip9ExceptionE, ptr @_ZN4Glip9ExceptionD1Ev) #11
          to label %1029 unwind label %707

699:                                              ; preds = %694
  %700 = landingpad { ptr, i32 }
          cleanup
  %701 = extractvalue { ptr, i32 } %700, 0
  store ptr %701, ptr %9, align 8
  %702 = extractvalue { ptr, i32 } %700, 1
  store i32 %702, ptr %10, align 4
  br label %712

703:                                              ; preds = %696
  %704 = landingpad { ptr, i32 }
          cleanup
  %705 = extractvalue { ptr, i32 } %704, 0
  store ptr %705, ptr %9, align 8
  %706 = extractvalue { ptr, i32 } %704, 1
  store i32 %706, ptr %10, align 4
  br label %711

707:                                              ; preds = %698, %697
  %708 = landingpad { ptr, i32 }
          cleanup
  %709 = extractvalue { ptr, i32 } %708, 0
  store ptr %709, ptr %9, align 8
  %710 = extractvalue { ptr, i32 } %708, 1
  store i32 %710, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %116) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %114) #10
  br label %711

711:                                              ; preds = %707, %703
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %115) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %115) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %112) #10
  br label %712

712:                                              ; preds = %711, %699
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %113) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %113) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %112) #10
  %713 = load i1, ptr %117, align 1
  br i1 %713, label %714, label %715

714:                                              ; preds = %712
  call void @__cxa_free_exception(ptr %695) #10
  br label %715

715:                                              ; preds = %714, %712
  br label %1023

716:                                              ; preds = %691
  %717 = load ptr, ptr @__glewUniform1fARB, align 8, !tbaa !5
  store ptr %717, ptr @__glewUniform1f, align 8, !tbaa !5
  br label %718

718:                                              ; preds = %716, %684
  %719 = load ptr, ptr @__glewUniform2f, align 8, !tbaa !5
  %720 = icmp eq ptr %719, null
  br i1 %720, label %721, label %752

721:                                              ; preds = %718
  %722 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.29)
          to label %723 unwind label %422

723:                                              ; preds = %721
  %724 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %722, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %725 unwind label %422

725:                                              ; preds = %723
  %726 = load ptr, ptr @__glewUniform2fARB, align 8, !tbaa !5
  %727 = icmp eq ptr %726, null
  br i1 %727, label %728, label %750

728:                                              ; preds = %725
  store i1 true, ptr %123, align 1
  %729 = call ptr @__cxa_allocate_exception(i64 152) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %118) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %119) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %119) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %118, ptr noundef @.str.30, ptr noundef nonnull align 1 dereferenceable(1) %119)
          to label %730 unwind label %733

730:                                              ; preds = %728
  call void @llvm.lifetime.start.p0(i64 1, ptr %121) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %121) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %120, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %121)
          to label %731 unwind label %737

731:                                              ; preds = %730
  call void @llvm.lifetime.start.p0(i64 4, ptr %122) #10
  store i32 3, ptr %122, align 4, !tbaa !39
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %729, ptr noundef nonnull align 8 dereferenceable(32) %118, ptr noundef %120, i32 noundef 86, ptr noundef nonnull align 4 dereferenceable(4) %122)
          to label %732 unwind label %741

732:                                              ; preds = %731
  store i1 false, ptr %123, align 1
  invoke void @__cxa_throw(ptr %729, ptr @_ZTIN4Glip9ExceptionE, ptr @_ZN4Glip9ExceptionD1Ev) #11
          to label %1029 unwind label %741

733:                                              ; preds = %728
  %734 = landingpad { ptr, i32 }
          cleanup
  %735 = extractvalue { ptr, i32 } %734, 0
  store ptr %735, ptr %9, align 8
  %736 = extractvalue { ptr, i32 } %734, 1
  store i32 %736, ptr %10, align 4
  br label %746

737:                                              ; preds = %730
  %738 = landingpad { ptr, i32 }
          cleanup
  %739 = extractvalue { ptr, i32 } %738, 0
  store ptr %739, ptr %9, align 8
  %740 = extractvalue { ptr, i32 } %738, 1
  store i32 %740, ptr %10, align 4
  br label %745

741:                                              ; preds = %732, %731
  %742 = landingpad { ptr, i32 }
          cleanup
  %743 = extractvalue { ptr, i32 } %742, 0
  store ptr %743, ptr %9, align 8
  %744 = extractvalue { ptr, i32 } %742, 1
  store i32 %744, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %122) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %120) #10
  br label %745

745:                                              ; preds = %741, %737
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %121) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %121) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %118) #10
  br label %746

746:                                              ; preds = %745, %733
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %119) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %119) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %118) #10
  %747 = load i1, ptr %123, align 1
  br i1 %747, label %748, label %749

748:                                              ; preds = %746
  call void @__cxa_free_exception(ptr %729) #10
  br label %749

749:                                              ; preds = %748, %746
  br label %1023

750:                                              ; preds = %725
  %751 = load ptr, ptr @__glewUniform2fARB, align 8, !tbaa !5
  store ptr %751, ptr @__glewUniform2f, align 8, !tbaa !5
  br label %752

752:                                              ; preds = %750, %718
  %753 = load ptr, ptr @__glewUniform3f, align 8, !tbaa !5
  %754 = icmp eq ptr %753, null
  br i1 %754, label %755, label %786

755:                                              ; preds = %752
  %756 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.31)
          to label %757 unwind label %422

757:                                              ; preds = %755
  %758 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %756, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %759 unwind label %422

759:                                              ; preds = %757
  %760 = load ptr, ptr @__glewUniform3fARB, align 8, !tbaa !5
  %761 = icmp eq ptr %760, null
  br i1 %761, label %762, label %784

762:                                              ; preds = %759
  store i1 true, ptr %129, align 1
  %763 = call ptr @__cxa_allocate_exception(i64 152) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %124) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %125) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %125) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %124, ptr noundef @.str.32, ptr noundef nonnull align 1 dereferenceable(1) %125)
          to label %764 unwind label %767

764:                                              ; preds = %762
  call void @llvm.lifetime.start.p0(i64 1, ptr %127) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %127) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %126, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %127)
          to label %765 unwind label %771

765:                                              ; preds = %764
  call void @llvm.lifetime.start.p0(i64 4, ptr %128) #10
  store i32 3, ptr %128, align 4, !tbaa !39
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %763, ptr noundef nonnull align 8 dereferenceable(32) %124, ptr noundef %126, i32 noundef 87, ptr noundef nonnull align 4 dereferenceable(4) %128)
          to label %766 unwind label %775

766:                                              ; preds = %765
  store i1 false, ptr %129, align 1
  invoke void @__cxa_throw(ptr %763, ptr @_ZTIN4Glip9ExceptionE, ptr @_ZN4Glip9ExceptionD1Ev) #11
          to label %1029 unwind label %775

767:                                              ; preds = %762
  %768 = landingpad { ptr, i32 }
          cleanup
  %769 = extractvalue { ptr, i32 } %768, 0
  store ptr %769, ptr %9, align 8
  %770 = extractvalue { ptr, i32 } %768, 1
  store i32 %770, ptr %10, align 4
  br label %780

771:                                              ; preds = %764
  %772 = landingpad { ptr, i32 }
          cleanup
  %773 = extractvalue { ptr, i32 } %772, 0
  store ptr %773, ptr %9, align 8
  %774 = extractvalue { ptr, i32 } %772, 1
  store i32 %774, ptr %10, align 4
  br label %779

775:                                              ; preds = %766, %765
  %776 = landingpad { ptr, i32 }
          cleanup
  %777 = extractvalue { ptr, i32 } %776, 0
  store ptr %777, ptr %9, align 8
  %778 = extractvalue { ptr, i32 } %776, 1
  store i32 %778, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %128) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %126) #10
  br label %779

779:                                              ; preds = %775, %771
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %127) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %127) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %124) #10
  br label %780

780:                                              ; preds = %779, %767
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %125) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %125) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %124) #10
  %781 = load i1, ptr %129, align 1
  br i1 %781, label %782, label %783

782:                                              ; preds = %780
  call void @__cxa_free_exception(ptr %763) #10
  br label %783

783:                                              ; preds = %782, %780
  br label %1023

784:                                              ; preds = %759
  %785 = load ptr, ptr @__glewUniform3fARB, align 8, !tbaa !5
  store ptr %785, ptr @__glewUniform3f, align 8, !tbaa !5
  br label %786

786:                                              ; preds = %784, %752
  %787 = load ptr, ptr @__glewUniform4f, align 8, !tbaa !5
  %788 = icmp eq ptr %787, null
  br i1 %788, label %789, label %820

789:                                              ; preds = %786
  %790 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.33)
          to label %791 unwind label %422

791:                                              ; preds = %789
  %792 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %790, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %793 unwind label %422

793:                                              ; preds = %791
  %794 = load ptr, ptr @__glewUniform4fARB, align 8, !tbaa !5
  %795 = icmp eq ptr %794, null
  br i1 %795, label %796, label %818

796:                                              ; preds = %793
  store i1 true, ptr %135, align 1
  %797 = call ptr @__cxa_allocate_exception(i64 152) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %130) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %131) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %131) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %130, ptr noundef @.str.34, ptr noundef nonnull align 1 dereferenceable(1) %131)
          to label %798 unwind label %801

798:                                              ; preds = %796
  call void @llvm.lifetime.start.p0(i64 1, ptr %133) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %133) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %132, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %133)
          to label %799 unwind label %805

799:                                              ; preds = %798
  call void @llvm.lifetime.start.p0(i64 4, ptr %134) #10
  store i32 3, ptr %134, align 4, !tbaa !39
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %797, ptr noundef nonnull align 8 dereferenceable(32) %130, ptr noundef %132, i32 noundef 88, ptr noundef nonnull align 4 dereferenceable(4) %134)
          to label %800 unwind label %809

800:                                              ; preds = %799
  store i1 false, ptr %135, align 1
  invoke void @__cxa_throw(ptr %797, ptr @_ZTIN4Glip9ExceptionE, ptr @_ZN4Glip9ExceptionD1Ev) #11
          to label %1029 unwind label %809

801:                                              ; preds = %796
  %802 = landingpad { ptr, i32 }
          cleanup
  %803 = extractvalue { ptr, i32 } %802, 0
  store ptr %803, ptr %9, align 8
  %804 = extractvalue { ptr, i32 } %802, 1
  store i32 %804, ptr %10, align 4
  br label %814

805:                                              ; preds = %798
  %806 = landingpad { ptr, i32 }
          cleanup
  %807 = extractvalue { ptr, i32 } %806, 0
  store ptr %807, ptr %9, align 8
  %808 = extractvalue { ptr, i32 } %806, 1
  store i32 %808, ptr %10, align 4
  br label %813

809:                                              ; preds = %800, %799
  %810 = landingpad { ptr, i32 }
          cleanup
  %811 = extractvalue { ptr, i32 } %810, 0
  store ptr %811, ptr %9, align 8
  %812 = extractvalue { ptr, i32 } %810, 1
  store i32 %812, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %134) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %132) #10
  br label %813

813:                                              ; preds = %809, %805
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %133) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %133) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %130) #10
  br label %814

814:                                              ; preds = %813, %801
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %131) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %131) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %130) #10
  %815 = load i1, ptr %135, align 1
  br i1 %815, label %816, label %817

816:                                              ; preds = %814
  call void @__cxa_free_exception(ptr %797) #10
  br label %817

817:                                              ; preds = %816, %814
  br label %1023

818:                                              ; preds = %793
  %819 = load ptr, ptr @__glewUniform4fARB, align 8, !tbaa !5
  store ptr %819, ptr @__glewUniform4f, align 8, !tbaa !5
  br label %820

820:                                              ; preds = %818, %786
  call void @llvm.lifetime.start.p0(i64 24, ptr %136) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %136, ptr align 16 @__const.HdlShader.listCorrectEnum, i64 24, i1 false)
  %821 = getelementptr inbounds %"class.Glip::CoreGL::HdlShader", ptr %163, i32 0, i32 2
  %822 = invoke noundef zeroext i1 @_ZN4Glip6CoreGL16belongsToGLEnumsILm6EEEbRKjRAT__S2_(ptr noundef nonnull align 4 dereferenceable(4) %821, ptr noundef nonnull align 4 dereferenceable(24) %136)
          to label %823 unwind label %831

823:                                              ; preds = %820
  br i1 %822, label %857, label %824

824:                                              ; preds = %823
  store i1 true, ptr %143, align 1
  %825 = call ptr @__cxa_allocate_exception(i64 152) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %137) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %138) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %139) #10
  %826 = getelementptr inbounds %"class.Glip::CoreGL::HdlShader", ptr %163, i32 0, i32 2
  call void @_ZN4Glip6CoreGL17getGLEnumNameSafeB5cxx11ERKj(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %139, ptr noundef nonnull align 4 dereferenceable(4) %826) #10
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %138, ptr noundef @.str.35, ptr noundef nonnull align 8 dereferenceable(32) %139)
          to label %827 unwind label %835

827:                                              ; preds = %824
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %137, ptr noundef nonnull align 8 dereferenceable(32) %138, ptr noundef @.str.36)
          to label %828 unwind label %839

828:                                              ; preds = %827
  call void @llvm.lifetime.start.p0(i64 1, ptr %141) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %141) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %140, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %141)
          to label %829 unwind label %843

829:                                              ; preds = %828
  call void @llvm.lifetime.start.p0(i64 4, ptr %142) #10
  store i32 3, ptr %142, align 4, !tbaa !39
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %825, ptr noundef nonnull align 8 dereferenceable(32) %137, ptr noundef %140, i32 noundef 97, ptr noundef nonnull align 4 dereferenceable(4) %142)
          to label %830 unwind label %847

830:                                              ; preds = %829
  store i1 false, ptr %143, align 1
  invoke void @__cxa_throw(ptr %825, ptr @_ZTIN4Glip9ExceptionE, ptr @_ZN4Glip9ExceptionD1Ev) #11
          to label %1029 unwind label %847

831:                                              ; preds = %857, %820
  %832 = landingpad { ptr, i32 }
          cleanup
  %833 = extractvalue { ptr, i32 } %832, 0
  store ptr %833, ptr %9, align 8
  %834 = extractvalue { ptr, i32 } %832, 1
  store i32 %834, ptr %10, align 4
  br label %1022

835:                                              ; preds = %824
  %836 = landingpad { ptr, i32 }
          cleanup
  %837 = extractvalue { ptr, i32 } %836, 0
  store ptr %837, ptr %9, align 8
  %838 = extractvalue { ptr, i32 } %836, 1
  store i32 %838, ptr %10, align 4
  br label %853

839:                                              ; preds = %827
  %840 = landingpad { ptr, i32 }
          cleanup
  %841 = extractvalue { ptr, i32 } %840, 0
  store ptr %841, ptr %9, align 8
  %842 = extractvalue { ptr, i32 } %840, 1
  store i32 %842, ptr %10, align 4
  br label %852

843:                                              ; preds = %828
  %844 = landingpad { ptr, i32 }
          cleanup
  %845 = extractvalue { ptr, i32 } %844, 0
  store ptr %845, ptr %9, align 8
  %846 = extractvalue { ptr, i32 } %844, 1
  store i32 %846, ptr %10, align 4
  br label %851

847:                                              ; preds = %830, %829
  %848 = landingpad { ptr, i32 }
          cleanup
  %849 = extractvalue { ptr, i32 } %848, 0
  store ptr %849, ptr %9, align 8
  %850 = extractvalue { ptr, i32 } %848, 1
  store i32 %850, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %142) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %140) #10
  br label %851

851:                                              ; preds = %847, %843
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %141) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %141) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %137) #10
  br label %852

852:                                              ; preds = %851, %839
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %138) #10
  br label %853

853:                                              ; preds = %852, %835
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %139) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %139) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %138) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %137) #10
  %854 = load i1, ptr %143, align 1
  br i1 %854, label %855, label %856

855:                                              ; preds = %853
  call void @__cxa_free_exception(ptr %825) #10
  br label %856

856:                                              ; preds = %855, %853
  br label %1022

857:                                              ; preds = %823
  %858 = load ptr, ptr @__glewCreateShader, align 8, !tbaa !5
  %859 = getelementptr inbounds %"class.Glip::CoreGL::HdlShader", ptr %163, i32 0, i32 2
  %860 = load i32, ptr %859, align 4, !tbaa !11
  %861 = invoke i32 %858(i32 noundef %860)
          to label %862 unwind label %831

862:                                              ; preds = %857
  %863 = getelementptr inbounds %"class.Glip::CoreGL::HdlShader", ptr %163, i32 0, i32 1
  store i32 %861, ptr %863, align 8, !tbaa !41
  %864 = getelementptr inbounds %"class.Glip::CoreGL::HdlShader", ptr %163, i32 0, i32 1
  %865 = load i32, ptr %864, align 8, !tbaa !41
  %866 = icmp eq i32 %865, 0
  br i1 %866, label %867, label %928

867:                                              ; preds = %862
  call void @llvm.lifetime.start.p0(i64 4, ptr %144) #10
  %868 = invoke i32 @glGetError()
          to label %869 unwind label %881

869:                                              ; preds = %867
  store i32 %868, ptr %144, align 4, !tbaa !9
  store i1 true, ptr %155, align 1
  %870 = call ptr @__cxa_allocate_exception(i64 152) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %145) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %146) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %147) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %148) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %149) #10
  %871 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK4Glip6CoreGL12ShaderSource13getSourceNameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(272) %163)
          to label %872 unwind label %885

872:                                              ; preds = %869
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %149, ptr noundef @.str.37, ptr noundef nonnull align 8 dereferenceable(32) %871)
          to label %873 unwind label %885

873:                                              ; preds = %872
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %148, ptr noundef nonnull align 8 dereferenceable(32) %149, ptr noundef @.str.38)
          to label %874 unwind label %889

874:                                              ; preds = %873
  call void @llvm.lifetime.start.p0(i64 32, ptr %150) #10
  call void @_ZN4Glip6CoreGL17getGLEnumNameSafeB5cxx11ERKj(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %150, ptr noundef nonnull align 4 dereferenceable(4) %144) #10
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %147, ptr noundef nonnull align 8 dereferenceable(32) %148, ptr noundef nonnull align 8 dereferenceable(32) %150)
          to label %875 unwind label %893

875:                                              ; preds = %874
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %146, ptr noundef nonnull align 8 dereferenceable(32) %147, ptr noundef @.str.39)
          to label %876 unwind label %897

876:                                              ; preds = %875
  call void @llvm.lifetime.start.p0(i64 32, ptr %151) #10
  invoke void @_ZN4Glip6CoreGL21getGLErrorDescriptionB5cxx11ERKj(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %151, ptr noundef nonnull align 4 dereferenceable(4) %144)
          to label %877 unwind label %901

877:                                              ; preds = %876
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %145, ptr noundef nonnull align 8 dereferenceable(32) %146, ptr noundef nonnull align 8 dereferenceable(32) %151)
          to label %878 unwind label %905

878:                                              ; preds = %877
  call void @llvm.lifetime.start.p0(i64 1, ptr %153) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %153) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %152, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %153)
          to label %879 unwind label %909

879:                                              ; preds = %878
  call void @llvm.lifetime.start.p0(i64 4, ptr %154) #10
  store i32 3, ptr %154, align 4, !tbaa !39
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %870, ptr noundef nonnull align 8 dereferenceable(32) %145, ptr noundef %152, i32 noundef 109, ptr noundef nonnull align 4 dereferenceable(4) %154)
          to label %880 unwind label %913

880:                                              ; preds = %879
  store i1 false, ptr %155, align 1
  invoke void @__cxa_throw(ptr %870, ptr @_ZTIN4Glip9ExceptionE, ptr @_ZN4Glip9ExceptionD1Ev) #11
          to label %1029 unwind label %913

881:                                              ; preds = %867
  %882 = landingpad { ptr, i32 }
          cleanup
  %883 = extractvalue { ptr, i32 } %882, 0
  store ptr %883, ptr %9, align 8
  %884 = extractvalue { ptr, i32 } %882, 1
  store i32 %884, ptr %10, align 4
  br label %927

885:                                              ; preds = %872, %869
  %886 = landingpad { ptr, i32 }
          cleanup
  %887 = extractvalue { ptr, i32 } %886, 0
  store ptr %887, ptr %9, align 8
  %888 = extractvalue { ptr, i32 } %886, 1
  store i32 %888, ptr %10, align 4
  br label %923

889:                                              ; preds = %873
  %890 = landingpad { ptr, i32 }
          cleanup
  %891 = extractvalue { ptr, i32 } %890, 0
  store ptr %891, ptr %9, align 8
  %892 = extractvalue { ptr, i32 } %890, 1
  store i32 %892, ptr %10, align 4
  br label %922

893:                                              ; preds = %874
  %894 = landingpad { ptr, i32 }
          cleanup
  %895 = extractvalue { ptr, i32 } %894, 0
  store ptr %895, ptr %9, align 8
  %896 = extractvalue { ptr, i32 } %894, 1
  store i32 %896, ptr %10, align 4
  br label %921

897:                                              ; preds = %875
  %898 = landingpad { ptr, i32 }
          cleanup
  %899 = extractvalue { ptr, i32 } %898, 0
  store ptr %899, ptr %9, align 8
  %900 = extractvalue { ptr, i32 } %898, 1
  store i32 %900, ptr %10, align 4
  br label %920

901:                                              ; preds = %876
  %902 = landingpad { ptr, i32 }
          cleanup
  %903 = extractvalue { ptr, i32 } %902, 0
  store ptr %903, ptr %9, align 8
  %904 = extractvalue { ptr, i32 } %902, 1
  store i32 %904, ptr %10, align 4
  br label %919

905:                                              ; preds = %877
  %906 = landingpad { ptr, i32 }
          cleanup
  %907 = extractvalue { ptr, i32 } %906, 0
  store ptr %907, ptr %9, align 8
  %908 = extractvalue { ptr, i32 } %906, 1
  store i32 %908, ptr %10, align 4
  br label %918

909:                                              ; preds = %878
  %910 = landingpad { ptr, i32 }
          cleanup
  %911 = extractvalue { ptr, i32 } %910, 0
  store ptr %911, ptr %9, align 8
  %912 = extractvalue { ptr, i32 } %910, 1
  store i32 %912, ptr %10, align 4
  br label %917

913:                                              ; preds = %880, %879
  %914 = landingpad { ptr, i32 }
          cleanup
  %915 = extractvalue { ptr, i32 } %914, 0
  store ptr %915, ptr %9, align 8
  %916 = extractvalue { ptr, i32 } %914, 1
  store i32 %916, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %154) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %152) #10
  br label %917

917:                                              ; preds = %913, %909
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %153) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %153) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %145) #10
  br label %918

918:                                              ; preds = %917, %905
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %151) #10
  br label %919

919:                                              ; preds = %918, %901
  call void @llvm.lifetime.end.p0(i64 32, ptr %151) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %146) #10
  br label %920

920:                                              ; preds = %919, %897
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %147) #10
  br label %921

921:                                              ; preds = %920, %893
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %150) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %150) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %148) #10
  br label %922

922:                                              ; preds = %921, %889
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %149) #10
  br label %923

923:                                              ; preds = %922, %885
  call void @llvm.lifetime.end.p0(i64 32, ptr %149) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %148) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %147) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %146) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %145) #10
  %924 = load i1, ptr %155, align 1
  br i1 %924, label %925, label %926

925:                                              ; preds = %923
  call void @__cxa_free_exception(ptr %870) #10
  br label %926

926:                                              ; preds = %925, %923
  br label %927

927:                                              ; preds = %926, %881
  call void @llvm.lifetime.end.p0(i64 4, ptr %144) #10
  br label %1022

928:                                              ; preds = %862
  call void @llvm.lifetime.start.p0(i64 8, ptr %156) #10
  %929 = invoke noundef ptr @_ZNK4Glip6CoreGL12ShaderSource13getSourceCstrEv(ptr noundef nonnull align 8 dereferenceable(272) %163)
          to label %930 unwind label %982

930:                                              ; preds = %928
  store ptr %929, ptr %156, align 8, !tbaa !5
  %931 = load ptr, ptr @__glewShaderSource, align 8, !tbaa !5
  %932 = getelementptr inbounds %"class.Glip::CoreGL::HdlShader", ptr %163, i32 0, i32 1
  %933 = load i32, ptr %932, align 8, !tbaa !41
  invoke void %931(i32 noundef %933, i32 noundef 1, ptr noundef %156, ptr noundef null)
          to label %934 unwind label %982

934:                                              ; preds = %930
  %935 = load ptr, ptr @__glewCompileShader, align 8, !tbaa !5
  %936 = getelementptr inbounds %"class.Glip::CoreGL::HdlShader", ptr %163, i32 0, i32 1
  %937 = load i32, ptr %936, align 8, !tbaa !41
  invoke void %935(i32 noundef %937)
          to label %938 unwind label %982

938:                                              ; preds = %934
  call void @llvm.lifetime.start.p0(i64 4, ptr %157) #10
  store i32 1, ptr %157, align 4, !tbaa !9
  %939 = load ptr, ptr @__glewGetShaderiv, align 8, !tbaa !5
  %940 = getelementptr inbounds %"class.Glip::CoreGL::HdlShader", ptr %163, i32 0, i32 1
  %941 = load i32, ptr %940, align 8, !tbaa !41
  invoke void %939(i32 noundef %941, i32 noundef 35713, ptr noundef %157)
          to label %942 unwind label %986

942:                                              ; preds = %938
  %943 = load i32, ptr %157, align 4, !tbaa !9
  %944 = icmp ne i32 %943, 1
  br i1 %944, label %945, label %1019

945:                                              ; preds = %942
  call void @llvm.lifetime.start.p0(i64 4, ptr %158) #10
  %946 = load ptr, ptr @__glewGetShaderiv, align 8, !tbaa !5
  %947 = getelementptr inbounds %"class.Glip::CoreGL::HdlShader", ptr %163, i32 0, i32 1
  %948 = load i32, ptr %947, align 8, !tbaa !41
  invoke void %946(i32 noundef %948, i32 noundef 35716, ptr noundef %158)
          to label %949 unwind label %990

949:                                              ; preds = %945
  call void @llvm.lifetime.start.p0(i64 8, ptr %159) #10
  %950 = load i32, ptr %158, align 4, !tbaa !9
  %951 = add nsw i32 %950, 1
  %952 = sext i32 %951 to i64
  %953 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %952) #12
          to label %954 unwind label %994

954:                                              ; preds = %949
  store ptr %953, ptr %159, align 8, !tbaa !5
  %955 = load ptr, ptr %159, align 8, !tbaa !5
  %956 = load i32, ptr %158, align 4, !tbaa !9
  %957 = add nsw i32 %956, 1
  %958 = sext i32 %957 to i64
  call void @llvm.memset.p0.i64(ptr align 1 %955, i8 0, i64 %958, i1 false)
  %959 = load ptr, ptr @__glewGetShaderInfoLog, align 8, !tbaa !5
  %960 = getelementptr inbounds %"class.Glip::CoreGL::HdlShader", ptr %163, i32 0, i32 1
  %961 = load i32, ptr %960, align 8, !tbaa !41
  %962 = load i32, ptr %158, align 4, !tbaa !9
  %963 = load ptr, ptr %159, align 8, !tbaa !5
  invoke void %959(i32 noundef %961, i32 noundef %962, ptr noundef %158, ptr noundef %963)
          to label %964 unwind label %994

964:                                              ; preds = %954
  %965 = load ptr, ptr %159, align 8, !tbaa !5
  %966 = load i32, ptr %158, align 4, !tbaa !9
  %967 = sext i32 %966 to i64
  %968 = getelementptr inbounds i8, ptr %965, i64 %967
  store i8 0, ptr %968, align 1, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 152, ptr %160) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %161) #10
  %969 = load ptr, ptr %159, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %162) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %162) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %161, ptr noundef %969, ptr noundef nonnull align 1 dereferenceable(1) %162)
          to label %970 unwind label %998

970:                                              ; preds = %964
  invoke void @_ZNK4Glip6CoreGL12ShaderSource8errorLogERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.Glip::Exception") align 8 %160, ptr noundef nonnull align 8 dereferenceable(272) %163, ptr noundef nonnull align 8 dereferenceable(32) %161)
          to label %971 unwind label %1002

971:                                              ; preds = %970
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %161) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %162) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %162) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %161) #10
  %972 = load ptr, ptr %159, align 8, !tbaa !5
  %973 = icmp eq ptr %972, null
  br i1 %973, label %975, label %974

974:                                              ; preds = %971
  call void @_ZdaPv(ptr noundef %972) #13
  br label %975

975:                                              ; preds = %974, %971
  %976 = load ptr, ptr @__glewDeleteShader, align 8, !tbaa !5
  %977 = getelementptr inbounds %"class.Glip::CoreGL::HdlShader", ptr %163, i32 0, i32 1
  %978 = load i32, ptr %977, align 8, !tbaa !41
  invoke void %976(i32 noundef %978)
          to label %979 unwind label %1007

979:                                              ; preds = %975
  %980 = call ptr @__cxa_allocate_exception(i64 152) #10
  invoke void @_ZN4Glip9ExceptionC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(152) %980, ptr noundef nonnull align 8 dereferenceable(152) %160)
          to label %981 unwind label %1011

981:                                              ; preds = %979
  invoke void @__cxa_throw(ptr %980, ptr @_ZTIN4Glip9ExceptionE, ptr @_ZN4Glip9ExceptionD1Ev) #11
          to label %1029 unwind label %1007

982:                                              ; preds = %934, %930, %928
  %983 = landingpad { ptr, i32 }
          cleanup
  %984 = extractvalue { ptr, i32 } %983, 0
  store ptr %984, ptr %9, align 8
  %985 = extractvalue { ptr, i32 } %983, 1
  store i32 %985, ptr %10, align 4
  br label %1021

986:                                              ; preds = %938
  %987 = landingpad { ptr, i32 }
          cleanup
  %988 = extractvalue { ptr, i32 } %987, 0
  store ptr %988, ptr %9, align 8
  %989 = extractvalue { ptr, i32 } %987, 1
  store i32 %989, ptr %10, align 4
  br label %1020

990:                                              ; preds = %945
  %991 = landingpad { ptr, i32 }
          cleanup
  %992 = extractvalue { ptr, i32 } %991, 0
  store ptr %992, ptr %9, align 8
  %993 = extractvalue { ptr, i32 } %991, 1
  store i32 %993, ptr %10, align 4
  br label %1018

994:                                              ; preds = %954, %949
  %995 = landingpad { ptr, i32 }
          cleanup
  %996 = extractvalue { ptr, i32 } %995, 0
  store ptr %996, ptr %9, align 8
  %997 = extractvalue { ptr, i32 } %995, 1
  store i32 %997, ptr %10, align 4
  br label %1017

998:                                              ; preds = %964
  %999 = landingpad { ptr, i32 }
          cleanup
  %1000 = extractvalue { ptr, i32 } %999, 0
  store ptr %1000, ptr %9, align 8
  %1001 = extractvalue { ptr, i32 } %999, 1
  store i32 %1001, ptr %10, align 4
  br label %1006

1002:                                             ; preds = %970
  %1003 = landingpad { ptr, i32 }
          cleanup
  %1004 = extractvalue { ptr, i32 } %1003, 0
  store ptr %1004, ptr %9, align 8
  %1005 = extractvalue { ptr, i32 } %1003, 1
  store i32 %1005, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %161) #10
  br label %1006

1006:                                             ; preds = %1002, %998
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %162) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %162) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %161) #10
  br label %1016

1007:                                             ; preds = %981, %975
  %1008 = landingpad { ptr, i32 }
          cleanup
  %1009 = extractvalue { ptr, i32 } %1008, 0
  store ptr %1009, ptr %9, align 8
  %1010 = extractvalue { ptr, i32 } %1008, 1
  store i32 %1010, ptr %10, align 4
  br label %1015

1011:                                             ; preds = %979
  %1012 = landingpad { ptr, i32 }
          cleanup
  %1013 = extractvalue { ptr, i32 } %1012, 0
  store ptr %1013, ptr %9, align 8
  %1014 = extractvalue { ptr, i32 } %1012, 1
  store i32 %1014, ptr %10, align 4
  call void @__cxa_free_exception(ptr %980) #10
  br label %1015

1015:                                             ; preds = %1011, %1007
  call void @_ZN4Glip9ExceptionD1Ev(ptr noundef nonnull align 8 dereferenceable(152) %160) #10
  br label %1016

1016:                                             ; preds = %1015, %1006
  call void @llvm.lifetime.end.p0(i64 152, ptr %160) #10
  br label %1017

1017:                                             ; preds = %1016, %994
  call void @llvm.lifetime.end.p0(i64 8, ptr %159) #10
  br label %1018

1018:                                             ; preds = %1017, %990
  call void @llvm.lifetime.end.p0(i64 4, ptr %158) #10
  br label %1020

1019:                                             ; preds = %942
  call void @llvm.lifetime.end.p0(i64 4, ptr %157) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %156) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %136) #10
  ret void

1020:                                             ; preds = %1018, %986
  call void @llvm.lifetime.end.p0(i64 4, ptr %157) #10
  br label %1021

1021:                                             ; preds = %1020, %982
  call void @llvm.lifetime.end.p0(i64 8, ptr %156) #10
  br label %1022

1022:                                             ; preds = %1021, %927, %856, %831
  call void @llvm.lifetime.end.p0(i64 24, ptr %136) #10
  br label %1023

1023:                                             ; preds = %1022, %817, %783, %749, %715, %681, %647, %613, %579, %545, %511, %477, %442, %422, %402, %372, %346, %320, %294, %269, %243, %218, %190
  call void @_ZN4Glip6CoreGL12ShaderSourceD2Ev(ptr noundef nonnull align 8 dereferenceable(272) %163) #10
  br label %1024

1024:                                             ; preds = %1023
  %1025 = load ptr, ptr %9, align 8
  %1026 = load i32, ptr %10, align 4
  %1027 = insertvalue { ptr, i32 } poison, ptr %1025, 0
  %1028 = insertvalue { ptr, i32 } %1027, i32 %1026, 1
  resume { ptr, i32 } %1028

1029:                                             ; preds = %981, %880, %830, %800, %766, %732, %698, %664, %630, %596, %562, %528, %494, %460, %421, %380, %355, %329, %303, %277, %252, %226, %201, %173
  unreachable
}

declare void @_ZN4Glip6CoreGL12ShaderSourceC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(272), ptr noundef nonnull align 8 dereferenceable(272)) unnamed_addr #1

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) #2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 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 i32 @__gxx_personality_v0(...)

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 #4

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) #2

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

declare void @__cxa_free_exception(ptr)

; 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) #5

; 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)) #5

; 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)) #4

declare noundef zeroext i1 @_ZNK4Glip6CoreGL12ShaderSource21requiresCompatibilityEv(ptr noundef nonnull align 8 dereferenceable(272)) #1

; 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) #5

; 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)) #5

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN4Glip6CoreGL16belongsToGLEnumsILm6EEEbRKjRAT__S2_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(24)) #0

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)) #5

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

declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNK4Glip6CoreGL12ShaderSource13getSourceNameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(272)) #1

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

declare noundef ptr @_ZNK4Glip6CoreGL12ShaderSource13getSourceCstrEv(ptr noundef nonnull align 8 dereferenceable(272)) #1

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #8

declare void @_ZNK4Glip6CoreGL12ShaderSource8errorLogERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.Glip::Exception") align 8, ptr noundef nonnull align 8 dereferenceable(272), ptr noundef nonnull align 8 dereferenceable(32)) #1

; Function Attrs: nobuiltin nounwind
declare void @_ZdaPv(ptr noundef) #9

declare void @_ZN4Glip9ExceptionC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(152), ptr noundef nonnull align 8 dereferenceable(152)) unnamed_addr #1

; Function Attrs: nounwind
declare void @_ZN4Glip6CoreGL12ShaderSourceD2Ev(ptr noundef nonnull align 8 dereferenceable(272)) unnamed_addr #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 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 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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 #5 = { 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 #6 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #7 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #9 = { nobuiltin nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #10 = { nounwind }
attributes #11 = { noreturn }
attributes #12 = { builtin allocsize(0) }
attributes #13 = { builtin nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !10, i64 276}
!12 = !{!"_ZTSN4Glip6CoreGL9HdlShaderE", !13, i64 0, !10, i64 272, !10, i64 276}
!13 = !{!"_ZTSN4Glip6CoreGL12ShaderSourceE", !14, i64 0, !14, i64 32, !17, i64 64, !17, i64 88, !21, i64 112, !21, i64 136, !25, i64 160, !21, i64 184, !29, i64 208, !10, i64 212, !10, i64 216, !30, i64 224}
!14 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !15, i64 0, !16, i64 8, !7, i64 16}
!15 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!16 = !{!"long", !7, i64 0}
!17 = !{!"_ZTSSt6vectorImSaImEE", !18, i64 0}
!18 = !{!"_ZTSSt12_Vector_baseImSaImEE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseImSaImEE12_Vector_implE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseImSaImEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!21 = !{!"_ZTSSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !22, i64 0}
!22 = !{!"_ZTSSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_Vector_implE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!25 = !{!"_ZTSSt6vectorIjSaIjEE", !26, i64 0}
!26 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!29 = !{!"bool", !7, i64 0}
!30 = !{!"_ZTSSt3mapIiN4Glip6CoreGL12ShaderSource8LineInfoESt4lessIiESaISt4pairIKiS3_EEE", !31, i64 0}
!31 = !{!"_ZTSSt8_Rb_treeIiSt4pairIKiN4Glip6CoreGL12ShaderSource8LineInfoEESt10_Select1stIS6_ESt4lessIiESaIS6_EE", !32, i64 0}
!32 = !{!"_ZTSNSt8_Rb_treeIiSt4pairIKiN4Glip6CoreGL12ShaderSource8LineInfoEESt10_Select1stIS6_ESt4lessIiESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !33, i64 0, !35, i64 8}
!33 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIiEE", !34, i64 0}
!34 = !{!"_ZTSSt4lessIiE"}
!35 = !{!"_ZTSSt15_Rb_tree_header", !36, i64 0, !16, i64 32}
!36 = !{!"_ZTSSt18_Rb_tree_node_base", !37, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!37 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!38 = !{!7, !7, i64 0}
!39 = !{!40, !40, i64 0}
!40 = !{!"_ZTSN4Glip9Exception4TypeE", !7, i64 0}
!41 = !{!12, !10, i64 272}


; 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" = type { i8 }
%"class.Glip::Exception" = type { %"class.std::exception", i32, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", i32, %"class.std::__cxx11::basic_string", i8, i8, %"class.std::vector.16" }
%"class.std::exception" = type { ptr }
%"class.std::vector.16" = type { %"struct.std::_Vector_base.17" }
%"struct.std::_Vector_base.17" = type { %"struct.std::_Vector_base<Glip::Exception, std::allocator<Glip::Exception>>::_Vector_impl" }
%"struct.std::_Vector_base<Glip::Exception, std::allocator<Glip::Exception>>::_Vector_impl" = type { %"struct.std::_Vector_base<Glip::Exception, std::allocator<Glip::Exception>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Glip::Exception, std::allocator<Glip::Exception>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@__GLEW_VERSION_2_0 = external local_unnamed_addr global i8, align 1
@.str = external hidden unnamed_addr constant [120 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [89 x i8], align 1
@_ZTIN4Glip9ExceptionE = external constant ptr
@__GLEW_ARB_fragment_shader = external local_unnamed_addr global i8, align 1
@.str.2 = external hidden unnamed_addr constant [128 x i8], align 1
@__GLEW_ARB_fragment_program = external local_unnamed_addr global i8, align 1
@.str.3 = external hidden unnamed_addr constant [129 x i8], align 1
@__GLEW_ARB_vertex_shader = external local_unnamed_addr global i8, align 1
@.str.4 = external hidden unnamed_addr constant [126 x i8], align 1
@__GLEW_ARB_vertex_program = external local_unnamed_addr global i8, align 1
@.str.5 = external hidden unnamed_addr constant [127 x i8], align 1
@__GLEW_ARB_compute_shader = external local_unnamed_addr global i8, align 1
@.str.6 = external hidden unnamed_addr constant [127 x i8], align 1
@__GLEW_ARB_tessellation_shader = external local_unnamed_addr global i8, align 1
@.str.7 = external hidden unnamed_addr constant [132 x i8], align 1
@__GLEW_ARB_geometry_shader4 = external local_unnamed_addr global i8, align 1
@.str.8 = external hidden unnamed_addr constant [129 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [3 x i8], align 1
@__glewBindFragDataLocation = external local_unnamed_addr global ptr, align 8
@_ZSt4cerr = external global %"class.std::basic_ostream", align 8
@.str.11 = external hidden unnamed_addr constant [144 x i8], align 1
@__glewBindFragDataLocationEXT = external local_unnamed_addr global ptr, align 8
@.str.12 = external hidden unnamed_addr constant [139 x i8], align 1
@__glewCompileShader = external local_unnamed_addr global ptr, align 8
@.str.13 = external hidden unnamed_addr constant [130 x i8], align 1
@__glewCompileShaderARB = external local_unnamed_addr global ptr, align 8
@.str.14 = external hidden unnamed_addr constant [125 x i8], align 1
@__glewLinkProgram = external local_unnamed_addr global ptr, align 8
@.str.15 = external hidden unnamed_addr constant [126 x i8], align 1
@__glewLinkProgramARB = external local_unnamed_addr global ptr, align 8
@.str.16 = external hidden unnamed_addr constant [121 x i8], align 1
@__glewGetUniformLocation = external local_unnamed_addr global ptr, align 8
@.str.17 = external hidden unnamed_addr constant [140 x i8], align 1
@__glewGetUniformLocationARB = external local_unnamed_addr global ptr, align 8
@.str.18 = external hidden unnamed_addr constant [135 x i8], align 1
@__glewUniform1i = external local_unnamed_addr global ptr, align 8
@.str.19 = external hidden unnamed_addr constant [122 x i8], align 1
@__glewUniform1iARB = external local_unnamed_addr global ptr, align 8
@.str.20 = external hidden unnamed_addr constant [117 x i8], align 1
@__glewUniform2i = external local_unnamed_addr global ptr, align 8
@.str.21 = external hidden unnamed_addr constant [122 x i8], align 1
@__glewUniform2iARB = external local_unnamed_addr global ptr, align 8
@.str.22 = external hidden unnamed_addr constant [117 x i8], align 1
@__glewUniform3i = external local_unnamed_addr global ptr, align 8
@.str.23 = external hidden unnamed_addr constant [122 x i8], align 1
@__glewUniform3iARB = external local_unnamed_addr global ptr, align 8
@.str.24 = external hidden unnamed_addr constant [117 x i8], align 1
@__glewUniform4i = external local_unnamed_addr global ptr, align 8
@.str.25 = external hidden unnamed_addr constant [122 x i8], align 1
@__glewUniform4iARB = external local_unnamed_addr global ptr, align 8
@.str.26 = external hidden unnamed_addr constant [117 x i8], align 1
@__glewUniform1f = external local_unnamed_addr global ptr, align 8
@.str.27 = external hidden unnamed_addr constant [122 x i8], align 1
@__glewUniform1fARB = external local_unnamed_addr global ptr, align 8
@.str.28 = external hidden unnamed_addr constant [117 x i8], align 1
@__glewUniform2f = external local_unnamed_addr global ptr, align 8
@.str.29 = external hidden unnamed_addr constant [122 x i8], align 1
@__glewUniform2fARB = external local_unnamed_addr global ptr, align 8
@.str.30 = external hidden unnamed_addr constant [117 x i8], align 1
@__glewUniform3f = external local_unnamed_addr global ptr, align 8
@.str.31 = external hidden unnamed_addr constant [122 x i8], align 1
@__glewUniform3fARB = external local_unnamed_addr global ptr, align 8
@.str.32 = external hidden unnamed_addr constant [117 x i8], align 1
@__glewUniform4f = external local_unnamed_addr global ptr, align 8
@.str.33 = external hidden unnamed_addr constant [122 x i8], align 1
@__glewUniform4fARB = external local_unnamed_addr global ptr, align 8
@.str.34 = external hidden unnamed_addr constant [117 x i8], align 1
@__const.HdlShader.listCorrectEnum = external hidden unnamed_addr constant [6 x i32], align 16
@.str.35 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [2 x i8], align 1
@__glewCreateShader = external local_unnamed_addr global ptr, align 8
@.str.37 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [4 x i8], align 1
@__glewShaderSource = external local_unnamed_addr global ptr, align 8
@__glewGetShaderiv = external local_unnamed_addr global ptr, align 8
@__glewGetShaderInfoLog = external local_unnamed_addr global ptr, align 8
@__glewDeleteShader = external local_unnamed_addr global ptr, align 8

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN4Glip6CoreGL9HdlShaderC2EjRKNS0_12ShaderSourceE(ptr noundef nonnull align 8 dereferenceable(280) %0, i32 noundef %1, ptr noundef nonnull align 8 dereferenceable(272) %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", align 1
  %6 = alloca %"class.std::__cxx11::basic_string", align 8
  %7 = alloca %"class.std::allocator", align 1
  %8 = alloca i32, align 4
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca %"class.std::allocator", align 1
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::allocator", align 1
  %13 = alloca i32, align 4
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %"class.std::allocator", align 1
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca %"class.std::allocator", align 1
  %18 = alloca i32, align 4
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"class.std::allocator", align 1
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca %"class.std::allocator", align 1
  %23 = alloca i32, align 4
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.std::allocator", align 1
  %26 = alloca %"class.std::__cxx11::basic_string", align 8
  %27 = alloca %"class.std::allocator", align 1
  %28 = alloca i32, align 4
  %29 = alloca %"class.std::__cxx11::basic_string", align 8
  %30 = alloca %"class.std::allocator", align 1
  %31 = alloca %"class.std::__cxx11::basic_string", align 8
  %32 = alloca %"class.std::allocator", align 1
  %33 = alloca i32, align 4
  %34 = alloca %"class.std::__cxx11::basic_string", align 8
  %35 = alloca %"class.std::allocator", align 1
  %36 = alloca %"class.std::__cxx11::basic_string", align 8
  %37 = alloca %"class.std::allocator", align 1
  %38 = alloca i32, align 4
  %39 = alloca %"class.std::__cxx11::basic_string", align 8
  %40 = alloca %"class.std::allocator", align 1
  %41 = alloca %"class.std::__cxx11::basic_string", align 8
  %42 = alloca %"class.std::allocator", align 1
  %43 = alloca i32, align 4
  %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", align 1
  %49 = alloca i32, align 4
  %50 = alloca %"class.std::__cxx11::basic_string", align 8
  %51 = alloca %"class.std::allocator", align 1
  %52 = alloca %"class.std::__cxx11::basic_string", align 8
  %53 = alloca %"class.std::allocator", align 1
  %54 = alloca i32, align 4
  %55 = alloca %"class.std::__cxx11::basic_string", align 8
  %56 = alloca %"class.std::allocator", align 1
  %57 = alloca %"class.std::__cxx11::basic_string", align 8
  %58 = alloca %"class.std::allocator", align 1
  %59 = alloca i32, align 4
  %60 = alloca %"class.std::__cxx11::basic_string", align 8
  %61 = alloca %"class.std::allocator", align 1
  %62 = alloca %"class.std::__cxx11::basic_string", align 8
  %63 = alloca %"class.std::allocator", align 1
  %64 = alloca i32, align 4
  %65 = alloca %"class.std::__cxx11::basic_string", align 8
  %66 = alloca %"class.std::allocator", align 1
  %67 = alloca %"class.std::__cxx11::basic_string", align 8
  %68 = alloca %"class.std::allocator", align 1
  %69 = alloca i32, align 4
  %70 = alloca %"class.std::__cxx11::basic_string", align 8
  %71 = alloca %"class.std::allocator", align 1
  %72 = alloca %"class.std::__cxx11::basic_string", align 8
  %73 = alloca %"class.std::allocator", align 1
  %74 = alloca i32, align 4
  %75 = alloca %"class.std::__cxx11::basic_string", align 8
  %76 = alloca %"class.std::allocator", align 1
  %77 = alloca %"class.std::__cxx11::basic_string", align 8
  %78 = alloca %"class.std::allocator", align 1
  %79 = alloca i32, align 4
  %80 = alloca %"class.std::__cxx11::basic_string", align 8
  %81 = alloca %"class.std::allocator", align 1
  %82 = alloca %"class.std::__cxx11::basic_string", align 8
  %83 = alloca %"class.std::allocator", align 1
  %84 = alloca i32, align 4
  %85 = alloca %"class.std::__cxx11::basic_string", align 8
  %86 = alloca %"class.std::allocator", align 1
  %87 = alloca %"class.std::__cxx11::basic_string", align 8
  %88 = alloca %"class.std::allocator", align 1
  %89 = alloca i32, align 4
  %90 = alloca %"class.std::__cxx11::basic_string", align 8
  %91 = alloca %"class.std::allocator", align 1
  %92 = alloca %"class.std::__cxx11::basic_string", align 8
  %93 = alloca %"class.std::allocator", align 1
  %94 = alloca i32, align 4
  %95 = alloca %"class.std::__cxx11::basic_string", align 8
  %96 = alloca %"class.std::allocator", align 1
  %97 = alloca %"class.std::__cxx11::basic_string", align 8
  %98 = alloca %"class.std::allocator", align 1
  %99 = alloca i32, align 4
  %100 = alloca %"class.std::__cxx11::basic_string", align 8
  %101 = alloca %"class.std::allocator", align 1
  %102 = alloca %"class.std::__cxx11::basic_string", align 8
  %103 = alloca %"class.std::allocator", align 1
  %104 = alloca i32, align 4
  %105 = alloca %"class.std::__cxx11::basic_string", align 8
  %106 = alloca %"class.std::allocator", align 1
  %107 = alloca %"class.std::__cxx11::basic_string", align 8
  %108 = alloca %"class.std::allocator", align 1
  %109 = alloca i32, align 4
  %110 = alloca [6 x i32], align 16
  %111 = alloca %"class.std::__cxx11::basic_string", align 8
  %112 = alloca %"class.std::__cxx11::basic_string", align 8
  %113 = alloca %"class.std::__cxx11::basic_string", align 8
  %114 = alloca %"class.std::__cxx11::basic_string", align 8
  %115 = alloca %"class.std::allocator", align 1
  %116 = alloca i32, align 4
  %117 = alloca i32, align 4
  %118 = alloca %"class.std::__cxx11::basic_string", align 8
  %119 = alloca %"class.std::__cxx11::basic_string", align 8
  %120 = alloca %"class.std::__cxx11::basic_string", align 8
  %121 = alloca %"class.std::__cxx11::basic_string", align 8
  %122 = alloca %"class.std::__cxx11::basic_string", align 8
  %123 = alloca %"class.std::__cxx11::basic_string", align 8
  %124 = alloca %"class.std::__cxx11::basic_string", align 8
  %125 = alloca %"class.std::__cxx11::basic_string", align 8
  %126 = alloca %"class.std::allocator", align 1
  %127 = alloca i32, align 4
  %128 = alloca ptr, align 8
  %129 = alloca i32, align 4
  %130 = alloca i32, align 4
  %131 = alloca %"class.Glip::Exception", align 8
  %132 = alloca %"class.std::__cxx11::basic_string", align 8
  %133 = alloca %"class.std::allocator", align 1
  tail call void @_ZN4Glip6CoreGL12ShaderSourceC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(272) %0, ptr noundef nonnull align 8 dereferenceable(272) %2)
  %134 = getelementptr inbounds i8, ptr %0, i64 276
  store i32 %1, ptr %134, align 4, !tbaa !5
  %135 = load i8, ptr @__GLEW_VERSION_2_0, align 1, !tbaa !36
  %.not185 = icmp eq i8 %135, 0
  br i1 %.not185, label %136, label %148

136:                                              ; preds = %3
  %137 = tail call ptr @__cxa_allocate_exception(i64 152) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %5) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull @.str, ptr noundef nonnull align 1 dereferenceable(1) %5)
          to label %138 unwind label %.thread

138:                                              ; preds = %136
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %7) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %7)
          to label %139 unwind label %142

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

140:                                              ; preds = %139
  invoke void @__cxa_throw(ptr nonnull %137, ptr nonnull @_ZTIN4Glip9ExceptionE, ptr nonnull @_ZN4Glip9ExceptionD1Ev) #11
          to label %668 unwind label %144

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

142:                                              ; preds = %138
  %143 = landingpad { ptr, i32 }
          cleanup
  br label %146

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

146:                                              ; preds = %142, %144
  %.pn = phi { ptr, i32 } [ %145, %144 ], [ %143, %142 ]
  %.1108 = phi i1 [ %.0107, %144 ], [ true, %142 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #10
  br i1 %.1108, label %147, label %667

147:                                              ; preds = %.thread, %146
  %.pn.pn283 = phi { ptr, i32 } [ %141, %.thread ], [ %.pn, %146 ]
  call void @__cxa_free_exception(ptr %137) #10
  br label %667

148:                                              ; preds = %3
  switch i32 %1, label %247 [
    i32 35632, label %149
    i32 35633, label %177
    i32 37305, label %205
    i32 36488, label %219
    i32 36487, label %219
    i32 36313, label %233
  ]

149:                                              ; preds = %148
  %150 = load i8, ptr @__GLEW_ARB_fragment_shader, align 1, !tbaa !36
  %.not208 = icmp eq i8 %150, 0
  br i1 %.not208, label %151, label %163

151:                                              ; preds = %149
  %152 = tail call ptr @__cxa_allocate_exception(i64 152) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %10)
          to label %153 unwind label %.thread284

153:                                              ; preds = %151
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %12) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %154 unwind label %157

154:                                              ; preds = %153
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #10
  store i32 3, ptr %13, align 4, !tbaa !37
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %152, ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull %11, i32 noundef 54, ptr noundef nonnull align 4 dereferenceable(4) %13)
          to label %155 unwind label %159

155:                                              ; preds = %154
  invoke void @__cxa_throw(ptr nonnull %152, ptr nonnull @_ZTIN4Glip9ExceptionE, ptr nonnull @_ZN4Glip9ExceptionD1Ev) #11
          to label %668 unwind label %159

.thread284:                                       ; preds = %151
  %156 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #10
  br label %162

157:                                              ; preds = %153
  %158 = landingpad { ptr, i32 }
          cleanup
  br label %161

159:                                              ; preds = %155, %154
  %.0104 = phi i1 [ false, %155 ], [ true, %154 ]
  %160 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #10
  br label %161

161:                                              ; preds = %157, %159
  %.pn209 = phi { ptr, i32 } [ %160, %159 ], [ %158, %157 ]
  %.1105 = phi i1 [ %.0104, %159 ], [ true, %157 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #10
  br i1 %.1105, label %162, label %667

162:                                              ; preds = %.thread284, %161
  %.pn209.pn287 = phi { ptr, i32 } [ %156, %.thread284 ], [ %.pn209, %161 ]
  call void @__cxa_free_exception(ptr %152) #10
  br label %667

163:                                              ; preds = %149
  %164 = load i8, ptr @__GLEW_ARB_fragment_program, align 1, !tbaa !36
  %.not212 = icmp eq i8 %164, 0
  br i1 %.not212, label %165, label %263

165:                                              ; preds = %163
  %166 = tail call ptr @__cxa_allocate_exception(i64 152) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %15) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %15)
          to label %167 unwind label %.thread288

167:                                              ; preds = %165
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %17) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %17)
          to label %168 unwind label %171

168:                                              ; preds = %167
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #10
  store i32 3, ptr %18, align 4, !tbaa !37
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %166, ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull %16, i32 noundef 55, ptr noundef nonnull align 4 dereferenceable(4) %18)
          to label %169 unwind label %173

169:                                              ; preds = %168
  invoke void @__cxa_throw(ptr nonnull %166, ptr nonnull @_ZTIN4Glip9ExceptionE, ptr nonnull @_ZN4Glip9ExceptionD1Ev) #11
          to label %668 unwind label %173

.thread288:                                       ; preds = %165
  %170 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #10
  br label %176

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

173:                                              ; preds = %169, %168
  %.0101 = phi i1 [ false, %169 ], [ true, %168 ]
  %174 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #10
  br label %175

175:                                              ; preds = %171, %173
  %.pn213 = phi { ptr, i32 } [ %174, %173 ], [ %172, %171 ]
  %.1102 = phi i1 [ %.0101, %173 ], [ true, %171 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %17) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #10
  br i1 %.1102, label %176, label %667

176:                                              ; preds = %.thread288, %175
  %.pn213.pn291 = phi { ptr, i32 } [ %170, %.thread288 ], [ %.pn213, %175 ]
  call void @__cxa_free_exception(ptr %166) #10
  br label %667

177:                                              ; preds = %148
  %178 = load i8, ptr @__GLEW_ARB_vertex_shader, align 1, !tbaa !36
  %.not200 = icmp eq i8 %178, 0
  br i1 %.not200, label %179, label %191

179:                                              ; preds = %177
  %180 = tail call ptr @__cxa_allocate_exception(i64 152) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %20) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull @.str.4, ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %181 unwind label %.thread292

181:                                              ; preds = %179
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %22) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %22)
          to label %182 unwind label %185

182:                                              ; preds = %181
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #10
  store i32 3, ptr %23, align 4, !tbaa !37
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %180, ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull %21, i32 noundef 58, ptr noundef nonnull align 4 dereferenceable(4) %23)
          to label %183 unwind label %187

183:                                              ; preds = %182
  invoke void @__cxa_throw(ptr nonnull %180, ptr nonnull @_ZTIN4Glip9ExceptionE, ptr nonnull @_ZN4Glip9ExceptionD1Ev) #11
          to label %668 unwind label %187

.thread292:                                       ; preds = %179
  %184 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #10
  br label %190

185:                                              ; preds = %181
  %186 = landingpad { ptr, i32 }
          cleanup
  br label %189

187:                                              ; preds = %183, %182
  %.098 = phi i1 [ false, %183 ], [ true, %182 ]
  %188 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #10
  br label %189

189:                                              ; preds = %185, %187
  %.pn201 = phi { ptr, i32 } [ %188, %187 ], [ %186, %185 ]
  %.199 = phi i1 [ %.098, %187 ], [ true, %185 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %22) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #10
  br i1 %.199, label %190, label %667

190:                                              ; preds = %.thread292, %189
  %.pn201.pn295 = phi { ptr, i32 } [ %184, %.thread292 ], [ %.pn201, %189 ]
  call void @__cxa_free_exception(ptr %180) #10
  br label %667

191:                                              ; preds = %177
  %192 = load i8, ptr @__GLEW_ARB_vertex_program, align 1, !tbaa !36
  %.not204 = icmp eq i8 %192, 0
  br i1 %.not204, label %193, label %263

193:                                              ; preds = %191
  %194 = tail call ptr @__cxa_allocate_exception(i64 152) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %24) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %25) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull @.str.5, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %195 unwind label %.thread296

195:                                              ; preds = %193
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %27) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %27)
          to label %196 unwind label %199

196:                                              ; preds = %195
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %28) #10
  store i32 3, ptr %28, align 4, !tbaa !37
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %194, ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull %26, i32 noundef 59, ptr noundef nonnull align 4 dereferenceable(4) %28)
          to label %197 unwind label %201

197:                                              ; preds = %196
  invoke void @__cxa_throw(ptr nonnull %194, ptr nonnull @_ZTIN4Glip9ExceptionE, ptr nonnull @_ZN4Glip9ExceptionD1Ev) #11
          to label %668 unwind label %201

.thread296:                                       ; preds = %193
  %198 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #10
  br label %204

199:                                              ; preds = %195
  %200 = landingpad { ptr, i32 }
          cleanup
  br label %203

201:                                              ; preds = %197, %196
  %.095 = phi i1 [ false, %197 ], [ true, %196 ]
  %202 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #10
  br label %203

203:                                              ; preds = %199, %201
  %.pn205 = phi { ptr, i32 } [ %202, %201 ], [ %200, %199 ]
  %.196 = phi i1 [ %.095, %201 ], [ true, %199 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #10
  br i1 %.196, label %204, label %667

204:                                              ; preds = %.thread296, %203
  %.pn205.pn299 = phi { ptr, i32 } [ %198, %.thread296 ], [ %.pn205, %203 ]
  call void @__cxa_free_exception(ptr %194) #10
  br label %667

205:                                              ; preds = %148
  %206 = load i8, ptr @__GLEW_ARB_compute_shader, align 1, !tbaa !36
  %.not196 = icmp eq i8 %206, 0
  br i1 %.not196, label %207, label %263

207:                                              ; preds = %205
  %208 = tail call ptr @__cxa_allocate_exception(i64 152) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %29) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %30) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef nonnull @.str.6, ptr noundef nonnull align 1 dereferenceable(1) %30)
          to label %209 unwind label %.thread300

209:                                              ; preds = %207
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %32) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %32)
          to label %210 unwind label %213

210:                                              ; preds = %209
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %33) #10
  store i32 3, ptr %33, align 4, !tbaa !37
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %208, ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef nonnull %31, i32 noundef 62, ptr noundef nonnull align 4 dereferenceable(4) %33)
          to label %211 unwind label %215

211:                                              ; preds = %210
  invoke void @__cxa_throw(ptr nonnull %208, ptr nonnull @_ZTIN4Glip9ExceptionE, ptr nonnull @_ZN4Glip9ExceptionD1Ev) #11
          to label %668 unwind label %215

.thread300:                                       ; preds = %207
  %212 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %30) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %29) #10
  br label %218

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

215:                                              ; preds = %211, %210
  %.092 = phi i1 [ false, %211 ], [ true, %210 ]
  %216 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %33) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #10
  br label %217

217:                                              ; preds = %213, %215
  %.pn197 = phi { ptr, i32 } [ %216, %215 ], [ %214, %213 ]
  %.193 = phi i1 [ %.092, %215 ], [ true, %213 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %32) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %30) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %29) #10
  br i1 %.193, label %218, label %667

218:                                              ; preds = %.thread300, %217
  %.pn197.pn303 = phi { ptr, i32 } [ %212, %.thread300 ], [ %.pn197, %217 ]
  call void @__cxa_free_exception(ptr %208) #10
  br label %667

219:                                              ; preds = %148, %148
  %220 = load i8, ptr @__GLEW_ARB_tessellation_shader, align 1, !tbaa !36
  %.not192 = icmp eq i8 %220, 0
  br i1 %.not192, label %221, label %263

221:                                              ; preds = %219
  %222 = tail call ptr @__cxa_allocate_exception(i64 152) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %34) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %35) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef nonnull @.str.7, ptr noundef nonnull align 1 dereferenceable(1) %35)
          to label %223 unwind label %.thread304

223:                                              ; preds = %221
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %37) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %36, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %37)
          to label %224 unwind label %227

224:                                              ; preds = %223
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %38) #10
  store i32 3, ptr %38, align 4, !tbaa !37
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %222, ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef nonnull %36, i32 noundef 66, ptr noundef nonnull align 4 dereferenceable(4) %38)
          to label %225 unwind label %229

225:                                              ; preds = %224
  invoke void @__cxa_throw(ptr nonnull %222, ptr nonnull @_ZTIN4Glip9ExceptionE, ptr nonnull @_ZN4Glip9ExceptionD1Ev) #11
          to label %668 unwind label %229

.thread304:                                       ; preds = %221
  %226 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %35) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #10
  br label %232

227:                                              ; preds = %223
  %228 = landingpad { ptr, i32 }
          cleanup
  br label %231

229:                                              ; preds = %225, %224
  %.089 = phi i1 [ false, %225 ], [ true, %224 ]
  %230 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %38) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #10
  br label %231

231:                                              ; preds = %227, %229
  %.pn193 = phi { ptr, i32 } [ %230, %229 ], [ %228, %227 ]
  %.190 = phi i1 [ %.089, %229 ], [ true, %227 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %37) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %35) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #10
  br i1 %.190, label %232, label %667

232:                                              ; preds = %.thread304, %231
  %.pn193.pn307 = phi { ptr, i32 } [ %226, %.thread304 ], [ %.pn193, %231 ]
  call void @__cxa_free_exception(ptr %222) #10
  br label %667

233:                                              ; preds = %148
  %234 = load i8, ptr @__GLEW_ARB_geometry_shader4, align 1, !tbaa !36
  %.not188 = icmp eq i8 %234, 0
  br i1 %.not188, label %235, label %263

235:                                              ; preds = %233
  %236 = tail call ptr @__cxa_allocate_exception(i64 152) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %39) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %40) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %39, ptr noundef nonnull @.str.8, ptr noundef nonnull align 1 dereferenceable(1) %40)
          to label %237 unwind label %.thread308

237:                                              ; preds = %235
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %42) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %41, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %42)
          to label %238 unwind label %241

238:                                              ; preds = %237
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %43) #10
  store i32 3, ptr %43, align 4, !tbaa !37
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %236, ptr noundef nonnull align 8 dereferenceable(32) %39, ptr noundef nonnull %41, i32 noundef 69, ptr noundef nonnull align 4 dereferenceable(4) %43)
          to label %239 unwind label %243

239:                                              ; preds = %238
  invoke void @__cxa_throw(ptr nonnull %236, ptr nonnull @_ZTIN4Glip9ExceptionE, ptr nonnull @_ZN4Glip9ExceptionD1Ev) #11
          to label %668 unwind label %243

.thread308:                                       ; preds = %235
  %240 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %40) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %39) #10
  br label %246

241:                                              ; preds = %237
  %242 = landingpad { ptr, i32 }
          cleanup
  br label %245

243:                                              ; preds = %239, %238
  %.086 = phi i1 [ false, %239 ], [ true, %238 ]
  %244 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %43) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #10
  br label %245

245:                                              ; preds = %241, %243
  %.pn189 = phi { ptr, i32 } [ %244, %243 ], [ %242, %241 ]
  %.187 = phi i1 [ %.086, %243 ], [ true, %241 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %42) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %40) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %39) #10
  br i1 %.187, label %246, label %667

246:                                              ; preds = %.thread308, %245
  %.pn189.pn311 = phi { ptr, i32 } [ %240, %.thread308 ], [ %.pn189, %245 ]
  call void @__cxa_free_exception(ptr %236) #10
  br label %667

247:                                              ; preds = %148
  %248 = tail call ptr @__cxa_allocate_exception(i64 152) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %44) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %45) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %46) #10
  call void @_ZN4Glip6CoreGL17getGLEnumNameSafeB5cxx11ERKj(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %46, ptr noundef nonnull align 4 dereferenceable(4) %134) #10
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %45, ptr noundef nonnull @.str.9, ptr noundef nonnull align 8 dereferenceable(32) %46)
          to label %249 unwind label %.thread312

249:                                              ; preds = %247
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %44, ptr noundef nonnull align 8 dereferenceable(32) %45, ptr noundef nonnull @.str.10)
          to label %250 unwind label %254

250:                                              ; preds = %249
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %48) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %48)
          to label %251 unwind label %256

251:                                              ; preds = %250
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %49) #10
  store i32 3, ptr %49, align 4, !tbaa !37
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %248, ptr noundef nonnull align 8 dereferenceable(32) %44, ptr noundef nonnull %47, i32 noundef 72, ptr noundef nonnull align 4 dereferenceable(4) %49)
          to label %252 unwind label %258

252:                                              ; preds = %251
  invoke void @__cxa_throw(ptr nonnull %248, ptr nonnull @_ZTIN4Glip9ExceptionE, ptr nonnull @_ZN4Glip9ExceptionD1Ev) #11
          to label %668 unwind label %258

.thread312:                                       ; preds = %247
  %253 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %46) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %45) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %44) #10
  br label %262

254:                                              ; preds = %249
  %255 = landingpad { ptr, i32 }
          cleanup
  br label %261

256:                                              ; preds = %250
  %257 = landingpad { ptr, i32 }
          cleanup
  br label %260

258:                                              ; preds = %252, %251
  %.082 = phi i1 [ false, %252 ], [ true, %251 ]
  %259 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %49) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #10
  br label %260

260:                                              ; preds = %258, %256
  %.pn276 = phi { ptr, i32 } [ %259, %258 ], [ %257, %256 ]
  %.183 = phi i1 [ %.082, %258 ], [ true, %256 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %48) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #10
  br label %261

261:                                              ; preds = %254, %260
  %.pn276.pn = phi { ptr, i32 } [ %.pn276, %260 ], [ %255, %254 ]
  %.284 = phi i1 [ %.183, %260 ], [ true, %254 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %46) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %45) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %44) #10
  br i1 %.284, label %262, label %667

262:                                              ; preds = %.thread312, %261
  %.pn276.pn.pn315 = phi { ptr, i32 } [ %253, %.thread312 ], [ %.pn276.pn, %261 ]
  call void @__cxa_free_exception(ptr %248) #10
  br label %667

263:                                              ; preds = %233, %219, %205, %191, %163
  %264 = invoke noundef zeroext i1 @_ZNK4Glip6CoreGL12ShaderSource21requiresCompatibilityEv(ptr noundef nonnull align 8 dereferenceable(272) %2)
          to label %265 unwind label %280

265:                                              ; preds = %263
  %266 = load ptr, ptr @__glewBindFragDataLocation, align 8
  %267 = icmp ne ptr %266, null
  %or.cond.not = select i1 %264, i1 true, i1 %267
  br i1 %or.cond.not, label %290, label %268

268:                                              ; preds = %265
  %269 = 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 %270 unwind label %280

270:                                              ; preds = %268
  %271 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %269, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %272 unwind label %280

272:                                              ; preds = %270
  %273 = load ptr, ptr @__glewBindFragDataLocationEXT, align 8, !tbaa !39
  %274 = icmp eq ptr %273, null
  br i1 %274, label %275, label %289

275:                                              ; preds = %272
  %276 = tail call ptr @__cxa_allocate_exception(i64 152) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %50) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %51) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %50, ptr noundef nonnull @.str.12, ptr noundef nonnull align 1 dereferenceable(1) %51)
          to label %277 unwind label %.thread316

277:                                              ; preds = %275
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %53) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %52, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %53)
          to label %278 unwind label %283

278:                                              ; preds = %277
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %54) #10
  store i32 3, ptr %54, align 4, !tbaa !37
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %276, ptr noundef nonnull align 8 dereferenceable(32) %50, ptr noundef nonnull %52, i32 noundef 76, ptr noundef nonnull align 4 dereferenceable(4) %54)
          to label %279 unwind label %285

279:                                              ; preds = %278
  invoke void @__cxa_throw(ptr nonnull %276, ptr nonnull @_ZTIN4Glip9ExceptionE, ptr nonnull @_ZN4Glip9ExceptionD1Ev) #11
          to label %668 unwind label %285

280:                                              ; preds = %525, %523, %502, %500, %479, %477, %456, %454, %433, %431, %410, %408, %387, %385, %364, %362, %341, %339, %318, %316, %295, %293, %270, %268, %263
  %281 = landingpad { ptr, i32 }
          cleanup
  br label %667

.thread316:                                       ; preds = %275
  %282 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %51) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %50) #10
  br label %288

283:                                              ; preds = %277
  %284 = landingpad { ptr, i32 }
          cleanup
  br label %287

285:                                              ; preds = %279, %278
  %.079 = phi i1 [ false, %279 ], [ true, %278 ]
  %286 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %54) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #10
  br label %287

287:                                              ; preds = %283, %285
  %.pn273 = phi { ptr, i32 } [ %286, %285 ], [ %284, %283 ]
  %.180 = phi i1 [ %.079, %285 ], [ true, %283 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %53) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %51) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %50) #10
  br i1 %.180, label %288, label %667

288:                                              ; preds = %.thread316, %287
  %.pn273.pn319 = phi { ptr, i32 } [ %282, %.thread316 ], [ %.pn273, %287 ]
  call void @__cxa_free_exception(ptr %276) #10
  br label %667

289:                                              ; preds = %272
  store ptr %273, ptr @__glewBindFragDataLocation, align 8, !tbaa !39
  br label %290

290:                                              ; preds = %289, %265
  %291 = load ptr, ptr @__glewCompileShader, align 8, !tbaa !39
  %292 = icmp eq ptr %291, null
  br i1 %292, label %293, label %313

293:                                              ; preds = %290
  %294 = 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.13)
          to label %295 unwind label %280

295:                                              ; preds = %293
  %296 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %294, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %297 unwind label %280

297:                                              ; preds = %295
  %298 = load ptr, ptr @__glewCompileShaderARB, align 8, !tbaa !39
  %299 = icmp eq ptr %298, null
  br i1 %299, label %300, label %312

300:                                              ; preds = %297
  %301 = tail call ptr @__cxa_allocate_exception(i64 152) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %55) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %56) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %56) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %55, ptr noundef nonnull @.str.14, ptr noundef nonnull align 1 dereferenceable(1) %56)
          to label %302 unwind label %.thread320

302:                                              ; preds = %300
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %58) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %57, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %58)
          to label %303 unwind label %306

303:                                              ; preds = %302
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %59) #10
  store i32 3, ptr %59, align 4, !tbaa !37
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %301, ptr noundef nonnull align 8 dereferenceable(32) %55, ptr noundef nonnull %57, i32 noundef 78, ptr noundef nonnull align 4 dereferenceable(4) %59)
          to label %304 unwind label %308

304:                                              ; preds = %303
  invoke void @__cxa_throw(ptr nonnull %301, ptr nonnull @_ZTIN4Glip9ExceptionE, ptr nonnull @_ZN4Glip9ExceptionD1Ev) #11
          to label %668 unwind label %308

.thread320:                                       ; preds = %300
  %305 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %56) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %56) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %55) #10
  br label %311

306:                                              ; preds = %302
  %307 = landingpad { ptr, i32 }
          cleanup
  br label %310

308:                                              ; preds = %304, %303
  %.076 = phi i1 [ false, %304 ], [ true, %303 ]
  %309 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %59) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #10
  br label %310

310:                                              ; preds = %306, %308
  %.pn270 = phi { ptr, i32 } [ %309, %308 ], [ %307, %306 ]
  %.177 = phi i1 [ %.076, %308 ], [ true, %306 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %58) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %56) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %56) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %55) #10
  br i1 %.177, label %311, label %667

311:                                              ; preds = %.thread320, %310
  %.pn270.pn323 = phi { ptr, i32 } [ %305, %.thread320 ], [ %.pn270, %310 ]
  call void @__cxa_free_exception(ptr %301) #10
  br label %667

312:                                              ; preds = %297
  store ptr %298, ptr @__glewCompileShader, align 8, !tbaa !39
  br label %313

313:                                              ; preds = %312, %290
  %314 = load ptr, ptr @__glewLinkProgram, align 8, !tbaa !39
  %315 = icmp eq ptr %314, null
  br i1 %315, label %316, label %336

316:                                              ; preds = %313
  %317 = 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.15)
          to label %318 unwind label %280

318:                                              ; preds = %316
  %319 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %317, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %320 unwind label %280

320:                                              ; preds = %318
  %321 = load ptr, ptr @__glewLinkProgramARB, align 8, !tbaa !39
  %322 = icmp eq ptr %321, null
  br i1 %322, label %323, label %335

323:                                              ; preds = %320
  %324 = tail call ptr @__cxa_allocate_exception(i64 152) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %60) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %61) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %61) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %60, ptr noundef nonnull @.str.16, ptr noundef nonnull align 1 dereferenceable(1) %61)
          to label %325 unwind label %.thread324

325:                                              ; preds = %323
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %63) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %63) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %62, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %63)
          to label %326 unwind label %329

326:                                              ; preds = %325
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %64) #10
  store i32 3, ptr %64, align 4, !tbaa !37
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %324, ptr noundef nonnull align 8 dereferenceable(32) %60, ptr noundef nonnull %62, i32 noundef 79, ptr noundef nonnull align 4 dereferenceable(4) %64)
          to label %327 unwind label %331

327:                                              ; preds = %326
  invoke void @__cxa_throw(ptr nonnull %324, ptr nonnull @_ZTIN4Glip9ExceptionE, ptr nonnull @_ZN4Glip9ExceptionD1Ev) #11
          to label %668 unwind label %331

.thread324:                                       ; preds = %323
  %328 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %61) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %61) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %60) #10
  br label %334

329:                                              ; preds = %325
  %330 = landingpad { ptr, i32 }
          cleanup
  br label %333

331:                                              ; preds = %327, %326
  %.073 = phi i1 [ false, %327 ], [ true, %326 ]
  %332 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %64) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #10
  br label %333

333:                                              ; preds = %329, %331
  %.pn267 = phi { ptr, i32 } [ %332, %331 ], [ %330, %329 ]
  %.174 = phi i1 [ %.073, %331 ], [ true, %329 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %63) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %63) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %61) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %61) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %60) #10
  br i1 %.174, label %334, label %667

334:                                              ; preds = %.thread324, %333
  %.pn267.pn327 = phi { ptr, i32 } [ %328, %.thread324 ], [ %.pn267, %333 ]
  call void @__cxa_free_exception(ptr %324) #10
  br label %667

335:                                              ; preds = %320
  store ptr %321, ptr @__glewLinkProgram, align 8, !tbaa !39
  br label %336

336:                                              ; preds = %335, %313
  %337 = load ptr, ptr @__glewGetUniformLocation, align 8, !tbaa !39
  %338 = icmp eq ptr %337, null
  br i1 %338, label %339, label %359

339:                                              ; preds = %336
  %340 = 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.17)
          to label %341 unwind label %280

341:                                              ; preds = %339
  %342 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %340, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %343 unwind label %280

343:                                              ; preds = %341
  %344 = load ptr, ptr @__glewGetUniformLocationARB, align 8, !tbaa !39
  %345 = icmp eq ptr %344, null
  br i1 %345, label %346, label %358

346:                                              ; preds = %343
  %347 = tail call ptr @__cxa_allocate_exception(i64 152) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %65) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %66) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %66) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %65, ptr noundef nonnull @.str.18, ptr noundef nonnull align 1 dereferenceable(1) %66)
          to label %348 unwind label %.thread328

348:                                              ; preds = %346
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %68) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %67, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %68)
          to label %349 unwind label %352

349:                                              ; preds = %348
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %69) #10
  store i32 3, ptr %69, align 4, !tbaa !37
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %347, ptr noundef nonnull align 8 dereferenceable(32) %65, ptr noundef nonnull %67, i32 noundef 80, ptr noundef nonnull align 4 dereferenceable(4) %69)
          to label %350 unwind label %354

350:                                              ; preds = %349
  invoke void @__cxa_throw(ptr nonnull %347, ptr nonnull @_ZTIN4Glip9ExceptionE, ptr nonnull @_ZN4Glip9ExceptionD1Ev) #11
          to label %668 unwind label %354

.thread328:                                       ; preds = %346
  %351 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %66) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %66) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %65) #10
  br label %357

352:                                              ; preds = %348
  %353 = landingpad { ptr, i32 }
          cleanup
  br label %356

354:                                              ; preds = %350, %349
  %.070 = phi i1 [ false, %350 ], [ true, %349 ]
  %355 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %69) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #10
  br label %356

356:                                              ; preds = %352, %354
  %.pn264 = phi { ptr, i32 } [ %355, %354 ], [ %353, %352 ]
  %.171 = phi i1 [ %.070, %354 ], [ true, %352 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %68) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %66) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %66) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %65) #10
  br i1 %.171, label %357, label %667

357:                                              ; preds = %.thread328, %356
  %.pn264.pn331 = phi { ptr, i32 } [ %351, %.thread328 ], [ %.pn264, %356 ]
  call void @__cxa_free_exception(ptr %347) #10
  br label %667

358:                                              ; preds = %343
  store ptr %344, ptr @__glewGetUniformLocation, align 8, !tbaa !39
  br label %359

359:                                              ; preds = %358, %336
  %360 = load ptr, ptr @__glewUniform1i, align 8, !tbaa !39
  %361 = icmp eq ptr %360, null
  br i1 %361, label %362, label %382

362:                                              ; preds = %359
  %363 = 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.19)
          to label %364 unwind label %280

364:                                              ; preds = %362
  %365 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %363, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %366 unwind label %280

366:                                              ; preds = %364
  %367 = load ptr, ptr @__glewUniform1iARB, align 8, !tbaa !39
  %368 = icmp eq ptr %367, null
  br i1 %368, label %369, label %381

369:                                              ; preds = %366
  %370 = tail call ptr @__cxa_allocate_exception(i64 152) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %70) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %71) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %70, ptr noundef nonnull @.str.20, ptr noundef nonnull align 1 dereferenceable(1) %71)
          to label %371 unwind label %.thread332

371:                                              ; preds = %369
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %73) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %73) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %72, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %73)
          to label %372 unwind label %375

372:                                              ; preds = %371
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %74) #10
  store i32 3, ptr %74, align 4, !tbaa !37
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %370, ptr noundef nonnull align 8 dereferenceable(32) %70, ptr noundef nonnull %72, i32 noundef 81, ptr noundef nonnull align 4 dereferenceable(4) %74)
          to label %373 unwind label %377

373:                                              ; preds = %372
  invoke void @__cxa_throw(ptr nonnull %370, ptr nonnull @_ZTIN4Glip9ExceptionE, ptr nonnull @_ZN4Glip9ExceptionD1Ev) #11
          to label %668 unwind label %377

.thread332:                                       ; preds = %369
  %374 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %71) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %70) #10
  br label %380

375:                                              ; preds = %371
  %376 = landingpad { ptr, i32 }
          cleanup
  br label %379

377:                                              ; preds = %373, %372
  %.067 = phi i1 [ false, %373 ], [ true, %372 ]
  %378 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %74) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #10
  br label %379

379:                                              ; preds = %375, %377
  %.pn261 = phi { ptr, i32 } [ %378, %377 ], [ %376, %375 ]
  %.168 = phi i1 [ %.067, %377 ], [ true, %375 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %73) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %73) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %71) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %70) #10
  br i1 %.168, label %380, label %667

380:                                              ; preds = %.thread332, %379
  %.pn261.pn335 = phi { ptr, i32 } [ %374, %.thread332 ], [ %.pn261, %379 ]
  call void @__cxa_free_exception(ptr %370) #10
  br label %667

381:                                              ; preds = %366
  store ptr %367, ptr @__glewUniform1i, align 8, !tbaa !39
  br label %382

382:                                              ; preds = %381, %359
  %383 = load ptr, ptr @__glewUniform2i, align 8, !tbaa !39
  %384 = icmp eq ptr %383, null
  br i1 %384, label %385, label %405

385:                                              ; preds = %382
  %386 = 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.21)
          to label %387 unwind label %280

387:                                              ; preds = %385
  %388 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %386, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %389 unwind label %280

389:                                              ; preds = %387
  %390 = load ptr, ptr @__glewUniform2iARB, align 8, !tbaa !39
  %391 = icmp eq ptr %390, null
  br i1 %391, label %392, label %404

392:                                              ; preds = %389
  %393 = tail call ptr @__cxa_allocate_exception(i64 152) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %75) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %76) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %76) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %75, ptr noundef nonnull @.str.22, ptr noundef nonnull align 1 dereferenceable(1) %76)
          to label %394 unwind label %.thread336

394:                                              ; preds = %392
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %78) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %78) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %77, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %78)
          to label %395 unwind label %398

395:                                              ; preds = %394
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %79) #10
  store i32 3, ptr %79, align 4, !tbaa !37
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %393, ptr noundef nonnull align 8 dereferenceable(32) %75, ptr noundef nonnull %77, i32 noundef 82, ptr noundef nonnull align 4 dereferenceable(4) %79)
          to label %396 unwind label %400

396:                                              ; preds = %395
  invoke void @__cxa_throw(ptr nonnull %393, ptr nonnull @_ZTIN4Glip9ExceptionE, ptr nonnull @_ZN4Glip9ExceptionD1Ev) #11
          to label %668 unwind label %400

.thread336:                                       ; preds = %392
  %397 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %76) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %76) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %75) #10
  br label %403

398:                                              ; preds = %394
  %399 = landingpad { ptr, i32 }
          cleanup
  br label %402

400:                                              ; preds = %396, %395
  %.064 = phi i1 [ false, %396 ], [ true, %395 ]
  %401 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %79) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %77) #10
  br label %402

402:                                              ; preds = %398, %400
  %.pn258 = phi { ptr, i32 } [ %401, %400 ], [ %399, %398 ]
  %.165 = phi i1 [ %.064, %400 ], [ true, %398 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %78) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %78) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %76) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %76) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %75) #10
  br i1 %.165, label %403, label %667

403:                                              ; preds = %.thread336, %402
  %.pn258.pn339 = phi { ptr, i32 } [ %397, %.thread336 ], [ %.pn258, %402 ]
  call void @__cxa_free_exception(ptr %393) #10
  br label %667

404:                                              ; preds = %389
  store ptr %390, ptr @__glewUniform2i, align 8, !tbaa !39
  br label %405

405:                                              ; preds = %404, %382
  %406 = load ptr, ptr @__glewUniform3i, align 8, !tbaa !39
  %407 = icmp eq ptr %406, null
  br i1 %407, label %408, label %428

408:                                              ; preds = %405
  %409 = 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.23)
          to label %410 unwind label %280

410:                                              ; preds = %408
  %411 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %409, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %412 unwind label %280

412:                                              ; preds = %410
  %413 = load ptr, ptr @__glewUniform3iARB, align 8, !tbaa !39
  %414 = icmp eq ptr %413, null
  br i1 %414, label %415, label %427

415:                                              ; preds = %412
  %416 = tail call ptr @__cxa_allocate_exception(i64 152) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %80) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %81) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %81) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %80, ptr noundef nonnull @.str.24, ptr noundef nonnull align 1 dereferenceable(1) %81)
          to label %417 unwind label %.thread340

417:                                              ; preds = %415
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %83) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %83) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %82, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %83)
          to label %418 unwind label %421

418:                                              ; preds = %417
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %84) #10
  store i32 3, ptr %84, align 4, !tbaa !37
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %416, ptr noundef nonnull align 8 dereferenceable(32) %80, ptr noundef nonnull %82, i32 noundef 83, ptr noundef nonnull align 4 dereferenceable(4) %84)
          to label %419 unwind label %423

419:                                              ; preds = %418
  invoke void @__cxa_throw(ptr nonnull %416, ptr nonnull @_ZTIN4Glip9ExceptionE, ptr nonnull @_ZN4Glip9ExceptionD1Ev) #11
          to label %668 unwind label %423

.thread340:                                       ; preds = %415
  %420 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %81) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %81) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %80) #10
  br label %426

421:                                              ; preds = %417
  %422 = landingpad { ptr, i32 }
          cleanup
  br label %425

423:                                              ; preds = %419, %418
  %.061 = phi i1 [ false, %419 ], [ true, %418 ]
  %424 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %84) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %82) #10
  br label %425

425:                                              ; preds = %421, %423
  %.pn255 = phi { ptr, i32 } [ %424, %423 ], [ %422, %421 ]
  %.162 = phi i1 [ %.061, %423 ], [ true, %421 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %83) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %83) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %80) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %81) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %81) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %80) #10
  br i1 %.162, label %426, label %667

426:                                              ; preds = %.thread340, %425
  %.pn255.pn343 = phi { ptr, i32 } [ %420, %.thread340 ], [ %.pn255, %425 ]
  call void @__cxa_free_exception(ptr %416) #10
  br label %667

427:                                              ; preds = %412
  store ptr %413, ptr @__glewUniform3i, align 8, !tbaa !39
  br label %428

428:                                              ; preds = %427, %405
  %429 = load ptr, ptr @__glewUniform4i, align 8, !tbaa !39
  %430 = icmp eq ptr %429, null
  br i1 %430, label %431, label %451

431:                                              ; preds = %428
  %432 = 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.25)
          to label %433 unwind label %280

433:                                              ; preds = %431
  %434 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %432, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %435 unwind label %280

435:                                              ; preds = %433
  %436 = load ptr, ptr @__glewUniform4iARB, align 8, !tbaa !39
  %437 = icmp eq ptr %436, null
  br i1 %437, label %438, label %450

438:                                              ; preds = %435
  %439 = tail call ptr @__cxa_allocate_exception(i64 152) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %85) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %86) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %86) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %85, ptr noundef nonnull @.str.26, ptr noundef nonnull align 1 dereferenceable(1) %86)
          to label %440 unwind label %.thread344

440:                                              ; preds = %438
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %88) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %88) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %87, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %88)
          to label %441 unwind label %444

441:                                              ; preds = %440
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %89) #10
  store i32 3, ptr %89, align 4, !tbaa !37
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %439, ptr noundef nonnull align 8 dereferenceable(32) %85, ptr noundef nonnull %87, i32 noundef 84, ptr noundef nonnull align 4 dereferenceable(4) %89)
          to label %442 unwind label %446

442:                                              ; preds = %441
  invoke void @__cxa_throw(ptr nonnull %439, ptr nonnull @_ZTIN4Glip9ExceptionE, ptr nonnull @_ZN4Glip9ExceptionD1Ev) #11
          to label %668 unwind label %446

.thread344:                                       ; preds = %438
  %443 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %86) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %86) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %85) #10
  br label %449

444:                                              ; preds = %440
  %445 = landingpad { ptr, i32 }
          cleanup
  br label %448

446:                                              ; preds = %442, %441
  %.058 = phi i1 [ false, %442 ], [ true, %441 ]
  %447 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %89) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #10
  br label %448

448:                                              ; preds = %444, %446
  %.pn252 = phi { ptr, i32 } [ %447, %446 ], [ %445, %444 ]
  %.159 = phi i1 [ %.058, %446 ], [ true, %444 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %88) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %88) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %85) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %86) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %86) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %85) #10
  br i1 %.159, label %449, label %667

449:                                              ; preds = %.thread344, %448
  %.pn252.pn347 = phi { ptr, i32 } [ %443, %.thread344 ], [ %.pn252, %448 ]
  call void @__cxa_free_exception(ptr %439) #10
  br label %667

450:                                              ; preds = %435
  store ptr %436, ptr @__glewUniform4i, align 8, !tbaa !39
  br label %451

451:                                              ; preds = %450, %428
  %452 = load ptr, ptr @__glewUniform1f, align 8, !tbaa !39
  %453 = icmp eq ptr %452, null
  br i1 %453, label %454, label %474

454:                                              ; preds = %451
  %455 = 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.27)
          to label %456 unwind label %280

456:                                              ; preds = %454
  %457 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %455, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %458 unwind label %280

458:                                              ; preds = %456
  %459 = load ptr, ptr @__glewUniform1fARB, align 8, !tbaa !39
  %460 = icmp eq ptr %459, null
  br i1 %460, label %461, label %473

461:                                              ; preds = %458
  %462 = tail call ptr @__cxa_allocate_exception(i64 152) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %90) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %91) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %91) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %90, ptr noundef nonnull @.str.28, ptr noundef nonnull align 1 dereferenceable(1) %91)
          to label %463 unwind label %.thread348

463:                                              ; preds = %461
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %93) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %93) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %92, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %93)
          to label %464 unwind label %467

464:                                              ; preds = %463
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %94) #10
  store i32 3, ptr %94, align 4, !tbaa !37
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %462, ptr noundef nonnull align 8 dereferenceable(32) %90, ptr noundef nonnull %92, i32 noundef 85, ptr noundef nonnull align 4 dereferenceable(4) %94)
          to label %465 unwind label %469

465:                                              ; preds = %464
  invoke void @__cxa_throw(ptr nonnull %462, ptr nonnull @_ZTIN4Glip9ExceptionE, ptr nonnull @_ZN4Glip9ExceptionD1Ev) #11
          to label %668 unwind label %469

.thread348:                                       ; preds = %461
  %466 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %91) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %91) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %90) #10
  br label %472

467:                                              ; preds = %463
  %468 = landingpad { ptr, i32 }
          cleanup
  br label %471

469:                                              ; preds = %465, %464
  %.055 = phi i1 [ false, %465 ], [ true, %464 ]
  %470 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %94) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #10
  br label %471

471:                                              ; preds = %467, %469
  %.pn249 = phi { ptr, i32 } [ %470, %469 ], [ %468, %467 ]
  %.156 = phi i1 [ %.055, %469 ], [ true, %467 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %93) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %93) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %90) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %91) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %91) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %90) #10
  br i1 %.156, label %472, label %667

472:                                              ; preds = %.thread348, %471
  %.pn249.pn351 = phi { ptr, i32 } [ %466, %.thread348 ], [ %.pn249, %471 ]
  call void @__cxa_free_exception(ptr %462) #10
  br label %667

473:                                              ; preds = %458
  store ptr %459, ptr @__glewUniform1f, align 8, !tbaa !39
  br label %474

474:                                              ; preds = %473, %451
  %475 = load ptr, ptr @__glewUniform2f, align 8, !tbaa !39
  %476 = icmp eq ptr %475, null
  br i1 %476, label %477, label %497

477:                                              ; preds = %474
  %478 = 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.29)
          to label %479 unwind label %280

479:                                              ; preds = %477
  %480 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %478, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %481 unwind label %280

481:                                              ; preds = %479
  %482 = load ptr, ptr @__glewUniform2fARB, align 8, !tbaa !39
  %483 = icmp eq ptr %482, null
  br i1 %483, label %484, label %496

484:                                              ; preds = %481
  %485 = tail call ptr @__cxa_allocate_exception(i64 152) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %95) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %96) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %96) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %95, ptr noundef nonnull @.str.30, ptr noundef nonnull align 1 dereferenceable(1) %96)
          to label %486 unwind label %.thread352

486:                                              ; preds = %484
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %98) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %98) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %97, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %98)
          to label %487 unwind label %490

487:                                              ; preds = %486
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %99) #10
  store i32 3, ptr %99, align 4, !tbaa !37
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %485, ptr noundef nonnull align 8 dereferenceable(32) %95, ptr noundef nonnull %97, i32 noundef 86, ptr noundef nonnull align 4 dereferenceable(4) %99)
          to label %488 unwind label %492

488:                                              ; preds = %487
  invoke void @__cxa_throw(ptr nonnull %485, ptr nonnull @_ZTIN4Glip9ExceptionE, ptr nonnull @_ZN4Glip9ExceptionD1Ev) #11
          to label %668 unwind label %492

.thread352:                                       ; preds = %484
  %489 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %96) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %96) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %95) #10
  br label %495

490:                                              ; preds = %486
  %491 = landingpad { ptr, i32 }
          cleanup
  br label %494

492:                                              ; preds = %488, %487
  %.052 = phi i1 [ false, %488 ], [ true, %487 ]
  %493 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %99) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %97) #10
  br label %494

494:                                              ; preds = %490, %492
  %.pn246 = phi { ptr, i32 } [ %493, %492 ], [ %491, %490 ]
  %.153 = phi i1 [ %.052, %492 ], [ true, %490 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %98) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %98) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %95) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %96) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %96) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %95) #10
  br i1 %.153, label %495, label %667

495:                                              ; preds = %.thread352, %494
  %.pn246.pn355 = phi { ptr, i32 } [ %489, %.thread352 ], [ %.pn246, %494 ]
  call void @__cxa_free_exception(ptr %485) #10
  br label %667

496:                                              ; preds = %481
  store ptr %482, ptr @__glewUniform2f, align 8, !tbaa !39
  br label %497

497:                                              ; preds = %496, %474
  %498 = load ptr, ptr @__glewUniform3f, align 8, !tbaa !39
  %499 = icmp eq ptr %498, null
  br i1 %499, label %500, label %520

500:                                              ; preds = %497
  %501 = 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.31)
          to label %502 unwind label %280

502:                                              ; preds = %500
  %503 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %501, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %504 unwind label %280

504:                                              ; preds = %502
  %505 = load ptr, ptr @__glewUniform3fARB, align 8, !tbaa !39
  %506 = icmp eq ptr %505, null
  br i1 %506, label %507, label %519

507:                                              ; preds = %504
  %508 = tail call ptr @__cxa_allocate_exception(i64 152) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %100) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %101) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %101) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %100, ptr noundef nonnull @.str.32, ptr noundef nonnull align 1 dereferenceable(1) %101)
          to label %509 unwind label %.thread356

509:                                              ; preds = %507
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %103) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %103) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %102, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %103)
          to label %510 unwind label %513

510:                                              ; preds = %509
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %104) #10
  store i32 3, ptr %104, align 4, !tbaa !37
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %508, ptr noundef nonnull align 8 dereferenceable(32) %100, ptr noundef nonnull %102, i32 noundef 87, ptr noundef nonnull align 4 dereferenceable(4) %104)
          to label %511 unwind label %515

511:                                              ; preds = %510
  invoke void @__cxa_throw(ptr nonnull %508, ptr nonnull @_ZTIN4Glip9ExceptionE, ptr nonnull @_ZN4Glip9ExceptionD1Ev) #11
          to label %668 unwind label %515

.thread356:                                       ; preds = %507
  %512 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %101) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %101) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %100) #10
  br label %518

513:                                              ; preds = %509
  %514 = landingpad { ptr, i32 }
          cleanup
  br label %517

515:                                              ; preds = %511, %510
  %.049 = phi i1 [ false, %511 ], [ true, %510 ]
  %516 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %104) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %102) #10
  br label %517

517:                                              ; preds = %513, %515
  %.pn243 = phi { ptr, i32 } [ %516, %515 ], [ %514, %513 ]
  %.150 = phi i1 [ %.049, %515 ], [ true, %513 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %103) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %103) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %100) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %101) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %101) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %100) #10
  br i1 %.150, label %518, label %667

518:                                              ; preds = %.thread356, %517
  %.pn243.pn359 = phi { ptr, i32 } [ %512, %.thread356 ], [ %.pn243, %517 ]
  call void @__cxa_free_exception(ptr %508) #10
  br label %667

519:                                              ; preds = %504
  store ptr %505, ptr @__glewUniform3f, align 8, !tbaa !39
  br label %520

520:                                              ; preds = %519, %497
  %521 = load ptr, ptr @__glewUniform4f, align 8, !tbaa !39
  %522 = icmp eq ptr %521, null
  br i1 %522, label %523, label %543

523:                                              ; preds = %520
  %524 = 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.33)
          to label %525 unwind label %280

525:                                              ; preds = %523
  %526 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %524, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %527 unwind label %280

527:                                              ; preds = %525
  %528 = load ptr, ptr @__glewUniform4fARB, align 8, !tbaa !39
  %529 = icmp eq ptr %528, null
  br i1 %529, label %530, label %542

530:                                              ; preds = %527
  %531 = tail call ptr @__cxa_allocate_exception(i64 152) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %105) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %106) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %106) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %105, ptr noundef nonnull @.str.34, ptr noundef nonnull align 1 dereferenceable(1) %106)
          to label %532 unwind label %.thread360

532:                                              ; preds = %530
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %108) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %108) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %107, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %108)
          to label %533 unwind label %536

533:                                              ; preds = %532
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %109) #10
  store i32 3, ptr %109, align 4, !tbaa !37
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %531, ptr noundef nonnull align 8 dereferenceable(32) %105, ptr noundef nonnull %107, i32 noundef 88, ptr noundef nonnull align 4 dereferenceable(4) %109)
          to label %534 unwind label %538

534:                                              ; preds = %533
  invoke void @__cxa_throw(ptr nonnull %531, ptr nonnull @_ZTIN4Glip9ExceptionE, ptr nonnull @_ZN4Glip9ExceptionD1Ev) #11
          to label %668 unwind label %538

.thread360:                                       ; preds = %530
  %535 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %106) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %106) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %105) #10
  br label %541

536:                                              ; preds = %532
  %537 = landingpad { ptr, i32 }
          cleanup
  br label %540

538:                                              ; preds = %534, %533
  %.046 = phi i1 [ false, %534 ], [ true, %533 ]
  %539 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %109) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %107) #10
  br label %540

540:                                              ; preds = %536, %538
  %.pn240 = phi { ptr, i32 } [ %539, %538 ], [ %537, %536 ]
  %.147 = phi i1 [ %.046, %538 ], [ true, %536 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %108) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %108) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %105) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %106) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %106) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %105) #10
  br i1 %.147, label %541, label %667

541:                                              ; preds = %.thread360, %540
  %.pn240.pn363 = phi { ptr, i32 } [ %535, %.thread360 ], [ %.pn240, %540 ]
  call void @__cxa_free_exception(ptr %531) #10
  br label %667

542:                                              ; preds = %527
  store ptr %528, ptr @__glewUniform4f, align 8, !tbaa !39
  br label %543

543:                                              ; preds = %542, %520
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %110) #10
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(24) %110, ptr noundef nonnull align 16 dereferenceable(24) @__const.HdlShader.listCorrectEnum, i64 24, i1 false)
  %544 = invoke noundef zeroext i1 @_ZN4Glip6CoreGL16belongsToGLEnumsILm6EEEbRKjRAT__S2_(ptr noundef nonnull align 4 dereferenceable(4) %134, ptr noundef nonnull align 4 dereferenceable(24) %110)
          to label %545 unwind label %552

545:                                              ; preds = %543
  br i1 %544, label %564, label %546

546:                                              ; preds = %545
  %547 = call ptr @__cxa_allocate_exception(i64 152) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %111) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %112) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %113) #10
  call void @_ZN4Glip6CoreGL17getGLEnumNameSafeB5cxx11ERKj(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %113, ptr noundef nonnull align 4 dereferenceable(4) %134) #10
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %112, ptr noundef nonnull @.str.35, ptr noundef nonnull align 8 dereferenceable(32) %113)
          to label %548 unwind label %.thread364

548:                                              ; preds = %546
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %111, ptr noundef nonnull align 8 dereferenceable(32) %112, ptr noundef nonnull @.str.36)
          to label %549 unwind label %555

549:                                              ; preds = %548
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %115) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %115) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %114, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %115)
          to label %550 unwind label %557

550:                                              ; preds = %549
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %116) #10
  store i32 3, ptr %116, align 4, !tbaa !37
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %547, ptr noundef nonnull align 8 dereferenceable(32) %111, ptr noundef nonnull %114, i32 noundef 97, ptr noundef nonnull align 4 dereferenceable(4) %116)
          to label %551 unwind label %559

551:                                              ; preds = %550
  invoke void @__cxa_throw(ptr nonnull %547, ptr nonnull @_ZTIN4Glip9ExceptionE, ptr nonnull @_ZN4Glip9ExceptionD1Ev) #11
          to label %668 unwind label %559

552:                                              ; preds = %564, %543
  %553 = landingpad { ptr, i32 }
          cleanup
  br label %666

.thread364:                                       ; preds = %546
  %554 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %113) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %113) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %112) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %111) #10
  br label %563

555:                                              ; preds = %548
  %556 = landingpad { ptr, i32 }
          cleanup
  br label %562

557:                                              ; preds = %549
  %558 = landingpad { ptr, i32 }
          cleanup
  br label %561

559:                                              ; preds = %551, %550
  %.042 = phi i1 [ false, %551 ], [ true, %550 ]
  %560 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %116) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %114) #10
  br label %561

561:                                              ; preds = %559, %557
  %.pn217 = phi { ptr, i32 } [ %560, %559 ], [ %558, %557 ]
  %.143 = phi i1 [ %.042, %559 ], [ true, %557 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %115) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %115) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %111) #10
  br label %562

562:                                              ; preds = %555, %561
  %.pn217.pn = phi { ptr, i32 } [ %.pn217, %561 ], [ %556, %555 ]
  %.244 = phi i1 [ %.143, %561 ], [ true, %555 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %112) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %113) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %113) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %112) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %111) #10
  br i1 %.244, label %563, label %666

563:                                              ; preds = %.thread364, %562
  %.pn217.pn.pn367 = phi { ptr, i32 } [ %554, %.thread364 ], [ %.pn217.pn, %562 ]
  call void @__cxa_free_exception(ptr %547) #10
  br label %666

564:                                              ; preds = %545
  %565 = load ptr, ptr @__glewCreateShader, align 8, !tbaa !39
  %566 = load i32, ptr %134, align 4, !tbaa !5
  %567 = invoke i32 %565(i32 noundef %566)
          to label %568 unwind label %552

568:                                              ; preds = %564
  %569 = getelementptr inbounds i8, ptr %0, i64 272
  store i32 %567, ptr %569, align 8, !tbaa !40
  %570 = icmp eq i32 %567, 0
  br i1 %570, label %571, label %608

571:                                              ; preds = %568
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %117) #10
  %572 = invoke i32 @glGetError()
          to label %573 unwind label %585

573:                                              ; preds = %571
  store i32 %572, ptr %117, align 4, !tbaa !41
  %574 = call ptr @__cxa_allocate_exception(i64 152) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %118) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %119) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %120) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %121) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %122) #10
  %575 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK4Glip6CoreGL12ShaderSource13getSourceNameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(272) %0)
          to label %576 unwind label %.thread368

576:                                              ; preds = %573
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %122, ptr noundef nonnull @.str.37, ptr noundef nonnull align 8 dereferenceable(32) %575)
          to label %577 unwind label %.thread368

577:                                              ; preds = %576
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %121, ptr noundef nonnull align 8 dereferenceable(32) %122, ptr noundef nonnull @.str.38)
          to label %578 unwind label %.thread372

578:                                              ; preds = %577
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %123) #10
  call void @_ZN4Glip6CoreGL17getGLEnumNameSafeB5cxx11ERKj(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %123, ptr noundef nonnull align 4 dereferenceable(4) %117) #10
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %120, ptr noundef nonnull align 8 dereferenceable(32) %121, ptr noundef nonnull align 8 dereferenceable(32) %123)
          to label %579 unwind label %589

579:                                              ; preds = %578
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %119, ptr noundef nonnull align 8 dereferenceable(32) %120, ptr noundef nonnull @.str.39)
          to label %580 unwind label %591

580:                                              ; preds = %579
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %124) #10
  invoke void @_ZN4Glip6CoreGL21getGLErrorDescriptionB5cxx11ERKj(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %124, ptr noundef nonnull align 4 dereferenceable(4) %117)
          to label %581 unwind label %593

581:                                              ; preds = %580
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %118, ptr noundef nonnull align 8 dereferenceable(32) %119, ptr noundef nonnull align 8 dereferenceable(32) %124)
          to label %582 unwind label %595

582:                                              ; preds = %581
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %126) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %126) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %125, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %126)
          to label %583 unwind label %597

583:                                              ; preds = %582
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %127) #10
  store i32 3, ptr %127, align 4, !tbaa !37
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %574, ptr noundef nonnull align 8 dereferenceable(32) %118, ptr noundef nonnull %125, i32 noundef 109, ptr noundef nonnull align 4 dereferenceable(4) %127)
          to label %584 unwind label %599

584:                                              ; preds = %583
  invoke void @__cxa_throw(ptr nonnull %574, ptr nonnull @_ZTIN4Glip9ExceptionE, ptr nonnull @_ZN4Glip9ExceptionD1Ev) #11
          to label %668 unwind label %599

585:                                              ; preds = %571
  %586 = landingpad { ptr, i32 }
          cleanup
  br label %607

.thread368:                                       ; preds = %573, %576
  %587 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %122) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %121) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %120) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %119) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %118) #10
  br label %606

.thread372:                                       ; preds = %577
  %588 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %122) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %122) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %121) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %120) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %119) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %118) #10
  br label %606

589:                                              ; preds = %578
  %590 = landingpad { ptr, i32 }
          cleanup
  br label %605

591:                                              ; preds = %579
  %592 = landingpad { ptr, i32 }
          cleanup
  br label %604

593:                                              ; preds = %580
  %594 = landingpad { ptr, i32 }
          cleanup
  br label %603

595:                                              ; preds = %581
  %596 = landingpad { ptr, i32 }
          cleanup
  br label %602

597:                                              ; preds = %582
  %598 = landingpad { ptr, i32 }
          cleanup
  br label %601

599:                                              ; preds = %584, %583
  %.034 = phi i1 [ false, %584 ], [ true, %583 ]
  %600 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %127) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %125) #10
  br label %601

601:                                              ; preds = %599, %597
  %.pn230 = phi { ptr, i32 } [ %600, %599 ], [ %598, %597 ]
  %.135 = phi i1 [ %.034, %599 ], [ true, %597 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %126) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %126) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %118) #10
  br label %602

602:                                              ; preds = %601, %595
  %.pn230.pn = phi { ptr, i32 } [ %.pn230, %601 ], [ %596, %595 ]
  %.236 = phi i1 [ %.135, %601 ], [ true, %595 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %124) #10
  br label %603

603:                                              ; preds = %602, %593
  %.pn230.pn.pn = phi { ptr, i32 } [ %.pn230.pn, %602 ], [ %594, %593 ]
  %.337 = phi i1 [ %.236, %602 ], [ true, %593 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %124) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %119) #10
  br label %604

604:                                              ; preds = %603, %591
  %.pn230.pn.pn.pn = phi { ptr, i32 } [ %.pn230.pn.pn, %603 ], [ %592, %591 ]
  %.438 = phi i1 [ %.337, %603 ], [ true, %591 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %120) #10
  br label %605

605:                                              ; preds = %589, %604
  %.pn230.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn230.pn.pn.pn, %604 ], [ %590, %589 ]
  %.539 = phi i1 [ %.438, %604 ], [ true, %589 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %123) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %123) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %121) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %122) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %122) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %121) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %120) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %119) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %118) #10
  br i1 %.539, label %606, label %607

606:                                              ; preds = %.thread372, %.thread368, %605
  %.pn230.pn.pn.pn.pn.pn.pn371 = phi { ptr, i32 } [ %587, %.thread368 ], [ %.pn230.pn.pn.pn.pn, %605 ], [ %588, %.thread372 ]
  call void @__cxa_free_exception(ptr %574) #10
  br label %607

607:                                              ; preds = %605, %606, %585
  %.pn230.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn230.pn.pn.pn.pn.pn.pn371, %606 ], [ %.pn230.pn.pn.pn.pn, %605 ], [ %586, %585 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %117) #10
  br label %666

608:                                              ; preds = %568
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %128) #10
  %609 = invoke noundef ptr @_ZNK4Glip6CoreGL12ShaderSource13getSourceCstrEv(ptr noundef nonnull align 8 dereferenceable(272) %0)
          to label %610 unwind label %643

610:                                              ; preds = %608
  store ptr %609, ptr %128, align 8, !tbaa !39
  %611 = load ptr, ptr @__glewShaderSource, align 8, !tbaa !39
  %612 = load i32, ptr %569, align 8, !tbaa !40
  invoke void %611(i32 noundef %612, i32 noundef 1, ptr noundef nonnull %128, ptr noundef null)
          to label %613 unwind label %643

613:                                              ; preds = %610
  %614 = load ptr, ptr @__glewCompileShader, align 8, !tbaa !39
  %615 = load i32, ptr %569, align 8, !tbaa !40
  invoke void %614(i32 noundef %615)
          to label %616 unwind label %643

616:                                              ; preds = %613
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %129) #10
  store i32 1, ptr %129, align 4, !tbaa !41
  %617 = load ptr, ptr @__glewGetShaderiv, align 8, !tbaa !39
  %618 = load i32, ptr %569, align 8, !tbaa !40
  invoke void %617(i32 noundef %618, i32 noundef 35713, ptr noundef nonnull %129)
          to label %619 unwind label %645

619:                                              ; preds = %616
  %620 = load i32, ptr %129, align 4, !tbaa !41
  %.not = icmp eq i32 %620, 1
  br i1 %.not, label %663, label %621

621:                                              ; preds = %619
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %130) #10
  %622 = load ptr, ptr @__glewGetShaderiv, align 8, !tbaa !39
  %623 = load i32, ptr %569, align 8, !tbaa !40
  invoke void %622(i32 noundef %623, i32 noundef 35716, ptr noundef nonnull %130)
          to label %624 unwind label %647

624:                                              ; preds = %621
  %625 = load i32, ptr %130, align 4, !tbaa !41
  %626 = add nsw i32 %625, 1
  %627 = sext i32 %626 to i64
  %628 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %627) #12
          to label %629 unwind label %649

629:                                              ; preds = %624
  call void @llvm.memset.p0.i64(ptr nonnull align 1 %628, i8 0, i64 %627, i1 false)
  %630 = load ptr, ptr @__glewGetShaderInfoLog, align 8, !tbaa !39
  %631 = load i32, ptr %569, align 8, !tbaa !40
  invoke void %630(i32 noundef %631, i32 noundef %625, ptr noundef nonnull %130, ptr noundef nonnull %628)
          to label %632 unwind label %649

632:                                              ; preds = %629
  %633 = load i32, ptr %130, align 4, !tbaa !41
  %634 = sext i32 %633 to i64
  %635 = getelementptr inbounds i8, ptr %628, i64 %634
  store i8 0, ptr %635, align 1, !tbaa !36
  call void @llvm.lifetime.start.p0(i64 152, ptr nonnull %131) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %132) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %133) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %133) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %132, ptr noundef nonnull %628, ptr noundef nonnull align 1 dereferenceable(1) %133)
          to label %636 unwind label %651

636:                                              ; preds = %632
  invoke void @_ZNK4Glip6CoreGL12ShaderSource8errorLogERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.Glip::Exception") align 8 %131, ptr noundef nonnull align 8 dereferenceable(272) %0, ptr noundef nonnull align 8 dereferenceable(32) %132)
          to label %637 unwind label %653

637:                                              ; preds = %636
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %132) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %133) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %133) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %132) #10
  call void @_ZdaPv(ptr noundef nonnull %628) #13
  %638 = load ptr, ptr @__glewDeleteShader, align 8, !tbaa !39
  %639 = load i32, ptr %569, align 8, !tbaa !40
  invoke void %638(i32 noundef %639)
          to label %640 unwind label %656

640:                                              ; preds = %637
  %641 = call ptr @__cxa_allocate_exception(i64 152) #10
  invoke void @_ZN4Glip9ExceptionC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(152) %641, ptr noundef nonnull align 8 dereferenceable(152) %131)
          to label %642 unwind label %658

642:                                              ; preds = %640
  invoke void @__cxa_throw(ptr nonnull %641, ptr nonnull @_ZTIN4Glip9ExceptionE, ptr nonnull @_ZN4Glip9ExceptionD1Ev) #11
          to label %668 unwind label %656

643:                                              ; preds = %613, %610, %608
  %644 = landingpad { ptr, i32 }
          cleanup
  br label %665

645:                                              ; preds = %616
  %646 = landingpad { ptr, i32 }
          cleanup
  br label %664

647:                                              ; preds = %621
  %648 = landingpad { ptr, i32 }
          cleanup
  br label %662

649:                                              ; preds = %629, %624
  %650 = landingpad { ptr, i32 }
          cleanup
  br label %662

651:                                              ; preds = %632
  %652 = landingpad { ptr, i32 }
          cleanup
  br label %655

653:                                              ; preds = %636
  %654 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %132) #10
  br label %655

655:                                              ; preds = %653, %651
  %.pn221 = phi { ptr, i32 } [ %654, %653 ], [ %652, %651 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %133) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %133) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %132) #10
  br label %661

656:                                              ; preds = %642, %637
  %657 = landingpad { ptr, i32 }
          cleanup
  br label %660

658:                                              ; preds = %640
  %659 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %641) #10
  br label %660

660:                                              ; preds = %658, %656
  %.pn223 = phi { ptr, i32 } [ %657, %656 ], [ %659, %658 ]
  call void @_ZN4Glip9ExceptionD1Ev(ptr noundef nonnull align 8 dereferenceable(152) %131) #10
  br label %661

661:                                              ; preds = %660, %655
  %.pn223.pn = phi { ptr, i32 } [ %.pn223, %660 ], [ %.pn221, %655 ]
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %131) #10
  br label %662

662:                                              ; preds = %649, %661, %647
  %.pn223.pn.pn.pn = phi { ptr, i32 } [ %648, %647 ], [ %.pn223.pn, %661 ], [ %650, %649 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %130) #10
  br label %664

663:                                              ; preds = %619
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %129) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %128) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %110) #10
  ret void

664:                                              ; preds = %662, %645
  %.pn223.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn223.pn.pn.pn, %662 ], [ %646, %645 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %129) #10
  br label %665

665:                                              ; preds = %664, %643
  %.pn223.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn223.pn.pn.pn.pn, %664 ], [ %644, %643 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %128) #10
  br label %666

666:                                              ; preds = %562, %563, %665, %607, %552
  %.pn230.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn230.pn.pn.pn.pn.pn.pn.pn, %607 ], [ %.pn223.pn.pn.pn.pn.pn, %665 ], [ %553, %552 ], [ %.pn217.pn.pn367, %563 ], [ %.pn217.pn, %562 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %110) #10
  br label %667

667:                                              ; preds = %540, %541, %517, %518, %494, %495, %471, %472, %448, %449, %425, %426, %402, %403, %379, %380, %356, %357, %333, %334, %310, %311, %287, %288, %261, %262, %245, %246, %231, %232, %217, %218, %203, %204, %189, %190, %175, %176, %161, %162, %146, %147, %666, %280
  %.pn276.pn.pn.pn = phi { ptr, i32 } [ %.pn276.pn.pn315, %262 ], [ %.pn276.pn, %261 ], [ %.pn273.pn319, %288 ], [ %.pn273, %287 ], [ %.pn270.pn323, %311 ], [ %.pn270, %310 ], [ %.pn267.pn327, %334 ], [ %.pn267, %333 ], [ %.pn264.pn331, %357 ], [ %.pn264, %356 ], [ %.pn261.pn335, %380 ], [ %.pn261, %379 ], [ %.pn258.pn339, %403 ], [ %.pn258, %402 ], [ %.pn255.pn343, %426 ], [ %.pn255, %425 ], [ %.pn252.pn347, %449 ], [ %.pn252, %448 ], [ %.pn249.pn351, %472 ], [ %.pn249, %471 ], [ %.pn246.pn355, %495 ], [ %.pn246, %494 ], [ %.pn243.pn359, %518 ], [ %.pn243, %517 ], [ %.pn240.pn363, %541 ], [ %.pn240, %540 ], [ %.pn230.pn.pn.pn.pn.pn.pn.pn.pn, %666 ], [ %281, %280 ], [ %.pn189.pn311, %246 ], [ %.pn189, %245 ], [ %.pn193.pn307, %232 ], [ %.pn193, %231 ], [ %.pn197.pn303, %218 ], [ %.pn197, %217 ], [ %.pn205.pn299, %204 ], [ %.pn205, %203 ], [ %.pn201.pn295, %190 ], [ %.pn201, %189 ], [ %.pn213.pn291, %176 ], [ %.pn213, %175 ], [ %.pn209.pn287, %162 ], [ %.pn209, %161 ], [ %.pn.pn283, %147 ], [ %.pn, %146 ]
  call void @_ZN4Glip6CoreGL12ShaderSourceD2Ev(ptr noundef nonnull align 8 dereferenceable(272) %0) #10
  resume { ptr, i32 } %.pn276.pn.pn.pn

668:                                              ; preds = %642, %584, %551, %534, %511, %488, %465, %442, %419, %396, %373, %350, %327, %304, %279, %252, %239, %225, %211, %197, %183, %169, %155, %140
  unreachable
}

declare void @_ZN4Glip6CoreGL12ShaderSourceC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(272), ptr noundef nonnull align 8 dereferenceable(272)) unnamed_addr #1

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) #2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 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 i32 @__gxx_personality_v0(...)

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 #4

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) #2

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

declare void @__cxa_free_exception(ptr) local_unnamed_addr

; 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 #5

; 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 #5

; 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 #4

declare noundef zeroext i1 @_ZNK4Glip6CoreGL12ShaderSource21requiresCompatibilityEv(ptr noundef nonnull align 8 dereferenceable(272)) local_unnamed_addr #1

; 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 #5

; 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)) #5

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN4Glip6CoreGL16belongsToGLEnumsILm6EEEbRKjRAT__S2_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(24)) local_unnamed_addr #0

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 #5

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(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 #0

declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNK4Glip6CoreGL12ShaderSource13getSourceNameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(272)) local_unnamed_addr #1

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

declare noundef ptr @_ZNK4Glip6CoreGL12ShaderSource13getSourceCstrEv(ptr noundef nonnull align 8 dereferenceable(272)) local_unnamed_addr #1

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

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #8

declare void @_ZNK4Glip6CoreGL12ShaderSource8errorLogERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.Glip::Exception") align 8, ptr noundef nonnull align 8 dereferenceable(272), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1

; Function Attrs: nobuiltin nounwind
declare void @_ZdaPv(ptr noundef) local_unnamed_addr #9

declare void @_ZN4Glip9ExceptionC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(152), ptr noundef nonnull align 8 dereferenceable(152)) unnamed_addr #1

; Function Attrs: nounwind
declare void @_ZN4Glip6CoreGL12ShaderSourceD2Ev(ptr noundef nonnull align 8 dereferenceable(272)) unnamed_addr #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 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 nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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 #5 = { 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 #6 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #7 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #9 = { nobuiltin nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #10 = { nounwind }
attributes #11 = { noreturn }
attributes #12 = { builtin allocsize(0) }
attributes #13 = { builtin nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !27, i64 276}
!6 = !{!"_ZTSN4Glip6CoreGL9HdlShaderE", !7, i64 0, !27, i64 272, !27, i64 276}
!7 = !{!"_ZTSN4Glip6CoreGL12ShaderSourceE", !8, i64 0, !8, i64 32, !14, i64 64, !14, i64 88, !18, i64 112, !18, i64 136, !22, i64 160, !18, i64 184, !26, i64 208, !27, i64 212, !27, i64 216, !28, i64 224}
!8 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !9, i64 0, !13, i64 8, !11, i64 16}
!9 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !10, i64 0}
!10 = !{!"any pointer", !11, i64 0}
!11 = !{!"omnipotent char", !12, i64 0}
!12 = !{!"Simple C++ TBAA"}
!13 = !{!"long", !11, i64 0}
!14 = !{!"_ZTSSt6vectorImSaImEE", !15, i64 0}
!15 = !{!"_ZTSSt12_Vector_baseImSaImEE", !16, i64 0}
!16 = !{!"_ZTSNSt12_Vector_baseImSaImEE12_Vector_implE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseImSaImEE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!18 = !{!"_ZTSSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !19, i64 0}
!19 = !{!"_ZTSSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_Vector_implE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!22 = !{!"_ZTSSt6vectorIjSaIjEE", !23, i64 0}
!23 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!26 = !{!"bool", !11, i64 0}
!27 = !{!"int", !11, i64 0}
!28 = !{!"_ZTSSt3mapIiN4Glip6CoreGL12ShaderSource8LineInfoESt4lessIiESaISt4pairIKiS3_EEE", !29, i64 0}
!29 = !{!"_ZTSSt8_Rb_treeIiSt4pairIKiN4Glip6CoreGL12ShaderSource8LineInfoEESt10_Select1stIS6_ESt4lessIiESaIS6_EE", !30, i64 0}
!30 = !{!"_ZTSNSt8_Rb_treeIiSt4pairIKiN4Glip6CoreGL12ShaderSource8LineInfoEESt10_Select1stIS6_ESt4lessIiESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !31, i64 0, !33, i64 8}
!31 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIiEE", !32, i64 0}
!32 = !{!"_ZTSSt4lessIiE"}
!33 = !{!"_ZTSSt15_Rb_tree_header", !34, i64 0, !13, i64 32}
!34 = !{!"_ZTSSt18_Rb_tree_node_base", !35, i64 0, !10, i64 8, !10, i64 16, !10, i64 24}
!35 = !{!"_ZTSSt14_Rb_tree_color", !11, i64 0}
!36 = !{!11, !11, i64 0}
!37 = !{!38, !38, i64 0}
!38 = !{!"_ZTSN4Glip9Exception4TypeE", !11, i64 0}
!39 = !{!10, !10, i64 0}
!40 = !{!6, !27, i64 272}
!41 = !{!27, !27, i64 0}


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