; LLVM IR from goldest-star/seawave-animation :: src/vcl/shape/mesh/mesh_drawable (mesh_drawable)

; 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.19" = type { i8 }
%"struct.vcl::mat.22" = type { float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float }
%"struct.vcl::buffer_stack" = type { float, float, float }
%"struct.vcl::mesh_drawable" = type { %"struct.vcl::mesh_drawable_gpu_data", %"struct.vcl::mesh_drawable_uniform", i32, i32 }
%"struct.vcl::mesh_drawable_gpu_data" = type { i32, i32, i32, i32, i32, i32, i32 }
%"struct.vcl::mesh_drawable_uniform" = type { %"struct.vcl::affine_transform", %"struct.vcl::buffer_stack", %"struct.vcl::shading_mesh", float }
%"struct.vcl::affine_transform" = type { %"struct.vcl::buffer_stack", %"struct.vcl::mat", float, %"struct.vcl::buffer_stack" }
%"struct.vcl::mat" = type { float, float, float, float, float, float, float, float, float }
%"struct.vcl::shading_mesh" = type { float, float, float, i32 }
%"struct.vcl::camera_scene" = type { float, %"struct.vcl::buffer_stack", %"struct.vcl::mat", %"struct.vcl::perspective_structure", i32, %"struct.vcl::buffer_stack.18" }
%"struct.vcl::perspective_structure" = type { float, float, float, float }
%"struct.vcl::buffer_stack.18" = type { float, float }

@glad_glIsProgram = external global ptr, align 8
@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str = external hidden unnamed_addr constant [50 x i8], align 1
@glad_glGetIntegerv = external global ptr, align 8
@.str.1 = external hidden unnamed_addr constant [115 x i8], align 1
@__PRETTY_FUNCTION__._ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEjj = external hidden unnamed_addr constant [76 x i8], align 1
@glad_glUseProgram = external global ptr, align 8
@glad_glIsTexture = external global ptr, align 8
@.str.2 = external hidden unnamed_addr constant [24 x i8], align 1
@glad_glBindTexture = external global ptr, align 8
@.str.3 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [18 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEjj(ptr noundef nonnull align 4 dereferenceable(132) %0, ptr noundef nonnull align 4 dereferenceable(80) %1, i32 noundef %2, i32 noundef %3) #0 personality ptr @__gxx_personality_v0 {
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.std::allocator.19", align 1
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %"class.std::allocator.19", align 1
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca %"class.std::allocator.19", align 1
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::allocator.19", align 1
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %"class.std::allocator.19", align 1
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  %23 = alloca %"class.std::allocator.19", align 1
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.std::allocator.19", align 1
  %26 = alloca %"class.std::__cxx11::basic_string", align 8
  %27 = alloca %"class.std::allocator.19", align 1
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  %29 = alloca %"class.std::allocator.19", align 1
  %30 = alloca %"class.std::__cxx11::basic_string", align 8
  %31 = alloca %"class.std::allocator.19", align 1
  %32 = alloca %"class.std::__cxx11::basic_string", align 8
  %33 = alloca %"class.std::allocator.19", align 1
  %34 = alloca %"class.std::__cxx11::basic_string", align 8
  %35 = alloca %"class.std::allocator.19", align 1
  %36 = alloca %"class.std::__cxx11::basic_string", align 8
  %37 = alloca %"class.std::allocator.19", align 1
  %38 = alloca %"class.std::__cxx11::basic_string", align 8
  %39 = alloca %"class.std::allocator.19", align 1
  %40 = alloca %"class.std::__cxx11::basic_string", align 8
  %41 = alloca %"class.std::allocator.19", align 1
  %42 = alloca %"class.std::__cxx11::basic_string", align 8
  %43 = alloca %"class.std::allocator.19", align 1
  %44 = alloca %"class.std::__cxx11::basic_string", align 8
  %45 = alloca %"class.std::allocator.19", align 1
  %46 = alloca %"class.std::__cxx11::basic_string", align 8
  %47 = alloca %"class.std::allocator.19", align 1
  %48 = alloca %"class.std::__cxx11::basic_string", align 8
  %49 = alloca %"class.std::allocator.19", align 1
  %50 = alloca %"class.std::__cxx11::basic_string", align 8
  %51 = alloca %"class.std::allocator.19", align 1
  %52 = alloca %"class.std::__cxx11::basic_string", align 8
  %53 = alloca %"class.std::allocator.19", align 1
  %54 = alloca %"class.std::__cxx11::basic_string", align 8
  %55 = alloca %"class.std::allocator.19", align 1
  %56 = alloca %"class.std::__cxx11::basic_string", align 8
  %57 = alloca %"class.std::allocator.19", align 1
  %58 = alloca %"class.std::__cxx11::basic_string", align 8
  %59 = alloca %"class.std::allocator.19", align 1
  %60 = alloca %"class.std::__cxx11::basic_string", align 8
  %61 = alloca %"class.std::allocator.19", align 1
  %62 = alloca %"struct.vcl::mat.22", align 4
  %63 = alloca %"class.std::__cxx11::basic_string", align 8
  %64 = alloca %"class.std::allocator.19", align 1
  %65 = alloca %"class.std::__cxx11::basic_string", align 8
  %66 = alloca %"class.std::allocator.19", align 1
  %67 = alloca %"class.std::__cxx11::basic_string", align 8
  %68 = alloca %"class.std::allocator.19", align 1
  %69 = alloca %"struct.vcl::mat.22", align 4
  %70 = alloca %"class.std::__cxx11::basic_string", align 8
  %71 = alloca %"class.std::allocator.19", align 1
  %72 = alloca %"class.std::__cxx11::basic_string", align 8
  %73 = alloca %"class.std::allocator.19", align 1
  %74 = alloca %"class.std::__cxx11::basic_string", align 8
  %75 = alloca %"class.std::allocator.19", align 1
  %76 = alloca %"struct.vcl::buffer_stack", align 4
  %77 = alloca { <2 x float>, float }, align 8
  %78 = alloca %"class.std::__cxx11::basic_string", align 8
  %79 = alloca %"class.std::allocator.19", align 1
  %80 = alloca %"class.std::__cxx11::basic_string", align 8
  %81 = alloca %"class.std::allocator.19", align 1
  %82 = alloca %"class.std::__cxx11::basic_string", align 8
  %83 = alloca %"class.std::allocator.19", align 1
  %84 = alloca %"class.std::__cxx11::basic_string", align 8
  %85 = alloca %"class.std::allocator.19", align 1
  %86 = alloca %"class.std::__cxx11::basic_string", align 8
  %87 = alloca %"class.std::allocator.19", align 1
  %88 = alloca %"class.std::__cxx11::basic_string", align 8
  %89 = alloca %"class.std::allocator.19", align 1
  %90 = alloca %"class.std::__cxx11::basic_string", align 8
  %91 = alloca %"class.std::allocator.19", align 1
  %92 = alloca %"class.std::__cxx11::basic_string", align 8
  %93 = alloca %"class.std::allocator.19", align 1
  %94 = alloca %"class.std::__cxx11::basic_string", align 8
  %95 = alloca %"class.std::allocator.19", align 1
  %96 = alloca %"class.std::__cxx11::basic_string", align 8
  %97 = alloca %"class.std::allocator.19", align 1
  %98 = alloca %"class.std::__cxx11::basic_string", align 8
  %99 = alloca %"class.std::allocator.19", align 1
  %100 = alloca %"class.std::__cxx11::basic_string", align 8
  %101 = alloca %"class.std::allocator.19", align 1
  %102 = alloca %"class.std::__cxx11::basic_string", align 8
  %103 = alloca %"class.std::allocator.19", align 1
  %104 = alloca %"class.std::__cxx11::basic_string", align 8
  %105 = alloca %"class.std::allocator.19", align 1
  %106 = alloca %"class.std::__cxx11::basic_string", align 8
  %107 = alloca %"class.std::allocator.19", align 1
  %108 = alloca %"class.std::__cxx11::basic_string", align 8
  %109 = alloca %"class.std::allocator.19", align 1
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store i32 %2, ptr %7, align 4, !tbaa !9
  store i32 %3, ptr %8, align 4, !tbaa !9
  %110 = load i32, ptr %7, align 4, !tbaa !9
  %111 = icmp eq i32 %110, 0
  br i1 %111, label %112, label %113

112:                                              ; preds = %4
  br label %331

113:                                              ; preds = %4
  %114 = load ptr, ptr @glad_glIsProgram, align 8, !tbaa !5
  %115 = load i32, ptr %7, align 4, !tbaa !9
  %116 = call zeroext i8 %114(i32 noundef %115)
  %117 = zext i8 %116 to i32
  %118 = icmp eq i32 %117, 0
  br i1 %118, label %119, label %122

119:                                              ; preds = %113
  %120 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str)
  %121 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %120, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %331

122:                                              ; preds = %113
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #8
  store i32 0, ptr %9, align 4, !tbaa !9
  %123 = load ptr, ptr @glad_glGetIntegerv, align 8, !tbaa !5
  call void %123(i32 noundef 35725, ptr noundef %9)
  call void @llvm.lifetime.start.p0(i64 32, ptr %10) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %11) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %11)
          to label %124 unwind label %133

124:                                              ; preds = %122
  call void @llvm.lifetime.start.p0(i64 32, ptr %14) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %15) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef @__PRETTY_FUNCTION__._ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEjj, ptr noundef nonnull align 1 dereferenceable(1) %15)
          to label %125 unwind label %137

125:                                              ; preds = %124
  invoke void @_ZN3vcl18check_opengl_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull align 8 dereferenceable(32) %14, i32 noundef 59)
          to label %126 unwind label %141

126:                                              ; preds = %125
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %14) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %10) #8
  %127 = load i32, ptr %7, align 4, !tbaa !9
  %128 = load i32, ptr %9, align 4, !tbaa !9
  %129 = icmp ne i32 %127, %128
  br i1 %129, label %130, label %147

130:                                              ; preds = %126
  %131 = load ptr, ptr @glad_glUseProgram, align 8, !tbaa !5
  %132 = load i32, ptr %7, align 4, !tbaa !9
  call void %131(i32 noundef %132)
  br label %147

133:                                              ; preds = %122
  %134 = landingpad { ptr, i32 }
          cleanup
  %135 = extractvalue { ptr, i32 } %134, 0
  store ptr %135, ptr %12, align 8
  %136 = extractvalue { ptr, i32 } %134, 1
  store i32 %136, ptr %13, align 4
  br label %146

137:                                              ; preds = %124
  %138 = landingpad { ptr, i32 }
          cleanup
  %139 = extractvalue { ptr, i32 } %138, 0
  store ptr %139, ptr %12, align 8
  %140 = extractvalue { ptr, i32 } %138, 1
  store i32 %140, ptr %13, align 4
  br label %145

141:                                              ; preds = %125
  %142 = landingpad { ptr, i32 }
          cleanup
  %143 = extractvalue { ptr, i32 } %142, 0
  store ptr %143, ptr %12, align 8
  %144 = extractvalue { ptr, i32 } %142, 1
  store i32 %144, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #8
  br label %145

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

146:                                              ; preds = %145, %133
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %10) #8
  br label %645

147:                                              ; preds = %130, %126
  call void @llvm.lifetime.start.p0(i64 32, ptr %16) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %17)
          to label %148 unwind label %160

148:                                              ; preds = %147
  call void @llvm.lifetime.start.p0(i64 32, ptr %18) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef @__PRETTY_FUNCTION__._ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEjj, ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %149 unwind label %164

149:                                              ; preds = %148
  invoke void @_ZN3vcl18check_opengl_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull align 8 dereferenceable(32) %18, i32 noundef 61)
          to label %150 unwind label %168

150:                                              ; preds = %149
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #8
  %151 = load i32, ptr %8, align 4, !tbaa !9
  %152 = icmp ne i32 %151, 0
  br i1 %152, label %153, label %195

153:                                              ; preds = %150
  %154 = load ptr, ptr @glad_glIsTexture, align 8, !tbaa !5
  %155 = load i32, ptr %8, align 4, !tbaa !9
  %156 = call zeroext i8 %154(i32 noundef %155)
  %157 = icmp ne i8 %156, 0
  br i1 %157, label %158, label %159

158:                                              ; preds = %153
  br label %175

159:                                              ; preds = %153
  call void @__assert_fail(ptr noundef @.str.2, ptr noundef @.str.1, i32 noundef 65, ptr noundef @__PRETTY_FUNCTION__._ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEjj) #9
  unreachable

160:                                              ; preds = %147
  %161 = landingpad { ptr, i32 }
          cleanup
  %162 = extractvalue { ptr, i32 } %161, 0
  store ptr %162, ptr %12, align 8
  %163 = extractvalue { ptr, i32 } %161, 1
  store i32 %163, ptr %13, align 4
  br label %173

164:                                              ; preds = %148
  %165 = landingpad { ptr, i32 }
          cleanup
  %166 = extractvalue { ptr, i32 } %165, 0
  store ptr %166, ptr %12, align 8
  %167 = extractvalue { ptr, i32 } %165, 1
  store i32 %167, ptr %13, align 4
  br label %172

168:                                              ; preds = %149
  %169 = landingpad { ptr, i32 }
          cleanup
  %170 = extractvalue { ptr, i32 } %169, 0
  store ptr %170, ptr %12, align 8
  %171 = extractvalue { ptr, i32 } %169, 1
  store i32 %171, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #8
  br label %172

172:                                              ; preds = %168, %164
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #8
  br label %173

173:                                              ; preds = %172, %160
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #8
  br label %645

174:                                              ; No predecessors!
  br label %175

175:                                              ; preds = %174, %158
  %176 = load ptr, ptr @glad_glBindTexture, align 8, !tbaa !5
  %177 = load i32, ptr %8, align 4, !tbaa !9
  call void %176(i32 noundef 3553, i32 noundef %177)
  call void @llvm.lifetime.start.p0(i64 32, ptr %20) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %21)
          to label %178 unwind label %181

178:                                              ; preds = %175
  call void @llvm.lifetime.start.p0(i64 32, ptr %22) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef @__PRETTY_FUNCTION__._ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEjj, ptr noundef nonnull align 1 dereferenceable(1) %23)
          to label %179 unwind label %185

179:                                              ; preds = %178
  invoke void @_ZN3vcl18check_opengl_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef nonnull align 8 dereferenceable(32) %22, i32 noundef 66)
          to label %180 unwind label %189

180:                                              ; preds = %179
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #8
  br label %195

181:                                              ; preds = %175
  %182 = landingpad { ptr, i32 }
          cleanup
  %183 = extractvalue { ptr, i32 } %182, 0
  store ptr %183, ptr %12, align 8
  %184 = extractvalue { ptr, i32 } %182, 1
  store i32 %184, ptr %13, align 4
  br label %194

185:                                              ; preds = %178
  %186 = landingpad { ptr, i32 }
          cleanup
  %187 = extractvalue { ptr, i32 } %186, 0
  store ptr %187, ptr %12, align 8
  %188 = extractvalue { ptr, i32 } %186, 1
  store i32 %188, ptr %13, align 4
  br label %193

189:                                              ; preds = %179
  %190 = landingpad { ptr, i32 }
          cleanup
  %191 = extractvalue { ptr, i32 } %190, 0
  store ptr %191, ptr %12, align 8
  %192 = extractvalue { ptr, i32 } %190, 1
  store i32 %192, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #8
  br label %193

193:                                              ; preds = %189, %185
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #8
  br label %194

194:                                              ; preds = %193, %181
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #8
  br label %645

195:                                              ; preds = %180, %150
  %196 = load i32, ptr %7, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr %24) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %197 unwind label %332

197:                                              ; preds = %195
  %198 = load ptr, ptr %5, align 8, !tbaa !5
  %199 = getelementptr inbounds %"struct.vcl::mesh_drawable", ptr %198, i32 0, i32 1
  %200 = getelementptr inbounds %"struct.vcl::mesh_drawable_uniform", ptr %199, i32 0, i32 0
  %201 = getelementptr inbounds %"struct.vcl::affine_transform", ptr %200, i32 0, i32 1
  invoke void @_ZN3vcl7uniformEjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_3matILm3ELm3EEE(i32 noundef %196, ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull align 4 dereferenceable(36) %201)
          to label %202 unwind label %336

202:                                              ; preds = %197
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %26) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %27)
          to label %203 unwind label %341

203:                                              ; preds = %202
  call void @llvm.lifetime.start.p0(i64 32, ptr %28) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %29) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef @__PRETTY_FUNCTION__._ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEjj, ptr noundef nonnull align 1 dereferenceable(1) %29)
          to label %204 unwind label %345

204:                                              ; preds = %203
  invoke void @_ZN3vcl18check_opengl_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef nonnull align 8 dereferenceable(32) %28, i32 noundef 70)
          to label %205 unwind label %349

205:                                              ; preds = %204
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #8
  %206 = load i32, ptr %7, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr %30) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %31) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef @.str.4, ptr noundef nonnull align 1 dereferenceable(1) %31)
          to label %207 unwind label %355

207:                                              ; preds = %205
  %208 = load ptr, ptr %5, align 8, !tbaa !5
  %209 = getelementptr inbounds %"struct.vcl::mesh_drawable", ptr %208, i32 0, i32 1
  %210 = getelementptr inbounds %"struct.vcl::mesh_drawable_uniform", ptr %209, i32 0, i32 0
  %211 = getelementptr inbounds %"struct.vcl::affine_transform", ptr %210, i32 0, i32 0
  invoke void @_ZN3vcl7uniformEjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_12buffer_stackIfLm3EEE(i32 noundef %206, ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef nonnull align 4 dereferenceable(12) %211)
          to label %212 unwind label %359

212:                                              ; preds = %207
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %32) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %33)
          to label %213 unwind label %364

213:                                              ; preds = %212
  call void @llvm.lifetime.start.p0(i64 32, ptr %34) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %35) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef @__PRETTY_FUNCTION__._ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEjj, ptr noundef nonnull align 1 dereferenceable(1) %35)
          to label %214 unwind label %368

214:                                              ; preds = %213
  invoke void @_ZN3vcl18check_opengl_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef nonnull align 8 dereferenceable(32) %34, i32 noundef 71)
          to label %215 unwind label %372

215:                                              ; preds = %214
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %34) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #8
  %216 = load i32, ptr %7, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr %36) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %37) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %36, ptr noundef @.str.5, ptr noundef nonnull align 1 dereferenceable(1) %37)
          to label %217 unwind label %378

217:                                              ; preds = %215
  %218 = load ptr, ptr %5, align 8, !tbaa !5
  %219 = getelementptr inbounds %"struct.vcl::mesh_drawable", ptr %218, i32 0, i32 1
  %220 = getelementptr inbounds %"struct.vcl::mesh_drawable_uniform", ptr %219, i32 0, i32 1
  invoke void @_ZN3vcl7uniformEjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_12buffer_stackIfLm3EEE(i32 noundef %216, ptr noundef nonnull align 8 dereferenceable(32) %36, ptr noundef nonnull align 4 dereferenceable(12) %220)
          to label %221 unwind label %382

221:                                              ; preds = %217
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %38) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %39) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %39)
          to label %222 unwind label %387

222:                                              ; preds = %221
  call void @llvm.lifetime.start.p0(i64 32, ptr %40) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %41) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef @__PRETTY_FUNCTION__._ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEjj, ptr noundef nonnull align 1 dereferenceable(1) %41)
          to label %223 unwind label %391

223:                                              ; preds = %222
  invoke void @_ZN3vcl18check_opengl_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef nonnull align 8 dereferenceable(32) %40, i32 noundef 72)
          to label %224 unwind label %395

224:                                              ; preds = %223
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #8
  %225 = load i32, ptr %7, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr %42) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %43) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %42, ptr noundef @.str.6, ptr noundef nonnull align 1 dereferenceable(1) %43)
          to label %226 unwind label %401

226:                                              ; preds = %224
  %227 = load ptr, ptr %5, align 8, !tbaa !5
  %228 = getelementptr inbounds %"struct.vcl::mesh_drawable", ptr %227, i32 0, i32 1
  %229 = getelementptr inbounds %"struct.vcl::mesh_drawable_uniform", ptr %228, i32 0, i32 3
  %230 = load float, ptr %229, align 4, !tbaa !11
  invoke void @_ZN3vcl7uniformEjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEf(i32 noundef %225, ptr noundef nonnull align 8 dereferenceable(32) %42, float noundef %230)
          to label %231 unwind label %405

231:                                              ; preds = %226
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %42) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %44) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %45) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %44, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %45)
          to label %232 unwind label %410

232:                                              ; preds = %231
  call void @llvm.lifetime.start.p0(i64 32, ptr %46) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %47) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %46, ptr noundef @__PRETTY_FUNCTION__._ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEjj, ptr noundef nonnull align 1 dereferenceable(1) %47)
          to label %233 unwind label %414

233:                                              ; preds = %232
  invoke void @_ZN3vcl18check_opengl_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(32) %44, ptr noundef nonnull align 8 dereferenceable(32) %46, i32 noundef 73)
          to label %234 unwind label %418

234:                                              ; preds = %233
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %46) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %44) #8
  %235 = load i32, ptr %7, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr %48) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %49) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %48, ptr noundef @.str.7, ptr noundef nonnull align 1 dereferenceable(1) %49)
          to label %236 unwind label %424

236:                                              ; preds = %234
  %237 = load ptr, ptr %5, align 8, !tbaa !5
  %238 = getelementptr inbounds %"struct.vcl::mesh_drawable", ptr %237, i32 0, i32 1
  %239 = getelementptr inbounds %"struct.vcl::mesh_drawable_uniform", ptr %238, i32 0, i32 0
  %240 = getelementptr inbounds %"struct.vcl::affine_transform", ptr %239, i32 0, i32 2
  %241 = load float, ptr %240, align 4, !tbaa !20
  invoke void @_ZN3vcl7uniformEjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEf(i32 noundef %235, ptr noundef nonnull align 8 dereferenceable(32) %48, float noundef %241)
          to label %242 unwind label %428

242:                                              ; preds = %236
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %48) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %50) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %51) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %50, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %51)
          to label %243 unwind label %433

243:                                              ; preds = %242
  call void @llvm.lifetime.start.p0(i64 32, ptr %52) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %53) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %52, ptr noundef @__PRETTY_FUNCTION__._ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEjj, ptr noundef nonnull align 1 dereferenceable(1) %53)
          to label %244 unwind label %437

244:                                              ; preds = %243
  invoke void @_ZN3vcl18check_opengl_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(32) %50, ptr noundef nonnull align 8 dereferenceable(32) %52, i32 noundef 74)
          to label %245 unwind label %441

245:                                              ; preds = %244
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %52) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %50) #8
  %246 = load i32, ptr %7, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr %54) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %55) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %54, ptr noundef @.str.8, ptr noundef nonnull align 1 dereferenceable(1) %55)
          to label %247 unwind label %447

247:                                              ; preds = %245
  %248 = load ptr, ptr %5, align 8, !tbaa !5
  %249 = getelementptr inbounds %"struct.vcl::mesh_drawable", ptr %248, i32 0, i32 1
  %250 = getelementptr inbounds %"struct.vcl::mesh_drawable_uniform", ptr %249, i32 0, i32 0
  %251 = getelementptr inbounds %"struct.vcl::affine_transform", ptr %250, i32 0, i32 3
  invoke void @_ZN3vcl7uniformEjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_12buffer_stackIfLm3EEE(i32 noundef %246, ptr noundef nonnull align 8 dereferenceable(32) %54, ptr noundef nonnull align 4 dereferenceable(12) %251)
          to label %252 unwind label %451

252:                                              ; preds = %247
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %54) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %56) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %57) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %56, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %57)
          to label %253 unwind label %456

253:                                              ; preds = %252
  call void @llvm.lifetime.start.p0(i64 32, ptr %58) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %59) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %58, ptr noundef @__PRETTY_FUNCTION__._ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEjj, ptr noundef nonnull align 1 dereferenceable(1) %59)
          to label %254 unwind label %460

254:                                              ; preds = %253
  invoke void @_ZN3vcl18check_opengl_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(32) %56, ptr noundef nonnull align 8 dereferenceable(32) %58, i32 noundef 75)
          to label %255 unwind label %464

255:                                              ; preds = %254
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %59) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %58) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %57) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %56) #8
  %256 = load i32, ptr %7, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr %60) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %61) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %61) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %60, ptr noundef @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %61)
          to label %257 unwind label %470

257:                                              ; preds = %255
  call void @llvm.lifetime.start.p0(i64 64, ptr %62) #8
  %258 = load ptr, ptr %6, align 8, !tbaa !5
  %259 = getelementptr inbounds %"struct.vcl::camera_scene", ptr %258, i32 0, i32 3
  invoke void @_ZNK3vcl21perspective_structure6matrixEv(ptr dead_on_unwind writable sret(%"struct.vcl::mat.22") align 4 %62, ptr noundef nonnull align 4 dereferenceable(16) %259)
          to label %260 unwind label %474

260:                                              ; preds = %257
  invoke void @_ZN3vcl7uniformEjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_3matILm4ELm4EEE(i32 noundef %256, ptr noundef nonnull align 8 dereferenceable(32) %60, ptr noundef nonnull align 4 dereferenceable(64) %62)
          to label %261 unwind label %474

261:                                              ; preds = %260
  call void @llvm.lifetime.end.p0(i64 64, ptr %62) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %61) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %61) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %60) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %63) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %64) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %64) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %63, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %64)
          to label %262 unwind label %479

262:                                              ; preds = %261
  call void @llvm.lifetime.start.p0(i64 32, ptr %65) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %66) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %66) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %65, ptr noundef @__PRETTY_FUNCTION__._ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEjj, ptr noundef nonnull align 1 dereferenceable(1) %66)
          to label %263 unwind label %483

263:                                              ; preds = %262
  invoke void @_ZN3vcl18check_opengl_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(32) %63, ptr noundef nonnull align 8 dereferenceable(32) %65, i32 noundef 77)
          to label %264 unwind label %487

264:                                              ; preds = %263
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %66) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %66) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %65) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %64) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %64) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %63) #8
  %265 = load i32, ptr %7, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr %67) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %68) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %67, ptr noundef @.str.10, ptr noundef nonnull align 1 dereferenceable(1) %68)
          to label %266 unwind label %493

266:                                              ; preds = %264
  call void @llvm.lifetime.start.p0(i64 64, ptr %69) #8
  %267 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZNK3vcl12camera_scene11view_matrixEv(ptr dead_on_unwind writable sret(%"struct.vcl::mat.22") align 4 %69, ptr noundef nonnull align 4 dereferenceable(80) %267)
          to label %268 unwind label %497

268:                                              ; preds = %266
  invoke void @_ZN3vcl7uniformEjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_3matILm4ELm4EEE(i32 noundef %265, ptr noundef nonnull align 8 dereferenceable(32) %67, ptr noundef nonnull align 4 dereferenceable(64) %69)
          to label %269 unwind label %497

269:                                              ; preds = %268
  call void @llvm.lifetime.end.p0(i64 64, ptr %69) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %67) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %70) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %71) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %70, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %71)
          to label %270 unwind label %502

270:                                              ; preds = %269
  call void @llvm.lifetime.start.p0(i64 32, ptr %72) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %73) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %73) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %72, ptr noundef @__PRETTY_FUNCTION__._ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEjj, ptr noundef nonnull align 1 dereferenceable(1) %73)
          to label %271 unwind label %506

271:                                              ; preds = %270
  invoke void @_ZN3vcl18check_opengl_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(32) %70, ptr noundef nonnull align 8 dereferenceable(32) %72, i32 noundef 78)
          to label %272 unwind label %510

272:                                              ; preds = %271
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %73) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %72) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %71) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %70) #8
  %273 = load i32, ptr %7, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr %74) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %75) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %75) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %74, ptr noundef @.str.11, ptr noundef nonnull align 1 dereferenceable(1) %75)
          to label %274 unwind label %516

274:                                              ; preds = %272
  call void @llvm.lifetime.start.p0(i64 12, ptr %76) #8
  %275 = load ptr, ptr %6, align 8, !tbaa !5
  %276 = invoke { <2 x float>, float } @_ZNK3vcl12camera_scene15camera_positionEv(ptr noundef nonnull align 4 dereferenceable(80) %275)
          to label %277 unwind label %520

277:                                              ; preds = %274
  store { <2 x float>, float } %276, ptr %77, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %76, ptr align 8 %77, i64 12, i1 false)
  invoke void @_ZN3vcl7uniformEjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_12buffer_stackIfLm3EEE(i32 noundef %273, ptr noundef nonnull align 8 dereferenceable(32) %74, ptr noundef nonnull align 4 dereferenceable(12) %76)
          to label %278 unwind label %520

278:                                              ; preds = %277
  call void @llvm.lifetime.end.p0(i64 12, ptr %76) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %74) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %75) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %75) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %74) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %78) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %79) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %79) #8
  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 %279 unwind label %525

279:                                              ; preds = %278
  call void @llvm.lifetime.start.p0(i64 32, ptr %80) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %81) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %81) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %80, ptr noundef @__PRETTY_FUNCTION__._ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEjj, ptr noundef nonnull align 1 dereferenceable(1) %81)
          to label %280 unwind label %529

280:                                              ; preds = %279
  invoke void @_ZN3vcl18check_opengl_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(32) %78, ptr noundef nonnull align 8 dereferenceable(32) %80, i32 noundef 79)
          to label %281 unwind label %533

281:                                              ; preds = %280
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %80) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %81) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %81) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %80) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %78) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %79) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %79) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %78) #8
  %282 = load i32, ptr %7, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr %82) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %83) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %83) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %82, ptr noundef @.str.12, ptr noundef nonnull align 1 dereferenceable(1) %83)
          to label %283 unwind label %539

283:                                              ; preds = %281
  %284 = load ptr, ptr %5, align 8, !tbaa !5
  %285 = getelementptr inbounds %"struct.vcl::mesh_drawable", ptr %284, i32 0, i32 1
  %286 = getelementptr inbounds %"struct.vcl::mesh_drawable_uniform", ptr %285, i32 0, i32 2
  %287 = getelementptr inbounds %"struct.vcl::shading_mesh", ptr %286, i32 0, i32 0
  %288 = load float, ptr %287, align 4, !tbaa !21
  invoke void @_ZN3vcl7uniformEjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEf(i32 noundef %282, ptr noundef nonnull align 8 dereferenceable(32) %82, float noundef %288)
          to label %289 unwind label %543

289:                                              ; preds = %283
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %82) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %83) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %83) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %82) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %84) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %85) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %85) #8
  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 %290 unwind label %548

290:                                              ; preds = %289
  call void @llvm.lifetime.start.p0(i64 32, ptr %86) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %87) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %87) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %86, ptr noundef @__PRETTY_FUNCTION__._ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEjj, ptr noundef nonnull align 1 dereferenceable(1) %87)
          to label %291 unwind label %552

291:                                              ; preds = %290
  invoke void @_ZN3vcl18check_opengl_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(32) %84, ptr noundef nonnull align 8 dereferenceable(32) %86, i32 noundef 81)
          to label %292 unwind label %556

292:                                              ; preds = %291
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %86) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %87) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %87) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %86) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %84) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %85) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %85) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %84) #8
  %293 = load i32, ptr %7, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr %88) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %89) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %89) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %88, ptr noundef @.str.13, ptr noundef nonnull align 1 dereferenceable(1) %89)
          to label %294 unwind label %562

294:                                              ; preds = %292
  %295 = load ptr, ptr %5, align 8, !tbaa !5
  %296 = getelementptr inbounds %"struct.vcl::mesh_drawable", ptr %295, i32 0, i32 1
  %297 = getelementptr inbounds %"struct.vcl::mesh_drawable_uniform", ptr %296, i32 0, i32 2
  %298 = getelementptr inbounds %"struct.vcl::shading_mesh", ptr %297, i32 0, i32 1
  %299 = load float, ptr %298, align 4, !tbaa !22
  invoke void @_ZN3vcl7uniformEjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEf(i32 noundef %293, ptr noundef nonnull align 8 dereferenceable(32) %88, float noundef %299)
          to label %300 unwind label %566

300:                                              ; preds = %294
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %88) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %89) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %88) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %90) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %91) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %91) #8
  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 %301 unwind label %571

301:                                              ; preds = %300
  call void @llvm.lifetime.start.p0(i64 32, ptr %92) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %93) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %93) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %92, ptr noundef @__PRETTY_FUNCTION__._ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEjj, ptr noundef nonnull align 1 dereferenceable(1) %93)
          to label %302 unwind label %575

302:                                              ; preds = %301
  invoke void @_ZN3vcl18check_opengl_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(32) %90, ptr noundef nonnull align 8 dereferenceable(32) %92, i32 noundef 82)
          to label %303 unwind label %579

303:                                              ; preds = %302
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %93) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %93) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %92) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %90) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %91) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %91) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %90) #8
  %304 = load i32, ptr %7, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr %94) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %95) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %95) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %94, ptr noundef @.str.14, ptr noundef nonnull align 1 dereferenceable(1) %95)
          to label %305 unwind label %585

305:                                              ; preds = %303
  %306 = load ptr, ptr %5, align 8, !tbaa !5
  %307 = getelementptr inbounds %"struct.vcl::mesh_drawable", ptr %306, i32 0, i32 1
  %308 = getelementptr inbounds %"struct.vcl::mesh_drawable_uniform", ptr %307, i32 0, i32 2
  %309 = getelementptr inbounds %"struct.vcl::shading_mesh", ptr %308, i32 0, i32 2
  %310 = load float, ptr %309, align 4, !tbaa !23
  invoke void @_ZN3vcl7uniformEjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEf(i32 noundef %304, ptr noundef nonnull align 8 dereferenceable(32) %94, float noundef %310)
          to label %311 unwind label %589

311:                                              ; preds = %305
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %94) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %95) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %95) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %94) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %96) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %97) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %97) #8
  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 %312 unwind label %594

312:                                              ; preds = %311
  call void @llvm.lifetime.start.p0(i64 32, ptr %98) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %99) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %99) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %98, ptr noundef @__PRETTY_FUNCTION__._ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEjj, ptr noundef nonnull align 1 dereferenceable(1) %99)
          to label %313 unwind label %598

313:                                              ; preds = %312
  invoke void @_ZN3vcl18check_opengl_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(32) %96, ptr noundef nonnull align 8 dereferenceable(32) %98, i32 noundef 83)
          to label %314 unwind label %602

314:                                              ; preds = %313
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %98) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %99) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %99) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %98) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %96) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %97) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %97) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %96) #8
  %315 = load i32, ptr %7, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr %100) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %101) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %101) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %100, ptr noundef @.str.15, ptr noundef nonnull align 1 dereferenceable(1) %101)
          to label %316 unwind label %608

316:                                              ; preds = %314
  %317 = load ptr, ptr %5, align 8, !tbaa !5
  %318 = getelementptr inbounds %"struct.vcl::mesh_drawable", ptr %317, i32 0, i32 1
  %319 = getelementptr inbounds %"struct.vcl::mesh_drawable_uniform", ptr %318, i32 0, i32 2
  %320 = getelementptr inbounds %"struct.vcl::shading_mesh", ptr %319, i32 0, i32 3
  %321 = load i32, ptr %320, align 4, !tbaa !24
  invoke void @_ZN3vcl7uniformEjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi(i32 noundef %315, ptr noundef nonnull align 8 dereferenceable(32) %100, i32 noundef %321)
          to label %322 unwind label %612

322:                                              ; preds = %316
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %100) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %101) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %101) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %100) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %102) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %103) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %103) #8
  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 %323 unwind label %617

323:                                              ; preds = %322
  call void @llvm.lifetime.start.p0(i64 32, ptr %104) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %105) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %105) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %104, ptr noundef @__PRETTY_FUNCTION__._ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEjj, ptr noundef nonnull align 1 dereferenceable(1) %105)
          to label %324 unwind label %621

324:                                              ; preds = %323
  invoke void @_ZN3vcl18check_opengl_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(32) %102, ptr noundef nonnull align 8 dereferenceable(32) %104, i32 noundef 84)
          to label %325 unwind label %625

325:                                              ; preds = %324
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %104) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %105) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %105) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %104) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %102) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %103) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %103) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %102) #8
  %326 = load ptr, ptr %5, align 8, !tbaa !5
  %327 = getelementptr inbounds %"struct.vcl::mesh_drawable", ptr %326, i32 0, i32 0
  call void @_ZN3vcl4drawERKNS_22mesh_drawable_gpu_dataE(ptr noundef nonnull align 4 dereferenceable(28) %327)
  call void @llvm.lifetime.start.p0(i64 32, ptr %106) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %107) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %107) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %106, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %107)
          to label %328 unwind label %631

328:                                              ; preds = %325
  call void @llvm.lifetime.start.p0(i64 32, ptr %108) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %109) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %109) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %108, ptr noundef @__PRETTY_FUNCTION__._ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEjj, ptr noundef nonnull align 1 dereferenceable(1) %109)
          to label %329 unwind label %635

329:                                              ; preds = %328
  invoke void @_ZN3vcl18check_opengl_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(32) %106, ptr noundef nonnull align 8 dereferenceable(32) %108, i32 noundef 86)
          to label %330 unwind label %639

330:                                              ; preds = %329
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %108) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %109) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %109) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %108) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %106) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %107) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %107) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %106) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #8
  br label %331

331:                                              ; preds = %330, %119, %112
  ret void

332:                                              ; preds = %195
  %333 = landingpad { ptr, i32 }
          cleanup
  %334 = extractvalue { ptr, i32 } %333, 0
  store ptr %334, ptr %12, align 8
  %335 = extractvalue { ptr, i32 } %333, 1
  store i32 %335, ptr %13, align 4
  br label %340

336:                                              ; preds = %197
  %337 = landingpad { ptr, i32 }
          cleanup
  %338 = extractvalue { ptr, i32 } %337, 0
  store ptr %338, ptr %12, align 8
  %339 = extractvalue { ptr, i32 } %337, 1
  store i32 %339, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #8
  br label %340

340:                                              ; preds = %336, %332
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #8
  br label %645

341:                                              ; preds = %202
  %342 = landingpad { ptr, i32 }
          cleanup
  %343 = extractvalue { ptr, i32 } %342, 0
  store ptr %343, ptr %12, align 8
  %344 = extractvalue { ptr, i32 } %342, 1
  store i32 %344, ptr %13, align 4
  br label %354

345:                                              ; preds = %203
  %346 = landingpad { ptr, i32 }
          cleanup
  %347 = extractvalue { ptr, i32 } %346, 0
  store ptr %347, ptr %12, align 8
  %348 = extractvalue { ptr, i32 } %346, 1
  store i32 %348, ptr %13, align 4
  br label %353

349:                                              ; preds = %204
  %350 = landingpad { ptr, i32 }
          cleanup
  %351 = extractvalue { ptr, i32 } %350, 0
  store ptr %351, ptr %12, align 8
  %352 = extractvalue { ptr, i32 } %350, 1
  store i32 %352, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #8
  br label %353

353:                                              ; preds = %349, %345
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #8
  br label %354

354:                                              ; preds = %353, %341
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #8
  br label %645

355:                                              ; preds = %205
  %356 = landingpad { ptr, i32 }
          cleanup
  %357 = extractvalue { ptr, i32 } %356, 0
  store ptr %357, ptr %12, align 8
  %358 = extractvalue { ptr, i32 } %356, 1
  store i32 %358, ptr %13, align 4
  br label %363

359:                                              ; preds = %207
  %360 = landingpad { ptr, i32 }
          cleanup
  %361 = extractvalue { ptr, i32 } %360, 0
  store ptr %361, ptr %12, align 8
  %362 = extractvalue { ptr, i32 } %360, 1
  store i32 %362, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #8
  br label %363

363:                                              ; preds = %359, %355
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #8
  br label %645

364:                                              ; preds = %212
  %365 = landingpad { ptr, i32 }
          cleanup
  %366 = extractvalue { ptr, i32 } %365, 0
  store ptr %366, ptr %12, align 8
  %367 = extractvalue { ptr, i32 } %365, 1
  store i32 %367, ptr %13, align 4
  br label %377

368:                                              ; preds = %213
  %369 = landingpad { ptr, i32 }
          cleanup
  %370 = extractvalue { ptr, i32 } %369, 0
  store ptr %370, ptr %12, align 8
  %371 = extractvalue { ptr, i32 } %369, 1
  store i32 %371, ptr %13, align 4
  br label %376

372:                                              ; preds = %214
  %373 = landingpad { ptr, i32 }
          cleanup
  %374 = extractvalue { ptr, i32 } %373, 0
  store ptr %374, ptr %12, align 8
  %375 = extractvalue { ptr, i32 } %373, 1
  store i32 %375, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #8
  br label %376

376:                                              ; preds = %372, %368
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %34) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #8
  br label %377

377:                                              ; preds = %376, %364
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #8
  br label %645

378:                                              ; preds = %215
  %379 = landingpad { ptr, i32 }
          cleanup
  %380 = extractvalue { ptr, i32 } %379, 0
  store ptr %380, ptr %12, align 8
  %381 = extractvalue { ptr, i32 } %379, 1
  store i32 %381, ptr %13, align 4
  br label %386

382:                                              ; preds = %217
  %383 = landingpad { ptr, i32 }
          cleanup
  %384 = extractvalue { ptr, i32 } %383, 0
  store ptr %384, ptr %12, align 8
  %385 = extractvalue { ptr, i32 } %383, 1
  store i32 %385, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #8
  br label %386

386:                                              ; preds = %382, %378
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #8
  br label %645

387:                                              ; preds = %221
  %388 = landingpad { ptr, i32 }
          cleanup
  %389 = extractvalue { ptr, i32 } %388, 0
  store ptr %389, ptr %12, align 8
  %390 = extractvalue { ptr, i32 } %388, 1
  store i32 %390, ptr %13, align 4
  br label %400

391:                                              ; preds = %222
  %392 = landingpad { ptr, i32 }
          cleanup
  %393 = extractvalue { ptr, i32 } %392, 0
  store ptr %393, ptr %12, align 8
  %394 = extractvalue { ptr, i32 } %392, 1
  store i32 %394, ptr %13, align 4
  br label %399

395:                                              ; preds = %223
  %396 = landingpad { ptr, i32 }
          cleanup
  %397 = extractvalue { ptr, i32 } %396, 0
  store ptr %397, ptr %12, align 8
  %398 = extractvalue { ptr, i32 } %396, 1
  store i32 %398, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #8
  br label %399

399:                                              ; preds = %395, %391
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #8
  br label %400

400:                                              ; preds = %399, %387
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #8
  br label %645

401:                                              ; preds = %224
  %402 = landingpad { ptr, i32 }
          cleanup
  %403 = extractvalue { ptr, i32 } %402, 0
  store ptr %403, ptr %12, align 8
  %404 = extractvalue { ptr, i32 } %402, 1
  store i32 %404, ptr %13, align 4
  br label %409

405:                                              ; preds = %226
  %406 = landingpad { ptr, i32 }
          cleanup
  %407 = extractvalue { ptr, i32 } %406, 0
  store ptr %407, ptr %12, align 8
  %408 = extractvalue { ptr, i32 } %406, 1
  store i32 %408, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #8
  br label %409

409:                                              ; preds = %405, %401
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %42) #8
  br label %645

410:                                              ; preds = %231
  %411 = landingpad { ptr, i32 }
          cleanup
  %412 = extractvalue { ptr, i32 } %411, 0
  store ptr %412, ptr %12, align 8
  %413 = extractvalue { ptr, i32 } %411, 1
  store i32 %413, ptr %13, align 4
  br label %423

414:                                              ; preds = %232
  %415 = landingpad { ptr, i32 }
          cleanup
  %416 = extractvalue { ptr, i32 } %415, 0
  store ptr %416, ptr %12, align 8
  %417 = extractvalue { ptr, i32 } %415, 1
  store i32 %417, ptr %13, align 4
  br label %422

418:                                              ; preds = %233
  %419 = landingpad { ptr, i32 }
          cleanup
  %420 = extractvalue { ptr, i32 } %419, 0
  store ptr %420, ptr %12, align 8
  %421 = extractvalue { ptr, i32 } %419, 1
  store i32 %421, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #8
  br label %422

422:                                              ; preds = %418, %414
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %46) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #8
  br label %423

423:                                              ; preds = %422, %410
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %44) #8
  br label %645

424:                                              ; preds = %234
  %425 = landingpad { ptr, i32 }
          cleanup
  %426 = extractvalue { ptr, i32 } %425, 0
  store ptr %426, ptr %12, align 8
  %427 = extractvalue { ptr, i32 } %425, 1
  store i32 %427, ptr %13, align 4
  br label %432

428:                                              ; preds = %236
  %429 = landingpad { ptr, i32 }
          cleanup
  %430 = extractvalue { ptr, i32 } %429, 0
  store ptr %430, ptr %12, align 8
  %431 = extractvalue { ptr, i32 } %429, 1
  store i32 %431, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #8
  br label %432

432:                                              ; preds = %428, %424
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %48) #8
  br label %645

433:                                              ; preds = %242
  %434 = landingpad { ptr, i32 }
          cleanup
  %435 = extractvalue { ptr, i32 } %434, 0
  store ptr %435, ptr %12, align 8
  %436 = extractvalue { ptr, i32 } %434, 1
  store i32 %436, ptr %13, align 4
  br label %446

437:                                              ; preds = %243
  %438 = landingpad { ptr, i32 }
          cleanup
  %439 = extractvalue { ptr, i32 } %438, 0
  store ptr %439, ptr %12, align 8
  %440 = extractvalue { ptr, i32 } %438, 1
  store i32 %440, ptr %13, align 4
  br label %445

441:                                              ; preds = %244
  %442 = landingpad { ptr, i32 }
          cleanup
  %443 = extractvalue { ptr, i32 } %442, 0
  store ptr %443, ptr %12, align 8
  %444 = extractvalue { ptr, i32 } %442, 1
  store i32 %444, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #8
  br label %445

445:                                              ; preds = %441, %437
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %52) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #8
  br label %446

446:                                              ; preds = %445, %433
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %50) #8
  br label %645

447:                                              ; preds = %245
  %448 = landingpad { ptr, i32 }
          cleanup
  %449 = extractvalue { ptr, i32 } %448, 0
  store ptr %449, ptr %12, align 8
  %450 = extractvalue { ptr, i32 } %448, 1
  store i32 %450, ptr %13, align 4
  br label %455

451:                                              ; preds = %247
  %452 = landingpad { ptr, i32 }
          cleanup
  %453 = extractvalue { ptr, i32 } %452, 0
  store ptr %453, ptr %12, align 8
  %454 = extractvalue { ptr, i32 } %452, 1
  store i32 %454, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #8
  br label %455

455:                                              ; preds = %451, %447
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %54) #8
  br label %645

456:                                              ; preds = %252
  %457 = landingpad { ptr, i32 }
          cleanup
  %458 = extractvalue { ptr, i32 } %457, 0
  store ptr %458, ptr %12, align 8
  %459 = extractvalue { ptr, i32 } %457, 1
  store i32 %459, ptr %13, align 4
  br label %469

460:                                              ; preds = %253
  %461 = landingpad { ptr, i32 }
          cleanup
  %462 = extractvalue { ptr, i32 } %461, 0
  store ptr %462, ptr %12, align 8
  %463 = extractvalue { ptr, i32 } %461, 1
  store i32 %463, ptr %13, align 4
  br label %468

464:                                              ; preds = %254
  %465 = landingpad { ptr, i32 }
          cleanup
  %466 = extractvalue { ptr, i32 } %465, 0
  store ptr %466, ptr %12, align 8
  %467 = extractvalue { ptr, i32 } %465, 1
  store i32 %467, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #8
  br label %468

468:                                              ; preds = %464, %460
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %59) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %58) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #8
  br label %469

469:                                              ; preds = %468, %456
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %57) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %56) #8
  br label %645

470:                                              ; preds = %255
  %471 = landingpad { ptr, i32 }
          cleanup
  %472 = extractvalue { ptr, i32 } %471, 0
  store ptr %472, ptr %12, align 8
  %473 = extractvalue { ptr, i32 } %471, 1
  store i32 %473, ptr %13, align 4
  br label %478

474:                                              ; preds = %260, %257
  %475 = landingpad { ptr, i32 }
          cleanup
  %476 = extractvalue { ptr, i32 } %475, 0
  store ptr %476, ptr %12, align 8
  %477 = extractvalue { ptr, i32 } %475, 1
  store i32 %477, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 64, ptr %62) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #8
  br label %478

478:                                              ; preds = %474, %470
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %61) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %61) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %60) #8
  br label %645

479:                                              ; preds = %261
  %480 = landingpad { ptr, i32 }
          cleanup
  %481 = extractvalue { ptr, i32 } %480, 0
  store ptr %481, ptr %12, align 8
  %482 = extractvalue { ptr, i32 } %480, 1
  store i32 %482, ptr %13, align 4
  br label %492

483:                                              ; preds = %262
  %484 = landingpad { ptr, i32 }
          cleanup
  %485 = extractvalue { ptr, i32 } %484, 0
  store ptr %485, ptr %12, align 8
  %486 = extractvalue { ptr, i32 } %484, 1
  store i32 %486, ptr %13, align 4
  br label %491

487:                                              ; preds = %263
  %488 = landingpad { ptr, i32 }
          cleanup
  %489 = extractvalue { ptr, i32 } %488, 0
  store ptr %489, ptr %12, align 8
  %490 = extractvalue { ptr, i32 } %488, 1
  store i32 %490, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #8
  br label %491

491:                                              ; preds = %487, %483
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %66) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %66) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %65) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #8
  br label %492

492:                                              ; preds = %491, %479
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %64) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %64) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %63) #8
  br label %645

493:                                              ; preds = %264
  %494 = landingpad { ptr, i32 }
          cleanup
  %495 = extractvalue { ptr, i32 } %494, 0
  store ptr %495, ptr %12, align 8
  %496 = extractvalue { ptr, i32 } %494, 1
  store i32 %496, ptr %13, align 4
  br label %501

497:                                              ; preds = %268, %266
  %498 = landingpad { ptr, i32 }
          cleanup
  %499 = extractvalue { ptr, i32 } %498, 0
  store ptr %499, ptr %12, align 8
  %500 = extractvalue { ptr, i32 } %498, 1
  store i32 %500, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 64, ptr %69) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #8
  br label %501

501:                                              ; preds = %497, %493
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %67) #8
  br label %645

502:                                              ; preds = %269
  %503 = landingpad { ptr, i32 }
          cleanup
  %504 = extractvalue { ptr, i32 } %503, 0
  store ptr %504, ptr %12, align 8
  %505 = extractvalue { ptr, i32 } %503, 1
  store i32 %505, ptr %13, align 4
  br label %515

506:                                              ; preds = %270
  %507 = landingpad { ptr, i32 }
          cleanup
  %508 = extractvalue { ptr, i32 } %507, 0
  store ptr %508, ptr %12, align 8
  %509 = extractvalue { ptr, i32 } %507, 1
  store i32 %509, ptr %13, align 4
  br label %514

510:                                              ; preds = %271
  %511 = landingpad { ptr, i32 }
          cleanup
  %512 = extractvalue { ptr, i32 } %511, 0
  store ptr %512, ptr %12, align 8
  %513 = extractvalue { ptr, i32 } %511, 1
  store i32 %513, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #8
  br label %514

514:                                              ; preds = %510, %506
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %73) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %72) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #8
  br label %515

515:                                              ; preds = %514, %502
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %71) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %70) #8
  br label %645

516:                                              ; preds = %272
  %517 = landingpad { ptr, i32 }
          cleanup
  %518 = extractvalue { ptr, i32 } %517, 0
  store ptr %518, ptr %12, align 8
  %519 = extractvalue { ptr, i32 } %517, 1
  store i32 %519, ptr %13, align 4
  br label %524

520:                                              ; preds = %277, %274
  %521 = landingpad { ptr, i32 }
          cleanup
  %522 = extractvalue { ptr, i32 } %521, 0
  store ptr %522, ptr %12, align 8
  %523 = extractvalue { ptr, i32 } %521, 1
  store i32 %523, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %76) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %74) #8
  br label %524

524:                                              ; preds = %520, %516
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %75) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %75) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %74) #8
  br label %645

525:                                              ; preds = %278
  %526 = landingpad { ptr, i32 }
          cleanup
  %527 = extractvalue { ptr, i32 } %526, 0
  store ptr %527, ptr %12, align 8
  %528 = extractvalue { ptr, i32 } %526, 1
  store i32 %528, ptr %13, align 4
  br label %538

529:                                              ; preds = %279
  %530 = landingpad { ptr, i32 }
          cleanup
  %531 = extractvalue { ptr, i32 } %530, 0
  store ptr %531, ptr %12, align 8
  %532 = extractvalue { ptr, i32 } %530, 1
  store i32 %532, ptr %13, align 4
  br label %537

533:                                              ; preds = %280
  %534 = landingpad { ptr, i32 }
          cleanup
  %535 = extractvalue { ptr, i32 } %534, 0
  store ptr %535, ptr %12, align 8
  %536 = extractvalue { ptr, i32 } %534, 1
  store i32 %536, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %80) #8
  br label %537

537:                                              ; preds = %533, %529
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %81) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %81) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %80) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %78) #8
  br label %538

538:                                              ; preds = %537, %525
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %79) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %79) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %78) #8
  br label %645

539:                                              ; preds = %281
  %540 = landingpad { ptr, i32 }
          cleanup
  %541 = extractvalue { ptr, i32 } %540, 0
  store ptr %541, ptr %12, align 8
  %542 = extractvalue { ptr, i32 } %540, 1
  store i32 %542, ptr %13, align 4
  br label %547

543:                                              ; preds = %283
  %544 = landingpad { ptr, i32 }
          cleanup
  %545 = extractvalue { ptr, i32 } %544, 0
  store ptr %545, ptr %12, align 8
  %546 = extractvalue { ptr, i32 } %544, 1
  store i32 %546, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %82) #8
  br label %547

547:                                              ; preds = %543, %539
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %83) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %83) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %82) #8
  br label %645

548:                                              ; preds = %289
  %549 = landingpad { ptr, i32 }
          cleanup
  %550 = extractvalue { ptr, i32 } %549, 0
  store ptr %550, ptr %12, align 8
  %551 = extractvalue { ptr, i32 } %549, 1
  store i32 %551, ptr %13, align 4
  br label %561

552:                                              ; preds = %290
  %553 = landingpad { ptr, i32 }
          cleanup
  %554 = extractvalue { ptr, i32 } %553, 0
  store ptr %554, ptr %12, align 8
  %555 = extractvalue { ptr, i32 } %553, 1
  store i32 %555, ptr %13, align 4
  br label %560

556:                                              ; preds = %291
  %557 = landingpad { ptr, i32 }
          cleanup
  %558 = extractvalue { ptr, i32 } %557, 0
  store ptr %558, ptr %12, align 8
  %559 = extractvalue { ptr, i32 } %557, 1
  store i32 %559, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %86) #8
  br label %560

560:                                              ; preds = %556, %552
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %87) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %87) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %86) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %84) #8
  br label %561

561:                                              ; preds = %560, %548
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %85) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %85) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %84) #8
  br label %645

562:                                              ; preds = %292
  %563 = landingpad { ptr, i32 }
          cleanup
  %564 = extractvalue { ptr, i32 } %563, 0
  store ptr %564, ptr %12, align 8
  %565 = extractvalue { ptr, i32 } %563, 1
  store i32 %565, ptr %13, align 4
  br label %570

566:                                              ; preds = %294
  %567 = landingpad { ptr, i32 }
          cleanup
  %568 = extractvalue { ptr, i32 } %567, 0
  store ptr %568, ptr %12, align 8
  %569 = extractvalue { ptr, i32 } %567, 1
  store i32 %569, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %88) #8
  br label %570

570:                                              ; preds = %566, %562
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %89) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %88) #8
  br label %645

571:                                              ; preds = %300
  %572 = landingpad { ptr, i32 }
          cleanup
  %573 = extractvalue { ptr, i32 } %572, 0
  store ptr %573, ptr %12, align 8
  %574 = extractvalue { ptr, i32 } %572, 1
  store i32 %574, ptr %13, align 4
  br label %584

575:                                              ; preds = %301
  %576 = landingpad { ptr, i32 }
          cleanup
  %577 = extractvalue { ptr, i32 } %576, 0
  store ptr %577, ptr %12, align 8
  %578 = extractvalue { ptr, i32 } %576, 1
  store i32 %578, ptr %13, align 4
  br label %583

579:                                              ; preds = %302
  %580 = landingpad { ptr, i32 }
          cleanup
  %581 = extractvalue { ptr, i32 } %580, 0
  store ptr %581, ptr %12, align 8
  %582 = extractvalue { ptr, i32 } %580, 1
  store i32 %582, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #8
  br label %583

583:                                              ; preds = %579, %575
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %93) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %93) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %92) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %90) #8
  br label %584

584:                                              ; preds = %583, %571
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %91) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %91) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %90) #8
  br label %645

585:                                              ; preds = %303
  %586 = landingpad { ptr, i32 }
          cleanup
  %587 = extractvalue { ptr, i32 } %586, 0
  store ptr %587, ptr %12, align 8
  %588 = extractvalue { ptr, i32 } %586, 1
  store i32 %588, ptr %13, align 4
  br label %593

589:                                              ; preds = %305
  %590 = landingpad { ptr, i32 }
          cleanup
  %591 = extractvalue { ptr, i32 } %590, 0
  store ptr %591, ptr %12, align 8
  %592 = extractvalue { ptr, i32 } %590, 1
  store i32 %592, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %94) #8
  br label %593

593:                                              ; preds = %589, %585
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %95) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %95) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %94) #8
  br label %645

594:                                              ; preds = %311
  %595 = landingpad { ptr, i32 }
          cleanup
  %596 = extractvalue { ptr, i32 } %595, 0
  store ptr %596, ptr %12, align 8
  %597 = extractvalue { ptr, i32 } %595, 1
  store i32 %597, ptr %13, align 4
  br label %607

598:                                              ; preds = %312
  %599 = landingpad { ptr, i32 }
          cleanup
  %600 = extractvalue { ptr, i32 } %599, 0
  store ptr %600, ptr %12, align 8
  %601 = extractvalue { ptr, i32 } %599, 1
  store i32 %601, ptr %13, align 4
  br label %606

602:                                              ; preds = %313
  %603 = landingpad { ptr, i32 }
          cleanup
  %604 = extractvalue { ptr, i32 } %603, 0
  store ptr %604, ptr %12, align 8
  %605 = extractvalue { ptr, i32 } %603, 1
  store i32 %605, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %98) #8
  br label %606

606:                                              ; preds = %602, %598
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %99) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %99) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %98) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %96) #8
  br label %607

607:                                              ; preds = %606, %594
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %97) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %97) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %96) #8
  br label %645

608:                                              ; preds = %314
  %609 = landingpad { ptr, i32 }
          cleanup
  %610 = extractvalue { ptr, i32 } %609, 0
  store ptr %610, ptr %12, align 8
  %611 = extractvalue { ptr, i32 } %609, 1
  store i32 %611, ptr %13, align 4
  br label %616

612:                                              ; preds = %316
  %613 = landingpad { ptr, i32 }
          cleanup
  %614 = extractvalue { ptr, i32 } %613, 0
  store ptr %614, ptr %12, align 8
  %615 = extractvalue { ptr, i32 } %613, 1
  store i32 %615, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %100) #8
  br label %616

616:                                              ; preds = %612, %608
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %101) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %101) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %100) #8
  br label %645

617:                                              ; preds = %322
  %618 = landingpad { ptr, i32 }
          cleanup
  %619 = extractvalue { ptr, i32 } %618, 0
  store ptr %619, ptr %12, align 8
  %620 = extractvalue { ptr, i32 } %618, 1
  store i32 %620, ptr %13, align 4
  br label %630

621:                                              ; preds = %323
  %622 = landingpad { ptr, i32 }
          cleanup
  %623 = extractvalue { ptr, i32 } %622, 0
  store ptr %623, ptr %12, align 8
  %624 = extractvalue { ptr, i32 } %622, 1
  store i32 %624, ptr %13, align 4
  br label %629

625:                                              ; preds = %324
  %626 = landingpad { ptr, i32 }
          cleanup
  %627 = extractvalue { ptr, i32 } %626, 0
  store ptr %627, ptr %12, align 8
  %628 = extractvalue { ptr, i32 } %626, 1
  store i32 %628, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %104) #8
  br label %629

629:                                              ; preds = %625, %621
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %105) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %105) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %104) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %102) #8
  br label %630

630:                                              ; preds = %629, %617
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %103) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %103) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %102) #8
  br label %645

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

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

639:                                              ; preds = %329
  %640 = landingpad { ptr, i32 }
          cleanup
  %641 = extractvalue { ptr, i32 } %640, 0
  store ptr %641, ptr %12, align 8
  %642 = extractvalue { ptr, i32 } %640, 1
  store i32 %642, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %108) #8
  br label %643

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

644:                                              ; preds = %643, %631
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %107) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %107) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %106) #8
  br label %645

645:                                              ; preds = %644, %630, %616, %607, %593, %584, %570, %561, %547, %538, %524, %515, %501, %492, %478, %469, %455, %446, %432, %423, %409, %400, %386, %377, %363, %354, %340, %194, %173, %146
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #8
  br label %646

646:                                              ; preds = %645
  %647 = load ptr, ptr %12, align 8
  %648 = load i32, ptr %13, align 4
  %649 = insertvalue { ptr, i32 } poison, ptr %647, 0
  %650 = insertvalue { ptr, i32 } %649, i32 %648, 1
  resume { ptr, i32 } %650
}

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

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

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

declare void @_ZN3vcl18check_opengl_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) #4

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

declare i32 @__gxx_personality_v0(...)

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

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

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #6

declare void @_ZN3vcl7uniformEjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_3matILm3ELm3EEE(i32 noundef, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 4 dereferenceable(36)) #4

declare void @_ZN3vcl7uniformEjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_12buffer_stackIfLm3EEE(i32 noundef, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 4 dereferenceable(12)) #4

declare void @_ZN3vcl7uniformEjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEf(i32 noundef, ptr noundef nonnull align 8 dereferenceable(32), float noundef) #4

declare void @_ZN3vcl7uniformEjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_3matILm4ELm4EEE(i32 noundef, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 4 dereferenceable(64)) #4

declare void @_ZNK3vcl21perspective_structure6matrixEv(ptr dead_on_unwind writable sret(%"struct.vcl::mat.22") align 4, ptr noundef nonnull align 4 dereferenceable(16)) #4

declare void @_ZNK3vcl12camera_scene11view_matrixEv(ptr dead_on_unwind writable sret(%"struct.vcl::mat.22") align 4, ptr noundef nonnull align 4 dereferenceable(80)) #4

declare { <2 x float>, float } @_ZNK3vcl12camera_scene15camera_positionEv(ptr noundef nonnull align 4 dereferenceable(80)) #4

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

declare void @_ZN3vcl7uniformEjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi(i32 noundef, ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) #4

declare void @_ZN3vcl4drawERKNS_22mesh_drawable_gpu_dataE(ptr noundef nonnull align 4 dereferenceable(28)) #4

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

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="64" "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 = { 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 #2 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { 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 #6 = { noreturn 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 #7 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #8 = { nounwind }
attributes #9 = { noreturn 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, !17, i64 120}
!12 = !{!"_ZTSN3vcl13mesh_drawableE", !13, i64 0, !14, i64 28, !10, i64 124, !10, i64 128}
!13 = !{!"_ZTSN3vcl22mesh_drawable_gpu_dataE", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24}
!14 = !{!"_ZTSN3vcl21mesh_drawable_uniformE", !15, i64 0, !16, i64 64, !19, i64 76, !17, i64 92}
!15 = !{!"_ZTSN3vcl16affine_transformE", !16, i64 0, !18, i64 12, !17, i64 48, !16, i64 52}
!16 = !{!"_ZTSN3vcl12buffer_stackIfLm3EEE", !17, i64 0, !17, i64 4, !17, i64 8}
!17 = !{!"float", !7, i64 0}
!18 = !{!"_ZTSN3vcl3matILm3ELm3EEE", !17, i64 0, !17, i64 4, !17, i64 8, !17, i64 12, !17, i64 16, !17, i64 20, !17, i64 24, !17, i64 28, !17, i64 32}
!19 = !{!"_ZTSN3vcl12shading_meshE", !17, i64 0, !17, i64 4, !17, i64 8, !10, i64 12}
!20 = !{!12, !17, i64 76}
!21 = !{!12, !17, i64 104}
!22 = !{!12, !17, i64 108}
!23 = !{!12, !17, i64 112}
!24 = !{!12, !10, i64 116}


; 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.19" = type { i8 }
%"struct.vcl::mat.22" = type { float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float }
%"struct.vcl::buffer_stack" = type { float, float, float }

@glad_glIsProgram = external local_unnamed_addr global ptr, align 8
@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str = external hidden unnamed_addr constant [50 x i8], align 1
@glad_glGetIntegerv = external local_unnamed_addr global ptr, align 8
@.str.1 = external hidden unnamed_addr constant [115 x i8], align 1
@__PRETTY_FUNCTION__._ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEjj = external hidden unnamed_addr constant [76 x i8], align 1
@glad_glUseProgram = external local_unnamed_addr global ptr, align 8
@glad_glIsTexture = external local_unnamed_addr global ptr, align 8
@.str.2 = external hidden unnamed_addr constant [24 x i8], align 1
@glad_glBindTexture = external local_unnamed_addr global ptr, align 8
@.str.3 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [18 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEjj(ptr noundef nonnull align 4 dereferenceable(132) %0, ptr noundef nonnull align 4 dereferenceable(80) %1, i32 noundef %2, i32 noundef %3) local_unnamed_addr #0 personality ptr @__gxx_personality_v0 {
  %5 = alloca i32, align 4
  %6 = alloca %"class.std::__cxx11::basic_string", align 8
  %7 = alloca %"class.std::allocator.19", align 1
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca %"class.std::allocator.19", align 1
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.std::allocator.19", align 1
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.std::allocator.19", align 1
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %"class.std::allocator.19", align 1
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca %"class.std::allocator.19", align 1
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::allocator.19", align 1
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %"class.std::allocator.19", align 1
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  %23 = alloca %"class.std::allocator.19", align 1
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.std::allocator.19", align 1
  %26 = alloca %"class.std::__cxx11::basic_string", align 8
  %27 = alloca %"class.std::allocator.19", align 1
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  %29 = alloca %"class.std::allocator.19", align 1
  %30 = alloca %"class.std::__cxx11::basic_string", align 8
  %31 = alloca %"class.std::allocator.19", align 1
  %32 = alloca %"class.std::__cxx11::basic_string", align 8
  %33 = alloca %"class.std::allocator.19", align 1
  %34 = alloca %"class.std::__cxx11::basic_string", align 8
  %35 = alloca %"class.std::allocator.19", align 1
  %36 = alloca %"class.std::__cxx11::basic_string", align 8
  %37 = alloca %"class.std::allocator.19", align 1
  %38 = alloca %"class.std::__cxx11::basic_string", align 8
  %39 = alloca %"class.std::allocator.19", align 1
  %40 = alloca %"class.std::__cxx11::basic_string", align 8
  %41 = alloca %"class.std::allocator.19", align 1
  %42 = alloca %"class.std::__cxx11::basic_string", align 8
  %43 = alloca %"class.std::allocator.19", align 1
  %44 = alloca %"class.std::__cxx11::basic_string", align 8
  %45 = alloca %"class.std::allocator.19", align 1
  %46 = alloca %"class.std::__cxx11::basic_string", align 8
  %47 = alloca %"class.std::allocator.19", align 1
  %48 = alloca %"class.std::__cxx11::basic_string", align 8
  %49 = alloca %"class.std::allocator.19", align 1
  %50 = alloca %"class.std::__cxx11::basic_string", align 8
  %51 = alloca %"class.std::allocator.19", align 1
  %52 = alloca %"class.std::__cxx11::basic_string", align 8
  %53 = alloca %"class.std::allocator.19", align 1
  %54 = alloca %"class.std::__cxx11::basic_string", align 8
  %55 = alloca %"class.std::allocator.19", align 1
  %56 = alloca %"struct.vcl::mat.22", align 4
  %57 = alloca %"class.std::__cxx11::basic_string", align 8
  %58 = alloca %"class.std::allocator.19", align 1
  %59 = alloca %"class.std::__cxx11::basic_string", align 8
  %60 = alloca %"class.std::allocator.19", align 1
  %61 = alloca %"class.std::__cxx11::basic_string", align 8
  %62 = alloca %"class.std::allocator.19", align 1
  %63 = alloca %"struct.vcl::mat.22", align 4
  %64 = alloca %"class.std::__cxx11::basic_string", align 8
  %65 = alloca %"class.std::allocator.19", align 1
  %66 = alloca %"class.std::__cxx11::basic_string", align 8
  %67 = alloca %"class.std::allocator.19", align 1
  %68 = alloca %"class.std::__cxx11::basic_string", align 8
  %69 = alloca %"class.std::allocator.19", align 1
  %70 = alloca %"struct.vcl::buffer_stack", align 8
  %71 = alloca %"class.std::__cxx11::basic_string", align 8
  %72 = alloca %"class.std::allocator.19", align 1
  %73 = alloca %"class.std::__cxx11::basic_string", align 8
  %74 = alloca %"class.std::allocator.19", align 1
  %75 = alloca %"class.std::__cxx11::basic_string", align 8
  %76 = alloca %"class.std::allocator.19", align 1
  %77 = alloca %"class.std::__cxx11::basic_string", align 8
  %78 = alloca %"class.std::allocator.19", align 1
  %79 = alloca %"class.std::__cxx11::basic_string", align 8
  %80 = alloca %"class.std::allocator.19", align 1
  %81 = alloca %"class.std::__cxx11::basic_string", align 8
  %82 = alloca %"class.std::allocator.19", align 1
  %83 = alloca %"class.std::__cxx11::basic_string", align 8
  %84 = alloca %"class.std::allocator.19", align 1
  %85 = alloca %"class.std::__cxx11::basic_string", align 8
  %86 = alloca %"class.std::allocator.19", align 1
  %87 = alloca %"class.std::__cxx11::basic_string", align 8
  %88 = alloca %"class.std::allocator.19", align 1
  %89 = alloca %"class.std::__cxx11::basic_string", align 8
  %90 = alloca %"class.std::allocator.19", align 1
  %91 = alloca %"class.std::__cxx11::basic_string", align 8
  %92 = alloca %"class.std::allocator.19", align 1
  %93 = alloca %"class.std::__cxx11::basic_string", align 8
  %94 = alloca %"class.std::allocator.19", align 1
  %95 = alloca %"class.std::__cxx11::basic_string", align 8
  %96 = alloca %"class.std::allocator.19", align 1
  %97 = alloca %"class.std::__cxx11::basic_string", align 8
  %98 = alloca %"class.std::allocator.19", align 1
  %99 = alloca %"class.std::__cxx11::basic_string", align 8
  %100 = alloca %"class.std::allocator.19", align 1
  %101 = alloca %"class.std::__cxx11::basic_string", align 8
  %102 = alloca %"class.std::allocator.19", align 1
  %103 = icmp eq i32 %2, 0
  br i1 %103, label %246, label %104

104:                                              ; preds = %4
  %105 = load ptr, ptr @glad_glIsProgram, align 8, !tbaa !5
  %106 = tail call zeroext i8 %105(i32 noundef %2)
  %107 = icmp eq i8 %106, 0
  br i1 %107, label %108, label %111

108:                                              ; preds = %104
  %109 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str)
  %110 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %109, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %246

111:                                              ; preds = %104
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #7
  store i32 0, ptr %5, align 4, !tbaa !9
  %112 = load ptr, ptr @glad_glGetIntegerv, align 8, !tbaa !5
  call void %112(i32 noundef 35725, ptr noundef nonnull %5)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %7) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #7
  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 %113 unwind label %119

113:                                              ; preds = %111
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %9) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEjj, ptr noundef nonnull align 1 dereferenceable(1) %9)
          to label %114 unwind label %121

114:                                              ; preds = %113
  invoke void @_ZN3vcl18check_opengl_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(32) %8, i32 noundef 59)
          to label %115 unwind label %123

115:                                              ; preds = %114
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #7
  %116 = load i32, ptr %5, align 4, !tbaa !9
  %.not = icmp eq i32 %116, %2
  br i1 %.not, label %127, label %117

117:                                              ; preds = %115
  %118 = load ptr, ptr @glad_glUseProgram, align 8, !tbaa !5
  call void %118(i32 noundef %2)
  br label %127

119:                                              ; preds = %111
  %120 = landingpad { ptr, i32 }
          cleanup
  br label %126

121:                                              ; preds = %113
  %122 = landingpad { ptr, i32 }
          cleanup
  br label %125

123:                                              ; preds = %114
  %124 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #7
  br label %125

125:                                              ; preds = %123, %121
  %.pn = phi { ptr, i32 } [ %124, %123 ], [ %122, %121 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #7
  br label %126

126:                                              ; preds = %125, %119
  %.pn.pn = phi { ptr, i32 } [ %.pn, %125 ], [ %120, %119 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #7
  br label %424

127:                                              ; preds = %117, %115
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %11) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %11)
          to label %128 unwind label %135

128:                                              ; preds = %127
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %13) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEjj, ptr noundef nonnull align 1 dereferenceable(1) %13)
          to label %129 unwind label %137

129:                                              ; preds = %128
  invoke void @_ZN3vcl18check_opengl_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull align 8 dereferenceable(32) %12, i32 noundef 61)
          to label %130 unwind label %139

130:                                              ; preds = %129
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #7
  %.not90 = icmp eq i32 %3, 0
  br i1 %.not90, label %156, label %131

131:                                              ; preds = %130
  %132 = load ptr, ptr @glad_glIsTexture, align 8, !tbaa !5
  %133 = call zeroext i8 %132(i32 noundef %3)
  %.not91 = icmp eq i8 %133, 0
  br i1 %.not91, label %134, label %143

134:                                              ; preds = %131
  call void @__assert_fail(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.1, i32 noundef 65, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEjj) #8
  unreachable

135:                                              ; preds = %127
  %136 = landingpad { ptr, i32 }
          cleanup
  br label %142

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

139:                                              ; preds = %129
  %140 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #7
  br label %141

141:                                              ; preds = %139, %137
  %.pn87 = phi { ptr, i32 } [ %140, %139 ], [ %138, %137 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #7
  br label %142

142:                                              ; preds = %141, %135
  %.pn87.pn = phi { ptr, i32 } [ %.pn87, %141 ], [ %136, %135 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #7
  br label %424

143:                                              ; preds = %131
  %144 = load ptr, ptr @glad_glBindTexture, align 8, !tbaa !5
  call void %144(i32 noundef 3553, i32 noundef %3)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %15) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %15)
          to label %145 unwind label %148

145:                                              ; preds = %143
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %16) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %17) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEjj, ptr noundef nonnull align 1 dereferenceable(1) %17)
          to label %146 unwind label %150

146:                                              ; preds = %145
  invoke void @_ZN3vcl18check_opengl_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull align 8 dereferenceable(32) %16, i32 noundef 66)
          to label %147 unwind label %152

147:                                              ; preds = %146
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %17) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #7
  br label %156

148:                                              ; preds = %143
  %149 = landingpad { ptr, i32 }
          cleanup
  br label %155

150:                                              ; preds = %145
  %151 = landingpad { ptr, i32 }
          cleanup
  br label %154

152:                                              ; preds = %146
  %153 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #7
  br label %154

154:                                              ; preds = %152, %150
  %.pn92 = phi { ptr, i32 } [ %153, %152 ], [ %151, %150 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %17) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #7
  br label %155

155:                                              ; preds = %154, %148
  %.pn92.pn = phi { ptr, i32 } [ %.pn92, %154 ], [ %149, %148 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #7
  br label %424

156:                                              ; preds = %147, %130
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %18) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %19) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %157 unwind label %247

157:                                              ; preds = %156
  %158 = getelementptr inbounds i8, ptr %0, i64 28
  %159 = getelementptr inbounds i8, ptr %0, i64 40
  invoke void @_ZN3vcl7uniformEjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_3matILm3ELm3EEE(i32 noundef %2, ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull align 4 dereferenceable(36) %159)
          to label %160 unwind label %249

160:                                              ; preds = %157
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %20) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %21) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %21)
          to label %161 unwind label %252

161:                                              ; preds = %160
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %22) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %23) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEjj, ptr noundef nonnull align 1 dereferenceable(1) %23)
          to label %162 unwind label %254

162:                                              ; preds = %161
  invoke void @_ZN3vcl18check_opengl_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef nonnull align 8 dereferenceable(32) %22, i32 noundef 70)
          to label %163 unwind label %256

163:                                              ; preds = %162
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %24) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %25) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull @.str.4, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %164 unwind label %260

164:                                              ; preds = %163
  invoke void @_ZN3vcl7uniformEjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_12buffer_stackIfLm3EEE(i32 noundef %2, ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull align 4 dereferenceable(12) %158)
          to label %165 unwind label %262

165:                                              ; preds = %164
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %26) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %27) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #7
  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 %166 unwind label %265

166:                                              ; preds = %165
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %28) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %29) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEjj, ptr noundef nonnull align 1 dereferenceable(1) %29)
          to label %167 unwind label %267

167:                                              ; preds = %166
  invoke void @_ZN3vcl18check_opengl_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef nonnull align 8 dereferenceable(32) %28, i32 noundef 71)
          to label %168 unwind label %269

168:                                              ; preds = %167
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %29) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %30) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %31) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef nonnull @.str.5, ptr noundef nonnull align 1 dereferenceable(1) %31)
          to label %169 unwind label %273

169:                                              ; preds = %168
  %170 = getelementptr inbounds i8, ptr %0, i64 92
  invoke void @_ZN3vcl7uniformEjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_12buffer_stackIfLm3EEE(i32 noundef %2, ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef nonnull align 4 dereferenceable(12) %170)
          to label %171 unwind label %275

171:                                              ; preds = %169
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %31) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %32) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %33) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %33)
          to label %172 unwind label %278

172:                                              ; preds = %171
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %34) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %35) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEjj, ptr noundef nonnull align 1 dereferenceable(1) %35)
          to label %173 unwind label %280

173:                                              ; preds = %172
  invoke void @_ZN3vcl18check_opengl_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef nonnull align 8 dereferenceable(32) %34, i32 noundef 72)
          to label %174 unwind label %282

174:                                              ; preds = %173
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %35) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %33) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %36) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %37) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %36, ptr noundef nonnull @.str.6, ptr noundef nonnull align 1 dereferenceable(1) %37)
          to label %175 unwind label %286

175:                                              ; preds = %174
  %176 = getelementptr inbounds i8, ptr %0, i64 120
  %177 = load float, ptr %176, align 4, !tbaa !11
  invoke void @_ZN3vcl7uniformEjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEf(i32 noundef %2, ptr noundef nonnull align 8 dereferenceable(32) %36, float noundef %177)
          to label %178 unwind label %288

178:                                              ; preds = %175
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %37) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %36) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %38) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %39) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %39)
          to label %179 unwind label %291

179:                                              ; preds = %178
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %40) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %41) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEjj, ptr noundef nonnull align 1 dereferenceable(1) %41)
          to label %180 unwind label %293

180:                                              ; preds = %179
  invoke void @_ZN3vcl18check_opengl_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef nonnull align 8 dereferenceable(32) %40, i32 noundef 73)
          to label %181 unwind label %295

181:                                              ; preds = %180
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %41) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %40) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %39) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %38) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %42) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %43) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %42, ptr noundef nonnull @.str.7, ptr noundef nonnull align 1 dereferenceable(1) %43)
          to label %182 unwind label %299

182:                                              ; preds = %181
  %183 = getelementptr inbounds i8, ptr %0, i64 76
  %184 = load float, ptr %183, align 4, !tbaa !20
  invoke void @_ZN3vcl7uniformEjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEf(i32 noundef %2, ptr noundef nonnull align 8 dereferenceable(32) %42, float noundef %184)
          to label %185 unwind label %301

185:                                              ; preds = %182
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %43) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %42) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %44) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %45) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %44, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %45)
          to label %186 unwind label %304

186:                                              ; preds = %185
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %46) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %47) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %46, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEjj, ptr noundef nonnull align 1 dereferenceable(1) %47)
          to label %187 unwind label %306

187:                                              ; preds = %186
  invoke void @_ZN3vcl18check_opengl_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(32) %44, ptr noundef nonnull align 8 dereferenceable(32) %46, i32 noundef 74)
          to label %188 unwind label %308

188:                                              ; preds = %187
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %47) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %46) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %45) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %44) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %48) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %49) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %48, ptr noundef nonnull @.str.8, ptr noundef nonnull align 1 dereferenceable(1) %49)
          to label %189 unwind label %312

189:                                              ; preds = %188
  %190 = getelementptr inbounds i8, ptr %0, i64 80
  invoke void @_ZN3vcl7uniformEjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_12buffer_stackIfLm3EEE(i32 noundef %2, ptr noundef nonnull align 8 dereferenceable(32) %48, ptr noundef nonnull align 4 dereferenceable(12) %190)
          to label %191 unwind label %314

191:                                              ; preds = %189
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %49) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %48) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %50) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %51) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %50, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %51)
          to label %192 unwind label %317

192:                                              ; preds = %191
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %52) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %53) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %52, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEjj, ptr noundef nonnull align 1 dereferenceable(1) %53)
          to label %193 unwind label %319

193:                                              ; preds = %192
  invoke void @_ZN3vcl18check_opengl_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(32) %50, ptr noundef nonnull align 8 dereferenceable(32) %52, i32 noundef 75)
          to label %194 unwind label %321

194:                                              ; preds = %193
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %53) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %52) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %51) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %50) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %54) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %55) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %54, ptr noundef nonnull @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %55)
          to label %195 unwind label %325

195:                                              ; preds = %194
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %56) #7
  %196 = getelementptr inbounds i8, ptr %1, i64 52
  invoke void @_ZNK3vcl21perspective_structure6matrixEv(ptr dead_on_unwind nonnull writable sret(%"struct.vcl::mat.22") align 4 %56, ptr noundef nonnull align 4 dereferenceable(16) %196)
          to label %197 unwind label %327

197:                                              ; preds = %195
  invoke void @_ZN3vcl7uniformEjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_3matILm4ELm4EEE(i32 noundef %2, ptr noundef nonnull align 8 dereferenceable(32) %54, ptr noundef nonnull align 4 dereferenceable(64) %56)
          to label %198 unwind label %327

198:                                              ; preds = %197
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %56) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %55) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %54) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %57) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %58) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #7
  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 %199 unwind label %330

199:                                              ; preds = %198
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %59) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %60) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %60) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %59, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEjj, ptr noundef nonnull align 1 dereferenceable(1) %60)
          to label %200 unwind label %332

200:                                              ; preds = %199
  invoke void @_ZN3vcl18check_opengl_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(32) %57, ptr noundef nonnull align 8 dereferenceable(32) %59, i32 noundef 77)
          to label %201 unwind label %334

201:                                              ; preds = %200
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %60) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %60) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %59) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %58) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %57) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %61) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %62) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %61, ptr noundef nonnull @.str.10, ptr noundef nonnull align 1 dereferenceable(1) %62)
          to label %202 unwind label %338

202:                                              ; preds = %201
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %63) #7
  invoke void @_ZNK3vcl12camera_scene11view_matrixEv(ptr dead_on_unwind nonnull writable sret(%"struct.vcl::mat.22") align 4 %63, ptr noundef nonnull align 4 dereferenceable(80) %1)
          to label %203 unwind label %340

203:                                              ; preds = %202
  invoke void @_ZN3vcl7uniformEjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_3matILm4ELm4EEE(i32 noundef %2, ptr noundef nonnull align 8 dereferenceable(32) %61, ptr noundef nonnull align 4 dereferenceable(64) %63)
          to label %204 unwind label %340

204:                                              ; preds = %203
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %63) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %62) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %61) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %64) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %65) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %65) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %64, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %65)
          to label %205 unwind label %343

205:                                              ; preds = %204
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %66) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %67) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %67) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %66, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEjj, ptr noundef nonnull align 1 dereferenceable(1) %67)
          to label %206 unwind label %345

206:                                              ; preds = %205
  invoke void @_ZN3vcl18check_opengl_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(32) %64, ptr noundef nonnull align 8 dereferenceable(32) %66, i32 noundef 78)
          to label %207 unwind label %347

207:                                              ; preds = %206
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %67) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %67) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %66) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %65) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %65) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %64) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %68) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %69) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %69) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %68, ptr noundef nonnull @.str.11, ptr noundef nonnull align 1 dereferenceable(1) %69)
          to label %208 unwind label %351

208:                                              ; preds = %207
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %70) #7
  %209 = invoke { <2 x float>, float } @_ZNK3vcl12camera_scene15camera_positionEv(ptr noundef nonnull align 4 dereferenceable(80) %1)
          to label %210 unwind label %353

210:                                              ; preds = %208
  %.fca.0.extract = extractvalue { <2 x float>, float } %209, 0
  %.fca.1.extract = extractvalue { <2 x float>, float } %209, 1
  store <2 x float> %.fca.0.extract, ptr %70, align 8
  %.sroa.2.0..sroa_idx = getelementptr inbounds i8, ptr %70, i64 8
  store float %.fca.1.extract, ptr %.sroa.2.0..sroa_idx, align 8
  invoke void @_ZN3vcl7uniformEjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_12buffer_stackIfLm3EEE(i32 noundef %2, ptr noundef nonnull align 8 dereferenceable(32) %68, ptr noundef nonnull align 4 dereferenceable(12) %70)
          to label %211 unwind label %353

211:                                              ; preds = %210
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %70) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %69) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %69) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %68) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %71) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %72) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %72) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %71, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %72)
          to label %212 unwind label %356

212:                                              ; preds = %211
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %73) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %74) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %74) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %73, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEjj, ptr noundef nonnull align 1 dereferenceable(1) %74)
          to label %213 unwind label %358

213:                                              ; preds = %212
  invoke void @_ZN3vcl18check_opengl_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(32) %71, ptr noundef nonnull align 8 dereferenceable(32) %73, i32 noundef 79)
          to label %214 unwind label %360

214:                                              ; preds = %213
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %73) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %74) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %74) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %73) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %72) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %72) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %71) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %75) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %76) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %76) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %75, ptr noundef nonnull @.str.12, ptr noundef nonnull align 1 dereferenceable(1) %76)
          to label %215 unwind label %364

215:                                              ; preds = %214
  %216 = getelementptr inbounds i8, ptr %0, i64 104
  %217 = load float, ptr %216, align 4, !tbaa !21
  invoke void @_ZN3vcl7uniformEjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEf(i32 noundef %2, ptr noundef nonnull align 8 dereferenceable(32) %75, float noundef %217)
          to label %218 unwind label %366

218:                                              ; preds = %215
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %76) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %76) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %75) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %77) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %78) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %78) #7
  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 %219 unwind label %369

219:                                              ; preds = %218
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %79) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %80) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %80) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %79, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEjj, ptr noundef nonnull align 1 dereferenceable(1) %80)
          to label %220 unwind label %371

220:                                              ; preds = %219
  invoke void @_ZN3vcl18check_opengl_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(32) %77, ptr noundef nonnull align 8 dereferenceable(32) %79, i32 noundef 81)
          to label %221 unwind label %373

221:                                              ; preds = %220
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %79) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %80) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %80) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %79) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %77) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %78) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %78) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %77) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %81) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %82) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %82) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %81, ptr noundef nonnull @.str.13, ptr noundef nonnull align 1 dereferenceable(1) %82)
          to label %222 unwind label %377

222:                                              ; preds = %221
  %223 = getelementptr inbounds i8, ptr %0, i64 108
  %224 = load float, ptr %223, align 4, !tbaa !22
  invoke void @_ZN3vcl7uniformEjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEf(i32 noundef %2, ptr noundef nonnull align 8 dereferenceable(32) %81, float noundef %224)
          to label %225 unwind label %379

225:                                              ; preds = %222
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %82) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %82) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %81) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %83) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %84) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %84) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %83, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %84)
          to label %226 unwind label %382

226:                                              ; preds = %225
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %85) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %86) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %86) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %85, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEjj, ptr noundef nonnull align 1 dereferenceable(1) %86)
          to label %227 unwind label %384

227:                                              ; preds = %226
  invoke void @_ZN3vcl18check_opengl_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(32) %83, ptr noundef nonnull align 8 dereferenceable(32) %85, i32 noundef 82)
          to label %228 unwind label %386

228:                                              ; preds = %227
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %85) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %86) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %86) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %85) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %83) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %84) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %84) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %83) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %87) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %88) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %88) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %87, ptr noundef nonnull @.str.14, ptr noundef nonnull align 1 dereferenceable(1) %88)
          to label %229 unwind label %390

229:                                              ; preds = %228
  %230 = getelementptr inbounds i8, ptr %0, i64 112
  %231 = load float, ptr %230, align 4, !tbaa !23
  invoke void @_ZN3vcl7uniformEjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEf(i32 noundef %2, ptr noundef nonnull align 8 dereferenceable(32) %87, float noundef %231)
          to label %232 unwind label %392

232:                                              ; preds = %229
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %88) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %88) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %87) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %89) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %90) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %90) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %89, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %90)
          to label %233 unwind label %395

233:                                              ; preds = %232
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %91) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %92) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %92) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %91, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEjj, ptr noundef nonnull align 1 dereferenceable(1) %92)
          to label %234 unwind label %397

234:                                              ; preds = %233
  invoke void @_ZN3vcl18check_opengl_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(32) %89, ptr noundef nonnull align 8 dereferenceable(32) %91, i32 noundef 83)
          to label %235 unwind label %399

235:                                              ; preds = %234
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %91) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %92) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %92) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %91) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %89) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %90) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %90) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %89) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %93) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %94) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %94) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %93, ptr noundef nonnull @.str.15, ptr noundef nonnull align 1 dereferenceable(1) %94)
          to label %236 unwind label %403

236:                                              ; preds = %235
  %237 = getelementptr inbounds i8, ptr %0, i64 116
  %238 = load i32, ptr %237, align 4, !tbaa !24
  invoke void @_ZN3vcl7uniformEjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi(i32 noundef %2, ptr noundef nonnull align 8 dereferenceable(32) %93, i32 noundef %238)
          to label %239 unwind label %405

239:                                              ; preds = %236
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %93) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %94) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %94) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %93) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %95) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %96) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %96) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %95, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %96)
          to label %240 unwind label %408

240:                                              ; preds = %239
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %97) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %98) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %98) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %97, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEjj, ptr noundef nonnull align 1 dereferenceable(1) %98)
          to label %241 unwind label %410

241:                                              ; preds = %240
  invoke void @_ZN3vcl18check_opengl_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(32) %95, ptr noundef nonnull align 8 dereferenceable(32) %97, i32 noundef 84)
          to label %242 unwind label %412

242:                                              ; preds = %241
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %97) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %98) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %98) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %97) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %95) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %96) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %96) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %95) #7
  call void @_ZN3vcl4drawERKNS_22mesh_drawable_gpu_dataE(ptr noundef nonnull align 4 dereferenceable(28) %0)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %99) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %100) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %100) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %99, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %100)
          to label %243 unwind label %416

243:                                              ; preds = %242
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %101) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %102) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %102) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %101, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEjj, ptr noundef nonnull align 1 dereferenceable(1) %102)
          to label %244 unwind label %418

244:                                              ; preds = %243
  invoke void @_ZN3vcl18check_opengl_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(32) %99, ptr noundef nonnull align 8 dereferenceable(32) %101, i32 noundef 86)
          to label %245 unwind label %420

245:                                              ; preds = %244
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %101) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %102) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %102) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %101) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %99) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %100) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %100) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %99) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #7
  br label %246

246:                                              ; preds = %4, %245, %108
  ret void

247:                                              ; preds = %156
  %248 = landingpad { ptr, i32 }
          cleanup
  br label %251

249:                                              ; preds = %157
  %250 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #7
  br label %251

251:                                              ; preds = %249, %247
  %.pn95 = phi { ptr, i32 } [ %250, %249 ], [ %248, %247 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #7
  br label %424

252:                                              ; preds = %160
  %253 = landingpad { ptr, i32 }
          cleanup
  br label %259

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

256:                                              ; preds = %162
  %257 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #7
  br label %258

258:                                              ; preds = %256, %254
  %.pn97 = phi { ptr, i32 } [ %257, %256 ], [ %255, %254 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #7
  br label %259

259:                                              ; preds = %258, %252
  %.pn97.pn = phi { ptr, i32 } [ %.pn97, %258 ], [ %253, %252 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #7
  br label %424

260:                                              ; preds = %163
  %261 = landingpad { ptr, i32 }
          cleanup
  br label %264

262:                                              ; preds = %164
  %263 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #7
  br label %264

264:                                              ; preds = %262, %260
  %.pn100 = phi { ptr, i32 } [ %263, %262 ], [ %261, %260 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #7
  br label %424

265:                                              ; preds = %165
  %266 = landingpad { ptr, i32 }
          cleanup
  br label %272

267:                                              ; preds = %166
  %268 = landingpad { ptr, i32 }
          cleanup
  br label %271

269:                                              ; preds = %167
  %270 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #7
  br label %271

271:                                              ; preds = %269, %267
  %.pn102 = phi { ptr, i32 } [ %270, %269 ], [ %268, %267 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %29) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #7
  br label %272

272:                                              ; preds = %271, %265
  %.pn102.pn = phi { ptr, i32 } [ %.pn102, %271 ], [ %266, %265 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #7
  br label %424

273:                                              ; preds = %168
  %274 = landingpad { ptr, i32 }
          cleanup
  br label %277

275:                                              ; preds = %169
  %276 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #7
  br label %277

277:                                              ; preds = %275, %273
  %.pn105 = phi { ptr, i32 } [ %276, %275 ], [ %274, %273 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %31) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #7
  br label %424

278:                                              ; preds = %171
  %279 = landingpad { ptr, i32 }
          cleanup
  br label %285

280:                                              ; preds = %172
  %281 = landingpad { ptr, i32 }
          cleanup
  br label %284

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

284:                                              ; preds = %282, %280
  %.pn107 = phi { ptr, i32 } [ %283, %282 ], [ %281, %280 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %35) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #7
  br label %285

285:                                              ; preds = %284, %278
  %.pn107.pn = phi { ptr, i32 } [ %.pn107, %284 ], [ %279, %278 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %33) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #7
  br label %424

286:                                              ; preds = %174
  %287 = landingpad { ptr, i32 }
          cleanup
  br label %290

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

290:                                              ; preds = %288, %286
  %.pn110 = phi { ptr, i32 } [ %289, %288 ], [ %287, %286 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %37) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %36) #7
  br label %424

291:                                              ; preds = %178
  %292 = landingpad { ptr, i32 }
          cleanup
  br label %298

293:                                              ; preds = %179
  %294 = landingpad { ptr, i32 }
          cleanup
  br label %297

295:                                              ; preds = %180
  %296 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #7
  br label %297

297:                                              ; preds = %295, %293
  %.pn112 = phi { ptr, i32 } [ %296, %295 ], [ %294, %293 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %41) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %40) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #7
  br label %298

298:                                              ; preds = %297, %291
  %.pn112.pn = phi { ptr, i32 } [ %.pn112, %297 ], [ %292, %291 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %39) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %38) #7
  br label %424

299:                                              ; preds = %181
  %300 = landingpad { ptr, i32 }
          cleanup
  br label %303

301:                                              ; preds = %182
  %302 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #7
  br label %303

303:                                              ; preds = %301, %299
  %.pn115 = phi { ptr, i32 } [ %302, %301 ], [ %300, %299 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %43) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %42) #7
  br label %424

304:                                              ; preds = %185
  %305 = landingpad { ptr, i32 }
          cleanup
  br label %311

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

308:                                              ; preds = %187
  %309 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #7
  br label %310

310:                                              ; preds = %308, %306
  %.pn117 = phi { ptr, i32 } [ %309, %308 ], [ %307, %306 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %47) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %46) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #7
  br label %311

311:                                              ; preds = %310, %304
  %.pn117.pn = phi { ptr, i32 } [ %.pn117, %310 ], [ %305, %304 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %45) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %44) #7
  br label %424

312:                                              ; preds = %188
  %313 = landingpad { ptr, i32 }
          cleanup
  br label %316

314:                                              ; preds = %189
  %315 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #7
  br label %316

316:                                              ; preds = %314, %312
  %.pn120 = phi { ptr, i32 } [ %315, %314 ], [ %313, %312 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %49) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %48) #7
  br label %424

317:                                              ; preds = %191
  %318 = landingpad { ptr, i32 }
          cleanup
  br label %324

319:                                              ; preds = %192
  %320 = landingpad { ptr, i32 }
          cleanup
  br label %323

321:                                              ; preds = %193
  %322 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #7
  br label %323

323:                                              ; preds = %321, %319
  %.pn122 = phi { ptr, i32 } [ %322, %321 ], [ %320, %319 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %53) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %52) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #7
  br label %324

324:                                              ; preds = %323, %317
  %.pn122.pn = phi { ptr, i32 } [ %.pn122, %323 ], [ %318, %317 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %51) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %50) #7
  br label %424

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

327:                                              ; preds = %197, %195
  %328 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %56) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #7
  br label %329

329:                                              ; preds = %327, %325
  %.pn125 = phi { ptr, i32 } [ %328, %327 ], [ %326, %325 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %55) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %54) #7
  br label %424

330:                                              ; preds = %198
  %331 = landingpad { ptr, i32 }
          cleanup
  br label %337

332:                                              ; preds = %199
  %333 = landingpad { ptr, i32 }
          cleanup
  br label %336

334:                                              ; preds = %200
  %335 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #7
  br label %336

336:                                              ; preds = %334, %332
  %.pn127 = phi { ptr, i32 } [ %335, %334 ], [ %333, %332 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %60) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %60) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %59) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #7
  br label %337

337:                                              ; preds = %336, %330
  %.pn127.pn = phi { ptr, i32 } [ %.pn127, %336 ], [ %331, %330 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %58) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %57) #7
  br label %424

338:                                              ; preds = %201
  %339 = landingpad { ptr, i32 }
          cleanup
  br label %342

340:                                              ; preds = %203, %202
  %341 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %63) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #7
  br label %342

342:                                              ; preds = %340, %338
  %.pn130 = phi { ptr, i32 } [ %341, %340 ], [ %339, %338 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %62) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %61) #7
  br label %424

343:                                              ; preds = %204
  %344 = landingpad { ptr, i32 }
          cleanup
  br label %350

345:                                              ; preds = %205
  %346 = landingpad { ptr, i32 }
          cleanup
  br label %349

347:                                              ; preds = %206
  %348 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #7
  br label %349

349:                                              ; preds = %347, %345
  %.pn132 = phi { ptr, i32 } [ %348, %347 ], [ %346, %345 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %67) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %67) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %66) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #7
  br label %350

350:                                              ; preds = %349, %343
  %.pn132.pn = phi { ptr, i32 } [ %.pn132, %349 ], [ %344, %343 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %65) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %65) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %64) #7
  br label %424

351:                                              ; preds = %207
  %352 = landingpad { ptr, i32 }
          cleanup
  br label %355

353:                                              ; preds = %210, %208
  %354 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %70) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #7
  br label %355

355:                                              ; preds = %353, %351
  %.pn135 = phi { ptr, i32 } [ %354, %353 ], [ %352, %351 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %69) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %69) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %68) #7
  br label %424

356:                                              ; preds = %211
  %357 = landingpad { ptr, i32 }
          cleanup
  br label %363

358:                                              ; preds = %212
  %359 = landingpad { ptr, i32 }
          cleanup
  br label %362

360:                                              ; preds = %213
  %361 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %73) #7
  br label %362

362:                                              ; preds = %360, %358
  %.pn137 = phi { ptr, i32 } [ %361, %360 ], [ %359, %358 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %74) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %74) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %73) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #7
  br label %363

363:                                              ; preds = %362, %356
  %.pn137.pn = phi { ptr, i32 } [ %.pn137, %362 ], [ %357, %356 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %72) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %72) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %71) #7
  br label %424

364:                                              ; preds = %214
  %365 = landingpad { ptr, i32 }
          cleanup
  br label %368

366:                                              ; preds = %215
  %367 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #7
  br label %368

368:                                              ; preds = %366, %364
  %.pn140 = phi { ptr, i32 } [ %367, %366 ], [ %365, %364 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %76) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %76) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %75) #7
  br label %424

369:                                              ; preds = %218
  %370 = landingpad { ptr, i32 }
          cleanup
  br label %376

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

373:                                              ; preds = %220
  %374 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %79) #7
  br label %375

375:                                              ; preds = %373, %371
  %.pn142 = phi { ptr, i32 } [ %374, %373 ], [ %372, %371 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %80) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %80) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %79) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %77) #7
  br label %376

376:                                              ; preds = %375, %369
  %.pn142.pn = phi { ptr, i32 } [ %.pn142, %375 ], [ %370, %369 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %78) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %78) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %77) #7
  br label %424

377:                                              ; preds = %221
  %378 = landingpad { ptr, i32 }
          cleanup
  br label %381

379:                                              ; preds = %222
  %380 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #7
  br label %381

381:                                              ; preds = %379, %377
  %.pn145 = phi { ptr, i32 } [ %380, %379 ], [ %378, %377 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %82) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %82) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %81) #7
  br label %424

382:                                              ; preds = %225
  %383 = landingpad { ptr, i32 }
          cleanup
  br label %389

384:                                              ; preds = %226
  %385 = landingpad { ptr, i32 }
          cleanup
  br label %388

386:                                              ; preds = %227
  %387 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %85) #7
  br label %388

388:                                              ; preds = %386, %384
  %.pn147 = phi { ptr, i32 } [ %387, %386 ], [ %385, %384 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %86) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %86) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %85) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %83) #7
  br label %389

389:                                              ; preds = %388, %382
  %.pn147.pn = phi { ptr, i32 } [ %.pn147, %388 ], [ %383, %382 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %84) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %84) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %83) #7
  br label %424

390:                                              ; preds = %228
  %391 = landingpad { ptr, i32 }
          cleanup
  br label %394

392:                                              ; preds = %229
  %393 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #7
  br label %394

394:                                              ; preds = %392, %390
  %.pn150 = phi { ptr, i32 } [ %393, %392 ], [ %391, %390 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %88) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %88) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %87) #7
  br label %424

395:                                              ; preds = %232
  %396 = landingpad { ptr, i32 }
          cleanup
  br label %402

397:                                              ; preds = %233
  %398 = landingpad { ptr, i32 }
          cleanup
  br label %401

399:                                              ; preds = %234
  %400 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %91) #7
  br label %401

401:                                              ; preds = %399, %397
  %.pn152 = phi { ptr, i32 } [ %400, %399 ], [ %398, %397 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %92) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %92) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %91) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %89) #7
  br label %402

402:                                              ; preds = %401, %395
  %.pn152.pn = phi { ptr, i32 } [ %.pn152, %401 ], [ %396, %395 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %90) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %90) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %89) #7
  br label %424

403:                                              ; preds = %235
  %404 = landingpad { ptr, i32 }
          cleanup
  br label %407

405:                                              ; preds = %236
  %406 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %93) #7
  br label %407

407:                                              ; preds = %405, %403
  %.pn155 = phi { ptr, i32 } [ %406, %405 ], [ %404, %403 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %94) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %94) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %93) #7
  br label %424

408:                                              ; preds = %239
  %409 = landingpad { ptr, i32 }
          cleanup
  br label %415

410:                                              ; preds = %240
  %411 = landingpad { ptr, i32 }
          cleanup
  br label %414

412:                                              ; preds = %241
  %413 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %97) #7
  br label %414

414:                                              ; preds = %412, %410
  %.pn157 = phi { ptr, i32 } [ %413, %412 ], [ %411, %410 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %98) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %98) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %97) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %95) #7
  br label %415

415:                                              ; preds = %414, %408
  %.pn157.pn = phi { ptr, i32 } [ %.pn157, %414 ], [ %409, %408 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %96) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %96) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %95) #7
  br label %424

416:                                              ; preds = %242
  %417 = landingpad { ptr, i32 }
          cleanup
  br label %423

418:                                              ; preds = %243
  %419 = landingpad { ptr, i32 }
          cleanup
  br label %422

420:                                              ; preds = %244
  %421 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %101) #7
  br label %422

422:                                              ; preds = %420, %418
  %.pn160 = phi { ptr, i32 } [ %421, %420 ], [ %419, %418 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %102) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %102) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %101) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %99) #7
  br label %423

423:                                              ; preds = %422, %416
  %.pn160.pn = phi { ptr, i32 } [ %.pn160, %422 ], [ %417, %416 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %100) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %100) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %99) #7
  br label %424

424:                                              ; preds = %423, %415, %407, %402, %394, %389, %381, %376, %368, %363, %355, %350, %342, %337, %329, %324, %316, %311, %303, %298, %290, %285, %277, %272, %264, %259, %251, %155, %142, %126
  %.pn160.pn.pn = phi { ptr, i32 } [ %.pn160.pn, %423 ], [ %.pn157.pn, %415 ], [ %.pn155, %407 ], [ %.pn152.pn, %402 ], [ %.pn150, %394 ], [ %.pn147.pn, %389 ], [ %.pn145, %381 ], [ %.pn142.pn, %376 ], [ %.pn140, %368 ], [ %.pn137.pn, %363 ], [ %.pn135, %355 ], [ %.pn132.pn, %350 ], [ %.pn130, %342 ], [ %.pn127.pn, %337 ], [ %.pn125, %329 ], [ %.pn122.pn, %324 ], [ %.pn120, %316 ], [ %.pn117.pn, %311 ], [ %.pn115, %303 ], [ %.pn112.pn, %298 ], [ %.pn110, %290 ], [ %.pn107.pn, %285 ], [ %.pn105, %277 ], [ %.pn102.pn, %272 ], [ %.pn100, %264 ], [ %.pn97.pn, %259 ], [ %.pn95, %251 ], [ %.pn92.pn, %155 ], [ %.pn87.pn, %142 ], [ %.pn.pn, %126 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #7
  resume { ptr, i32 } %.pn160.pn.pn
}

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

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

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

declare void @_ZN3vcl18check_opengl_errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) local_unnamed_addr #4

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

declare i32 @__gxx_personality_v0(...)

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

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

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #6

declare void @_ZN3vcl7uniformEjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_3matILm3ELm3EEE(i32 noundef, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 4 dereferenceable(36)) local_unnamed_addr #4

declare void @_ZN3vcl7uniformEjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_12buffer_stackIfLm3EEE(i32 noundef, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #4

declare void @_ZN3vcl7uniformEjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEf(i32 noundef, ptr noundef nonnull align 8 dereferenceable(32), float noundef) local_unnamed_addr #4

declare void @_ZN3vcl7uniformEjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_3matILm4ELm4EEE(i32 noundef, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 4 dereferenceable(64)) local_unnamed_addr #4

declare void @_ZNK3vcl21perspective_structure6matrixEv(ptr dead_on_unwind writable sret(%"struct.vcl::mat.22") align 4, ptr noundef nonnull align 4 dereferenceable(16)) local_unnamed_addr #4

declare void @_ZNK3vcl12camera_scene11view_matrixEv(ptr dead_on_unwind writable sret(%"struct.vcl::mat.22") align 4, ptr noundef nonnull align 4 dereferenceable(80)) local_unnamed_addr #4

declare { <2 x float>, float } @_ZNK3vcl12camera_scene15camera_positionEv(ptr noundef nonnull align 4 dereferenceable(80)) local_unnamed_addr #4

declare void @_ZN3vcl7uniformEjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi(i32 noundef, ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) local_unnamed_addr #4

declare void @_ZN3vcl4drawERKNS_22mesh_drawable_gpu_dataE(ptr noundef nonnull align 4 dereferenceable(28)) local_unnamed_addr #4

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

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="64" "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 = { 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 #2 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { 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 #6 = { noreturn 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 #7 = { nounwind }
attributes #8 = { noreturn 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, !17, i64 120}
!12 = !{!"_ZTSN3vcl13mesh_drawableE", !13, i64 0, !14, i64 28, !10, i64 124, !10, i64 128}
!13 = !{!"_ZTSN3vcl22mesh_drawable_gpu_dataE", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24}
!14 = !{!"_ZTSN3vcl21mesh_drawable_uniformE", !15, i64 0, !16, i64 64, !19, i64 76, !17, i64 92}
!15 = !{!"_ZTSN3vcl16affine_transformE", !16, i64 0, !18, i64 12, !17, i64 48, !16, i64 52}
!16 = !{!"_ZTSN3vcl12buffer_stackIfLm3EEE", !17, i64 0, !17, i64 4, !17, i64 8}
!17 = !{!"float", !7, i64 0}
!18 = !{!"_ZTSN3vcl3matILm3ELm3EEE", !17, i64 0, !17, i64 4, !17, i64 8, !17, i64 12, !17, i64 16, !17, i64 20, !17, i64 24, !17, i64 28, !17, i64 32}
!19 = !{!"_ZTSN3vcl12shading_meshE", !17, i64 0, !17, i64 4, !17, i64 8, !10, i64 12}
!20 = !{!12, !17, i64 76}
!21 = !{!12, !17, i64 104}
!22 = !{!12, !17, i64 108}
!23 = !{!12, !17, i64 112}
!24 = !{!12, !10, i64 116}


; Effective O3 passes: EarlyCSEPass,GlobalOptPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,SROAPass,SimplifyCFGPass,TailCallElimPass