; LLVM IR from Razakhel/RaZ :: examples (tessellationDemo)

; 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.Raz::Vector" = type { %"struct.std::array" }
%"struct.std::array" = type { [3 x float] }
%"class.Raz::Color" = type { %"class.Raz::Vector" }
%"class.std::basic_string_view" = type { i64, ptr }
%"class.Raz::Application" = type <{ %"class.std::vector", %"class.Raz::Bitset", %"struct.Raz::FrameTimeInfo", %"class.std::chrono::time_point", float, i8, [3 x i8] }>
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<std::unique_ptr<Raz::World>, std::allocator<std::unique_ptr<Raz::World>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::unique_ptr<Raz::World>, std::allocator<std::unique_ptr<Raz::World>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::unique_ptr<Raz::World>, std::allocator<std::unique_ptr<Raz::World>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::unique_ptr<Raz::World>, std::allocator<std::unique_ptr<Raz::World>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.Raz::Bitset" = type { %"class.std::vector.6" }
%"class.std::vector.6" = type { %"struct.std::_Bvector_base" }
%"struct.std::_Bvector_base" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" = type { %"struct.std::_Bit_iterator", %"struct.std::_Bit_iterator", ptr }
%"struct.std::_Bit_iterator" = type { %"struct.std::_Bit_iterator_base.base", [4 x i8] }
%"struct.std::_Bit_iterator_base.base" = type <{ ptr, i32 }>
%"struct.Raz::FrameTimeInfo" = type { float, float, i32, float }
%"class.std::chrono::time_point" = type { %"class.std::chrono::duration" }
%"class.std::chrono::duration" = type { i64 }
%"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.37" = type { i8 }
%"class.std::function.186" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon = type { ptr }
%"class.std::function.178" = type { %"class.std::_Function_base", ptr }
%class.anon.188 = type { ptr }
%"class.Raz::Mesh" = type { %"class.Raz::Component", %"class.std::vector.189", %"class.Raz::AABB" }
%"class.Raz::Component" = type { ptr }
%"class.std::vector.189" = type { %"struct.std::_Vector_base.190" }
%"struct.std::_Vector_base.190" = type { %"struct.std::_Vector_base<Raz::Submesh, std::allocator<Raz::Submesh>>::_Vector_impl" }
%"struct.std::_Vector_base<Raz::Submesh, std::allocator<Raz::Submesh>>::_Vector_impl" = type { %"struct.std::_Vector_base<Raz::Submesh, std::allocator<Raz::Submesh>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Raz::Submesh, std::allocator<Raz::Submesh>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.Raz::AABB" = type { %"class.Raz::Shape", %"class.Raz::Vector", %"class.Raz::Vector" }
%"class.Raz::Shape" = type { ptr }
%"struct.Raz::Vertex" = type { %"class.Raz::Vector", %"class.Raz::Vector.204", %"class.Raz::Vector", %"class.Raz::Vector" }
%"class.Raz::Vector.204" = type { %"struct.std::array.205" }
%"struct.std::array.205" = type { [2 x float] }
%"class.Raz::TessellationControlShader" = type { %"class.Raz::Shader" }
%"class.Raz::Shader" = type { ptr, %"class.Raz::OwnerValue", %"class.Raz::FilePath" }
%"class.Raz::OwnerValue" = type { i32 }
%"class.Raz::FilePath" = type { %"class.std::__cxx11::basic_string" }
%"class.Raz::TessellationEvaluationShader" = type { %"class.Raz::Shader" }
%class.anon.221 = type { ptr }
%class.anon.222 = type { ptr }
%class.anon.223 = type { ptr }
%class.anon.224 = type { ptr }
%class.anon.225 = type { i8 }
%class.anon.226 = type { i8 }
%class.anon.228 = type { ptr }

@_ZTISt9exception = external constant ptr
@.str = external hidden unnamed_addr constant [4 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [190 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@_ZN3Raz4AxisL1ZE = external hidden constant %"class.Raz::Vector", align 4
@_ZN3Raz11ColorPresetL5WhiteE = external hidden constant %"class.Raz::Color", align 4
@_ZN3Raz4AxisL1XE = external hidden constant %"class.Raz::Vector", align 4
@_ZN3Raz4AxisL1YE = external hidden constant %"class.Raz::Vector", align 4
@_ZN12_GLOBAL__N_114tessCtrlSourceE = external hidden constant %"class.std::basic_string_view", align 8
@_ZN12_GLOBAL__N_114tessEvalSourceE = external hidden constant %"class.std::basic_string_view", align 8
@.str.4 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [21 x i8], align 1

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

; Function Attrs: mustprogress norecurse uwtable
define dso_local noundef i32 @main() #1 personality ptr @__gxx_personality_v0 {
  %1 = alloca i32, align 4
  %2 = alloca %"class.Raz::Application", align 8
  %3 = alloca ptr, align 8
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca i1, align 1
  %12 = alloca %"class.std::allocator.37", align 1
  %13 = alloca i1, align 1
  %14 = alloca i1, align 1
  %15 = alloca i1, align 1
  %16 = alloca ptr, align 8
  %17 = alloca %"class.Raz::Vector", align 4
  %18 = alloca float, align 4
  %19 = alloca float, align 4
  %20 = alloca float, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca ptr, align 8
  %24 = alloca i32, align 4
  %25 = alloca %"class.Raz::Vector", align 4
  %26 = alloca { <2 x float>, float }, align 8
  %27 = alloca float, align 4
  %28 = alloca ptr, align 8
  %29 = alloca %"class.std::function.186", align 8
  %30 = alloca %class.anon, align 8
  %31 = alloca %"class.std::function.178", align 8
  %32 = alloca %"class.std::function.178", align 8
  %33 = alloca %class.anon.188, align 8
  %34 = alloca %"class.Raz::Mesh", align 8
  %35 = alloca ptr, align 8
  %36 = alloca %"struct.Raz::Vertex", align 4
  %37 = alloca float, align 4
  %38 = alloca float, align 4
  %39 = alloca float, align 4
  %40 = alloca { <2 x float>, float }, align 8
  %41 = alloca %"struct.Raz::Vertex", align 4
  %42 = alloca float, align 4
  %43 = alloca float, align 4
  %44 = alloca float, align 4
  %45 = alloca { <2 x float>, float }, align 8
  %46 = alloca %"struct.Raz::Vertex", align 4
  %47 = alloca float, align 4
  %48 = alloca float, align 4
  %49 = alloca float, align 4
  %50 = alloca { <2 x float>, float }, align 8
  %51 = alloca %"struct.Raz::Vertex", align 4
  %52 = alloca float, align 4
  %53 = alloca float, align 4
  %54 = alloca float, align 4
  %55 = alloca { <2 x float>, float }, align 8
  %56 = alloca %"struct.Raz::Vertex", align 4
  %57 = alloca float, align 4
  %58 = alloca float, align 4
  %59 = alloca float, align 4
  %60 = alloca { <2 x float>, float }, align 8
  %61 = alloca %"struct.Raz::Vertex", align 4
  %62 = alloca float, align 4
  %63 = alloca float, align 4
  %64 = alloca float, align 4
  %65 = alloca { <2 x float>, float }, align 8
  %66 = alloca %"struct.Raz::Vertex", align 4
  %67 = alloca float, align 4
  %68 = alloca float, align 4
  %69 = alloca float, align 4
  %70 = alloca { <2 x float>, float }, align 8
  %71 = alloca %"struct.Raz::Vertex", align 4
  %72 = alloca float, align 4
  %73 = alloca float, align 4
  %74 = alloca float, align 4
  %75 = alloca { <2 x float>, float }, align 8
  %76 = alloca %"struct.Raz::Vertex", align 4
  %77 = alloca float, align 4
  %78 = alloca float, align 4
  %79 = alloca float, align 4
  %80 = alloca %"struct.Raz::Vertex", align 4
  %81 = alloca float, align 4
  %82 = alloca float, align 4
  %83 = alloca float, align 4
  %84 = alloca %"struct.Raz::Vertex", align 4
  %85 = alloca float, align 4
  %86 = alloca float, align 4
  %87 = alloca float, align 4
  %88 = alloca %"struct.Raz::Vertex", align 4
  %89 = alloca float, align 4
  %90 = alloca float, align 4
  %91 = alloca float, align 4
  %92 = alloca %"struct.Raz::Vertex", align 4
  %93 = alloca float, align 4
  %94 = alloca float, align 4
  %95 = alloca float, align 4
  %96 = alloca { <2 x float>, float }, align 8
  %97 = alloca { <2 x float>, float }, align 8
  %98 = alloca %"struct.Raz::Vertex", align 4
  %99 = alloca float, align 4
  %100 = alloca float, align 4
  %101 = alloca float, align 4
  %102 = alloca { <2 x float>, float }, align 8
  %103 = alloca { <2 x float>, float }, align 8
  %104 = alloca %"struct.Raz::Vertex", align 4
  %105 = alloca float, align 4
  %106 = alloca float, align 4
  %107 = alloca float, align 4
  %108 = alloca { <2 x float>, float }, align 8
  %109 = alloca { <2 x float>, float }, align 8
  %110 = alloca %"struct.Raz::Vertex", align 4
  %111 = alloca float, align 4
  %112 = alloca float, align 4
  %113 = alloca float, align 4
  %114 = alloca { <2 x float>, float }, align 8
  %115 = alloca { <2 x float>, float }, align 8
  %116 = alloca %"struct.Raz::Vertex", align 4
  %117 = alloca float, align 4
  %118 = alloca float, align 4
  %119 = alloca float, align 4
  %120 = alloca %"struct.Raz::Vertex", align 4
  %121 = alloca float, align 4
  %122 = alloca float, align 4
  %123 = alloca float, align 4
  %124 = alloca %"struct.Raz::Vertex", align 4
  %125 = alloca float, align 4
  %126 = alloca float, align 4
  %127 = alloca float, align 4
  %128 = alloca %"struct.Raz::Vertex", align 4
  %129 = alloca float, align 4
  %130 = alloca float, align 4
  %131 = alloca float, align 4
  %132 = alloca %"struct.Raz::Vertex", align 4
  %133 = alloca float, align 4
  %134 = alloca float, align 4
  %135 = alloca float, align 4
  %136 = alloca { <2 x float>, float }, align 8
  %137 = alloca { <2 x float>, float }, align 8
  %138 = alloca %"struct.Raz::Vertex", align 4
  %139 = alloca float, align 4
  %140 = alloca float, align 4
  %141 = alloca float, align 4
  %142 = alloca { <2 x float>, float }, align 8
  %143 = alloca { <2 x float>, float }, align 8
  %144 = alloca %"struct.Raz::Vertex", align 4
  %145 = alloca float, align 4
  %146 = alloca float, align 4
  %147 = alloca float, align 4
  %148 = alloca { <2 x float>, float }, align 8
  %149 = alloca { <2 x float>, float }, align 8
  %150 = alloca %"struct.Raz::Vertex", align 4
  %151 = alloca float, align 4
  %152 = alloca float, align 4
  %153 = alloca float, align 4
  %154 = alloca { <2 x float>, float }, align 8
  %155 = alloca { <2 x float>, float }, align 8
  %156 = alloca ptr, align 8
  %157 = alloca ptr, align 8
  %158 = alloca ptr, align 8
  %159 = alloca i32, align 4
  %160 = alloca ptr, align 8
  %161 = alloca %"class.Raz::TessellationControlShader", align 8
  %162 = alloca %"class.std::basic_string_view", align 8
  %163 = alloca %"class.Raz::TessellationEvaluationShader", align 8
  %164 = alloca %"class.std::basic_string_view", align 8
  %165 = alloca ptr, align 8
  %166 = alloca %"class.std::__cxx11::basic_string", align 8
  %167 = alloca %"class.std::allocator.37", align 1
  %168 = alloca %"class.Raz::Vector.204", align 4
  %169 = alloca %"class.Raz::Vector.204", align 4
  %170 = alloca %"class.std::__cxx11::basic_string", align 8
  %171 = alloca %"class.std::allocator.37", align 1
  %172 = alloca %"class.std::function.186", align 8
  %173 = alloca %class.anon.221, align 8
  %174 = alloca %"class.std::__cxx11::basic_string", align 8
  %175 = alloca %"class.std::allocator.37", align 1
  %176 = alloca %"class.std::function.186", align 8
  %177 = alloca %class.anon.222, align 8
  %178 = alloca %"class.std::__cxx11::basic_string", align 8
  %179 = alloca %"class.std::allocator.37", align 1
  %180 = alloca %"class.std::function.178", align 8
  %181 = alloca %class.anon.223, align 8
  %182 = alloca %"class.std::function.178", align 8
  %183 = alloca %class.anon.224, align 8
  %184 = alloca %"class.std::__cxx11::basic_string", align 8
  %185 = alloca %"class.std::allocator.37", align 1
  %186 = alloca %"class.std::function.178", align 8
  %187 = alloca %class.anon.225, align 1
  %188 = alloca %"class.std::function.178", align 8
  %189 = alloca %class.anon.226, align 1
  %190 = alloca %class.anon.228, align 8
  %191 = alloca ptr, align 8
  %192 = alloca %"class.std::__cxx11::basic_string", align 8
  %193 = alloca %"class.std::__cxx11::basic_string", align 8
  store i32 0, ptr %1, align 4
  call void @llvm.lifetime.start.p0(i64 96, ptr %2) #12
  invoke void @_ZN3Raz11ApplicationC1Em(ptr noundef nonnull align 8 dereferenceable(93) %2, i64 noundef 1)
          to label %194 unwind label %224

194:                                              ; preds = %0
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #12
  store i32 2, ptr %6, align 4, !tbaa !5
  %195 = invoke noundef nonnull align 8 dereferenceable(104) ptr @_ZN3Raz11Application8addWorldIJiEEERNS_5WorldEDpOT_(ptr noundef nonnull align 8 dereferenceable(93) %2, ptr noundef nonnull align 4 dereferenceable(4) %6)
          to label %196 unwind label %228

196:                                              ; preds = %194
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #12
  store ptr %195, ptr %5, align 8, !tbaa !9
  invoke void @_ZN3Raz6Logger15setLoggingLevelENS_12LoggingLevelE(i32 noundef 5)
          to label %197 unwind label %232

197:                                              ; preds = %196
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #12
  %198 = load ptr, ptr %5, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #12
  store i32 1280, ptr %8, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #12
  store i32 720, ptr %9, align 4, !tbaa !5
  %199 = invoke noundef nonnull align 8 dereferenceable(776) ptr @_ZN3Raz5World9addSystemINS_12RenderSystemEJjjRA4_KcEEERT_DpOT0_(ptr noundef nonnull align 8 dereferenceable(104) %198, ptr noundef nonnull align 4 dereferenceable(4) %8, ptr noundef nonnull align 4 dereferenceable(4) %9, ptr noundef nonnull align 1 dereferenceable(4) @.str)
          to label %200 unwind label %236

200:                                              ; preds = %197
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #12
  store ptr %199, ptr %7, align 8, !tbaa !9
  %201 = call noundef zeroext i1 @_ZN3Raz8Renderer12checkVersionEii(i32 noundef 4, i32 noundef 0) #12
  store i1 false, ptr %11, align 1
  store i1 false, ptr %13, align 1
  store i1 false, ptr %14, align 1
  store i1 false, ptr %15, align 1
  br i1 %201, label %207, label %202

202:                                              ; preds = %200
  call void @llvm.lifetime.start.p0(i64 32, ptr %10) #12
  store i1 true, ptr %11, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %12) #12
  store i1 true, ptr %13, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #12
  store i1 true, ptr %14, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %203 unwind label %240

203:                                              ; preds = %202
  store i1 true, ptr %15, align 1
  %204 = invoke noundef zeroext i1 @_ZN3Raz8Renderer20isExtensionSupportedERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %10)
          to label %205 unwind label %244

205:                                              ; preds = %203
  %206 = xor i1 %204, true
  br label %207

207:                                              ; preds = %205, %200
  %208 = phi i1 [ false, %200 ], [ %206, %205 ]
  %209 = load i1, ptr %15, align 1
  br i1 %209, label %210, label %211

210:                                              ; preds = %207
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #12
  br label %211

211:                                              ; preds = %210, %207
  %212 = load i1, ptr %14, align 1
  br i1 %212, label %213, label %214

213:                                              ; preds = %211
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #12
  br label %214

214:                                              ; preds = %213, %211
  %215 = load i1, ptr %13, align 1
  br i1 %215, label %216, label %217

216:                                              ; preds = %214
  call void @llvm.lifetime.end.p0(i64 1, ptr %12) #12
  br label %217

217:                                              ; preds = %216, %214
  %218 = load i1, ptr %11, align 1
  br i1 %218, label %219, label %220

219:                                              ; preds = %217
  call void @llvm.lifetime.end.p0(i64 32, ptr %10) #12
  br label %220

220:                                              ; preds = %219, %217
  br i1 %208, label %221, label %269

221:                                              ; preds = %220
  %222 = call ptr @__cxa_allocate_exception(i64 16) #12
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %222, ptr noundef @.str.3)
          to label %223 unwind label %261

223:                                              ; preds = %221
  invoke void @__cxa_throw(ptr %222, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #13
          to label %910 unwind label %265

224:                                              ; preds = %0
  %225 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %226 = extractvalue { ptr, i32 } %225, 0
  store ptr %226, ptr %3, align 8
  %227 = extractvalue { ptr, i32 } %225, 1
  store i32 %227, ptr %4, align 4
  br label %870

228:                                              ; preds = %194
  %229 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %230 = extractvalue { ptr, i32 } %229, 0
  store ptr %230, ptr %3, align 8
  %231 = extractvalue { ptr, i32 } %229, 1
  store i32 %231, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #12
  br label %869

232:                                              ; preds = %196
  %233 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %234 = extractvalue { ptr, i32 } %233, 0
  store ptr %234, ptr %3, align 8
  %235 = extractvalue { ptr, i32 } %233, 1
  store i32 %235, ptr %4, align 4
  br label %869

236:                                              ; preds = %197
  %237 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %238 = extractvalue { ptr, i32 } %237, 0
  store ptr %238, ptr %3, align 8
  %239 = extractvalue { ptr, i32 } %237, 1
  store i32 %239, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #12
  br label %868

240:                                              ; preds = %202
  %241 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %242 = extractvalue { ptr, i32 } %241, 0
  store ptr %242, ptr %3, align 8
  %243 = extractvalue { ptr, i32 } %241, 1
  store i32 %243, ptr %4, align 4
  br label %251

244:                                              ; preds = %203
  %245 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %246 = extractvalue { ptr, i32 } %245, 0
  store ptr %246, ptr %3, align 8
  %247 = extractvalue { ptr, i32 } %245, 1
  store i32 %247, ptr %4, align 4
  %248 = load i1, ptr %15, align 1
  br i1 %248, label %249, label %250

249:                                              ; preds = %244
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #12
  br label %250

250:                                              ; preds = %249, %244
  br label %251

251:                                              ; preds = %250, %240
  %252 = load i1, ptr %14, align 1
  br i1 %252, label %253, label %254

253:                                              ; preds = %251
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #12
  br label %254

254:                                              ; preds = %253, %251
  %255 = load i1, ptr %13, align 1
  br i1 %255, label %256, label %257

256:                                              ; preds = %254
  call void @llvm.lifetime.end.p0(i64 1, ptr %12) #12
  br label %257

257:                                              ; preds = %256, %254
  %258 = load i1, ptr %11, align 1
  br i1 %258, label %259, label %260

259:                                              ; preds = %257
  call void @llvm.lifetime.end.p0(i64 32, ptr %10) #12
  br label %260

260:                                              ; preds = %259, %257
  br label %868

261:                                              ; preds = %221
  %262 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %263 = extractvalue { ptr, i32 } %262, 0
  store ptr %263, ptr %3, align 8
  %264 = extractvalue { ptr, i32 } %262, 1
  store i32 %264, ptr %4, align 4
  call void @__cxa_free_exception(ptr %222) #12
  br label %868

265:                                              ; preds = %223
  %266 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %267 = extractvalue { ptr, i32 } %266, 0
  store ptr %267, ptr %3, align 8
  %268 = extractvalue { ptr, i32 } %266, 1
  store i32 %268, ptr %4, align 4
  br label %868

269:                                              ; preds = %220
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #12
  %270 = load ptr, ptr %5, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 12, ptr %17) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #12
  store float 0.000000e+00, ptr %18, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #12
  store float 0.000000e+00, ptr %19, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #12
  store float 5.000000e+00, ptr %20, align 4, !tbaa !11
  call void @_ZN3Raz6VectorIfLm3EEC2IJfffEvvEEDpOT_(ptr noundef nonnull align 4 dereferenceable(12) %17, ptr noundef nonnull align 4 dereferenceable(4) %18, ptr noundef nonnull align 4 dereferenceable(4) %19, ptr noundef nonnull align 4 dereferenceable(4) %20) #12
  %271 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZN3Raz5World22addEntityWithComponentINS_9TransformEJNS_6VectorIfLm3EEEEEERNS_6EntityEDpOT0_(ptr noundef nonnull align 8 dereferenceable(104) %270, ptr noundef nonnull align 4 dereferenceable(12) %17)
          to label %272 unwind label %606

272:                                              ; preds = %269
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #12
  call void @llvm.lifetime.end.p0(i64 12, ptr %17) #12
  store ptr %271, ptr %16, align 8, !tbaa !9
  %273 = load ptr, ptr %16, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #12
  %274 = load ptr, ptr %7, align 8, !tbaa !9
  %275 = invoke noundef nonnull align 8 dereferenceable(273) ptr @_ZN3Raz12RenderSystem9getWindowEv(ptr noundef nonnull align 8 dereferenceable(776) %274)
          to label %276 unwind label %610

276:                                              ; preds = %272
  %277 = invoke noundef i32 @_ZNK3Raz6Window8getWidthEv(ptr noundef nonnull align 8 dereferenceable(273) %275)
          to label %278 unwind label %610

278:                                              ; preds = %276
  store i32 %277, ptr %21, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #12
  %279 = load ptr, ptr %7, align 8, !tbaa !9
  %280 = invoke noundef nonnull align 8 dereferenceable(273) ptr @_ZN3Raz12RenderSystem9getWindowEv(ptr noundef nonnull align 8 dereferenceable(776) %279)
          to label %281 unwind label %614

281:                                              ; preds = %278
  %282 = invoke noundef i32 @_ZNK3Raz6Window9getHeightEv(ptr noundef nonnull align 8 dereferenceable(273) %280)
          to label %283 unwind label %614

283:                                              ; preds = %281
  store i32 %282, ptr %22, align 4, !tbaa !5
  %284 = invoke noundef nonnull align 8 dereferenceable(312) ptr @_ZN3Raz6Entity12addComponentINS_6CameraEJjjEEERT_DpOT0_(ptr noundef nonnull align 8 dereferenceable(80) %273, ptr noundef nonnull align 4 dereferenceable(4) %21, ptr noundef nonnull align 4 dereferenceable(4) %22)
          to label %285 unwind label %614

285:                                              ; preds = %283
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #12
  %286 = load ptr, ptr %5, align 8, !tbaa !9
  %287 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZN3Raz5World22addEntityWithComponentINS_9TransformEJEEERNS_6EntityEDpOT0_(ptr noundef nonnull align 8 dereferenceable(104) %286)
          to label %288 unwind label %619

288:                                              ; preds = %285
  store ptr %287, ptr %23, align 8, !tbaa !9
  %289 = load ptr, ptr %23, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #12
  store i32 1, ptr %24, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 12, ptr %25) #12
  %290 = call { <2 x float>, float } @_ZNK3Raz6VectorIfLm3EEngEv(ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1ZE) #12
  %291 = getelementptr inbounds %"class.Raz::Vector", ptr %25, i32 0, i32 0
  %292 = getelementptr inbounds %"struct.std::array", ptr %291, i32 0, i32 0
  store { <2 x float>, float } %290, ptr %26, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %292, ptr align 8 %26, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #12
  store float 3.000000e+00, ptr %27, align 4, !tbaa !11
  %293 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN3Raz6Entity12addComponentINS_5LightEJNS_9LightTypeENS_6VectorIfLm3EEEfRKNS_5ColorEEEERT_DpOT0_(ptr noundef nonnull align 8 dereferenceable(80) %289, ptr noundef nonnull align 4 dereferenceable(4) %24, ptr noundef nonnull align 4 dereferenceable(12) %25, ptr noundef nonnull align 4 dereferenceable(4) %27, ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz11ColorPresetL5WhiteE)
          to label %294 unwind label %623

294:                                              ; preds = %288
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #12
  call void @llvm.lifetime.end.p0(i64 12, ptr %25) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #12
  %295 = load ptr, ptr %5, align 8, !tbaa !9
  %296 = invoke noundef nonnull align 8 dereferenceable(776) ptr @_ZN3Raz5World9getSystemINS_12RenderSystemEEERT_v(ptr noundef nonnull align 8 dereferenceable(104) %295)
          to label %297 unwind label %627

297:                                              ; preds = %294
  %298 = invoke noundef nonnull align 8 dereferenceable(273) ptr @_ZN3Raz12RenderSystem9getWindowEv(ptr noundef nonnull align 8 dereferenceable(776) %296)
          to label %299 unwind label %627

299:                                              ; preds = %297
  store ptr %298, ptr %28, align 8, !tbaa !9
  %300 = load ptr, ptr %28, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #12
  %301 = getelementptr inbounds %class.anon, ptr %30, i32 0, i32 0
  store ptr %2, ptr %301, align 8, !tbaa !9
  call void @"_ZNSt8functionIFvfEEC2IZ4mainE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef nonnull align 8 dereferenceable(8) %30) #12
  call void @_ZNSt8functionIFvvEEC2EDn(ptr noundef nonnull align 8 dereferenceable(32) %31, ptr null) #12
  invoke void @_ZN3Raz6Window14addKeyCallbackENS_8Keyboard3KeyESt8functionIFvfEENS_5Input13ActionTriggerES3_IFvvEE(ptr noundef nonnull align 8 dereferenceable(273) %300, i32 noundef 256, ptr noundef %29, i32 noundef 1, ptr noundef %31)
          to label %302 unwind label %631

302:                                              ; preds = %299
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #12
  %303 = load ptr, ptr %28, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #12
  %304 = getelementptr inbounds %class.anon.188, ptr %33, i32 0, i32 0
  store ptr %2, ptr %304, align 8, !tbaa !9
  call void @"_ZNSt8functionIFvvEEC2IZ4mainE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef nonnull align 8 dereferenceable(8) %33) #12
  invoke void @_ZN3Raz6Window16setCloseCallbackESt8functionIFvvEE(ptr noundef nonnull align 8 dereferenceable(273) %303, ptr noundef %32)
          to label %305 unwind label %635

305:                                              ; preds = %302
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #12
  invoke void @_ZN3Raz8Renderer14setPolygonModeENS_15FaceOrientationENS_11PolygonModeE(i32 noundef 1032, i32 noundef 6913)
          to label %306 unwind label %627

306:                                              ; preds = %305
  call void @llvm.lifetime.start.p0(i64 64, ptr %34) #12
  call void @_ZN3Raz4MeshC2Ev(ptr noundef nonnull align 8 dereferenceable(64) %34) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #12
  %307 = invoke noundef nonnull align 8 dereferenceable(104) ptr @_ZN3Raz4Mesh10addSubmeshIJEEERNS_7SubmeshEDpOT_(ptr noundef nonnull align 8 dereferenceable(64) %34)
          to label %308 unwind label %639

308:                                              ; preds = %306
  %309 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3Raz7Submesh11getVerticesEv(ptr noundef nonnull align 8 dereferenceable(104) %307)
          to label %310 unwind label %639

310:                                              ; preds = %308
  store ptr %309, ptr %35, align 8, !tbaa !9
  %311 = load ptr, ptr %35, align 8, !tbaa !9
  invoke void @_ZNSt6vectorIN3Raz6VertexESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %311, i64 noundef 24)
          to label %312 unwind label %639

312:                                              ; preds = %310
  %313 = load ptr, ptr %35, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 44, ptr %36) #12
  %314 = getelementptr inbounds %"struct.Raz::Vertex", ptr %36, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #12
  store float 0x3FE279A6C0000000, ptr %37, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #12
  store float 0xBFE279A6C0000000, ptr %38, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #12
  store float 0x3FE279A6C0000000, ptr %39, align 4, !tbaa !11
  call void @_ZN3Raz6VectorIfLm3EEC2IJfffEvvEEDpOT_(ptr noundef nonnull align 4 dereferenceable(12) %314, ptr noundef nonnull align 4 dereferenceable(4) %37, ptr noundef nonnull align 4 dereferenceable(4) %38, ptr noundef nonnull align 4 dereferenceable(4) %39) #12
  %315 = getelementptr inbounds %"struct.Raz::Vertex", ptr %36, i32 0, i32 1
  call void @llvm.memset.p0.i64(ptr align 4 %315, i8 0, i64 8, i1 false)
  call void @_ZN3Raz6VectorIfLm2EEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %315) #12
  %316 = getelementptr inbounds %"struct.Raz::Vertex", ptr %36, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %316, ptr align 4 @_ZN3Raz4AxisL1XE, i64 12, i1 false), !tbaa.struct !15
  %317 = getelementptr inbounds %"struct.Raz::Vertex", ptr %36, i32 0, i32 3
  %318 = call { <2 x float>, float } @_ZNK3Raz6VectorIfLm3EEngEv(ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1ZE) #12
  %319 = getelementptr inbounds %"class.Raz::Vector", ptr %317, i32 0, i32 0
  %320 = getelementptr inbounds %"struct.std::array", ptr %319, i32 0, i32 0
  store { <2 x float>, float } %318, ptr %40, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %320, ptr align 8 %40, i64 12, i1 false)
  %321 = invoke noundef nonnull align 4 dereferenceable(44) ptr @_ZNSt6vectorIN3Raz6VertexESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %313, ptr noundef nonnull align 4 dereferenceable(44) %36)
          to label %322 unwind label %643

322:                                              ; preds = %312
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #12
  call void @llvm.lifetime.end.p0(i64 44, ptr %36) #12
  %323 = load ptr, ptr %35, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 44, ptr %41) #12
  %324 = getelementptr inbounds %"struct.Raz::Vertex", ptr %41, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #12
  store float 0x3FE279A6C0000000, ptr %42, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #12
  store float 0x3FE279A6C0000000, ptr %43, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #12
  store float 0x3FE279A6C0000000, ptr %44, align 4, !tbaa !11
  call void @_ZN3Raz6VectorIfLm3EEC2IJfffEvvEEDpOT_(ptr noundef nonnull align 4 dereferenceable(12) %324, ptr noundef nonnull align 4 dereferenceable(4) %42, ptr noundef nonnull align 4 dereferenceable(4) %43, ptr noundef nonnull align 4 dereferenceable(4) %44) #12
  %325 = getelementptr inbounds %"struct.Raz::Vertex", ptr %41, i32 0, i32 1
  call void @llvm.memset.p0.i64(ptr align 4 %325, i8 0, i64 8, i1 false)
  call void @_ZN3Raz6VectorIfLm2EEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %325) #12
  %326 = getelementptr inbounds %"struct.Raz::Vertex", ptr %41, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %326, ptr align 4 @_ZN3Raz4AxisL1XE, i64 12, i1 false), !tbaa.struct !15
  %327 = getelementptr inbounds %"struct.Raz::Vertex", ptr %41, i32 0, i32 3
  %328 = call { <2 x float>, float } @_ZNK3Raz6VectorIfLm3EEngEv(ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1ZE) #12
  %329 = getelementptr inbounds %"class.Raz::Vector", ptr %327, i32 0, i32 0
  %330 = getelementptr inbounds %"struct.std::array", ptr %329, i32 0, i32 0
  store { <2 x float>, float } %328, ptr %45, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %330, ptr align 8 %45, i64 12, i1 false)
  %331 = invoke noundef nonnull align 4 dereferenceable(44) ptr @_ZNSt6vectorIN3Raz6VertexESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %323, ptr noundef nonnull align 4 dereferenceable(44) %41)
          to label %332 unwind label %647

332:                                              ; preds = %322
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #12
  call void @llvm.lifetime.end.p0(i64 44, ptr %41) #12
  %333 = load ptr, ptr %35, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 44, ptr %46) #12
  %334 = getelementptr inbounds %"struct.Raz::Vertex", ptr %46, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #12
  store float 0x3FE279A6C0000000, ptr %47, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #12
  store float 0xBFE279A6C0000000, ptr %48, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #12
  store float 0xBFE279A6C0000000, ptr %49, align 4, !tbaa !11
  call void @_ZN3Raz6VectorIfLm3EEC2IJfffEvvEEDpOT_(ptr noundef nonnull align 4 dereferenceable(12) %334, ptr noundef nonnull align 4 dereferenceable(4) %47, ptr noundef nonnull align 4 dereferenceable(4) %48, ptr noundef nonnull align 4 dereferenceable(4) %49) #12
  %335 = getelementptr inbounds %"struct.Raz::Vertex", ptr %46, i32 0, i32 1
  call void @llvm.memset.p0.i64(ptr align 4 %335, i8 0, i64 8, i1 false)
  call void @_ZN3Raz6VectorIfLm2EEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %335) #12
  %336 = getelementptr inbounds %"struct.Raz::Vertex", ptr %46, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %336, ptr align 4 @_ZN3Raz4AxisL1XE, i64 12, i1 false), !tbaa.struct !15
  %337 = getelementptr inbounds %"struct.Raz::Vertex", ptr %46, i32 0, i32 3
  %338 = call { <2 x float>, float } @_ZNK3Raz6VectorIfLm3EEngEv(ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1ZE) #12
  %339 = getelementptr inbounds %"class.Raz::Vector", ptr %337, i32 0, i32 0
  %340 = getelementptr inbounds %"struct.std::array", ptr %339, i32 0, i32 0
  store { <2 x float>, float } %338, ptr %50, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %340, ptr align 8 %50, i64 12, i1 false)
  %341 = invoke noundef nonnull align 4 dereferenceable(44) ptr @_ZNSt6vectorIN3Raz6VertexESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %333, ptr noundef nonnull align 4 dereferenceable(44) %46)
          to label %342 unwind label %651

342:                                              ; preds = %332
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #12
  call void @llvm.lifetime.end.p0(i64 44, ptr %46) #12
  %343 = load ptr, ptr %35, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 44, ptr %51) #12
  %344 = getelementptr inbounds %"struct.Raz::Vertex", ptr %51, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #12
  store float 0x3FE279A6C0000000, ptr %52, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #12
  store float 0x3FE279A6C0000000, ptr %53, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #12
  store float 0xBFE279A6C0000000, ptr %54, align 4, !tbaa !11
  call void @_ZN3Raz6VectorIfLm3EEC2IJfffEvvEEDpOT_(ptr noundef nonnull align 4 dereferenceable(12) %344, ptr noundef nonnull align 4 dereferenceable(4) %52, ptr noundef nonnull align 4 dereferenceable(4) %53, ptr noundef nonnull align 4 dereferenceable(4) %54) #12
  %345 = getelementptr inbounds %"struct.Raz::Vertex", ptr %51, i32 0, i32 1
  call void @llvm.memset.p0.i64(ptr align 4 %345, i8 0, i64 8, i1 false)
  call void @_ZN3Raz6VectorIfLm2EEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %345) #12
  %346 = getelementptr inbounds %"struct.Raz::Vertex", ptr %51, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %346, ptr align 4 @_ZN3Raz4AxisL1XE, i64 12, i1 false), !tbaa.struct !15
  %347 = getelementptr inbounds %"struct.Raz::Vertex", ptr %51, i32 0, i32 3
  %348 = call { <2 x float>, float } @_ZNK3Raz6VectorIfLm3EEngEv(ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1ZE) #12
  %349 = getelementptr inbounds %"class.Raz::Vector", ptr %347, i32 0, i32 0
  %350 = getelementptr inbounds %"struct.std::array", ptr %349, i32 0, i32 0
  store { <2 x float>, float } %348, ptr %55, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %350, ptr align 8 %55, i64 12, i1 false)
  %351 = invoke noundef nonnull align 4 dereferenceable(44) ptr @_ZNSt6vectorIN3Raz6VertexESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %343, ptr noundef nonnull align 4 dereferenceable(44) %51)
          to label %352 unwind label %655

352:                                              ; preds = %342
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #12
  call void @llvm.lifetime.end.p0(i64 44, ptr %51) #12
  %353 = load ptr, ptr %35, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 44, ptr %56) #12
  %354 = getelementptr inbounds %"struct.Raz::Vertex", ptr %56, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #12
  store float 0xBFE279A6C0000000, ptr %57, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #12
  store float 0xBFE279A6C0000000, ptr %58, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #12
  store float 0xBFE279A6C0000000, ptr %59, align 4, !tbaa !11
  call void @_ZN3Raz6VectorIfLm3EEC2IJfffEvvEEDpOT_(ptr noundef nonnull align 4 dereferenceable(12) %354, ptr noundef nonnull align 4 dereferenceable(4) %57, ptr noundef nonnull align 4 dereferenceable(4) %58, ptr noundef nonnull align 4 dereferenceable(4) %59) #12
  %355 = getelementptr inbounds %"struct.Raz::Vertex", ptr %56, i32 0, i32 1
  call void @llvm.memset.p0.i64(ptr align 4 %355, i8 0, i64 8, i1 false)
  call void @_ZN3Raz6VectorIfLm2EEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %355) #12
  %356 = getelementptr inbounds %"struct.Raz::Vertex", ptr %56, i32 0, i32 2
  %357 = call { <2 x float>, float } @_ZNK3Raz6VectorIfLm3EEngEv(ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1XE) #12
  %358 = getelementptr inbounds %"class.Raz::Vector", ptr %356, i32 0, i32 0
  %359 = getelementptr inbounds %"struct.std::array", ptr %358, i32 0, i32 0
  store { <2 x float>, float } %357, ptr %60, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %359, ptr align 8 %60, i64 12, i1 false)
  %360 = getelementptr inbounds %"struct.Raz::Vertex", ptr %56, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %360, ptr align 4 @_ZN3Raz4AxisL1ZE, i64 12, i1 false), !tbaa.struct !15
  %361 = invoke noundef nonnull align 4 dereferenceable(44) ptr @_ZNSt6vectorIN3Raz6VertexESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %353, ptr noundef nonnull align 4 dereferenceable(44) %56)
          to label %362 unwind label %659

362:                                              ; preds = %352
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #12
  call void @llvm.lifetime.end.p0(i64 44, ptr %56) #12
  %363 = load ptr, ptr %35, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 44, ptr %61) #12
  %364 = getelementptr inbounds %"struct.Raz::Vertex", ptr %61, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #12
  store float 0xBFE279A6C0000000, ptr %62, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #12
  store float 0x3FE279A6C0000000, ptr %63, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #12
  store float 0xBFE279A6C0000000, ptr %64, align 4, !tbaa !11
  call void @_ZN3Raz6VectorIfLm3EEC2IJfffEvvEEDpOT_(ptr noundef nonnull align 4 dereferenceable(12) %364, ptr noundef nonnull align 4 dereferenceable(4) %62, ptr noundef nonnull align 4 dereferenceable(4) %63, ptr noundef nonnull align 4 dereferenceable(4) %64) #12
  %365 = getelementptr inbounds %"struct.Raz::Vertex", ptr %61, i32 0, i32 1
  call void @llvm.memset.p0.i64(ptr align 4 %365, i8 0, i64 8, i1 false)
  call void @_ZN3Raz6VectorIfLm2EEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %365) #12
  %366 = getelementptr inbounds %"struct.Raz::Vertex", ptr %61, i32 0, i32 2
  %367 = call { <2 x float>, float } @_ZNK3Raz6VectorIfLm3EEngEv(ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1XE) #12
  %368 = getelementptr inbounds %"class.Raz::Vector", ptr %366, i32 0, i32 0
  %369 = getelementptr inbounds %"struct.std::array", ptr %368, i32 0, i32 0
  store { <2 x float>, float } %367, ptr %65, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %369, ptr align 8 %65, i64 12, i1 false)
  %370 = getelementptr inbounds %"struct.Raz::Vertex", ptr %61, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %370, ptr align 4 @_ZN3Raz4AxisL1ZE, i64 12, i1 false), !tbaa.struct !15
  %371 = invoke noundef nonnull align 4 dereferenceable(44) ptr @_ZNSt6vectorIN3Raz6VertexESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %363, ptr noundef nonnull align 4 dereferenceable(44) %61)
          to label %372 unwind label %663

372:                                              ; preds = %362
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #12
  call void @llvm.lifetime.end.p0(i64 44, ptr %61) #12
  %373 = load ptr, ptr %35, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 44, ptr %66) #12
  %374 = getelementptr inbounds %"struct.Raz::Vertex", ptr %66, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #12
  store float 0xBFE279A6C0000000, ptr %67, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #12
  store float 0xBFE279A6C0000000, ptr %68, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #12
  store float 0x3FE279A6C0000000, ptr %69, align 4, !tbaa !11
  call void @_ZN3Raz6VectorIfLm3EEC2IJfffEvvEEDpOT_(ptr noundef nonnull align 4 dereferenceable(12) %374, ptr noundef nonnull align 4 dereferenceable(4) %67, ptr noundef nonnull align 4 dereferenceable(4) %68, ptr noundef nonnull align 4 dereferenceable(4) %69) #12
  %375 = getelementptr inbounds %"struct.Raz::Vertex", ptr %66, i32 0, i32 1
  call void @llvm.memset.p0.i64(ptr align 4 %375, i8 0, i64 8, i1 false)
  call void @_ZN3Raz6VectorIfLm2EEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %375) #12
  %376 = getelementptr inbounds %"struct.Raz::Vertex", ptr %66, i32 0, i32 2
  %377 = call { <2 x float>, float } @_ZNK3Raz6VectorIfLm3EEngEv(ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1XE) #12
  %378 = getelementptr inbounds %"class.Raz::Vector", ptr %376, i32 0, i32 0
  %379 = getelementptr inbounds %"struct.std::array", ptr %378, i32 0, i32 0
  store { <2 x float>, float } %377, ptr %70, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %379, ptr align 8 %70, i64 12, i1 false)
  %380 = getelementptr inbounds %"struct.Raz::Vertex", ptr %66, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %380, ptr align 4 @_ZN3Raz4AxisL1ZE, i64 12, i1 false), !tbaa.struct !15
  %381 = invoke noundef nonnull align 4 dereferenceable(44) ptr @_ZNSt6vectorIN3Raz6VertexESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %373, ptr noundef nonnull align 4 dereferenceable(44) %66)
          to label %382 unwind label %667

382:                                              ; preds = %372
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #12
  call void @llvm.lifetime.end.p0(i64 44, ptr %66) #12
  %383 = load ptr, ptr %35, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 44, ptr %71) #12
  %384 = getelementptr inbounds %"struct.Raz::Vertex", ptr %71, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #12
  store float 0xBFE279A6C0000000, ptr %72, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #12
  store float 0x3FE279A6C0000000, ptr %73, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #12
  store float 0x3FE279A6C0000000, ptr %74, align 4, !tbaa !11
  call void @_ZN3Raz6VectorIfLm3EEC2IJfffEvvEEDpOT_(ptr noundef nonnull align 4 dereferenceable(12) %384, ptr noundef nonnull align 4 dereferenceable(4) %72, ptr noundef nonnull align 4 dereferenceable(4) %73, ptr noundef nonnull align 4 dereferenceable(4) %74) #12
  %385 = getelementptr inbounds %"struct.Raz::Vertex", ptr %71, i32 0, i32 1
  call void @llvm.memset.p0.i64(ptr align 4 %385, i8 0, i64 8, i1 false)
  call void @_ZN3Raz6VectorIfLm2EEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %385) #12
  %386 = getelementptr inbounds %"struct.Raz::Vertex", ptr %71, i32 0, i32 2
  %387 = call { <2 x float>, float } @_ZNK3Raz6VectorIfLm3EEngEv(ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1XE) #12
  %388 = getelementptr inbounds %"class.Raz::Vector", ptr %386, i32 0, i32 0
  %389 = getelementptr inbounds %"struct.std::array", ptr %388, i32 0, i32 0
  store { <2 x float>, float } %387, ptr %75, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %389, ptr align 8 %75, i64 12, i1 false)
  %390 = getelementptr inbounds %"struct.Raz::Vertex", ptr %71, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %390, ptr align 4 @_ZN3Raz4AxisL1ZE, i64 12, i1 false), !tbaa.struct !15
  %391 = invoke noundef nonnull align 4 dereferenceable(44) ptr @_ZNSt6vectorIN3Raz6VertexESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %383, ptr noundef nonnull align 4 dereferenceable(44) %71)
          to label %392 unwind label %671

392:                                              ; preds = %382
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #12
  call void @llvm.lifetime.end.p0(i64 44, ptr %71) #12
  %393 = load ptr, ptr %35, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 44, ptr %76) #12
  %394 = getelementptr inbounds %"struct.Raz::Vertex", ptr %76, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #12
  store float 0xBFE279A6C0000000, ptr %77, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %78) #12
  store float 0x3FE279A6C0000000, ptr %78, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #12
  store float 0x3FE279A6C0000000, ptr %79, align 4, !tbaa !11
  call void @_ZN3Raz6VectorIfLm3EEC2IJfffEvvEEDpOT_(ptr noundef nonnull align 4 dereferenceable(12) %394, ptr noundef nonnull align 4 dereferenceable(4) %77, ptr noundef nonnull align 4 dereferenceable(4) %78, ptr noundef nonnull align 4 dereferenceable(4) %79) #12
  %395 = getelementptr inbounds %"struct.Raz::Vertex", ptr %76, i32 0, i32 1
  call void @llvm.memset.p0.i64(ptr align 4 %395, i8 0, i64 8, i1 false)
  call void @_ZN3Raz6VectorIfLm2EEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %395) #12
  %396 = getelementptr inbounds %"struct.Raz::Vertex", ptr %76, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %396, ptr align 4 @_ZN3Raz4AxisL1YE, i64 12, i1 false), !tbaa.struct !15
  %397 = getelementptr inbounds %"struct.Raz::Vertex", ptr %76, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %397, ptr align 4 @_ZN3Raz4AxisL1XE, i64 12, i1 false), !tbaa.struct !15
  %398 = invoke noundef nonnull align 4 dereferenceable(44) ptr @_ZNSt6vectorIN3Raz6VertexESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %393, ptr noundef nonnull align 4 dereferenceable(44) %76)
          to label %399 unwind label %675

399:                                              ; preds = %392
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #12
  call void @llvm.lifetime.end.p0(i64 44, ptr %76) #12
  %400 = load ptr, ptr %35, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 44, ptr %80) #12
  %401 = getelementptr inbounds %"struct.Raz::Vertex", ptr %80, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #12
  store float 0xBFE279A6C0000000, ptr %81, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #12
  store float 0x3FE279A6C0000000, ptr %82, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %83) #12
  store float 0xBFE279A6C0000000, ptr %83, align 4, !tbaa !11
  call void @_ZN3Raz6VectorIfLm3EEC2IJfffEvvEEDpOT_(ptr noundef nonnull align 4 dereferenceable(12) %401, ptr noundef nonnull align 4 dereferenceable(4) %81, ptr noundef nonnull align 4 dereferenceable(4) %82, ptr noundef nonnull align 4 dereferenceable(4) %83) #12
  %402 = getelementptr inbounds %"struct.Raz::Vertex", ptr %80, i32 0, i32 1
  call void @llvm.memset.p0.i64(ptr align 4 %402, i8 0, i64 8, i1 false)
  call void @_ZN3Raz6VectorIfLm2EEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %402) #12
  %403 = getelementptr inbounds %"struct.Raz::Vertex", ptr %80, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %403, ptr align 4 @_ZN3Raz4AxisL1YE, i64 12, i1 false), !tbaa.struct !15
  %404 = getelementptr inbounds %"struct.Raz::Vertex", ptr %80, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %404, ptr align 4 @_ZN3Raz4AxisL1XE, i64 12, i1 false), !tbaa.struct !15
  %405 = invoke noundef nonnull align 4 dereferenceable(44) ptr @_ZNSt6vectorIN3Raz6VertexESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %400, ptr noundef nonnull align 4 dereferenceable(44) %80)
          to label %406 unwind label %679

406:                                              ; preds = %399
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #12
  call void @llvm.lifetime.end.p0(i64 44, ptr %80) #12
  %407 = load ptr, ptr %35, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 44, ptr %84) #12
  %408 = getelementptr inbounds %"struct.Raz::Vertex", ptr %84, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 4, ptr %85) #12
  store float 0x3FE279A6C0000000, ptr %85, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %86) #12
  store float 0x3FE279A6C0000000, ptr %86, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %87) #12
  store float 0x3FE279A6C0000000, ptr %87, align 4, !tbaa !11
  call void @_ZN3Raz6VectorIfLm3EEC2IJfffEvvEEDpOT_(ptr noundef nonnull align 4 dereferenceable(12) %408, ptr noundef nonnull align 4 dereferenceable(4) %85, ptr noundef nonnull align 4 dereferenceable(4) %86, ptr noundef nonnull align 4 dereferenceable(4) %87) #12
  %409 = getelementptr inbounds %"struct.Raz::Vertex", ptr %84, i32 0, i32 1
  call void @llvm.memset.p0.i64(ptr align 4 %409, i8 0, i64 8, i1 false)
  call void @_ZN3Raz6VectorIfLm2EEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %409) #12
  %410 = getelementptr inbounds %"struct.Raz::Vertex", ptr %84, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %410, ptr align 4 @_ZN3Raz4AxisL1YE, i64 12, i1 false), !tbaa.struct !15
  %411 = getelementptr inbounds %"struct.Raz::Vertex", ptr %84, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %411, ptr align 4 @_ZN3Raz4AxisL1XE, i64 12, i1 false), !tbaa.struct !15
  %412 = invoke noundef nonnull align 4 dereferenceable(44) ptr @_ZNSt6vectorIN3Raz6VertexESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %407, ptr noundef nonnull align 4 dereferenceable(44) %84)
          to label %413 unwind label %683

413:                                              ; preds = %406
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #12
  call void @llvm.lifetime.end.p0(i64 44, ptr %84) #12
  %414 = load ptr, ptr %35, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 44, ptr %88) #12
  %415 = getelementptr inbounds %"struct.Raz::Vertex", ptr %88, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 4, ptr %89) #12
  store float 0x3FE279A6C0000000, ptr %89, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %90) #12
  store float 0x3FE279A6C0000000, ptr %90, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %91) #12
  store float 0xBFE279A6C0000000, ptr %91, align 4, !tbaa !11
  call void @_ZN3Raz6VectorIfLm3EEC2IJfffEvvEEDpOT_(ptr noundef nonnull align 4 dereferenceable(12) %415, ptr noundef nonnull align 4 dereferenceable(4) %89, ptr noundef nonnull align 4 dereferenceable(4) %90, ptr noundef nonnull align 4 dereferenceable(4) %91) #12
  %416 = getelementptr inbounds %"struct.Raz::Vertex", ptr %88, i32 0, i32 1
  call void @llvm.memset.p0.i64(ptr align 4 %416, i8 0, i64 8, i1 false)
  call void @_ZN3Raz6VectorIfLm2EEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %416) #12
  %417 = getelementptr inbounds %"struct.Raz::Vertex", ptr %88, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %417, ptr align 4 @_ZN3Raz4AxisL1YE, i64 12, i1 false), !tbaa.struct !15
  %418 = getelementptr inbounds %"struct.Raz::Vertex", ptr %88, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %418, ptr align 4 @_ZN3Raz4AxisL1XE, i64 12, i1 false), !tbaa.struct !15
  %419 = invoke noundef nonnull align 4 dereferenceable(44) ptr @_ZNSt6vectorIN3Raz6VertexESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %414, ptr noundef nonnull align 4 dereferenceable(44) %88)
          to label %420 unwind label %687

420:                                              ; preds = %413
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #12
  call void @llvm.lifetime.end.p0(i64 44, ptr %88) #12
  %421 = load ptr, ptr %35, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 44, ptr %92) #12
  %422 = getelementptr inbounds %"struct.Raz::Vertex", ptr %92, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 4, ptr %93) #12
  store float 0x3FE279A6C0000000, ptr %93, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %94) #12
  store float 0xBFE279A6C0000000, ptr %94, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %95) #12
  store float 0x3FE279A6C0000000, ptr %95, align 4, !tbaa !11
  call void @_ZN3Raz6VectorIfLm3EEC2IJfffEvvEEDpOT_(ptr noundef nonnull align 4 dereferenceable(12) %422, ptr noundef nonnull align 4 dereferenceable(4) %93, ptr noundef nonnull align 4 dereferenceable(4) %94, ptr noundef nonnull align 4 dereferenceable(4) %95) #12
  %423 = getelementptr inbounds %"struct.Raz::Vertex", ptr %92, i32 0, i32 1
  call void @llvm.memset.p0.i64(ptr align 4 %423, i8 0, i64 8, i1 false)
  call void @_ZN3Raz6VectorIfLm2EEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %423) #12
  %424 = getelementptr inbounds %"struct.Raz::Vertex", ptr %92, i32 0, i32 2
  %425 = call { <2 x float>, float } @_ZNK3Raz6VectorIfLm3EEngEv(ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1YE) #12
  %426 = getelementptr inbounds %"class.Raz::Vector", ptr %424, i32 0, i32 0
  %427 = getelementptr inbounds %"struct.std::array", ptr %426, i32 0, i32 0
  store { <2 x float>, float } %425, ptr %96, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %427, ptr align 8 %96, i64 12, i1 false)
  %428 = getelementptr inbounds %"struct.Raz::Vertex", ptr %92, i32 0, i32 3
  %429 = call { <2 x float>, float } @_ZNK3Raz6VectorIfLm3EEngEv(ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1XE) #12
  %430 = getelementptr inbounds %"class.Raz::Vector", ptr %428, i32 0, i32 0
  %431 = getelementptr inbounds %"struct.std::array", ptr %430, i32 0, i32 0
  store { <2 x float>, float } %429, ptr %97, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %431, ptr align 8 %97, i64 12, i1 false)
  %432 = invoke noundef nonnull align 4 dereferenceable(44) ptr @_ZNSt6vectorIN3Raz6VertexESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %421, ptr noundef nonnull align 4 dereferenceable(44) %92)
          to label %433 unwind label %691

433:                                              ; preds = %420
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #12
  call void @llvm.lifetime.end.p0(i64 44, ptr %92) #12
  %434 = load ptr, ptr %35, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 44, ptr %98) #12
  %435 = getelementptr inbounds %"struct.Raz::Vertex", ptr %98, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 4, ptr %99) #12
  store float 0x3FE279A6C0000000, ptr %99, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %100) #12
  store float 0xBFE279A6C0000000, ptr %100, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %101) #12
  store float 0xBFE279A6C0000000, ptr %101, align 4, !tbaa !11
  call void @_ZN3Raz6VectorIfLm3EEC2IJfffEvvEEDpOT_(ptr noundef nonnull align 4 dereferenceable(12) %435, ptr noundef nonnull align 4 dereferenceable(4) %99, ptr noundef nonnull align 4 dereferenceable(4) %100, ptr noundef nonnull align 4 dereferenceable(4) %101) #12
  %436 = getelementptr inbounds %"struct.Raz::Vertex", ptr %98, i32 0, i32 1
  call void @llvm.memset.p0.i64(ptr align 4 %436, i8 0, i64 8, i1 false)
  call void @_ZN3Raz6VectorIfLm2EEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %436) #12
  %437 = getelementptr inbounds %"struct.Raz::Vertex", ptr %98, i32 0, i32 2
  %438 = call { <2 x float>, float } @_ZNK3Raz6VectorIfLm3EEngEv(ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1YE) #12
  %439 = getelementptr inbounds %"class.Raz::Vector", ptr %437, i32 0, i32 0
  %440 = getelementptr inbounds %"struct.std::array", ptr %439, i32 0, i32 0
  store { <2 x float>, float } %438, ptr %102, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %440, ptr align 8 %102, i64 12, i1 false)
  %441 = getelementptr inbounds %"struct.Raz::Vertex", ptr %98, i32 0, i32 3
  %442 = call { <2 x float>, float } @_ZNK3Raz6VectorIfLm3EEngEv(ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1XE) #12
  %443 = getelementptr inbounds %"class.Raz::Vector", ptr %441, i32 0, i32 0
  %444 = getelementptr inbounds %"struct.std::array", ptr %443, i32 0, i32 0
  store { <2 x float>, float } %442, ptr %103, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %444, ptr align 8 %103, i64 12, i1 false)
  %445 = invoke noundef nonnull align 4 dereferenceable(44) ptr @_ZNSt6vectorIN3Raz6VertexESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %434, ptr noundef nonnull align 4 dereferenceable(44) %98)
          to label %446 unwind label %695

446:                                              ; preds = %433
  call void @llvm.lifetime.end.p0(i64 4, ptr %101) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %100) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %99) #12
  call void @llvm.lifetime.end.p0(i64 44, ptr %98) #12
  %447 = load ptr, ptr %35, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 44, ptr %104) #12
  %448 = getelementptr inbounds %"struct.Raz::Vertex", ptr %104, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 4, ptr %105) #12
  store float 0xBFE279A6C0000000, ptr %105, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %106) #12
  store float 0xBFE279A6C0000000, ptr %106, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %107) #12
  store float 0x3FE279A6C0000000, ptr %107, align 4, !tbaa !11
  call void @_ZN3Raz6VectorIfLm3EEC2IJfffEvvEEDpOT_(ptr noundef nonnull align 4 dereferenceable(12) %448, ptr noundef nonnull align 4 dereferenceable(4) %105, ptr noundef nonnull align 4 dereferenceable(4) %106, ptr noundef nonnull align 4 dereferenceable(4) %107) #12
  %449 = getelementptr inbounds %"struct.Raz::Vertex", ptr %104, i32 0, i32 1
  call void @llvm.memset.p0.i64(ptr align 4 %449, i8 0, i64 8, i1 false)
  call void @_ZN3Raz6VectorIfLm2EEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %449) #12
  %450 = getelementptr inbounds %"struct.Raz::Vertex", ptr %104, i32 0, i32 2
  %451 = call { <2 x float>, float } @_ZNK3Raz6VectorIfLm3EEngEv(ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1YE) #12
  %452 = getelementptr inbounds %"class.Raz::Vector", ptr %450, i32 0, i32 0
  %453 = getelementptr inbounds %"struct.std::array", ptr %452, i32 0, i32 0
  store { <2 x float>, float } %451, ptr %108, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %453, ptr align 8 %108, i64 12, i1 false)
  %454 = getelementptr inbounds %"struct.Raz::Vertex", ptr %104, i32 0, i32 3
  %455 = call { <2 x float>, float } @_ZNK3Raz6VectorIfLm3EEngEv(ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1XE) #12
  %456 = getelementptr inbounds %"class.Raz::Vector", ptr %454, i32 0, i32 0
  %457 = getelementptr inbounds %"struct.std::array", ptr %456, i32 0, i32 0
  store { <2 x float>, float } %455, ptr %109, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %457, ptr align 8 %109, i64 12, i1 false)
  %458 = invoke noundef nonnull align 4 dereferenceable(44) ptr @_ZNSt6vectorIN3Raz6VertexESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %447, ptr noundef nonnull align 4 dereferenceable(44) %104)
          to label %459 unwind label %699

459:                                              ; preds = %446
  call void @llvm.lifetime.end.p0(i64 4, ptr %107) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %106) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %105) #12
  call void @llvm.lifetime.end.p0(i64 44, ptr %104) #12
  %460 = load ptr, ptr %35, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 44, ptr %110) #12
  %461 = getelementptr inbounds %"struct.Raz::Vertex", ptr %110, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 4, ptr %111) #12
  store float 0xBFE279A6C0000000, ptr %111, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %112) #12
  store float 0xBFE279A6C0000000, ptr %112, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %113) #12
  store float 0xBFE279A6C0000000, ptr %113, align 4, !tbaa !11
  call void @_ZN3Raz6VectorIfLm3EEC2IJfffEvvEEDpOT_(ptr noundef nonnull align 4 dereferenceable(12) %461, ptr noundef nonnull align 4 dereferenceable(4) %111, ptr noundef nonnull align 4 dereferenceable(4) %112, ptr noundef nonnull align 4 dereferenceable(4) %113) #12
  %462 = getelementptr inbounds %"struct.Raz::Vertex", ptr %110, i32 0, i32 1
  call void @llvm.memset.p0.i64(ptr align 4 %462, i8 0, i64 8, i1 false)
  call void @_ZN3Raz6VectorIfLm2EEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %462) #12
  %463 = getelementptr inbounds %"struct.Raz::Vertex", ptr %110, i32 0, i32 2
  %464 = call { <2 x float>, float } @_ZNK3Raz6VectorIfLm3EEngEv(ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1YE) #12
  %465 = getelementptr inbounds %"class.Raz::Vector", ptr %463, i32 0, i32 0
  %466 = getelementptr inbounds %"struct.std::array", ptr %465, i32 0, i32 0
  store { <2 x float>, float } %464, ptr %114, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %466, ptr align 8 %114, i64 12, i1 false)
  %467 = getelementptr inbounds %"struct.Raz::Vertex", ptr %110, i32 0, i32 3
  %468 = call { <2 x float>, float } @_ZNK3Raz6VectorIfLm3EEngEv(ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1XE) #12
  %469 = getelementptr inbounds %"class.Raz::Vector", ptr %467, i32 0, i32 0
  %470 = getelementptr inbounds %"struct.std::array", ptr %469, i32 0, i32 0
  store { <2 x float>, float } %468, ptr %115, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %470, ptr align 8 %115, i64 12, i1 false)
  %471 = invoke noundef nonnull align 4 dereferenceable(44) ptr @_ZNSt6vectorIN3Raz6VertexESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %460, ptr noundef nonnull align 4 dereferenceable(44) %110)
          to label %472 unwind label %703

472:                                              ; preds = %459
  call void @llvm.lifetime.end.p0(i64 4, ptr %113) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %112) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %111) #12
  call void @llvm.lifetime.end.p0(i64 44, ptr %110) #12
  %473 = load ptr, ptr %35, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 44, ptr %116) #12
  %474 = getelementptr inbounds %"struct.Raz::Vertex", ptr %116, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 4, ptr %117) #12
  store float 0xBFE279A6C0000000, ptr %117, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %118) #12
  store float 0xBFE279A6C0000000, ptr %118, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %119) #12
  store float 0x3FE279A6C0000000, ptr %119, align 4, !tbaa !11
  call void @_ZN3Raz6VectorIfLm3EEC2IJfffEvvEEDpOT_(ptr noundef nonnull align 4 dereferenceable(12) %474, ptr noundef nonnull align 4 dereferenceable(4) %117, ptr noundef nonnull align 4 dereferenceable(4) %118, ptr noundef nonnull align 4 dereferenceable(4) %119) #12
  %475 = getelementptr inbounds %"struct.Raz::Vertex", ptr %116, i32 0, i32 1
  call void @llvm.memset.p0.i64(ptr align 4 %475, i8 0, i64 8, i1 false)
  call void @_ZN3Raz6VectorIfLm2EEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %475) #12
  %476 = getelementptr inbounds %"struct.Raz::Vertex", ptr %116, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %476, ptr align 4 @_ZN3Raz4AxisL1ZE, i64 12, i1 false), !tbaa.struct !15
  %477 = getelementptr inbounds %"struct.Raz::Vertex", ptr %116, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %477, ptr align 4 @_ZN3Raz4AxisL1XE, i64 12, i1 false), !tbaa.struct !15
  %478 = invoke noundef nonnull align 4 dereferenceable(44) ptr @_ZNSt6vectorIN3Raz6VertexESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %473, ptr noundef nonnull align 4 dereferenceable(44) %116)
          to label %479 unwind label %707

479:                                              ; preds = %472
  call void @llvm.lifetime.end.p0(i64 4, ptr %119) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %118) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %117) #12
  call void @llvm.lifetime.end.p0(i64 44, ptr %116) #12
  %480 = load ptr, ptr %35, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 44, ptr %120) #12
  %481 = getelementptr inbounds %"struct.Raz::Vertex", ptr %120, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 4, ptr %121) #12
  store float 0xBFE279A6C0000000, ptr %121, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %122) #12
  store float 0x3FE279A6C0000000, ptr %122, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %123) #12
  store float 0x3FE279A6C0000000, ptr %123, align 4, !tbaa !11
  call void @_ZN3Raz6VectorIfLm3EEC2IJfffEvvEEDpOT_(ptr noundef nonnull align 4 dereferenceable(12) %481, ptr noundef nonnull align 4 dereferenceable(4) %121, ptr noundef nonnull align 4 dereferenceable(4) %122, ptr noundef nonnull align 4 dereferenceable(4) %123) #12
  %482 = getelementptr inbounds %"struct.Raz::Vertex", ptr %120, i32 0, i32 1
  call void @llvm.memset.p0.i64(ptr align 4 %482, i8 0, i64 8, i1 false)
  call void @_ZN3Raz6VectorIfLm2EEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %482) #12
  %483 = getelementptr inbounds %"struct.Raz::Vertex", ptr %120, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %483, ptr align 4 @_ZN3Raz4AxisL1ZE, i64 12, i1 false), !tbaa.struct !15
  %484 = getelementptr inbounds %"struct.Raz::Vertex", ptr %120, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %484, ptr align 4 @_ZN3Raz4AxisL1XE, i64 12, i1 false), !tbaa.struct !15
  %485 = invoke noundef nonnull align 4 dereferenceable(44) ptr @_ZNSt6vectorIN3Raz6VertexESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %480, ptr noundef nonnull align 4 dereferenceable(44) %120)
          to label %486 unwind label %711

486:                                              ; preds = %479
  call void @llvm.lifetime.end.p0(i64 4, ptr %123) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %122) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %121) #12
  call void @llvm.lifetime.end.p0(i64 44, ptr %120) #12
  %487 = load ptr, ptr %35, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 44, ptr %124) #12
  %488 = getelementptr inbounds %"struct.Raz::Vertex", ptr %124, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 4, ptr %125) #12
  store float 0x3FE279A6C0000000, ptr %125, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %126) #12
  store float 0xBFE279A6C0000000, ptr %126, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %127) #12
  store float 0x3FE279A6C0000000, ptr %127, align 4, !tbaa !11
  call void @_ZN3Raz6VectorIfLm3EEC2IJfffEvvEEDpOT_(ptr noundef nonnull align 4 dereferenceable(12) %488, ptr noundef nonnull align 4 dereferenceable(4) %125, ptr noundef nonnull align 4 dereferenceable(4) %126, ptr noundef nonnull align 4 dereferenceable(4) %127) #12
  %489 = getelementptr inbounds %"struct.Raz::Vertex", ptr %124, i32 0, i32 1
  call void @llvm.memset.p0.i64(ptr align 4 %489, i8 0, i64 8, i1 false)
  call void @_ZN3Raz6VectorIfLm2EEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %489) #12
  %490 = getelementptr inbounds %"struct.Raz::Vertex", ptr %124, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %490, ptr align 4 @_ZN3Raz4AxisL1ZE, i64 12, i1 false), !tbaa.struct !15
  %491 = getelementptr inbounds %"struct.Raz::Vertex", ptr %124, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %491, ptr align 4 @_ZN3Raz4AxisL1XE, i64 12, i1 false), !tbaa.struct !15
  %492 = invoke noundef nonnull align 4 dereferenceable(44) ptr @_ZNSt6vectorIN3Raz6VertexESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %487, ptr noundef nonnull align 4 dereferenceable(44) %124)
          to label %493 unwind label %715

493:                                              ; preds = %486
  call void @llvm.lifetime.end.p0(i64 4, ptr %127) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %126) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %125) #12
  call void @llvm.lifetime.end.p0(i64 44, ptr %124) #12
  %494 = load ptr, ptr %35, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 44, ptr %128) #12
  %495 = getelementptr inbounds %"struct.Raz::Vertex", ptr %128, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 4, ptr %129) #12
  store float 0x3FE279A6C0000000, ptr %129, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %130) #12
  store float 0x3FE279A6C0000000, ptr %130, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %131) #12
  store float 0x3FE279A6C0000000, ptr %131, align 4, !tbaa !11
  call void @_ZN3Raz6VectorIfLm3EEC2IJfffEvvEEDpOT_(ptr noundef nonnull align 4 dereferenceable(12) %495, ptr noundef nonnull align 4 dereferenceable(4) %129, ptr noundef nonnull align 4 dereferenceable(4) %130, ptr noundef nonnull align 4 dereferenceable(4) %131) #12
  %496 = getelementptr inbounds %"struct.Raz::Vertex", ptr %128, i32 0, i32 1
  call void @llvm.memset.p0.i64(ptr align 4 %496, i8 0, i64 8, i1 false)
  call void @_ZN3Raz6VectorIfLm2EEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %496) #12
  %497 = getelementptr inbounds %"struct.Raz::Vertex", ptr %128, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %497, ptr align 4 @_ZN3Raz4AxisL1ZE, i64 12, i1 false), !tbaa.struct !15
  %498 = getelementptr inbounds %"struct.Raz::Vertex", ptr %128, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %498, ptr align 4 @_ZN3Raz4AxisL1XE, i64 12, i1 false), !tbaa.struct !15
  %499 = invoke noundef nonnull align 4 dereferenceable(44) ptr @_ZNSt6vectorIN3Raz6VertexESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %494, ptr noundef nonnull align 4 dereferenceable(44) %128)
          to label %500 unwind label %719

500:                                              ; preds = %493
  call void @llvm.lifetime.end.p0(i64 4, ptr %131) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %130) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %129) #12
  call void @llvm.lifetime.end.p0(i64 44, ptr %128) #12
  %501 = load ptr, ptr %35, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 44, ptr %132) #12
  %502 = getelementptr inbounds %"struct.Raz::Vertex", ptr %132, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 4, ptr %133) #12
  store float 0x3FE279A6C0000000, ptr %133, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %134) #12
  store float 0xBFE279A6C0000000, ptr %134, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %135) #12
  store float 0xBFE279A6C0000000, ptr %135, align 4, !tbaa !11
  call void @_ZN3Raz6VectorIfLm3EEC2IJfffEvvEEDpOT_(ptr noundef nonnull align 4 dereferenceable(12) %502, ptr noundef nonnull align 4 dereferenceable(4) %133, ptr noundef nonnull align 4 dereferenceable(4) %134, ptr noundef nonnull align 4 dereferenceable(4) %135) #12
  %503 = getelementptr inbounds %"struct.Raz::Vertex", ptr %132, i32 0, i32 1
  call void @llvm.memset.p0.i64(ptr align 4 %503, i8 0, i64 8, i1 false)
  call void @_ZN3Raz6VectorIfLm2EEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %503) #12
  %504 = getelementptr inbounds %"struct.Raz::Vertex", ptr %132, i32 0, i32 2
  %505 = call { <2 x float>, float } @_ZNK3Raz6VectorIfLm3EEngEv(ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1ZE) #12
  %506 = getelementptr inbounds %"class.Raz::Vector", ptr %504, i32 0, i32 0
  %507 = getelementptr inbounds %"struct.std::array", ptr %506, i32 0, i32 0
  store { <2 x float>, float } %505, ptr %136, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %507, ptr align 8 %136, i64 12, i1 false)
  %508 = getelementptr inbounds %"struct.Raz::Vertex", ptr %132, i32 0, i32 3
  %509 = call { <2 x float>, float } @_ZNK3Raz6VectorIfLm3EEngEv(ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1XE) #12
  %510 = getelementptr inbounds %"class.Raz::Vector", ptr %508, i32 0, i32 0
  %511 = getelementptr inbounds %"struct.std::array", ptr %510, i32 0, i32 0
  store { <2 x float>, float } %509, ptr %137, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %511, ptr align 8 %137, i64 12, i1 false)
  %512 = invoke noundef nonnull align 4 dereferenceable(44) ptr @_ZNSt6vectorIN3Raz6VertexESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %501, ptr noundef nonnull align 4 dereferenceable(44) %132)
          to label %513 unwind label %723

513:                                              ; preds = %500
  call void @llvm.lifetime.end.p0(i64 4, ptr %135) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %134) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %133) #12
  call void @llvm.lifetime.end.p0(i64 44, ptr %132) #12
  %514 = load ptr, ptr %35, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 44, ptr %138) #12
  %515 = getelementptr inbounds %"struct.Raz::Vertex", ptr %138, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 4, ptr %139) #12
  store float 0x3FE279A6C0000000, ptr %139, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %140) #12
  store float 0x3FE279A6C0000000, ptr %140, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %141) #12
  store float 0xBFE279A6C0000000, ptr %141, align 4, !tbaa !11
  call void @_ZN3Raz6VectorIfLm3EEC2IJfffEvvEEDpOT_(ptr noundef nonnull align 4 dereferenceable(12) %515, ptr noundef nonnull align 4 dereferenceable(4) %139, ptr noundef nonnull align 4 dereferenceable(4) %140, ptr noundef nonnull align 4 dereferenceable(4) %141) #12
  %516 = getelementptr inbounds %"struct.Raz::Vertex", ptr %138, i32 0, i32 1
  call void @llvm.memset.p0.i64(ptr align 4 %516, i8 0, i64 8, i1 false)
  call void @_ZN3Raz6VectorIfLm2EEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %516) #12
  %517 = getelementptr inbounds %"struct.Raz::Vertex", ptr %138, i32 0, i32 2
  %518 = call { <2 x float>, float } @_ZNK3Raz6VectorIfLm3EEngEv(ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1ZE) #12
  %519 = getelementptr inbounds %"class.Raz::Vector", ptr %517, i32 0, i32 0
  %520 = getelementptr inbounds %"struct.std::array", ptr %519, i32 0, i32 0
  store { <2 x float>, float } %518, ptr %142, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %520, ptr align 8 %142, i64 12, i1 false)
  %521 = getelementptr inbounds %"struct.Raz::Vertex", ptr %138, i32 0, i32 3
  %522 = call { <2 x float>, float } @_ZNK3Raz6VectorIfLm3EEngEv(ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1XE) #12
  %523 = getelementptr inbounds %"class.Raz::Vector", ptr %521, i32 0, i32 0
  %524 = getelementptr inbounds %"struct.std::array", ptr %523, i32 0, i32 0
  store { <2 x float>, float } %522, ptr %143, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %524, ptr align 8 %143, i64 12, i1 false)
  %525 = invoke noundef nonnull align 4 dereferenceable(44) ptr @_ZNSt6vectorIN3Raz6VertexESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %514, ptr noundef nonnull align 4 dereferenceable(44) %138)
          to label %526 unwind label %727

526:                                              ; preds = %513
  call void @llvm.lifetime.end.p0(i64 4, ptr %141) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %140) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %139) #12
  call void @llvm.lifetime.end.p0(i64 44, ptr %138) #12
  %527 = load ptr, ptr %35, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 44, ptr %144) #12
  %528 = getelementptr inbounds %"struct.Raz::Vertex", ptr %144, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 4, ptr %145) #12
  store float 0xBFE279A6C0000000, ptr %145, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %146) #12
  store float 0xBFE279A6C0000000, ptr %146, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %147) #12
  store float 0xBFE279A6C0000000, ptr %147, align 4, !tbaa !11
  call void @_ZN3Raz6VectorIfLm3EEC2IJfffEvvEEDpOT_(ptr noundef nonnull align 4 dereferenceable(12) %528, ptr noundef nonnull align 4 dereferenceable(4) %145, ptr noundef nonnull align 4 dereferenceable(4) %146, ptr noundef nonnull align 4 dereferenceable(4) %147) #12
  %529 = getelementptr inbounds %"struct.Raz::Vertex", ptr %144, i32 0, i32 1
  call void @llvm.memset.p0.i64(ptr align 4 %529, i8 0, i64 8, i1 false)
  call void @_ZN3Raz6VectorIfLm2EEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %529) #12
  %530 = getelementptr inbounds %"struct.Raz::Vertex", ptr %144, i32 0, i32 2
  %531 = call { <2 x float>, float } @_ZNK3Raz6VectorIfLm3EEngEv(ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1ZE) #12
  %532 = getelementptr inbounds %"class.Raz::Vector", ptr %530, i32 0, i32 0
  %533 = getelementptr inbounds %"struct.std::array", ptr %532, i32 0, i32 0
  store { <2 x float>, float } %531, ptr %148, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %533, ptr align 8 %148, i64 12, i1 false)
  %534 = getelementptr inbounds %"struct.Raz::Vertex", ptr %144, i32 0, i32 3
  %535 = call { <2 x float>, float } @_ZNK3Raz6VectorIfLm3EEngEv(ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1XE) #12
  %536 = getelementptr inbounds %"class.Raz::Vector", ptr %534, i32 0, i32 0
  %537 = getelementptr inbounds %"struct.std::array", ptr %536, i32 0, i32 0
  store { <2 x float>, float } %535, ptr %149, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %537, ptr align 8 %149, i64 12, i1 false)
  %538 = invoke noundef nonnull align 4 dereferenceable(44) ptr @_ZNSt6vectorIN3Raz6VertexESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %527, ptr noundef nonnull align 4 dereferenceable(44) %144)
          to label %539 unwind label %731

539:                                              ; preds = %526
  call void @llvm.lifetime.end.p0(i64 4, ptr %147) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %146) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %145) #12
  call void @llvm.lifetime.end.p0(i64 44, ptr %144) #12
  %540 = load ptr, ptr %35, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 44, ptr %150) #12
  %541 = getelementptr inbounds %"struct.Raz::Vertex", ptr %150, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 4, ptr %151) #12
  store float 0xBFE279A6C0000000, ptr %151, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %152) #12
  store float 0x3FE279A6C0000000, ptr %152, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %153) #12
  store float 0xBFE279A6C0000000, ptr %153, align 4, !tbaa !11
  call void @_ZN3Raz6VectorIfLm3EEC2IJfffEvvEEDpOT_(ptr noundef nonnull align 4 dereferenceable(12) %541, ptr noundef nonnull align 4 dereferenceable(4) %151, ptr noundef nonnull align 4 dereferenceable(4) %152, ptr noundef nonnull align 4 dereferenceable(4) %153) #12
  %542 = getelementptr inbounds %"struct.Raz::Vertex", ptr %150, i32 0, i32 1
  call void @llvm.memset.p0.i64(ptr align 4 %542, i8 0, i64 8, i1 false)
  call void @_ZN3Raz6VectorIfLm2EEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %542) #12
  %543 = getelementptr inbounds %"struct.Raz::Vertex", ptr %150, i32 0, i32 2
  %544 = call { <2 x float>, float } @_ZNK3Raz6VectorIfLm3EEngEv(ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1ZE) #12
  %545 = getelementptr inbounds %"class.Raz::Vector", ptr %543, i32 0, i32 0
  %546 = getelementptr inbounds %"struct.std::array", ptr %545, i32 0, i32 0
  store { <2 x float>, float } %544, ptr %154, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %546, ptr align 8 %154, i64 12, i1 false)
  %547 = getelementptr inbounds %"struct.Raz::Vertex", ptr %150, i32 0, i32 3
  %548 = call { <2 x float>, float } @_ZNK3Raz6VectorIfLm3EEngEv(ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1XE) #12
  %549 = getelementptr inbounds %"class.Raz::Vector", ptr %547, i32 0, i32 0
  %550 = getelementptr inbounds %"struct.std::array", ptr %549, i32 0, i32 0
  store { <2 x float>, float } %548, ptr %155, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %550, ptr align 8 %155, i64 12, i1 false)
  %551 = invoke noundef nonnull align 4 dereferenceable(44) ptr @_ZNSt6vectorIN3Raz6VertexESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %540, ptr noundef nonnull align 4 dereferenceable(44) %150)
          to label %552 unwind label %735

552:                                              ; preds = %539
  call void @llvm.lifetime.end.p0(i64 4, ptr %153) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %152) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %151) #12
  call void @llvm.lifetime.end.p0(i64 44, ptr %150) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %156) #12
  %553 = load ptr, ptr %5, align 8, !tbaa !9
  %554 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZN3Raz5World9addEntityEb(ptr noundef nonnull align 8 dereferenceable(104) %553, i1 noundef zeroext true)
          to label %555 unwind label %739

555:                                              ; preds = %552
  store ptr %554, ptr %156, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %157) #12
  %556 = load ptr, ptr %156, align 8, !tbaa !9
  %557 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN3Raz6Entity12addComponentINS_9TransformEJEEERT_DpOT0_(ptr noundef nonnull align 8 dereferenceable(80) %556)
          to label %558 unwind label %743

558:                                              ; preds = %555
  store ptr %557, ptr %157, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %158) #12
  %559 = load ptr, ptr %156, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %159) #12
  store i32 2, ptr %159, align 4, !tbaa !17
  %560 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZN3Raz6Entity12addComponentINS_12MeshRendererEJRNS_4MeshENS_10RenderModeEEEERT_DpOT0_(ptr noundef nonnull align 8 dereferenceable(80) %559, ptr noundef nonnull align 8 dereferenceable(64) %34, ptr noundef nonnull align 4 dereferenceable(4) %159)
          to label %561 unwind label %747

561:                                              ; preds = %558
  call void @llvm.lifetime.end.p0(i64 4, ptr %159) #12
  store ptr %560, ptr %158, align 8, !tbaa !9
  invoke void @_ZN3Raz8Renderer19setPatchVertexCountEi(i32 noundef 4)
          to label %562 unwind label %751

562:                                              ; preds = %561
  call void @llvm.lifetime.start.p0(i64 8, ptr %160) #12
  %563 = load ptr, ptr %158, align 8, !tbaa !9
  %564 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3Raz12MeshRenderer12getMaterialsEv(ptr noundef nonnull align 8 dereferenceable(64) %563)
          to label %565 unwind label %755

565:                                              ; preds = %562
  %566 = call noundef nonnull align 8 dereferenceable(384) ptr @_ZNSt6vectorIN3Raz8MaterialESaIS1_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %564) #12
  %567 = call noundef nonnull align 8 dereferenceable(384) ptr @_ZN3Raz8Material10getProgramEv(ptr noundef nonnull align 8 dereferenceable(384) %566) #12
  store ptr %567, ptr %160, align 8, !tbaa !9
  %568 = load ptr, ptr %160, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 48, ptr %161) #12
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %162, ptr align 8 @_ZN12_GLOBAL__N_114tessCtrlSourceE, i64 16, i1 false), !tbaa.struct !19
  %569 = getelementptr inbounds { i64, ptr }, ptr %162, i32 0, i32 0
  %570 = load i64, ptr %569, align 8
  %571 = getelementptr inbounds { i64, ptr }, ptr %162, i32 0, i32 1
  %572 = load ptr, ptr %571, align 8
  invoke void @_ZN3Raz25TessellationControlShader14loadFromSourceESt17basic_string_viewIcSt11char_traitsIcEE(ptr dead_on_unwind writable sret(%"class.Raz::TessellationControlShader") align 8 %161, i64 %570, ptr %572)
          to label %573 unwind label %759

573:                                              ; preds = %565
  invoke void @_ZN3Raz19RenderShaderProgram28setTessellationControlShaderEONS_25TessellationControlShaderE(ptr noundef nonnull align 8 dereferenceable(384) %568, ptr noundef nonnull align 8 dereferenceable(48) %161)
          to label %574 unwind label %763

574:                                              ; preds = %573
  call void @_ZN3Raz6ShaderD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %161) #12
  call void @llvm.lifetime.end.p0(i64 48, ptr %161) #12
  %575 = load ptr, ptr %160, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 48, ptr %163) #12
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %164, ptr align 8 @_ZN12_GLOBAL__N_114tessEvalSourceE, i64 16, i1 false), !tbaa.struct !19
  %576 = getelementptr inbounds { i64, ptr }, ptr %164, i32 0, i32 0
  %577 = load i64, ptr %576, align 8
  %578 = getelementptr inbounds { i64, ptr }, ptr %164, i32 0, i32 1
  %579 = load ptr, ptr %578, align 8
  invoke void @_ZN3Raz28TessellationEvaluationShader14loadFromSourceESt17basic_string_viewIcSt11char_traitsIcEE(ptr dead_on_unwind writable sret(%"class.Raz::TessellationEvaluationShader") align 8 %163, i64 %577, ptr %579)
          to label %580 unwind label %768

580:                                              ; preds = %574
  invoke void @_ZN3Raz19RenderShaderProgram31setTessellationEvaluationShaderEONS_28TessellationEvaluationShaderE(ptr noundef nonnull align 8 dereferenceable(384) %575, ptr noundef nonnull align 8 dereferenceable(48) %163)
          to label %581 unwind label %772

581:                                              ; preds = %580
  call void @_ZN3Raz6ShaderD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %163) #12
  call void @llvm.lifetime.end.p0(i64 48, ptr %163) #12
  %582 = load ptr, ptr %160, align 8, !tbaa !9
  invoke void @_ZN3Raz13ShaderProgram4linkEv(ptr noundef nonnull align 8 dereferenceable(120) %582)
          to label %583 unwind label %755

583:                                              ; preds = %581
  %584 = call noundef zeroext i1 @_ZN3Raz8Renderer12checkVersionEii(i32 noundef 4, i32 noundef 3) #12
  br i1 %584, label %585, label %777

585:                                              ; preds = %583
  %586 = load ptr, ptr %160, align 8, !tbaa !9
  %587 = invoke noundef i32 @_ZNK3Raz13ShaderProgram8getIndexEv(ptr noundef nonnull align 8 dereferenceable(120) %586)
          to label %588 unwind label %755

588:                                              ; preds = %585
  invoke void @_ZN3Raz8Renderer8setLabelENS_16RenderObjectTypeEjPKc(i32 noundef 33506, i32 noundef %587, ptr noundef @.str.4)
          to label %589 unwind label %755

589:                                              ; preds = %588
  %590 = load ptr, ptr %160, align 8, !tbaa !9
  %591 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK3Raz19RenderShaderProgram15getVertexShaderEv(ptr noundef nonnull align 8 dereferenceable(384) %590) #12
  %592 = call noundef i32 @_ZNK3Raz6Shader8getIndexEv(ptr noundef nonnull align 8 dereferenceable(48) %591) #12
  invoke void @_ZN3Raz8Renderer8setLabelENS_16RenderObjectTypeEjPKc(i32 noundef 33505, i32 noundef %592, ptr noundef @.str.5)
          to label %593 unwind label %755

593:                                              ; preds = %589
  %594 = load ptr, ptr %160, align 8, !tbaa !9
  %595 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK3Raz19RenderShaderProgram28getTessellationControlShaderEv(ptr noundef nonnull align 8 dereferenceable(384) %594) #12
  %596 = call noundef i32 @_ZNK3Raz6Shader8getIndexEv(ptr noundef nonnull align 8 dereferenceable(48) %595) #12
  invoke void @_ZN3Raz8Renderer8setLabelENS_16RenderObjectTypeEjPKc(i32 noundef 33505, i32 noundef %596, ptr noundef @.str.6)
          to label %597 unwind label %755

597:                                              ; preds = %593
  %598 = load ptr, ptr %160, align 8, !tbaa !9
  %599 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK3Raz19RenderShaderProgram31getTessellationEvaluationShaderEv(ptr noundef nonnull align 8 dereferenceable(384) %598) #12
  %600 = call noundef i32 @_ZNK3Raz6Shader8getIndexEv(ptr noundef nonnull align 8 dereferenceable(48) %599) #12
  invoke void @_ZN3Raz8Renderer8setLabelENS_16RenderObjectTypeEjPKc(i32 noundef 33505, i32 noundef %600, ptr noundef @.str.7)
          to label %601 unwind label %755

601:                                              ; preds = %597
  %602 = load ptr, ptr %160, align 8, !tbaa !9
  %603 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK3Raz19RenderShaderProgram17getFragmentShaderEv(ptr noundef nonnull align 8 dereferenceable(384) %602) #12
  %604 = call noundef i32 @_ZNK3Raz6Shader8getIndexEv(ptr noundef nonnull align 8 dereferenceable(48) %603) #12
  invoke void @_ZN3Raz8Renderer8setLabelENS_16RenderObjectTypeEjPKc(i32 noundef 33505, i32 noundef %604, ptr noundef @.str.8)
          to label %605 unwind label %755

605:                                              ; preds = %601
  br label %777

606:                                              ; preds = %269
  %607 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %608 = extractvalue { ptr, i32 } %607, 0
  store ptr %608, ptr %3, align 8
  %609 = extractvalue { ptr, i32 } %607, 1
  store i32 %609, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #12
  call void @llvm.lifetime.end.p0(i64 12, ptr %17) #12
  br label %867

610:                                              ; preds = %276, %272
  %611 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %612 = extractvalue { ptr, i32 } %611, 0
  store ptr %612, ptr %3, align 8
  %613 = extractvalue { ptr, i32 } %611, 1
  store i32 %613, ptr %4, align 4
  br label %618

614:                                              ; preds = %283, %281, %278
  %615 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %616 = extractvalue { ptr, i32 } %615, 0
  store ptr %616, ptr %3, align 8
  %617 = extractvalue { ptr, i32 } %615, 1
  store i32 %617, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #12
  br label %618

618:                                              ; preds = %614, %610
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #12
  br label %867

619:                                              ; preds = %285
  %620 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %621 = extractvalue { ptr, i32 } %620, 0
  store ptr %621, ptr %3, align 8
  %622 = extractvalue { ptr, i32 } %620, 1
  store i32 %622, ptr %4, align 4
  br label %866

623:                                              ; preds = %288
  %624 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %625 = extractvalue { ptr, i32 } %624, 0
  store ptr %625, ptr %3, align 8
  %626 = extractvalue { ptr, i32 } %624, 1
  store i32 %626, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #12
  call void @llvm.lifetime.end.p0(i64 12, ptr %25) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #12
  br label %866

627:                                              ; preds = %305, %297, %294
  %628 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %629 = extractvalue { ptr, i32 } %628, 0
  store ptr %629, ptr %3, align 8
  %630 = extractvalue { ptr, i32 } %628, 1
  store i32 %630, ptr %4, align 4
  br label %865

631:                                              ; preds = %299
  %632 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %633 = extractvalue { ptr, i32 } %632, 0
  store ptr %633, ptr %3, align 8
  %634 = extractvalue { ptr, i32 } %632, 1
  store i32 %634, ptr %4, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #12
  br label %865

635:                                              ; preds = %302
  %636 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %637 = extractvalue { ptr, i32 } %636, 0
  store ptr %637, ptr %3, align 8
  %638 = extractvalue { ptr, i32 } %636, 1
  store i32 %638, ptr %4, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #12
  br label %865

639:                                              ; preds = %310, %308, %306
  %640 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %641 = extractvalue { ptr, i32 } %640, 0
  store ptr %641, ptr %3, align 8
  %642 = extractvalue { ptr, i32 } %640, 1
  store i32 %642, ptr %4, align 4
  br label %864

643:                                              ; preds = %312
  %644 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %645 = extractvalue { ptr, i32 } %644, 0
  store ptr %645, ptr %3, align 8
  %646 = extractvalue { ptr, i32 } %644, 1
  store i32 %646, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #12
  call void @llvm.lifetime.end.p0(i64 44, ptr %36) #12
  br label %864

647:                                              ; preds = %322
  %648 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %649 = extractvalue { ptr, i32 } %648, 0
  store ptr %649, ptr %3, align 8
  %650 = extractvalue { ptr, i32 } %648, 1
  store i32 %650, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #12
  call void @llvm.lifetime.end.p0(i64 44, ptr %41) #12
  br label %864

651:                                              ; preds = %332
  %652 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %653 = extractvalue { ptr, i32 } %652, 0
  store ptr %653, ptr %3, align 8
  %654 = extractvalue { ptr, i32 } %652, 1
  store i32 %654, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #12
  call void @llvm.lifetime.end.p0(i64 44, ptr %46) #12
  br label %864

655:                                              ; preds = %342
  %656 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %657 = extractvalue { ptr, i32 } %656, 0
  store ptr %657, ptr %3, align 8
  %658 = extractvalue { ptr, i32 } %656, 1
  store i32 %658, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #12
  call void @llvm.lifetime.end.p0(i64 44, ptr %51) #12
  br label %864

659:                                              ; preds = %352
  %660 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %661 = extractvalue { ptr, i32 } %660, 0
  store ptr %661, ptr %3, align 8
  %662 = extractvalue { ptr, i32 } %660, 1
  store i32 %662, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #12
  call void @llvm.lifetime.end.p0(i64 44, ptr %56) #12
  br label %864

663:                                              ; preds = %362
  %664 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %665 = extractvalue { ptr, i32 } %664, 0
  store ptr %665, ptr %3, align 8
  %666 = extractvalue { ptr, i32 } %664, 1
  store i32 %666, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #12
  call void @llvm.lifetime.end.p0(i64 44, ptr %61) #12
  br label %864

667:                                              ; preds = %372
  %668 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %669 = extractvalue { ptr, i32 } %668, 0
  store ptr %669, ptr %3, align 8
  %670 = extractvalue { ptr, i32 } %668, 1
  store i32 %670, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #12
  call void @llvm.lifetime.end.p0(i64 44, ptr %66) #12
  br label %864

671:                                              ; preds = %382
  %672 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %673 = extractvalue { ptr, i32 } %672, 0
  store ptr %673, ptr %3, align 8
  %674 = extractvalue { ptr, i32 } %672, 1
  store i32 %674, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #12
  call void @llvm.lifetime.end.p0(i64 44, ptr %71) #12
  br label %864

675:                                              ; preds = %392
  %676 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %677 = extractvalue { ptr, i32 } %676, 0
  store ptr %677, ptr %3, align 8
  %678 = extractvalue { ptr, i32 } %676, 1
  store i32 %678, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #12
  call void @llvm.lifetime.end.p0(i64 44, ptr %76) #12
  br label %864

679:                                              ; preds = %399
  %680 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %681 = extractvalue { ptr, i32 } %680, 0
  store ptr %681, ptr %3, align 8
  %682 = extractvalue { ptr, i32 } %680, 1
  store i32 %682, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #12
  call void @llvm.lifetime.end.p0(i64 44, ptr %80) #12
  br label %864

683:                                              ; preds = %406
  %684 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %685 = extractvalue { ptr, i32 } %684, 0
  store ptr %685, ptr %3, align 8
  %686 = extractvalue { ptr, i32 } %684, 1
  store i32 %686, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #12
  call void @llvm.lifetime.end.p0(i64 44, ptr %84) #12
  br label %864

687:                                              ; preds = %413
  %688 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %689 = extractvalue { ptr, i32 } %688, 0
  store ptr %689, ptr %3, align 8
  %690 = extractvalue { ptr, i32 } %688, 1
  store i32 %690, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #12
  call void @llvm.lifetime.end.p0(i64 44, ptr %88) #12
  br label %864

691:                                              ; preds = %420
  %692 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %693 = extractvalue { ptr, i32 } %692, 0
  store ptr %693, ptr %3, align 8
  %694 = extractvalue { ptr, i32 } %692, 1
  store i32 %694, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #12
  call void @llvm.lifetime.end.p0(i64 44, ptr %92) #12
  br label %864

695:                                              ; preds = %433
  %696 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %697 = extractvalue { ptr, i32 } %696, 0
  store ptr %697, ptr %3, align 8
  %698 = extractvalue { ptr, i32 } %696, 1
  store i32 %698, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %101) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %100) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %99) #12
  call void @llvm.lifetime.end.p0(i64 44, ptr %98) #12
  br label %864

699:                                              ; preds = %446
  %700 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %701 = extractvalue { ptr, i32 } %700, 0
  store ptr %701, ptr %3, align 8
  %702 = extractvalue { ptr, i32 } %700, 1
  store i32 %702, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %107) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %106) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %105) #12
  call void @llvm.lifetime.end.p0(i64 44, ptr %104) #12
  br label %864

703:                                              ; preds = %459
  %704 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %705 = extractvalue { ptr, i32 } %704, 0
  store ptr %705, ptr %3, align 8
  %706 = extractvalue { ptr, i32 } %704, 1
  store i32 %706, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %113) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %112) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %111) #12
  call void @llvm.lifetime.end.p0(i64 44, ptr %110) #12
  br label %864

707:                                              ; preds = %472
  %708 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %709 = extractvalue { ptr, i32 } %708, 0
  store ptr %709, ptr %3, align 8
  %710 = extractvalue { ptr, i32 } %708, 1
  store i32 %710, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %119) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %118) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %117) #12
  call void @llvm.lifetime.end.p0(i64 44, ptr %116) #12
  br label %864

711:                                              ; preds = %479
  %712 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %713 = extractvalue { ptr, i32 } %712, 0
  store ptr %713, ptr %3, align 8
  %714 = extractvalue { ptr, i32 } %712, 1
  store i32 %714, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %123) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %122) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %121) #12
  call void @llvm.lifetime.end.p0(i64 44, ptr %120) #12
  br label %864

715:                                              ; preds = %486
  %716 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %717 = extractvalue { ptr, i32 } %716, 0
  store ptr %717, ptr %3, align 8
  %718 = extractvalue { ptr, i32 } %716, 1
  store i32 %718, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %127) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %126) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %125) #12
  call void @llvm.lifetime.end.p0(i64 44, ptr %124) #12
  br label %864

719:                                              ; preds = %493
  %720 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %721 = extractvalue { ptr, i32 } %720, 0
  store ptr %721, ptr %3, align 8
  %722 = extractvalue { ptr, i32 } %720, 1
  store i32 %722, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %131) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %130) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %129) #12
  call void @llvm.lifetime.end.p0(i64 44, ptr %128) #12
  br label %864

723:                                              ; preds = %500
  %724 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %725 = extractvalue { ptr, i32 } %724, 0
  store ptr %725, ptr %3, align 8
  %726 = extractvalue { ptr, i32 } %724, 1
  store i32 %726, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %135) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %134) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %133) #12
  call void @llvm.lifetime.end.p0(i64 44, ptr %132) #12
  br label %864

727:                                              ; preds = %513
  %728 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %729 = extractvalue { ptr, i32 } %728, 0
  store ptr %729, ptr %3, align 8
  %730 = extractvalue { ptr, i32 } %728, 1
  store i32 %730, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %141) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %140) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %139) #12
  call void @llvm.lifetime.end.p0(i64 44, ptr %138) #12
  br label %864

731:                                              ; preds = %526
  %732 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %733 = extractvalue { ptr, i32 } %732, 0
  store ptr %733, ptr %3, align 8
  %734 = extractvalue { ptr, i32 } %732, 1
  store i32 %734, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %147) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %146) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %145) #12
  call void @llvm.lifetime.end.p0(i64 44, ptr %144) #12
  br label %864

735:                                              ; preds = %539
  %736 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %737 = extractvalue { ptr, i32 } %736, 0
  store ptr %737, ptr %3, align 8
  %738 = extractvalue { ptr, i32 } %736, 1
  store i32 %738, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %153) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %152) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %151) #12
  call void @llvm.lifetime.end.p0(i64 44, ptr %150) #12
  br label %864

739:                                              ; preds = %552
  %740 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %741 = extractvalue { ptr, i32 } %740, 0
  store ptr %741, ptr %3, align 8
  %742 = extractvalue { ptr, i32 } %740, 1
  store i32 %742, ptr %4, align 4
  br label %863

743:                                              ; preds = %555
  %744 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %745 = extractvalue { ptr, i32 } %744, 0
  store ptr %745, ptr %3, align 8
  %746 = extractvalue { ptr, i32 } %744, 1
  store i32 %746, ptr %4, align 4
  br label %862

747:                                              ; preds = %558
  %748 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %749 = extractvalue { ptr, i32 } %748, 0
  store ptr %749, ptr %3, align 8
  %750 = extractvalue { ptr, i32 } %748, 1
  store i32 %750, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %159) #12
  br label %861

751:                                              ; preds = %561
  %752 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %753 = extractvalue { ptr, i32 } %752, 0
  store ptr %753, ptr %3, align 8
  %754 = extractvalue { ptr, i32 } %752, 1
  store i32 %754, ptr %4, align 4
  br label %861

755:                                              ; preds = %601, %597, %593, %589, %588, %585, %581, %562
  %756 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %757 = extractvalue { ptr, i32 } %756, 0
  store ptr %757, ptr %3, align 8
  %758 = extractvalue { ptr, i32 } %756, 1
  store i32 %758, ptr %4, align 4
  br label %860

759:                                              ; preds = %565
  %760 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %761 = extractvalue { ptr, i32 } %760, 0
  store ptr %761, ptr %3, align 8
  %762 = extractvalue { ptr, i32 } %760, 1
  store i32 %762, ptr %4, align 4
  br label %767

763:                                              ; preds = %573
  %764 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %765 = extractvalue { ptr, i32 } %764, 0
  store ptr %765, ptr %3, align 8
  %766 = extractvalue { ptr, i32 } %764, 1
  store i32 %766, ptr %4, align 4
  call void @_ZN3Raz6ShaderD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %161) #12
  br label %767

767:                                              ; preds = %763, %759
  call void @llvm.lifetime.end.p0(i64 48, ptr %161) #12
  br label %860

768:                                              ; preds = %574
  %769 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %770 = extractvalue { ptr, i32 } %769, 0
  store ptr %770, ptr %3, align 8
  %771 = extractvalue { ptr, i32 } %769, 1
  store i32 %771, ptr %4, align 4
  br label %776

772:                                              ; preds = %580
  %773 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %774 = extractvalue { ptr, i32 } %773, 0
  store ptr %774, ptr %3, align 8
  %775 = extractvalue { ptr, i32 } %773, 1
  store i32 %775, ptr %4, align 4
  call void @_ZN3Raz6ShaderD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %163) #12
  br label %776

776:                                              ; preds = %772, %768
  call void @llvm.lifetime.end.p0(i64 48, ptr %163) #12
  br label %860

777:                                              ; preds = %605, %583
  call void @llvm.lifetime.start.p0(i64 8, ptr %165) #12
  %778 = load ptr, ptr %28, align 8, !tbaa !9
  %779 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3Raz6Window10getOverlayEv(ptr noundef nonnull align 8 dereferenceable(273) %778) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr %167) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %167) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %166, ptr noundef @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %167)
          to label %780 unwind label %810

780:                                              ; preds = %777
  call void @llvm.lifetime.start.p0(i64 8, ptr %168) #12
  call void @_ZN3Raz6VectorIfLm2EEC2Ef(ptr noundef nonnull align 4 dereferenceable(8) %168, float noundef -1.000000e+00) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %169) #12
  call void @_ZN3Raz6VectorIfLm2EEC2Ef(ptr noundef nonnull align 4 dereferenceable(8) %169, float noundef 0.000000e+00) #12
  %781 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZN3Raz7Overlay9addWindowENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_6VectorIfLm2EEESA_(ptr noundef nonnull align 8 dereferenceable(24) %779, ptr noundef %166, ptr noundef nonnull align 4 dereferenceable(8) %168, ptr noundef nonnull align 4 dereferenceable(8) %169)
          to label %782 unwind label %814

782:                                              ; preds = %780
  call void @llvm.lifetime.end.p0(i64 8, ptr %169) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %168) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %166) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %167) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %167) #12
  store ptr %781, ptr %165, align 8, !tbaa !9
  %783 = load ptr, ptr %165, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %171) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %171) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %170, ptr noundef @.str.10, ptr noundef nonnull align 1 dereferenceable(1) %171)
          to label %784 unwind label %819

784:                                              ; preds = %782
  call void @llvm.lifetime.start.p0(i64 8, ptr %173) #12
  %785 = getelementptr inbounds %class.anon.221, ptr %173, i32 0, i32 0
  %786 = load ptr, ptr %160, align 8, !tbaa !9
  store ptr %786, ptr %785, align 8, !tbaa !9
  call void @"_ZNSt8functionIFvfEEC2IZ4mainE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %172, ptr noundef nonnull align 8 dereferenceable(8) %173) #12
  %787 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN3Raz13OverlayWindow9addSliderENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt8functionIFvfEEfff(ptr noundef nonnull align 8 dereferenceable(80) %783, ptr noundef %170, ptr noundef %172, float noundef 1.000000e+00, float noundef 6.400000e+01, float noundef 4.000000e+00)
          to label %788 unwind label %823

788:                                              ; preds = %784
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %172) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %173) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %170) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %171) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %171) #12
  %789 = load ptr, ptr %165, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %175) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %175) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %174, ptr noundef @.str.11, ptr noundef nonnull align 1 dereferenceable(1) %175)
          to label %790 unwind label %828

790:                                              ; preds = %788
  call void @llvm.lifetime.start.p0(i64 8, ptr %177) #12
  %791 = getelementptr inbounds %class.anon.222, ptr %177, i32 0, i32 0
  %792 = load ptr, ptr %160, align 8, !tbaa !9
  store ptr %792, ptr %791, align 8, !tbaa !9
  call void @"_ZNSt8functionIFvfEEC2IZ4mainE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %176, ptr noundef nonnull align 8 dereferenceable(8) %177) #12
  %793 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN3Raz13OverlayWindow9addSliderENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt8functionIFvfEEfff(ptr noundef nonnull align 8 dereferenceable(80) %789, ptr noundef %174, ptr noundef %176, float noundef 1.000000e+00, float noundef 6.400000e+01, float noundef 4.000000e+00)
          to label %794 unwind label %832

794:                                              ; preds = %790
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %176) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %177) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %174) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %175) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %175) #12
  %795 = load ptr, ptr %165, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %179) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %179) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %178, ptr noundef @.str.12, ptr noundef nonnull align 1 dereferenceable(1) %179)
          to label %796 unwind label %837

796:                                              ; preds = %794
  call void @llvm.lifetime.start.p0(i64 8, ptr %181) #12
  %797 = getelementptr inbounds %class.anon.223, ptr %181, i32 0, i32 0
  %798 = load ptr, ptr %160, align 8, !tbaa !9
  store ptr %798, ptr %797, align 8, !tbaa !9
  call void @"_ZNSt8functionIFvvEEC2IZ4mainE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %180, ptr noundef nonnull align 8 dereferenceable(8) %181) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %183) #12
  %799 = getelementptr inbounds %class.anon.224, ptr %183, i32 0, i32 0
  %800 = load ptr, ptr %160, align 8, !tbaa !9
  store ptr %800, ptr %799, align 8, !tbaa !9
  call void @"_ZNSt8functionIFvvEEC2IZ4mainE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %182, ptr noundef nonnull align 8 dereferenceable(8) %183) #12
  %801 = invoke noundef nonnull align 8 dereferenceable(120) ptr @_ZN3Raz13OverlayWindow11addCheckboxENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt8functionIFvvEES9_b(ptr noundef nonnull align 8 dereferenceable(80) %795, ptr noundef %178, ptr noundef %180, ptr noundef %182, i1 noundef zeroext true)
          to label %802 unwind label %841

802:                                              ; preds = %796
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %182) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %183) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %180) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %181) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %178) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %179) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %179) #12
  %803 = load ptr, ptr %165, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %185) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %185) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %184, ptr noundef @.str.13, ptr noundef nonnull align 1 dereferenceable(1) %185)
          to label %804 unwind label %846

804:                                              ; preds = %802
  call void @llvm.lifetime.start.p0(i64 1, ptr %187) #12
  call void @"_ZNSt8functionIFvvEEC2IZ4mainE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %186, ptr noundef nonnull align 1 dereferenceable(1) %187) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr %189) #12
  call void @"_ZNSt8functionIFvvEEC2IZ4mainE3$_7vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %188, ptr noundef nonnull align 1 dereferenceable(1) %189) #12
  %805 = invoke noundef nonnull align 8 dereferenceable(120) ptr @_ZN3Raz13OverlayWindow11addCheckboxENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt8functionIFvvEES9_b(ptr noundef nonnull align 8 dereferenceable(80) %803, ptr noundef %184, ptr noundef %186, ptr noundef %188, i1 noundef zeroext true)
          to label %806 unwind label %850

806:                                              ; preds = %804
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %188) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %189) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %186) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %187) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %184) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %185) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %185) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %190) #12
  %807 = getelementptr inbounds %class.anon.228, ptr %190, i32 0, i32 0
  %808 = load ptr, ptr %157, align 8, !tbaa !9
  store ptr %808, ptr %807, align 8, !tbaa !9
  invoke void @"_ZN3Raz11Application3runIZ4mainE3$_8EEvOT_"(ptr noundef nonnull align 8 dereferenceable(93) %2, ptr noundef nonnull align 8 dereferenceable(8) %190)
          to label %809 unwind label %855

809:                                              ; preds = %806
  call void @llvm.lifetime.end.p0(i64 8, ptr %190) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %165) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %160) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %158) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %157) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %156) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #12
  call void @_ZN3Raz4MeshD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %34) #12
  call void @llvm.lifetime.end.p0(i64 64, ptr %34) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #12
  call void @_ZN3Raz11ApplicationD2Ev(ptr noundef nonnull align 8 dereferenceable(93) %2) #12
  call void @llvm.lifetime.end.p0(i64 96, ptr %2) #12
  br label %886

810:                                              ; preds = %777
  %811 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %812 = extractvalue { ptr, i32 } %811, 0
  store ptr %812, ptr %3, align 8
  %813 = extractvalue { ptr, i32 } %811, 1
  store i32 %813, ptr %4, align 4
  br label %818

814:                                              ; preds = %780
  %815 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %816 = extractvalue { ptr, i32 } %815, 0
  store ptr %816, ptr %3, align 8
  %817 = extractvalue { ptr, i32 } %815, 1
  store i32 %817, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %169) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %168) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %166) #12
  br label %818

818:                                              ; preds = %814, %810
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %167) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %167) #12
  br label %859

819:                                              ; preds = %782
  %820 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %821 = extractvalue { ptr, i32 } %820, 0
  store ptr %821, ptr %3, align 8
  %822 = extractvalue { ptr, i32 } %820, 1
  store i32 %822, ptr %4, align 4
  br label %827

823:                                              ; preds = %784
  %824 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %825 = extractvalue { ptr, i32 } %824, 0
  store ptr %825, ptr %3, align 8
  %826 = extractvalue { ptr, i32 } %824, 1
  store i32 %826, ptr %4, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %172) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %173) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %170) #12
  br label %827

827:                                              ; preds = %823, %819
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %171) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %171) #12
  br label %859

828:                                              ; preds = %788
  %829 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %830 = extractvalue { ptr, i32 } %829, 0
  store ptr %830, ptr %3, align 8
  %831 = extractvalue { ptr, i32 } %829, 1
  store i32 %831, ptr %4, align 4
  br label %836

832:                                              ; preds = %790
  %833 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %834 = extractvalue { ptr, i32 } %833, 0
  store ptr %834, ptr %3, align 8
  %835 = extractvalue { ptr, i32 } %833, 1
  store i32 %835, ptr %4, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %176) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %177) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %174) #12
  br label %836

836:                                              ; preds = %832, %828
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %175) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %175) #12
  br label %859

837:                                              ; preds = %794
  %838 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %839 = extractvalue { ptr, i32 } %838, 0
  store ptr %839, ptr %3, align 8
  %840 = extractvalue { ptr, i32 } %838, 1
  store i32 %840, ptr %4, align 4
  br label %845

841:                                              ; preds = %796
  %842 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %843 = extractvalue { ptr, i32 } %842, 0
  store ptr %843, ptr %3, align 8
  %844 = extractvalue { ptr, i32 } %842, 1
  store i32 %844, ptr %4, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %182) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %183) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %180) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %181) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %178) #12
  br label %845

845:                                              ; preds = %841, %837
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %179) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %179) #12
  br label %859

846:                                              ; preds = %802
  %847 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %848 = extractvalue { ptr, i32 } %847, 0
  store ptr %848, ptr %3, align 8
  %849 = extractvalue { ptr, i32 } %847, 1
  store i32 %849, ptr %4, align 4
  br label %854

850:                                              ; preds = %804
  %851 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %852 = extractvalue { ptr, i32 } %851, 0
  store ptr %852, ptr %3, align 8
  %853 = extractvalue { ptr, i32 } %851, 1
  store i32 %853, ptr %4, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %188) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %189) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %186) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %187) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %184) #12
  br label %854

854:                                              ; preds = %850, %846
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %185) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %185) #12
  br label %859

855:                                              ; preds = %806
  %856 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %857 = extractvalue { ptr, i32 } %856, 0
  store ptr %857, ptr %3, align 8
  %858 = extractvalue { ptr, i32 } %856, 1
  store i32 %858, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %190) #12
  br label %859

859:                                              ; preds = %855, %854, %845, %836, %827, %818
  call void @llvm.lifetime.end.p0(i64 8, ptr %165) #12
  br label %860

860:                                              ; preds = %859, %776, %767, %755
  call void @llvm.lifetime.end.p0(i64 8, ptr %160) #12
  br label %861

861:                                              ; preds = %860, %751, %747
  call void @llvm.lifetime.end.p0(i64 8, ptr %158) #12
  br label %862

862:                                              ; preds = %861, %743
  call void @llvm.lifetime.end.p0(i64 8, ptr %157) #12
  br label %863

863:                                              ; preds = %862, %739
  call void @llvm.lifetime.end.p0(i64 8, ptr %156) #12
  br label %864

864:                                              ; preds = %863, %735, %731, %727, %723, %719, %715, %711, %707, %703, %699, %695, %691, %687, %683, %679, %675, %671, %667, %663, %659, %655, %651, %647, %643, %639
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #12
  call void @_ZN3Raz4MeshD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %34) #12
  call void @llvm.lifetime.end.p0(i64 64, ptr %34) #12
  br label %865

865:                                              ; preds = %864, %635, %631, %627
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #12
  br label %866

866:                                              ; preds = %865, %623, %619
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #12
  br label %867

867:                                              ; preds = %866, %618, %606
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #12
  br label %868

868:                                              ; preds = %867, %265, %261, %260, %236
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #12
  br label %869

869:                                              ; preds = %868, %232, %228
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #12
  call void @_ZN3Raz11ApplicationD2Ev(ptr noundef nonnull align 8 dereferenceable(93) %2) #12
  br label %870

870:                                              ; preds = %869, %224
  call void @llvm.lifetime.end.p0(i64 96, ptr %2) #12
  br label %871

871:                                              ; preds = %870
  %872 = load i32, ptr %4, align 4
  %873 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTISt9exception) #12
  %874 = icmp eq i32 %872, %873
  br i1 %874, label %875, label %902

875:                                              ; preds = %871
  call void @llvm.lifetime.start.p0(i64 8, ptr %191) #12
  %876 = load ptr, ptr %3, align 8
  %877 = call ptr @__cxa_begin_catch(ptr %876) #12
  store ptr %877, ptr %191, align 8
  call void @llvm.lifetime.start.p0(i64 32, ptr %192) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr %193) #12
  invoke void @_ZNSt8literals15string_literalsli1sB5cxx11EPKcm(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %193, ptr noundef @.str.14, i64 noundef 20)
          to label %878 unwind label %887

878:                                              ; preds = %875
  %879 = load ptr, ptr %191, align 8, !tbaa !9
  %880 = load ptr, ptr %879, align 8, !tbaa !22
  %881 = getelementptr inbounds ptr, ptr %880, i64 2
  %882 = load ptr, ptr %881, align 8
  %883 = call noundef ptr %882(ptr noundef nonnull align 8 dereferenceable(8) %879) #12
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %192, ptr noundef nonnull align 8 dereferenceable(32) %193, ptr noundef %883)
          to label %884 unwind label %891

884:                                              ; preds = %878
  invoke void @_ZN3Raz6Logger5errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %192)
          to label %885 unwind label %895

885:                                              ; preds = %884
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %192) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %193) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %193) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %192) #12
  call void @__cxa_end_catch()
  call void @llvm.lifetime.end.p0(i64 8, ptr %191) #12
  br label %886

886:                                              ; preds = %885, %809
  ret i32 0

887:                                              ; preds = %875
  %888 = landingpad { ptr, i32 }
          cleanup
  %889 = extractvalue { ptr, i32 } %888, 0
  store ptr %889, ptr %3, align 8
  %890 = extractvalue { ptr, i32 } %888, 1
  store i32 %890, ptr %4, align 4
  br label %900

891:                                              ; preds = %878
  %892 = landingpad { ptr, i32 }
          cleanup
  %893 = extractvalue { ptr, i32 } %892, 0
  store ptr %893, ptr %3, align 8
  %894 = extractvalue { ptr, i32 } %892, 1
  store i32 %894, ptr %4, align 4
  br label %899

895:                                              ; preds = %884
  %896 = landingpad { ptr, i32 }
          cleanup
  %897 = extractvalue { ptr, i32 } %896, 0
  store ptr %897, ptr %3, align 8
  %898 = extractvalue { ptr, i32 } %896, 1
  store i32 %898, ptr %4, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %192) #12
  br label %899

899:                                              ; preds = %895, %891
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %193) #12
  br label %900

900:                                              ; preds = %899, %887
  call void @llvm.lifetime.end.p0(i64 32, ptr %193) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %192) #12
  invoke void @__cxa_end_catch()
          to label %901 unwind label %907

901:                                              ; preds = %900
  call void @llvm.lifetime.end.p0(i64 8, ptr %191) #12
  br label %902

902:                                              ; preds = %901, %871
  %903 = load ptr, ptr %3, align 8
  %904 = load i32, ptr %4, align 4
  %905 = insertvalue { ptr, i32 } poison, ptr %903, 0
  %906 = insertvalue { ptr, i32 } %905, i32 %904, 1
  resume { ptr, i32 } %906

907:                                              ; preds = %900
  %908 = landingpad { ptr, i32 }
          catch ptr null
  %909 = extractvalue { ptr, i32 } %908, 0
  call void @__clang_call_terminate(ptr %909) #14
  unreachable

910:                                              ; preds = %223
  unreachable
}

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

declare void @_ZN3Raz11ApplicationC1Em(ptr noundef nonnull align 8 dereferenceable(93), i64 noundef) unnamed_addr #3

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(104) ptr @_ZN3Raz11Application8addWorldIJiEEERNS_5WorldEDpOT_(ptr noundef nonnull align 8 dereferenceable(93), ptr noundef nonnull align 4 dereferenceable(4)) #4 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN3Raz6Logger15setLoggingLevelENS_12LoggingLevelE(i32 noundef) #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(776) ptr @_ZN3Raz5World9addSystemINS_12RenderSystemEJjjRA4_KcEEERT_DpOT0_(ptr noundef nonnull align 8 dereferenceable(104), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(4)) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN3Raz8Renderer12checkVersionEii(i32 noundef, i32 noundef) #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN3Raz8Renderer20isExtensionSupportedERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32)) #4 align 2

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

; 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 nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #5 align 2

declare ptr @__cxa_allocate_exception(i64)

declare void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) unnamed_addr #3

declare void @__cxa_free_exception(ptr)

; Function Attrs: nounwind
declare void @_ZNSt13runtime_errorD1Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #6

declare void @__cxa_throw(ptr, ptr, ptr)

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(80) ptr @_ZN3Raz5World22addEntityWithComponentINS_9TransformEJNS_6VectorIfLm3EEEEEERNS_6EntityEDpOT0_(ptr noundef nonnull align 8 dereferenceable(104), ptr noundef nonnull align 4 dereferenceable(12)) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN3Raz6VectorIfLm3EEC2IJfffEvvEEDpOT_(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(312) ptr @_ZN3Raz6Entity12addComponentINS_6CameraEJjjEEERT_DpOT0_(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(273) ptr @_ZN3Raz12RenderSystem9getWindowEv(ptr noundef nonnull align 8 dereferenceable(776)) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3Raz6Window8getWidthEv(ptr noundef nonnull align 8 dereferenceable(273)) #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3Raz6Window9getHeightEv(ptr noundef nonnull align 8 dereferenceable(273)) #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(80) ptr @_ZN3Raz5World22addEntityWithComponentINS_9TransformEJEEERNS_6EntityEDpOT0_(ptr noundef nonnull align 8 dereferenceable(104)) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(48) ptr @_ZN3Raz6Entity12addComponentINS_5LightEJNS_9LightTypeENS_6VectorIfLm3EEEfRKNS_5ColorEEEERT_DpOT0_(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(12)) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local { <2 x float>, float } @_ZNK3Raz6VectorIfLm3EEngEv(ptr noundef nonnull align 4 dereferenceable(12)) #5 align 2

; 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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(776) ptr @_ZN3Raz5World9getSystemINS_12RenderSystemEEERT_v(ptr noundef nonnull align 8 dereferenceable(104)) #4 align 2

declare void @_ZN3Raz6Window14addKeyCallbackENS_8Keyboard3KeyESt8functionIFvfEENS_5Input13ActionTriggerES3_IFvvEE(ptr noundef nonnull align 8 dereferenceable(273), i32 noundef, ptr noundef, i32 noundef, ptr noundef) #3

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvfEEC2IZ4mainE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #5 align 2

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

declare void @_ZN3Raz6Window16setCloseCallbackESt8functionIFvvEE(ptr noundef nonnull align 8 dereferenceable(273), ptr noundef) #3

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvvEEC2IZ4mainE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #5 align 2

declare void @_ZN3Raz8Renderer14setPolygonModeENS_15FaceOrientationENS_11PolygonModeE(i32 noundef, i32 noundef) #3

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(104) ptr @_ZN3Raz4Mesh10addSubmeshIJEEERNS_7SubmeshEDpOT_(ptr noundef nonnull align 8 dereferenceable(64)) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZN3Raz7Submesh11getVerticesEv(ptr noundef nonnull align 8 dereferenceable(104)) #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIN3Raz6VertexESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #4 align 2

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

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

declare noundef nonnull align 8 dereferenceable(80) ptr @_ZN3Raz5World9addEntityEb(ptr noundef nonnull align 8 dereferenceable(104), i1 noundef zeroext) #3

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(56) ptr @_ZN3Raz6Entity12addComponentINS_9TransformEJEEERT_DpOT0_(ptr noundef nonnull align 8 dereferenceable(80)) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(64) ptr @_ZN3Raz6Entity12addComponentINS_12MeshRendererEJRNS_4MeshENS_10RenderModeEEEERT_DpOT0_(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef nonnull align 8 dereferenceable(64), ptr noundef nonnull align 4 dereferenceable(4)) #4 align 2

declare void @_ZN3Raz8Renderer19setPatchVertexCountEi(i32 noundef) #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZN3Raz12MeshRenderer12getMaterialsEv(ptr noundef nonnull align 8 dereferenceable(64)) #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(384) ptr @_ZNSt6vectorIN3Raz8MaterialESaIS1_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24)) #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(384) ptr @_ZN3Raz8Material10getProgramEv(ptr noundef nonnull align 8 dereferenceable(384)) #5 align 2

declare void @_ZN3Raz19RenderShaderProgram28setTessellationControlShaderEONS_25TessellationControlShaderE(ptr noundef nonnull align 8 dereferenceable(384), ptr noundef nonnull align 8 dereferenceable(48)) #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3Raz25TessellationControlShader14loadFromSourceESt17basic_string_viewIcSt11char_traitsIcEE(ptr dead_on_unwind noalias writable sret(%"class.Raz::TessellationControlShader") align 8, i64, ptr) #4 align 2

declare void @_ZN3Raz19RenderShaderProgram31setTessellationEvaluationShaderEONS_28TessellationEvaluationShaderE(ptr noundef nonnull align 8 dereferenceable(384), ptr noundef nonnull align 8 dereferenceable(48)) #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3Raz28TessellationEvaluationShader14loadFromSourceESt17basic_string_viewIcSt11char_traitsIcEE(ptr dead_on_unwind noalias writable sret(%"class.Raz::TessellationEvaluationShader") align 8, i64, ptr) #4 align 2

declare void @_ZN3Raz13ShaderProgram4linkEv(ptr noundef nonnull align 8 dereferenceable(120)) #3

declare void @_ZN3Raz8Renderer8setLabelENS_16RenderObjectTypeEjPKc(i32 noundef, i32 noundef, ptr noundef) #3

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZNK3Raz13ShaderProgram8getIndexEv(ptr noundef nonnull align 8 dereferenceable(120)) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(48) ptr @_ZNK3Raz19RenderShaderProgram15getVertexShaderEv(ptr noundef nonnull align 8 dereferenceable(384)) #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3Raz6Shader8getIndexEv(ptr noundef nonnull align 8 dereferenceable(48)) #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(48) ptr @_ZNK3Raz19RenderShaderProgram28getTessellationControlShaderEv(ptr noundef nonnull align 8 dereferenceable(384)) #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(48) ptr @_ZNK3Raz19RenderShaderProgram31getTessellationEvaluationShaderEv(ptr noundef nonnull align 8 dereferenceable(384)) #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(48) ptr @_ZNK3Raz19RenderShaderProgram17getFragmentShaderEv(ptr noundef nonnull align 8 dereferenceable(384)) #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZN3Raz6Window10getOverlayEv(ptr noundef nonnull align 8 dereferenceable(273)) #5 align 2

declare noundef nonnull align 8 dereferenceable(80) ptr @_ZN3Raz7Overlay9addWindowENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_6VectorIfLm2EEESA_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef, ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8)) #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN3Raz6VectorIfLm2EEC2Ef(ptr noundef nonnull align 4 dereferenceable(8), float noundef) unnamed_addr #5 align 2

declare noundef nonnull align 8 dereferenceable(96) ptr @_ZN3Raz13OverlayWindow9addSliderENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt8functionIFvfEEfff(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef, ptr noundef, float noundef, float noundef, float noundef) #3

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvfEEC2IZ4mainE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvfEEC2IZ4mainE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #5 align 2

declare noundef nonnull align 8 dereferenceable(120) ptr @_ZN3Raz13OverlayWindow11addCheckboxENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt8functionIFvvEES9_b(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef, ptr noundef, ptr noundef, i1 noundef zeroext) #3

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvvEEC2IZ4mainE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvvEEC2IZ4mainE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvvEEC2IZ4mainE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvvEEC2IZ4mainE3$_7vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZN3Raz11Application3runIZ4mainE3$_8EEvOT_"(ptr noundef nonnull align 8 dereferenceable(93), ptr noundef nonnull align 8 dereferenceable(8)) #4 align 2

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

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

; Function Attrs: nounwind memory(none)
declare i32 @llvm.eh.typeid.for.p0(ptr) #9

declare ptr @__cxa_begin_catch(ptr)

declare void @_ZN3Raz6Logger5errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32)) #3

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNSt8literals15string_literalsli1sB5cxx11EPKcm(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef, i64 noundef) #10

declare void @__cxa_end_catch()

; Function Attrs: noinline noreturn nounwind uwtable
declare hidden void @__clang_call_terminate(ptr noundef) #11

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

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

attributes #0 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #1 = { mustprogress norecurse 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 #2 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress 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 #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 = { 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 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { nounwind memory(none) }
attributes #10 = { 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 #11 = { noinline noreturn nounwind uwtable "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 #12 = { nounwind }
attributes #13 = { noreturn }
attributes #14 = { 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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"float", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"_ZTSN3Raz9LightTypeE", !7, i64 0}
!15 = !{i64 0, i64 12, !16}
!16 = !{!7, !7, i64 0}
!17 = !{!18, !18, i64 0}
!18 = !{!"_ZTSN3Raz10RenderModeE", !7, i64 0}
!19 = !{i64 0, i64 8, !20, i64 8, i64 8, !9}
!20 = !{!21, !21, i64 0}
!21 = !{!"long", !7, i64 0}
!22 = !{!23, !23, i64 0}
!23 = !{!"vtable pointer", !8, i64 0}


; 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.Raz::Vector" = type { %"struct.std::array" }
%"struct.std::array" = type { [3 x float] }
%"class.Raz::Color" = type { %"class.Raz::Vector" }
%"class.std::basic_string_view" = type { i64, ptr }
%"class.Raz::Application" = type <{ %"class.std::vector", %"class.Raz::Bitset", %"struct.Raz::FrameTimeInfo", %"class.std::chrono::time_point", float, i8, [3 x i8] }>
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<std::unique_ptr<Raz::World>, std::allocator<std::unique_ptr<Raz::World>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::unique_ptr<Raz::World>, std::allocator<std::unique_ptr<Raz::World>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::unique_ptr<Raz::World>, std::allocator<std::unique_ptr<Raz::World>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::unique_ptr<Raz::World>, std::allocator<std::unique_ptr<Raz::World>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.Raz::Bitset" = type { %"class.std::vector.6" }
%"class.std::vector.6" = type { %"struct.std::_Bvector_base" }
%"struct.std::_Bvector_base" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" = type { %"struct.std::_Bit_iterator", %"struct.std::_Bit_iterator", ptr }
%"struct.std::_Bit_iterator" = type { %"struct.std::_Bit_iterator_base.base", [4 x i8] }
%"struct.std::_Bit_iterator_base.base" = type <{ ptr, i32 }>
%"struct.Raz::FrameTimeInfo" = type { float, float, i32, float }
%"class.std::chrono::time_point" = type { %"class.std::chrono::duration" }
%"class.std::chrono::duration" = type { i64 }
%"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.37" = type { i8 }
%"class.std::function.186" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon = type { ptr }
%"class.std::function.178" = type { %"class.std::_Function_base", ptr }
%class.anon.188 = type { ptr }
%"class.Raz::Mesh" = type { %"class.Raz::Component", %"class.std::vector.189", %"class.Raz::AABB" }
%"class.Raz::Component" = type { ptr }
%"class.std::vector.189" = type { %"struct.std::_Vector_base.190" }
%"struct.std::_Vector_base.190" = type { %"struct.std::_Vector_base<Raz::Submesh, std::allocator<Raz::Submesh>>::_Vector_impl" }
%"struct.std::_Vector_base<Raz::Submesh, std::allocator<Raz::Submesh>>::_Vector_impl" = type { %"struct.std::_Vector_base<Raz::Submesh, std::allocator<Raz::Submesh>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Raz::Submesh, std::allocator<Raz::Submesh>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.Raz::AABB" = type { %"class.Raz::Shape", %"class.Raz::Vector", %"class.Raz::Vector" }
%"class.Raz::Shape" = type { ptr }
%"struct.Raz::Vertex" = type { %"class.Raz::Vector", %"class.Raz::Vector.204", %"class.Raz::Vector", %"class.Raz::Vector" }
%"class.Raz::Vector.204" = type { %"struct.std::array.205" }
%"struct.std::array.205" = type { [2 x float] }
%"class.Raz::TessellationControlShader" = type { %"class.Raz::Shader" }
%"class.Raz::Shader" = type { ptr, %"class.Raz::OwnerValue", %"class.Raz::FilePath" }
%"class.Raz::OwnerValue" = type { i32 }
%"class.Raz::FilePath" = type { %"class.std::__cxx11::basic_string" }
%"class.Raz::TessellationEvaluationShader" = type { %"class.Raz::Shader" }
%class.anon.221 = type { ptr }
%class.anon.222 = type { ptr }
%class.anon.223 = type { ptr }
%class.anon.224 = type { ptr }
%class.anon.225 = type { i8 }
%class.anon.226 = type { i8 }
%class.anon.228 = type { ptr }

@_ZTISt9exception = external constant ptr
@.str = external hidden unnamed_addr constant [4 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [190 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@_ZN3Raz4AxisL1ZE = external hidden constant %"class.Raz::Vector", align 4
@_ZN3Raz11ColorPresetL5WhiteE = external hidden constant %"class.Raz::Color", align 4
@_ZN3Raz4AxisL1XE = external hidden constant %"class.Raz::Vector", align 4
@_ZN3Raz4AxisL1YE = external hidden constant %"class.Raz::Vector", align 4
@_ZN12_GLOBAL__N_114tessCtrlSourceE = external hidden local_unnamed_addr constant %"class.std::basic_string_view", align 8
@_ZN12_GLOBAL__N_114tessEvalSourceE = external hidden local_unnamed_addr constant %"class.std::basic_string_view", align 8
@.str.4 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [21 x i8], align 1

; Function Attrs: mustprogress norecurse uwtable
define dso_local noundef i32 @main() local_unnamed_addr #0 personality ptr @__gxx_personality_v0 {
  %1 = alloca %"class.Raz::Application", align 8
  %2 = alloca i32, align 4
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca %"class.std::allocator.37", align 1
  %7 = alloca %"class.Raz::Vector", align 4
  %8 = alloca float, align 4
  %9 = alloca float, align 4
  %10 = alloca float, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca %"class.Raz::Vector", align 8
  %15 = alloca float, align 4
  %16 = alloca %"class.std::function.186", align 8
  %17 = alloca %class.anon, align 8
  %18 = alloca %"class.std::function.178", align 8
  %19 = alloca %"class.std::function.178", align 8
  %20 = alloca %class.anon.188, align 8
  %21 = alloca %"class.Raz::Mesh", align 8
  %22 = alloca %"struct.Raz::Vertex", align 4
  %23 = alloca float, align 4
  %24 = alloca float, align 4
  %25 = alloca float, align 4
  %26 = alloca %"struct.Raz::Vertex", align 4
  %27 = alloca float, align 4
  %28 = alloca float, align 4
  %29 = alloca float, align 4
  %30 = alloca %"struct.Raz::Vertex", align 4
  %31 = alloca float, align 4
  %32 = alloca float, align 4
  %33 = alloca float, align 4
  %34 = alloca %"struct.Raz::Vertex", align 4
  %35 = alloca float, align 4
  %36 = alloca float, align 4
  %37 = alloca float, align 4
  %38 = alloca %"struct.Raz::Vertex", align 4
  %39 = alloca float, align 4
  %40 = alloca float, align 4
  %41 = alloca float, align 4
  %42 = alloca %"struct.Raz::Vertex", align 4
  %43 = alloca float, align 4
  %44 = alloca float, align 4
  %45 = alloca float, align 4
  %46 = alloca %"struct.Raz::Vertex", align 4
  %47 = alloca float, align 4
  %48 = alloca float, align 4
  %49 = alloca float, align 4
  %50 = alloca %"struct.Raz::Vertex", align 4
  %51 = alloca float, align 4
  %52 = alloca float, align 4
  %53 = alloca float, align 4
  %54 = alloca %"struct.Raz::Vertex", align 4
  %55 = alloca float, align 4
  %56 = alloca float, align 4
  %57 = alloca float, align 4
  %58 = alloca %"struct.Raz::Vertex", align 4
  %59 = alloca float, align 4
  %60 = alloca float, align 4
  %61 = alloca float, align 4
  %62 = alloca %"struct.Raz::Vertex", align 4
  %63 = alloca float, align 4
  %64 = alloca float, align 4
  %65 = alloca float, align 4
  %66 = alloca %"struct.Raz::Vertex", align 4
  %67 = alloca float, align 4
  %68 = alloca float, align 4
  %69 = alloca float, align 4
  %70 = alloca %"struct.Raz::Vertex", align 4
  %71 = alloca float, align 4
  %72 = alloca float, align 4
  %73 = alloca float, align 4
  %74 = alloca %"struct.Raz::Vertex", align 4
  %75 = alloca float, align 4
  %76 = alloca float, align 4
  %77 = alloca float, align 4
  %78 = alloca %"struct.Raz::Vertex", align 4
  %79 = alloca float, align 4
  %80 = alloca float, align 4
  %81 = alloca float, align 4
  %82 = alloca %"struct.Raz::Vertex", align 4
  %83 = alloca float, align 4
  %84 = alloca float, align 4
  %85 = alloca float, align 4
  %86 = alloca %"struct.Raz::Vertex", align 4
  %87 = alloca float, align 4
  %88 = alloca float, align 4
  %89 = alloca float, align 4
  %90 = alloca %"struct.Raz::Vertex", align 4
  %91 = alloca float, align 4
  %92 = alloca float, align 4
  %93 = alloca float, align 4
  %94 = alloca %"struct.Raz::Vertex", align 4
  %95 = alloca float, align 4
  %96 = alloca float, align 4
  %97 = alloca float, align 4
  %98 = alloca %"struct.Raz::Vertex", align 4
  %99 = alloca float, align 4
  %100 = alloca float, align 4
  %101 = alloca float, align 4
  %102 = alloca %"struct.Raz::Vertex", align 4
  %103 = alloca float, align 4
  %104 = alloca float, align 4
  %105 = alloca float, align 4
  %106 = alloca %"struct.Raz::Vertex", align 4
  %107 = alloca float, align 4
  %108 = alloca float, align 4
  %109 = alloca float, align 4
  %110 = alloca %"struct.Raz::Vertex", align 4
  %111 = alloca float, align 4
  %112 = alloca float, align 4
  %113 = alloca float, align 4
  %114 = alloca %"struct.Raz::Vertex", align 4
  %115 = alloca float, align 4
  %116 = alloca float, align 4
  %117 = alloca float, align 4
  %118 = alloca i32, align 4
  %119 = alloca %"class.Raz::TessellationControlShader", align 8
  %120 = alloca %"class.Raz::TessellationEvaluationShader", align 8
  %121 = alloca %"class.std::__cxx11::basic_string", align 8
  %122 = alloca %"class.std::allocator.37", align 1
  %123 = alloca %"class.Raz::Vector.204", align 4
  %124 = alloca %"class.Raz::Vector.204", align 4
  %125 = alloca %"class.std::__cxx11::basic_string", align 8
  %126 = alloca %"class.std::allocator.37", align 1
  %127 = alloca %"class.std::function.186", align 8
  %128 = alloca %class.anon.221, align 8
  %129 = alloca %"class.std::__cxx11::basic_string", align 8
  %130 = alloca %"class.std::allocator.37", align 1
  %131 = alloca %"class.std::function.186", align 8
  %132 = alloca %class.anon.222, align 8
  %133 = alloca %"class.std::__cxx11::basic_string", align 8
  %134 = alloca %"class.std::allocator.37", align 1
  %135 = alloca %"class.std::function.178", align 8
  %136 = alloca %class.anon.223, align 8
  %137 = alloca %"class.std::function.178", align 8
  %138 = alloca %class.anon.224, align 8
  %139 = alloca %"class.std::__cxx11::basic_string", align 8
  %140 = alloca %"class.std::allocator.37", align 1
  %141 = alloca %"class.std::function.178", align 8
  %142 = alloca %class.anon.225, align 1
  %143 = alloca %"class.std::function.178", align 8
  %144 = alloca %class.anon.226, align 1
  %145 = alloca %class.anon.228, align 8
  %146 = alloca %"class.std::__cxx11::basic_string", align 8
  %147 = alloca %"class.std::__cxx11::basic_string", align 8
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %1) #11
  invoke void @_ZN3Raz11ApplicationC1Em(ptr noundef nonnull align 8 dereferenceable(93) %1, i64 noundef 1)
          to label %148 unwind label %160

148:                                              ; preds = %0
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %2) #11
  store i32 2, ptr %2, align 4, !tbaa !5
  %149 = invoke noundef nonnull align 8 dereferenceable(104) ptr @_ZN3Raz11Application8addWorldIJiEEERNS_5WorldEDpOT_(ptr noundef nonnull align 8 dereferenceable(93) %1, ptr noundef nonnull align 4 dereferenceable(4) %2)
          to label %150 unwind label %162

150:                                              ; preds = %148
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %2) #11
  call void @_ZN3Raz6Logger15setLoggingLevelENS_12LoggingLevelE(i32 noundef 5)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3) #11
  store i32 1280, ptr %3, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #11
  store i32 720, ptr %4, align 4, !tbaa !5
  %151 = invoke noundef nonnull align 8 dereferenceable(776) ptr @_ZN3Raz5World9addSystemINS_12RenderSystemEJjjRA4_KcEEERT_DpOT0_(ptr noundef nonnull align 8 dereferenceable(104) %149, ptr noundef nonnull align 4 dereferenceable(4) %3, ptr noundef nonnull align 4 dereferenceable(4) %4, ptr noundef nonnull align 1 dereferenceable(4) @.str)
          to label %152 unwind label %164

152:                                              ; preds = %150
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #11
  %153 = call noundef zeroext i1 @_ZN3Raz8Renderer12checkVersionEii(i32 noundef 4, i32 noundef 0) #11
  br i1 %153, label %.critedge232.thread, label %154

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

155:                                              ; preds = %154
  %156 = invoke noundef zeroext i1 @_ZN3Raz8Renderer20isExtensionSupportedERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %.critedge232 unwind label %168

.critedge232:                                     ; preds = %155
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #11
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #11
  br i1 %156, label %.critedge232.thread, label %157

157:                                              ; preds = %.critedge232
  %158 = call ptr @__cxa_allocate_exception(i64 16) #11
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %158, ptr noundef nonnull @.str.3)
          to label %159 unwind label %171

159:                                              ; preds = %157
  invoke void @__cxa_throw(ptr nonnull %158, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #12
          to label %535 unwind label %173

160:                                              ; preds = %0
  %161 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  br label %510

162:                                              ; preds = %148
  %163 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %2) #11
  br label %509

164:                                              ; preds = %150
  %165 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #11
  br label %509

166:                                              ; preds = %154
  %167 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  br label %170

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

170:                                              ; preds = %166, %168
  %.pn = phi { ptr, i32 } [ %169, %168 ], [ %167, %166 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #11
  br label %509

171:                                              ; preds = %157
  %172 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  call void @__cxa_free_exception(ptr %158) #11
  br label %509

173:                                              ; preds = %159
  %174 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  br label %509

.critedge232.thread:                              ; preds = %152, %.critedge232
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %7) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #11
  store float 0.000000e+00, ptr %8, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #11
  store float 0.000000e+00, ptr %9, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #11
  store float 5.000000e+00, ptr %10, align 4, !tbaa !9
  call void @_ZN3Raz6VectorIfLm3EEC2IJfffEvvEEDpOT_(ptr noundef nonnull align 4 dereferenceable(12) %7, ptr noundef nonnull align 4 dereferenceable(4) %8, ptr noundef nonnull align 4 dereferenceable(4) %9, ptr noundef nonnull align 4 dereferenceable(4) %10) #11
  %175 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZN3Raz5World22addEntityWithComponentINS_9TransformEJNS_6VectorIfLm3EEEEEERNS_6EntityEDpOT0_(ptr noundef nonnull align 8 dereferenceable(104) %149, ptr noundef nonnull align 4 dereferenceable(12) %7)
          to label %176 unwind label %376

176:                                              ; preds = %.critedge232.thread
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %7) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #11
  %177 = invoke noundef nonnull align 8 dereferenceable(273) ptr @_ZN3Raz12RenderSystem9getWindowEv(ptr noundef nonnull align 8 dereferenceable(776) %151)
          to label %178 unwind label %378

178:                                              ; preds = %176
  %179 = call noundef i32 @_ZNK3Raz6Window8getWidthEv(ptr noundef nonnull align 8 dereferenceable(273) %177)
  store i32 %179, ptr %11, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #11
  %180 = invoke noundef nonnull align 8 dereferenceable(273) ptr @_ZN3Raz12RenderSystem9getWindowEv(ptr noundef nonnull align 8 dereferenceable(776) %151)
          to label %181 unwind label %380

181:                                              ; preds = %178
  %182 = call noundef i32 @_ZNK3Raz6Window9getHeightEv(ptr noundef nonnull align 8 dereferenceable(273) %180)
  store i32 %182, ptr %12, align 4, !tbaa !5
  %183 = invoke noundef nonnull align 8 dereferenceable(312) ptr @_ZN3Raz6Entity12addComponentINS_6CameraEJjjEEERT_DpOT0_(ptr noundef nonnull align 8 dereferenceable(80) %175, ptr noundef nonnull align 4 dereferenceable(4) %11, ptr noundef nonnull align 4 dereferenceable(4) %12)
          to label %184 unwind label %380

184:                                              ; preds = %181
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #11
  %185 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZN3Raz5World22addEntityWithComponentINS_9TransformEJEEERNS_6EntityEDpOT0_(ptr noundef nonnull align 8 dereferenceable(104) %149)
          to label %186 unwind label %383

186:                                              ; preds = %184
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #11
  store i32 1, ptr %13, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %14) #11
  %187 = call { <2 x float>, float } @_ZNK3Raz6VectorIfLm3EEngEv(ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1ZE) #11
  %.fca.0.extract145 = extractvalue { <2 x float>, float } %187, 0
  %.fca.1.extract146 = extractvalue { <2 x float>, float } %187, 1
  store <2 x float> %.fca.0.extract145, ptr %14, align 8
  %.sroa.2148.0..sroa_idx = getelementptr inbounds i8, ptr %14, i64 8
  store float %.fca.1.extract146, ptr %.sroa.2148.0..sroa_idx, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #11
  store float 3.000000e+00, ptr %15, align 4, !tbaa !9
  %188 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN3Raz6Entity12addComponentINS_5LightEJNS_9LightTypeENS_6VectorIfLm3EEEfRKNS_5ColorEEEERT_DpOT0_(ptr noundef nonnull align 8 dereferenceable(80) %185, ptr noundef nonnull align 4 dereferenceable(4) %13, ptr noundef nonnull align 4 dereferenceable(12) %14, ptr noundef nonnull align 4 dereferenceable(4) %15, ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz11ColorPresetL5WhiteE)
          to label %189 unwind label %385

189:                                              ; preds = %186
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %14) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #11
  %190 = invoke noundef nonnull align 8 dereferenceable(776) ptr @_ZN3Raz5World9getSystemINS_12RenderSystemEEERT_v(ptr noundef nonnull align 8 dereferenceable(104) %149)
          to label %191 unwind label %387

191:                                              ; preds = %189
  %192 = invoke noundef nonnull align 8 dereferenceable(273) ptr @_ZN3Raz12RenderSystem9getWindowEv(ptr noundef nonnull align 8 dereferenceable(776) %190)
          to label %193 unwind label %387

193:                                              ; preds = %191
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #11
  store ptr %1, ptr %17, align 8, !tbaa !13
  call void @"_ZNSt8functionIFvfEEC2IZ4mainE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull align 8 dereferenceable(8) %17) #11
  call void @_ZNSt8functionIFvvEEC2EDn(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr null) #11
  invoke void @_ZN3Raz6Window14addKeyCallbackENS_8Keyboard3KeyESt8functionIFvfEENS_5Input13ActionTriggerES3_IFvvEE(ptr noundef nonnull align 8 dereferenceable(273) %192, i32 noundef 256, ptr noundef nonnull %16, i32 noundef 1, ptr noundef nonnull %18)
          to label %194 unwind label %389

194:                                              ; preds = %193
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #11
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #11
  store ptr %1, ptr %20, align 8, !tbaa !13
  call void @"_ZNSt8functionIFvvEEC2IZ4mainE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull align 8 dereferenceable(8) %20) #11
  invoke void @_ZN3Raz6Window16setCloseCallbackESt8functionIFvvEE(ptr noundef nonnull align 8 dereferenceable(273) %192, ptr noundef nonnull %19)
          to label %195 unwind label %391

195:                                              ; preds = %194
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #11
  invoke void @_ZN3Raz8Renderer14setPolygonModeENS_15FaceOrientationENS_11PolygonModeE(i32 noundef 1032, i32 noundef 6913)
          to label %196 unwind label %387

196:                                              ; preds = %195
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %21) #11
  call void @_ZN3Raz4MeshC2Ev(ptr noundef nonnull align 8 dereferenceable(64) %21) #11
  %197 = invoke noundef nonnull align 8 dereferenceable(104) ptr @_ZN3Raz4Mesh10addSubmeshIJEEERNS_7SubmeshEDpOT_(ptr noundef nonnull align 8 dereferenceable(64) %21)
          to label %198 unwind label %393

198:                                              ; preds = %196
  %199 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3Raz7Submesh11getVerticesEv(ptr noundef nonnull align 8 dereferenceable(104) %197)
  invoke void @_ZNSt6vectorIN3Raz6VertexESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %199, i64 noundef 24)
          to label %200 unwind label %393

200:                                              ; preds = %198
  call void @llvm.lifetime.start.p0(i64 44, ptr nonnull %22) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #11
  store float 0x3FE279A6C0000000, ptr %23, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #11
  store float 0xBFE279A6C0000000, ptr %24, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %25) #11
  store float 0x3FE279A6C0000000, ptr %25, align 4, !tbaa !9
  call void @_ZN3Raz6VectorIfLm3EEC2IJfffEvvEEDpOT_(ptr noundef nonnull align 4 dereferenceable(12) %22, ptr noundef nonnull align 4 dereferenceable(4) %23, ptr noundef nonnull align 4 dereferenceable(4) %24, ptr noundef nonnull align 4 dereferenceable(4) %25) #11
  %201 = getelementptr inbounds i8, ptr %22, i64 12
  store i64 0, ptr %201, align 4
  call void @_ZN3Raz6VectorIfLm2EEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %201) #11
  %202 = getelementptr inbounds i8, ptr %22, i64 20
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %202, ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1XE, i64 12, i1 false), !tbaa.struct !15
  %203 = getelementptr inbounds i8, ptr %22, i64 32
  %204 = call { <2 x float>, float } @_ZNK3Raz6VectorIfLm3EEngEv(ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1ZE) #11
  %.fca.0.extract113 = extractvalue { <2 x float>, float } %204, 0
  %.fca.1.extract114 = extractvalue { <2 x float>, float } %204, 1
  store <2 x float> %.fca.0.extract113, ptr %203, align 4
  %.sroa.2116.0..sroa_idx = getelementptr inbounds i8, ptr %22, i64 40
  store float %.fca.1.extract114, ptr %.sroa.2116.0..sroa_idx, align 4
  %205 = invoke noundef nonnull align 4 dereferenceable(44) ptr @_ZNSt6vectorIN3Raz6VertexESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %199, ptr noundef nonnull align 4 dereferenceable(44) %22)
          to label %206 unwind label %395

206:                                              ; preds = %200
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %22) #11
  call void @llvm.lifetime.start.p0(i64 44, ptr nonnull %26) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %27) #11
  store float 0x3FE279A6C0000000, ptr %27, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %28) #11
  store float 0x3FE279A6C0000000, ptr %28, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %29) #11
  store float 0x3FE279A6C0000000, ptr %29, align 4, !tbaa !9
  call void @_ZN3Raz6VectorIfLm3EEC2IJfffEvvEEDpOT_(ptr noundef nonnull align 4 dereferenceable(12) %26, ptr noundef nonnull align 4 dereferenceable(4) %27, ptr noundef nonnull align 4 dereferenceable(4) %28, ptr noundef nonnull align 4 dereferenceable(4) %29) #11
  %207 = getelementptr inbounds i8, ptr %26, i64 12
  store i64 0, ptr %207, align 4
  call void @_ZN3Raz6VectorIfLm2EEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %207) #11
  %208 = getelementptr inbounds i8, ptr %26, i64 20
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %208, ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1XE, i64 12, i1 false), !tbaa.struct !15
  %209 = getelementptr inbounds i8, ptr %26, i64 32
  %210 = call { <2 x float>, float } @_ZNK3Raz6VectorIfLm3EEngEv(ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1ZE) #11
  %.fca.0.extract109 = extractvalue { <2 x float>, float } %210, 0
  %.fca.1.extract110 = extractvalue { <2 x float>, float } %210, 1
  store <2 x float> %.fca.0.extract109, ptr %209, align 4
  %.sroa.2112.0..sroa_idx = getelementptr inbounds i8, ptr %26, i64 40
  store float %.fca.1.extract110, ptr %.sroa.2112.0..sroa_idx, align 4
  %211 = invoke noundef nonnull align 4 dereferenceable(44) ptr @_ZNSt6vectorIN3Raz6VertexESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %199, ptr noundef nonnull align 4 dereferenceable(44) %26)
          to label %212 unwind label %397

212:                                              ; preds = %206
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %26) #11
  call void @llvm.lifetime.start.p0(i64 44, ptr nonnull %30) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %31) #11
  store float 0x3FE279A6C0000000, ptr %31, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %32) #11
  store float 0xBFE279A6C0000000, ptr %32, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %33) #11
  store float 0xBFE279A6C0000000, ptr %33, align 4, !tbaa !9
  call void @_ZN3Raz6VectorIfLm3EEC2IJfffEvvEEDpOT_(ptr noundef nonnull align 4 dereferenceable(12) %30, ptr noundef nonnull align 4 dereferenceable(4) %31, ptr noundef nonnull align 4 dereferenceable(4) %32, ptr noundef nonnull align 4 dereferenceable(4) %33) #11
  %213 = getelementptr inbounds i8, ptr %30, i64 12
  store i64 0, ptr %213, align 4
  call void @_ZN3Raz6VectorIfLm2EEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %213) #11
  %214 = getelementptr inbounds i8, ptr %30, i64 20
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %214, ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1XE, i64 12, i1 false), !tbaa.struct !15
  %215 = getelementptr inbounds i8, ptr %30, i64 32
  %216 = call { <2 x float>, float } @_ZNK3Raz6VectorIfLm3EEngEv(ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1ZE) #11
  %.fca.0.extract105 = extractvalue { <2 x float>, float } %216, 0
  %.fca.1.extract106 = extractvalue { <2 x float>, float } %216, 1
  store <2 x float> %.fca.0.extract105, ptr %215, align 4
  %.sroa.2108.0..sroa_idx = getelementptr inbounds i8, ptr %30, i64 40
  store float %.fca.1.extract106, ptr %.sroa.2108.0..sroa_idx, align 4
  %217 = invoke noundef nonnull align 4 dereferenceable(44) ptr @_ZNSt6vectorIN3Raz6VertexESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %199, ptr noundef nonnull align 4 dereferenceable(44) %30)
          to label %218 unwind label %399

218:                                              ; preds = %212
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %33) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %30) #11
  call void @llvm.lifetime.start.p0(i64 44, ptr nonnull %34) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %35) #11
  store float 0x3FE279A6C0000000, ptr %35, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %36) #11
  store float 0x3FE279A6C0000000, ptr %36, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %37) #11
  store float 0xBFE279A6C0000000, ptr %37, align 4, !tbaa !9
  call void @_ZN3Raz6VectorIfLm3EEC2IJfffEvvEEDpOT_(ptr noundef nonnull align 4 dereferenceable(12) %34, ptr noundef nonnull align 4 dereferenceable(4) %35, ptr noundef nonnull align 4 dereferenceable(4) %36, ptr noundef nonnull align 4 dereferenceable(4) %37) #11
  %219 = getelementptr inbounds i8, ptr %34, i64 12
  store i64 0, ptr %219, align 4
  call void @_ZN3Raz6VectorIfLm2EEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %219) #11
  %220 = getelementptr inbounds i8, ptr %34, i64 20
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %220, ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1XE, i64 12, i1 false), !tbaa.struct !15
  %221 = getelementptr inbounds i8, ptr %34, i64 32
  %222 = call { <2 x float>, float } @_ZNK3Raz6VectorIfLm3EEngEv(ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1ZE) #11
  %.fca.0.extract101 = extractvalue { <2 x float>, float } %222, 0
  %.fca.1.extract102 = extractvalue { <2 x float>, float } %222, 1
  store <2 x float> %.fca.0.extract101, ptr %221, align 4
  %.sroa.2104.0..sroa_idx = getelementptr inbounds i8, ptr %34, i64 40
  store float %.fca.1.extract102, ptr %.sroa.2104.0..sroa_idx, align 4
  %223 = invoke noundef nonnull align 4 dereferenceable(44) ptr @_ZNSt6vectorIN3Raz6VertexESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %199, ptr noundef nonnull align 4 dereferenceable(44) %34)
          to label %224 unwind label %401

224:                                              ; preds = %218
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %37) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %36) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %35) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %34) #11
  call void @llvm.lifetime.start.p0(i64 44, ptr nonnull %38) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %39) #11
  store float 0xBFE279A6C0000000, ptr %39, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %40) #11
  store float 0xBFE279A6C0000000, ptr %40, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %41) #11
  store float 0xBFE279A6C0000000, ptr %41, align 4, !tbaa !9
  call void @_ZN3Raz6VectorIfLm3EEC2IJfffEvvEEDpOT_(ptr noundef nonnull align 4 dereferenceable(12) %38, ptr noundef nonnull align 4 dereferenceable(4) %39, ptr noundef nonnull align 4 dereferenceable(4) %40, ptr noundef nonnull align 4 dereferenceable(4) %41) #11
  %225 = getelementptr inbounds i8, ptr %38, i64 12
  store i64 0, ptr %225, align 4
  call void @_ZN3Raz6VectorIfLm2EEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %225) #11
  %226 = getelementptr inbounds i8, ptr %38, i64 20
  %227 = call { <2 x float>, float } @_ZNK3Raz6VectorIfLm3EEngEv(ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1XE) #11
  %.fca.0.extract97 = extractvalue { <2 x float>, float } %227, 0
  %.fca.1.extract98 = extractvalue { <2 x float>, float } %227, 1
  store <2 x float> %.fca.0.extract97, ptr %226, align 4
  %.sroa.2100.0..sroa_idx = getelementptr inbounds i8, ptr %38, i64 28
  store float %.fca.1.extract98, ptr %.sroa.2100.0..sroa_idx, align 4
  %228 = getelementptr inbounds i8, ptr %38, i64 32
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %228, ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1ZE, i64 12, i1 false), !tbaa.struct !15
  %229 = invoke noundef nonnull align 4 dereferenceable(44) ptr @_ZNSt6vectorIN3Raz6VertexESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %199, ptr noundef nonnull align 4 dereferenceable(44) %38)
          to label %230 unwind label %403

230:                                              ; preds = %224
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %41) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %40) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %39) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %38) #11
  call void @llvm.lifetime.start.p0(i64 44, ptr nonnull %42) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %43) #11
  store float 0xBFE279A6C0000000, ptr %43, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %44) #11
  store float 0x3FE279A6C0000000, ptr %44, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %45) #11
  store float 0xBFE279A6C0000000, ptr %45, align 4, !tbaa !9
  call void @_ZN3Raz6VectorIfLm3EEC2IJfffEvvEEDpOT_(ptr noundef nonnull align 4 dereferenceable(12) %42, ptr noundef nonnull align 4 dereferenceable(4) %43, ptr noundef nonnull align 4 dereferenceable(4) %44, ptr noundef nonnull align 4 dereferenceable(4) %45) #11
  %231 = getelementptr inbounds i8, ptr %42, i64 12
  store i64 0, ptr %231, align 4
  call void @_ZN3Raz6VectorIfLm2EEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %231) #11
  %232 = getelementptr inbounds i8, ptr %42, i64 20
  %233 = call { <2 x float>, float } @_ZNK3Raz6VectorIfLm3EEngEv(ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1XE) #11
  %.fca.0.extract93 = extractvalue { <2 x float>, float } %233, 0
  %.fca.1.extract94 = extractvalue { <2 x float>, float } %233, 1
  store <2 x float> %.fca.0.extract93, ptr %232, align 4
  %.sroa.296.0..sroa_idx = getelementptr inbounds i8, ptr %42, i64 28
  store float %.fca.1.extract94, ptr %.sroa.296.0..sroa_idx, align 4
  %234 = getelementptr inbounds i8, ptr %42, i64 32
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %234, ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1ZE, i64 12, i1 false), !tbaa.struct !15
  %235 = invoke noundef nonnull align 4 dereferenceable(44) ptr @_ZNSt6vectorIN3Raz6VertexESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %199, ptr noundef nonnull align 4 dereferenceable(44) %42)
          to label %236 unwind label %405

236:                                              ; preds = %230
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %45) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %44) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %43) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %42) #11
  call void @llvm.lifetime.start.p0(i64 44, ptr nonnull %46) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %47) #11
  store float 0xBFE279A6C0000000, ptr %47, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %48) #11
  store float 0xBFE279A6C0000000, ptr %48, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %49) #11
  store float 0x3FE279A6C0000000, ptr %49, align 4, !tbaa !9
  call void @_ZN3Raz6VectorIfLm3EEC2IJfffEvvEEDpOT_(ptr noundef nonnull align 4 dereferenceable(12) %46, ptr noundef nonnull align 4 dereferenceable(4) %47, ptr noundef nonnull align 4 dereferenceable(4) %48, ptr noundef nonnull align 4 dereferenceable(4) %49) #11
  %237 = getelementptr inbounds i8, ptr %46, i64 12
  store i64 0, ptr %237, align 4
  call void @_ZN3Raz6VectorIfLm2EEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %237) #11
  %238 = getelementptr inbounds i8, ptr %46, i64 20
  %239 = call { <2 x float>, float } @_ZNK3Raz6VectorIfLm3EEngEv(ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1XE) #11
  %.fca.0.extract89 = extractvalue { <2 x float>, float } %239, 0
  %.fca.1.extract90 = extractvalue { <2 x float>, float } %239, 1
  store <2 x float> %.fca.0.extract89, ptr %238, align 4
  %.sroa.292.0..sroa_idx = getelementptr inbounds i8, ptr %46, i64 28
  store float %.fca.1.extract90, ptr %.sroa.292.0..sroa_idx, align 4
  %240 = getelementptr inbounds i8, ptr %46, i64 32
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %240, ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1ZE, i64 12, i1 false), !tbaa.struct !15
  %241 = invoke noundef nonnull align 4 dereferenceable(44) ptr @_ZNSt6vectorIN3Raz6VertexESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %199, ptr noundef nonnull align 4 dereferenceable(44) %46)
          to label %242 unwind label %407

242:                                              ; preds = %236
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %49) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %48) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %47) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %46) #11
  call void @llvm.lifetime.start.p0(i64 44, ptr nonnull %50) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %51) #11
  store float 0xBFE279A6C0000000, ptr %51, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %52) #11
  store float 0x3FE279A6C0000000, ptr %52, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %53) #11
  store float 0x3FE279A6C0000000, ptr %53, align 4, !tbaa !9
  call void @_ZN3Raz6VectorIfLm3EEC2IJfffEvvEEDpOT_(ptr noundef nonnull align 4 dereferenceable(12) %50, ptr noundef nonnull align 4 dereferenceable(4) %51, ptr noundef nonnull align 4 dereferenceable(4) %52, ptr noundef nonnull align 4 dereferenceable(4) %53) #11
  %243 = getelementptr inbounds i8, ptr %50, i64 12
  store i64 0, ptr %243, align 4
  call void @_ZN3Raz6VectorIfLm2EEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %243) #11
  %244 = getelementptr inbounds i8, ptr %50, i64 20
  %245 = call { <2 x float>, float } @_ZNK3Raz6VectorIfLm3EEngEv(ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1XE) #11
  %.fca.0.extract85 = extractvalue { <2 x float>, float } %245, 0
  %.fca.1.extract86 = extractvalue { <2 x float>, float } %245, 1
  store <2 x float> %.fca.0.extract85, ptr %244, align 4
  %.sroa.288.0..sroa_idx = getelementptr inbounds i8, ptr %50, i64 28
  store float %.fca.1.extract86, ptr %.sroa.288.0..sroa_idx, align 4
  %246 = getelementptr inbounds i8, ptr %50, i64 32
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %246, ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1ZE, i64 12, i1 false), !tbaa.struct !15
  %247 = invoke noundef nonnull align 4 dereferenceable(44) ptr @_ZNSt6vectorIN3Raz6VertexESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %199, ptr noundef nonnull align 4 dereferenceable(44) %50)
          to label %248 unwind label %409

248:                                              ; preds = %242
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %53) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %52) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %51) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %50) #11
  call void @llvm.lifetime.start.p0(i64 44, ptr nonnull %54) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %55) #11
  store float 0xBFE279A6C0000000, ptr %55, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %56) #11
  store float 0x3FE279A6C0000000, ptr %56, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %57) #11
  store float 0x3FE279A6C0000000, ptr %57, align 4, !tbaa !9
  call void @_ZN3Raz6VectorIfLm3EEC2IJfffEvvEEDpOT_(ptr noundef nonnull align 4 dereferenceable(12) %54, ptr noundef nonnull align 4 dereferenceable(4) %55, ptr noundef nonnull align 4 dereferenceable(4) %56, ptr noundef nonnull align 4 dereferenceable(4) %57) #11
  %249 = getelementptr inbounds i8, ptr %54, i64 12
  store i64 0, ptr %249, align 4
  call void @_ZN3Raz6VectorIfLm2EEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %249) #11
  %250 = getelementptr inbounds i8, ptr %54, i64 20
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %250, ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1YE, i64 12, i1 false), !tbaa.struct !15
  %251 = getelementptr inbounds i8, ptr %54, i64 32
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %251, ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1XE, i64 12, i1 false), !tbaa.struct !15
  %252 = invoke noundef nonnull align 4 dereferenceable(44) ptr @_ZNSt6vectorIN3Raz6VertexESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %199, ptr noundef nonnull align 4 dereferenceable(44) %54)
          to label %253 unwind label %411

253:                                              ; preds = %248
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %57) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %56) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %55) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %54) #11
  call void @llvm.lifetime.start.p0(i64 44, ptr nonnull %58) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %59) #11
  store float 0xBFE279A6C0000000, ptr %59, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %60) #11
  store float 0x3FE279A6C0000000, ptr %60, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %61) #11
  store float 0xBFE279A6C0000000, ptr %61, align 4, !tbaa !9
  call void @_ZN3Raz6VectorIfLm3EEC2IJfffEvvEEDpOT_(ptr noundef nonnull align 4 dereferenceable(12) %58, ptr noundef nonnull align 4 dereferenceable(4) %59, ptr noundef nonnull align 4 dereferenceable(4) %60, ptr noundef nonnull align 4 dereferenceable(4) %61) #11
  %254 = getelementptr inbounds i8, ptr %58, i64 12
  store i64 0, ptr %254, align 4
  call void @_ZN3Raz6VectorIfLm2EEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %254) #11
  %255 = getelementptr inbounds i8, ptr %58, i64 20
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %255, ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1YE, i64 12, i1 false), !tbaa.struct !15
  %256 = getelementptr inbounds i8, ptr %58, i64 32
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %256, ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1XE, i64 12, i1 false), !tbaa.struct !15
  %257 = invoke noundef nonnull align 4 dereferenceable(44) ptr @_ZNSt6vectorIN3Raz6VertexESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %199, ptr noundef nonnull align 4 dereferenceable(44) %58)
          to label %258 unwind label %413

258:                                              ; preds = %253
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %61) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %60) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %59) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %58) #11
  call void @llvm.lifetime.start.p0(i64 44, ptr nonnull %62) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %63) #11
  store float 0x3FE279A6C0000000, ptr %63, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %64) #11
  store float 0x3FE279A6C0000000, ptr %64, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %65) #11
  store float 0x3FE279A6C0000000, ptr %65, align 4, !tbaa !9
  call void @_ZN3Raz6VectorIfLm3EEC2IJfffEvvEEDpOT_(ptr noundef nonnull align 4 dereferenceable(12) %62, ptr noundef nonnull align 4 dereferenceable(4) %63, ptr noundef nonnull align 4 dereferenceable(4) %64, ptr noundef nonnull align 4 dereferenceable(4) %65) #11
  %259 = getelementptr inbounds i8, ptr %62, i64 12
  store i64 0, ptr %259, align 4
  call void @_ZN3Raz6VectorIfLm2EEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %259) #11
  %260 = getelementptr inbounds i8, ptr %62, i64 20
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %260, ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1YE, i64 12, i1 false), !tbaa.struct !15
  %261 = getelementptr inbounds i8, ptr %62, i64 32
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %261, ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1XE, i64 12, i1 false), !tbaa.struct !15
  %262 = invoke noundef nonnull align 4 dereferenceable(44) ptr @_ZNSt6vectorIN3Raz6VertexESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %199, ptr noundef nonnull align 4 dereferenceable(44) %62)
          to label %263 unwind label %415

263:                                              ; preds = %258
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %65) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %64) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %63) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %62) #11
  call void @llvm.lifetime.start.p0(i64 44, ptr nonnull %66) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %67) #11
  store float 0x3FE279A6C0000000, ptr %67, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %68) #11
  store float 0x3FE279A6C0000000, ptr %68, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %69) #11
  store float 0xBFE279A6C0000000, ptr %69, align 4, !tbaa !9
  call void @_ZN3Raz6VectorIfLm3EEC2IJfffEvvEEDpOT_(ptr noundef nonnull align 4 dereferenceable(12) %66, ptr noundef nonnull align 4 dereferenceable(4) %67, ptr noundef nonnull align 4 dereferenceable(4) %68, ptr noundef nonnull align 4 dereferenceable(4) %69) #11
  %264 = getelementptr inbounds i8, ptr %66, i64 12
  store i64 0, ptr %264, align 4
  call void @_ZN3Raz6VectorIfLm2EEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %264) #11
  %265 = getelementptr inbounds i8, ptr %66, i64 20
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %265, ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1YE, i64 12, i1 false), !tbaa.struct !15
  %266 = getelementptr inbounds i8, ptr %66, i64 32
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %266, ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1XE, i64 12, i1 false), !tbaa.struct !15
  %267 = invoke noundef nonnull align 4 dereferenceable(44) ptr @_ZNSt6vectorIN3Raz6VertexESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %199, ptr noundef nonnull align 4 dereferenceable(44) %66)
          to label %268 unwind label %417

268:                                              ; preds = %263
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %69) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %68) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %67) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %66) #11
  call void @llvm.lifetime.start.p0(i64 44, ptr nonnull %70) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %71) #11
  store float 0x3FE279A6C0000000, ptr %71, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %72) #11
  store float 0xBFE279A6C0000000, ptr %72, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %73) #11
  store float 0x3FE279A6C0000000, ptr %73, align 4, !tbaa !9
  call void @_ZN3Raz6VectorIfLm3EEC2IJfffEvvEEDpOT_(ptr noundef nonnull align 4 dereferenceable(12) %70, ptr noundef nonnull align 4 dereferenceable(4) %71, ptr noundef nonnull align 4 dereferenceable(4) %72, ptr noundef nonnull align 4 dereferenceable(4) %73) #11
  %269 = getelementptr inbounds i8, ptr %70, i64 12
  store i64 0, ptr %269, align 4
  call void @_ZN3Raz6VectorIfLm2EEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %269) #11
  %270 = getelementptr inbounds i8, ptr %70, i64 20
  %271 = call { <2 x float>, float } @_ZNK3Raz6VectorIfLm3EEngEv(ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1YE) #11
  %.fca.0.extract81 = extractvalue { <2 x float>, float } %271, 0
  %.fca.1.extract82 = extractvalue { <2 x float>, float } %271, 1
  store <2 x float> %.fca.0.extract81, ptr %270, align 4
  %.sroa.284.0..sroa_idx = getelementptr inbounds i8, ptr %70, i64 28
  store float %.fca.1.extract82, ptr %.sroa.284.0..sroa_idx, align 4
  %272 = getelementptr inbounds i8, ptr %70, i64 32
  %273 = call { <2 x float>, float } @_ZNK3Raz6VectorIfLm3EEngEv(ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1XE) #11
  %.fca.0.extract77 = extractvalue { <2 x float>, float } %273, 0
  %.fca.1.extract78 = extractvalue { <2 x float>, float } %273, 1
  store <2 x float> %.fca.0.extract77, ptr %272, align 4
  %.sroa.280.0..sroa_idx = getelementptr inbounds i8, ptr %70, i64 40
  store float %.fca.1.extract78, ptr %.sroa.280.0..sroa_idx, align 4
  %274 = invoke noundef nonnull align 4 dereferenceable(44) ptr @_ZNSt6vectorIN3Raz6VertexESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %199, ptr noundef nonnull align 4 dereferenceable(44) %70)
          to label %275 unwind label %419

275:                                              ; preds = %268
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %73) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %72) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %71) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %70) #11
  call void @llvm.lifetime.start.p0(i64 44, ptr nonnull %74) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %75) #11
  store float 0x3FE279A6C0000000, ptr %75, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %76) #11
  store float 0xBFE279A6C0000000, ptr %76, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %77) #11
  store float 0xBFE279A6C0000000, ptr %77, align 4, !tbaa !9
  call void @_ZN3Raz6VectorIfLm3EEC2IJfffEvvEEDpOT_(ptr noundef nonnull align 4 dereferenceable(12) %74, ptr noundef nonnull align 4 dereferenceable(4) %75, ptr noundef nonnull align 4 dereferenceable(4) %76, ptr noundef nonnull align 4 dereferenceable(4) %77) #11
  %276 = getelementptr inbounds i8, ptr %74, i64 12
  store i64 0, ptr %276, align 4
  call void @_ZN3Raz6VectorIfLm2EEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %276) #11
  %277 = getelementptr inbounds i8, ptr %74, i64 20
  %278 = call { <2 x float>, float } @_ZNK3Raz6VectorIfLm3EEngEv(ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1YE) #11
  %.fca.0.extract73 = extractvalue { <2 x float>, float } %278, 0
  %.fca.1.extract74 = extractvalue { <2 x float>, float } %278, 1
  store <2 x float> %.fca.0.extract73, ptr %277, align 4
  %.sroa.276.0..sroa_idx = getelementptr inbounds i8, ptr %74, i64 28
  store float %.fca.1.extract74, ptr %.sroa.276.0..sroa_idx, align 4
  %279 = getelementptr inbounds i8, ptr %74, i64 32
  %280 = call { <2 x float>, float } @_ZNK3Raz6VectorIfLm3EEngEv(ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1XE) #11
  %.fca.0.extract69 = extractvalue { <2 x float>, float } %280, 0
  %.fca.1.extract70 = extractvalue { <2 x float>, float } %280, 1
  store <2 x float> %.fca.0.extract69, ptr %279, align 4
  %.sroa.272.0..sroa_idx = getelementptr inbounds i8, ptr %74, i64 40
  store float %.fca.1.extract70, ptr %.sroa.272.0..sroa_idx, align 4
  %281 = invoke noundef nonnull align 4 dereferenceable(44) ptr @_ZNSt6vectorIN3Raz6VertexESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %199, ptr noundef nonnull align 4 dereferenceable(44) %74)
          to label %282 unwind label %421

282:                                              ; preds = %275
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %77) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %76) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %75) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %74) #11
  call void @llvm.lifetime.start.p0(i64 44, ptr nonnull %78) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %79) #11
  store float 0xBFE279A6C0000000, ptr %79, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %80) #11
  store float 0xBFE279A6C0000000, ptr %80, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %81) #11
  store float 0x3FE279A6C0000000, ptr %81, align 4, !tbaa !9
  call void @_ZN3Raz6VectorIfLm3EEC2IJfffEvvEEDpOT_(ptr noundef nonnull align 4 dereferenceable(12) %78, ptr noundef nonnull align 4 dereferenceable(4) %79, ptr noundef nonnull align 4 dereferenceable(4) %80, ptr noundef nonnull align 4 dereferenceable(4) %81) #11
  %283 = getelementptr inbounds i8, ptr %78, i64 12
  store i64 0, ptr %283, align 4
  call void @_ZN3Raz6VectorIfLm2EEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %283) #11
  %284 = getelementptr inbounds i8, ptr %78, i64 20
  %285 = call { <2 x float>, float } @_ZNK3Raz6VectorIfLm3EEngEv(ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1YE) #11
  %.fca.0.extract65 = extractvalue { <2 x float>, float } %285, 0
  %.fca.1.extract66 = extractvalue { <2 x float>, float } %285, 1
  store <2 x float> %.fca.0.extract65, ptr %284, align 4
  %.sroa.268.0..sroa_idx = getelementptr inbounds i8, ptr %78, i64 28
  store float %.fca.1.extract66, ptr %.sroa.268.0..sroa_idx, align 4
  %286 = getelementptr inbounds i8, ptr %78, i64 32
  %287 = call { <2 x float>, float } @_ZNK3Raz6VectorIfLm3EEngEv(ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1XE) #11
  %.fca.0.extract61 = extractvalue { <2 x float>, float } %287, 0
  %.fca.1.extract62 = extractvalue { <2 x float>, float } %287, 1
  store <2 x float> %.fca.0.extract61, ptr %286, align 4
  %.sroa.264.0..sroa_idx = getelementptr inbounds i8, ptr %78, i64 40
  store float %.fca.1.extract62, ptr %.sroa.264.0..sroa_idx, align 4
  %288 = invoke noundef nonnull align 4 dereferenceable(44) ptr @_ZNSt6vectorIN3Raz6VertexESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %199, ptr noundef nonnull align 4 dereferenceable(44) %78)
          to label %289 unwind label %423

289:                                              ; preds = %282
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %81) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %80) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %79) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %78) #11
  call void @llvm.lifetime.start.p0(i64 44, ptr nonnull %82) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %83) #11
  store float 0xBFE279A6C0000000, ptr %83, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %84) #11
  store float 0xBFE279A6C0000000, ptr %84, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %85) #11
  store float 0xBFE279A6C0000000, ptr %85, align 4, !tbaa !9
  call void @_ZN3Raz6VectorIfLm3EEC2IJfffEvvEEDpOT_(ptr noundef nonnull align 4 dereferenceable(12) %82, ptr noundef nonnull align 4 dereferenceable(4) %83, ptr noundef nonnull align 4 dereferenceable(4) %84, ptr noundef nonnull align 4 dereferenceable(4) %85) #11
  %290 = getelementptr inbounds i8, ptr %82, i64 12
  store i64 0, ptr %290, align 4
  call void @_ZN3Raz6VectorIfLm2EEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %290) #11
  %291 = getelementptr inbounds i8, ptr %82, i64 20
  %292 = call { <2 x float>, float } @_ZNK3Raz6VectorIfLm3EEngEv(ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1YE) #11
  %.fca.0.extract57 = extractvalue { <2 x float>, float } %292, 0
  %.fca.1.extract58 = extractvalue { <2 x float>, float } %292, 1
  store <2 x float> %.fca.0.extract57, ptr %291, align 4
  %.sroa.260.0..sroa_idx = getelementptr inbounds i8, ptr %82, i64 28
  store float %.fca.1.extract58, ptr %.sroa.260.0..sroa_idx, align 4
  %293 = getelementptr inbounds i8, ptr %82, i64 32
  %294 = call { <2 x float>, float } @_ZNK3Raz6VectorIfLm3EEngEv(ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1XE) #11
  %.fca.0.extract53 = extractvalue { <2 x float>, float } %294, 0
  %.fca.1.extract54 = extractvalue { <2 x float>, float } %294, 1
  store <2 x float> %.fca.0.extract53, ptr %293, align 4
  %.sroa.256.0..sroa_idx = getelementptr inbounds i8, ptr %82, i64 40
  store float %.fca.1.extract54, ptr %.sroa.256.0..sroa_idx, align 4
  %295 = invoke noundef nonnull align 4 dereferenceable(44) ptr @_ZNSt6vectorIN3Raz6VertexESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %199, ptr noundef nonnull align 4 dereferenceable(44) %82)
          to label %296 unwind label %425

296:                                              ; preds = %289
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %85) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %84) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %83) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %82) #11
  call void @llvm.lifetime.start.p0(i64 44, ptr nonnull %86) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %87) #11
  store float 0xBFE279A6C0000000, ptr %87, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %88) #11
  store float 0xBFE279A6C0000000, ptr %88, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %89) #11
  store float 0x3FE279A6C0000000, ptr %89, align 4, !tbaa !9
  call void @_ZN3Raz6VectorIfLm3EEC2IJfffEvvEEDpOT_(ptr noundef nonnull align 4 dereferenceable(12) %86, ptr noundef nonnull align 4 dereferenceable(4) %87, ptr noundef nonnull align 4 dereferenceable(4) %88, ptr noundef nonnull align 4 dereferenceable(4) %89) #11
  %297 = getelementptr inbounds i8, ptr %86, i64 12
  store i64 0, ptr %297, align 4
  call void @_ZN3Raz6VectorIfLm2EEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %297) #11
  %298 = getelementptr inbounds i8, ptr %86, i64 20
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %298, ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1ZE, i64 12, i1 false), !tbaa.struct !15
  %299 = getelementptr inbounds i8, ptr %86, i64 32
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %299, ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1XE, i64 12, i1 false), !tbaa.struct !15
  %300 = invoke noundef nonnull align 4 dereferenceable(44) ptr @_ZNSt6vectorIN3Raz6VertexESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %199, ptr noundef nonnull align 4 dereferenceable(44) %86)
          to label %301 unwind label %427

301:                                              ; preds = %296
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %89) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %88) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %87) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %86) #11
  call void @llvm.lifetime.start.p0(i64 44, ptr nonnull %90) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %91) #11
  store float 0xBFE279A6C0000000, ptr %91, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %92) #11
  store float 0x3FE279A6C0000000, ptr %92, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %93) #11
  store float 0x3FE279A6C0000000, ptr %93, align 4, !tbaa !9
  call void @_ZN3Raz6VectorIfLm3EEC2IJfffEvvEEDpOT_(ptr noundef nonnull align 4 dereferenceable(12) %90, ptr noundef nonnull align 4 dereferenceable(4) %91, ptr noundef nonnull align 4 dereferenceable(4) %92, ptr noundef nonnull align 4 dereferenceable(4) %93) #11
  %302 = getelementptr inbounds i8, ptr %90, i64 12
  store i64 0, ptr %302, align 4
  call void @_ZN3Raz6VectorIfLm2EEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %302) #11
  %303 = getelementptr inbounds i8, ptr %90, i64 20
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %303, ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1ZE, i64 12, i1 false), !tbaa.struct !15
  %304 = getelementptr inbounds i8, ptr %90, i64 32
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %304, ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1XE, i64 12, i1 false), !tbaa.struct !15
  %305 = invoke noundef nonnull align 4 dereferenceable(44) ptr @_ZNSt6vectorIN3Raz6VertexESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %199, ptr noundef nonnull align 4 dereferenceable(44) %90)
          to label %306 unwind label %429

306:                                              ; preds = %301
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %93) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %92) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %91) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %90) #11
  call void @llvm.lifetime.start.p0(i64 44, ptr nonnull %94) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %95) #11
  store float 0x3FE279A6C0000000, ptr %95, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %96) #11
  store float 0xBFE279A6C0000000, ptr %96, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %97) #11
  store float 0x3FE279A6C0000000, ptr %97, align 4, !tbaa !9
  call void @_ZN3Raz6VectorIfLm3EEC2IJfffEvvEEDpOT_(ptr noundef nonnull align 4 dereferenceable(12) %94, ptr noundef nonnull align 4 dereferenceable(4) %95, ptr noundef nonnull align 4 dereferenceable(4) %96, ptr noundef nonnull align 4 dereferenceable(4) %97) #11
  %307 = getelementptr inbounds i8, ptr %94, i64 12
  store i64 0, ptr %307, align 4
  call void @_ZN3Raz6VectorIfLm2EEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %307) #11
  %308 = getelementptr inbounds i8, ptr %94, i64 20
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %308, ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1ZE, i64 12, i1 false), !tbaa.struct !15
  %309 = getelementptr inbounds i8, ptr %94, i64 32
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %309, ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1XE, i64 12, i1 false), !tbaa.struct !15
  %310 = invoke noundef nonnull align 4 dereferenceable(44) ptr @_ZNSt6vectorIN3Raz6VertexESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %199, ptr noundef nonnull align 4 dereferenceable(44) %94)
          to label %311 unwind label %431

311:                                              ; preds = %306
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %97) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %96) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %95) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %94) #11
  call void @llvm.lifetime.start.p0(i64 44, ptr nonnull %98) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %99) #11
  store float 0x3FE279A6C0000000, ptr %99, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %100) #11
  store float 0x3FE279A6C0000000, ptr %100, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %101) #11
  store float 0x3FE279A6C0000000, ptr %101, align 4, !tbaa !9
  call void @_ZN3Raz6VectorIfLm3EEC2IJfffEvvEEDpOT_(ptr noundef nonnull align 4 dereferenceable(12) %98, ptr noundef nonnull align 4 dereferenceable(4) %99, ptr noundef nonnull align 4 dereferenceable(4) %100, ptr noundef nonnull align 4 dereferenceable(4) %101) #11
  %312 = getelementptr inbounds i8, ptr %98, i64 12
  store i64 0, ptr %312, align 4
  call void @_ZN3Raz6VectorIfLm2EEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %312) #11
  %313 = getelementptr inbounds i8, ptr %98, i64 20
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %313, ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1ZE, i64 12, i1 false), !tbaa.struct !15
  %314 = getelementptr inbounds i8, ptr %98, i64 32
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %314, ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1XE, i64 12, i1 false), !tbaa.struct !15
  %315 = invoke noundef nonnull align 4 dereferenceable(44) ptr @_ZNSt6vectorIN3Raz6VertexESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %199, ptr noundef nonnull align 4 dereferenceable(44) %98)
          to label %316 unwind label %433

316:                                              ; preds = %311
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %101) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %100) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %99) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %98) #11
  call void @llvm.lifetime.start.p0(i64 44, ptr nonnull %102) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %103) #11
  store float 0x3FE279A6C0000000, ptr %103, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %104) #11
  store float 0xBFE279A6C0000000, ptr %104, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %105) #11
  store float 0xBFE279A6C0000000, ptr %105, align 4, !tbaa !9
  call void @_ZN3Raz6VectorIfLm3EEC2IJfffEvvEEDpOT_(ptr noundef nonnull align 4 dereferenceable(12) %102, ptr noundef nonnull align 4 dereferenceable(4) %103, ptr noundef nonnull align 4 dereferenceable(4) %104, ptr noundef nonnull align 4 dereferenceable(4) %105) #11
  %317 = getelementptr inbounds i8, ptr %102, i64 12
  store i64 0, ptr %317, align 4
  call void @_ZN3Raz6VectorIfLm2EEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %317) #11
  %318 = getelementptr inbounds i8, ptr %102, i64 20
  %319 = call { <2 x float>, float } @_ZNK3Raz6VectorIfLm3EEngEv(ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1ZE) #11
  %.fca.0.extract49 = extractvalue { <2 x float>, float } %319, 0
  %.fca.1.extract50 = extractvalue { <2 x float>, float } %319, 1
  store <2 x float> %.fca.0.extract49, ptr %318, align 4
  %.sroa.252.0..sroa_idx = getelementptr inbounds i8, ptr %102, i64 28
  store float %.fca.1.extract50, ptr %.sroa.252.0..sroa_idx, align 4
  %320 = getelementptr inbounds i8, ptr %102, i64 32
  %321 = call { <2 x float>, float } @_ZNK3Raz6VectorIfLm3EEngEv(ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1XE) #11
  %.fca.0.extract45 = extractvalue { <2 x float>, float } %321, 0
  %.fca.1.extract46 = extractvalue { <2 x float>, float } %321, 1
  store <2 x float> %.fca.0.extract45, ptr %320, align 4
  %.sroa.248.0..sroa_idx = getelementptr inbounds i8, ptr %102, i64 40
  store float %.fca.1.extract46, ptr %.sroa.248.0..sroa_idx, align 4
  %322 = invoke noundef nonnull align 4 dereferenceable(44) ptr @_ZNSt6vectorIN3Raz6VertexESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %199, ptr noundef nonnull align 4 dereferenceable(44) %102)
          to label %323 unwind label %435

323:                                              ; preds = %316
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %105) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %104) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %103) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %102) #11
  call void @llvm.lifetime.start.p0(i64 44, ptr nonnull %106) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %107) #11
  store float 0x3FE279A6C0000000, ptr %107, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %108) #11
  store float 0x3FE279A6C0000000, ptr %108, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %109) #11
  store float 0xBFE279A6C0000000, ptr %109, align 4, !tbaa !9
  call void @_ZN3Raz6VectorIfLm3EEC2IJfffEvvEEDpOT_(ptr noundef nonnull align 4 dereferenceable(12) %106, ptr noundef nonnull align 4 dereferenceable(4) %107, ptr noundef nonnull align 4 dereferenceable(4) %108, ptr noundef nonnull align 4 dereferenceable(4) %109) #11
  %324 = getelementptr inbounds i8, ptr %106, i64 12
  store i64 0, ptr %324, align 4
  call void @_ZN3Raz6VectorIfLm2EEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %324) #11
  %325 = getelementptr inbounds i8, ptr %106, i64 20
  %326 = call { <2 x float>, float } @_ZNK3Raz6VectorIfLm3EEngEv(ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1ZE) #11
  %.fca.0.extract41 = extractvalue { <2 x float>, float } %326, 0
  %.fca.1.extract42 = extractvalue { <2 x float>, float } %326, 1
  store <2 x float> %.fca.0.extract41, ptr %325, align 4
  %.sroa.244.0..sroa_idx = getelementptr inbounds i8, ptr %106, i64 28
  store float %.fca.1.extract42, ptr %.sroa.244.0..sroa_idx, align 4
  %327 = getelementptr inbounds i8, ptr %106, i64 32
  %328 = call { <2 x float>, float } @_ZNK3Raz6VectorIfLm3EEngEv(ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1XE) #11
  %.fca.0.extract37 = extractvalue { <2 x float>, float } %328, 0
  %.fca.1.extract38 = extractvalue { <2 x float>, float } %328, 1
  store <2 x float> %.fca.0.extract37, ptr %327, align 4
  %.sroa.240.0..sroa_idx = getelementptr inbounds i8, ptr %106, i64 40
  store float %.fca.1.extract38, ptr %.sroa.240.0..sroa_idx, align 4
  %329 = invoke noundef nonnull align 4 dereferenceable(44) ptr @_ZNSt6vectorIN3Raz6VertexESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %199, ptr noundef nonnull align 4 dereferenceable(44) %106)
          to label %330 unwind label %437

330:                                              ; preds = %323
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %109) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %108) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %107) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %106) #11
  call void @llvm.lifetime.start.p0(i64 44, ptr nonnull %110) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %111) #11
  store float 0xBFE279A6C0000000, ptr %111, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %112) #11
  store float 0xBFE279A6C0000000, ptr %112, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %113) #11
  store float 0xBFE279A6C0000000, ptr %113, align 4, !tbaa !9
  call void @_ZN3Raz6VectorIfLm3EEC2IJfffEvvEEDpOT_(ptr noundef nonnull align 4 dereferenceable(12) %110, ptr noundef nonnull align 4 dereferenceable(4) %111, ptr noundef nonnull align 4 dereferenceable(4) %112, ptr noundef nonnull align 4 dereferenceable(4) %113) #11
  %331 = getelementptr inbounds i8, ptr %110, i64 12
  store i64 0, ptr %331, align 4
  call void @_ZN3Raz6VectorIfLm2EEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %331) #11
  %332 = getelementptr inbounds i8, ptr %110, i64 20
  %333 = call { <2 x float>, float } @_ZNK3Raz6VectorIfLm3EEngEv(ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1ZE) #11
  %.fca.0.extract33 = extractvalue { <2 x float>, float } %333, 0
  %.fca.1.extract34 = extractvalue { <2 x float>, float } %333, 1
  store <2 x float> %.fca.0.extract33, ptr %332, align 4
  %.sroa.236.0..sroa_idx = getelementptr inbounds i8, ptr %110, i64 28
  store float %.fca.1.extract34, ptr %.sroa.236.0..sroa_idx, align 4
  %334 = getelementptr inbounds i8, ptr %110, i64 32
  %335 = call { <2 x float>, float } @_ZNK3Raz6VectorIfLm3EEngEv(ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1XE) #11
  %.fca.0.extract29 = extractvalue { <2 x float>, float } %335, 0
  %.fca.1.extract30 = extractvalue { <2 x float>, float } %335, 1
  store <2 x float> %.fca.0.extract29, ptr %334, align 4
  %.sroa.232.0..sroa_idx = getelementptr inbounds i8, ptr %110, i64 40
  store float %.fca.1.extract30, ptr %.sroa.232.0..sroa_idx, align 4
  %336 = invoke noundef nonnull align 4 dereferenceable(44) ptr @_ZNSt6vectorIN3Raz6VertexESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %199, ptr noundef nonnull align 4 dereferenceable(44) %110)
          to label %337 unwind label %439

337:                                              ; preds = %330
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %113) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %112) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %111) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %110) #11
  call void @llvm.lifetime.start.p0(i64 44, ptr nonnull %114) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %115) #11
  store float 0xBFE279A6C0000000, ptr %115, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %116) #11
  store float 0x3FE279A6C0000000, ptr %116, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %117) #11
  store float 0xBFE279A6C0000000, ptr %117, align 4, !tbaa !9
  call void @_ZN3Raz6VectorIfLm3EEC2IJfffEvvEEDpOT_(ptr noundef nonnull align 4 dereferenceable(12) %114, ptr noundef nonnull align 4 dereferenceable(4) %115, ptr noundef nonnull align 4 dereferenceable(4) %116, ptr noundef nonnull align 4 dereferenceable(4) %117) #11
  %338 = getelementptr inbounds i8, ptr %114, i64 12
  store i64 0, ptr %338, align 4
  call void @_ZN3Raz6VectorIfLm2EEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %338) #11
  %339 = getelementptr inbounds i8, ptr %114, i64 20
  %340 = call { <2 x float>, float } @_ZNK3Raz6VectorIfLm3EEngEv(ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1ZE) #11
  %.fca.0.extract25 = extractvalue { <2 x float>, float } %340, 0
  %.fca.1.extract26 = extractvalue { <2 x float>, float } %340, 1
  store <2 x float> %.fca.0.extract25, ptr %339, align 4
  %.sroa.228.0..sroa_idx = getelementptr inbounds i8, ptr %114, i64 28
  store float %.fca.1.extract26, ptr %.sroa.228.0..sroa_idx, align 4
  %341 = getelementptr inbounds i8, ptr %114, i64 32
  %342 = call { <2 x float>, float } @_ZNK3Raz6VectorIfLm3EEngEv(ptr noundef nonnull align 4 dereferenceable(12) @_ZN3Raz4AxisL1XE) #11
  %.fca.0.extract = extractvalue { <2 x float>, float } %342, 0
  %.fca.1.extract = extractvalue { <2 x float>, float } %342, 1
  store <2 x float> %.fca.0.extract, ptr %341, align 4
  %.sroa.224.0..sroa_idx = getelementptr inbounds i8, ptr %114, i64 40
  store float %.fca.1.extract, ptr %.sroa.224.0..sroa_idx, align 4
  %343 = invoke noundef nonnull align 4 dereferenceable(44) ptr @_ZNSt6vectorIN3Raz6VertexESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %199, ptr noundef nonnull align 4 dereferenceable(44) %114)
          to label %344 unwind label %441

344:                                              ; preds = %337
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %117) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %116) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %115) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %114) #11
  %345 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZN3Raz5World9addEntityEb(ptr noundef nonnull align 8 dereferenceable(104) %149, i1 noundef zeroext true)
          to label %346 unwind label %443

346:                                              ; preds = %344
  %347 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN3Raz6Entity12addComponentINS_9TransformEJEEERT_DpOT0_(ptr noundef nonnull align 8 dereferenceable(80) %345)
          to label %348 unwind label %445

348:                                              ; preds = %346
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %118) #11
  store i32 2, ptr %118, align 4, !tbaa !17
  %349 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZN3Raz6Entity12addComponentINS_12MeshRendererEJRNS_4MeshENS_10RenderModeEEEERT_DpOT0_(ptr noundef nonnull align 8 dereferenceable(80) %345, ptr noundef nonnull align 8 dereferenceable(64) %21, ptr noundef nonnull align 4 dereferenceable(4) %118)
          to label %350 unwind label %447

350:                                              ; preds = %348
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %118) #11
  invoke void @_ZN3Raz8Renderer19setPatchVertexCountEi(i32 noundef 4)
          to label %351 unwind label %449

351:                                              ; preds = %350
  %352 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3Raz12MeshRenderer12getMaterialsEv(ptr noundef nonnull align 8 dereferenceable(64) %349)
  %353 = call noundef nonnull align 8 dereferenceable(384) ptr @_ZNSt6vectorIN3Raz8MaterialESaIS1_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %352) #11
  %354 = call noundef nonnull align 8 dereferenceable(384) ptr @_ZN3Raz8Material10getProgramEv(ptr noundef nonnull align 8 dereferenceable(384) %353) #11
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %119) #11
  %.sroa.05.0.copyload = load i64, ptr @_ZN12_GLOBAL__N_114tessCtrlSourceE, align 8, !tbaa !19
  %.sroa.26.0.copyload = load ptr, ptr getelementptr inbounds (i8, ptr @_ZN12_GLOBAL__N_114tessCtrlSourceE, i64 8), align 8, !tbaa !13
  invoke void @_ZN3Raz25TessellationControlShader14loadFromSourceESt17basic_string_viewIcSt11char_traitsIcEE(ptr dead_on_unwind nonnull writable sret(%"class.Raz::TessellationControlShader") align 8 %119, i64 %.sroa.05.0.copyload, ptr %.sroa.26.0.copyload)
          to label %355 unwind label %453

355:                                              ; preds = %351
  invoke void @_ZN3Raz19RenderShaderProgram28setTessellationControlShaderEONS_25TessellationControlShaderE(ptr noundef nonnull align 8 dereferenceable(384) %354, ptr noundef nonnull align 8 dereferenceable(48) %119)
          to label %356 unwind label %455

356:                                              ; preds = %355
  call void @_ZN3Raz6ShaderD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %119) #11
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %119) #11
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %120) #11
  %.sroa.0.0.copyload = load i64, ptr @_ZN12_GLOBAL__N_114tessEvalSourceE, align 8, !tbaa !19
  %.sroa.2.0.copyload = load ptr, ptr getelementptr inbounds (i8, ptr @_ZN12_GLOBAL__N_114tessEvalSourceE, i64 8), align 8, !tbaa !13
  invoke void @_ZN3Raz28TessellationEvaluationShader14loadFromSourceESt17basic_string_viewIcSt11char_traitsIcEE(ptr dead_on_unwind nonnull writable sret(%"class.Raz::TessellationEvaluationShader") align 8 %120, i64 %.sroa.0.0.copyload, ptr %.sroa.2.0.copyload)
          to label %357 unwind label %458

357:                                              ; preds = %356
  invoke void @_ZN3Raz19RenderShaderProgram31setTessellationEvaluationShaderEONS_28TessellationEvaluationShaderE(ptr noundef nonnull align 8 dereferenceable(384) %354, ptr noundef nonnull align 8 dereferenceable(48) %120)
          to label %358 unwind label %460

358:                                              ; preds = %357
  call void @_ZN3Raz6ShaderD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %120) #11
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %120) #11
  invoke void @_ZN3Raz13ShaderProgram4linkEv(ptr noundef nonnull align 8 dereferenceable(120) %354)
          to label %359 unwind label %451

359:                                              ; preds = %358
  %360 = call noundef zeroext i1 @_ZN3Raz8Renderer12checkVersionEii(i32 noundef 4, i32 noundef 3) #11
  br i1 %360, label %361, label %463

361:                                              ; preds = %359
  %362 = invoke noundef i32 @_ZNK3Raz13ShaderProgram8getIndexEv(ptr noundef nonnull align 8 dereferenceable(120) %354)
          to label %363 unwind label %451

363:                                              ; preds = %361
  invoke void @_ZN3Raz8Renderer8setLabelENS_16RenderObjectTypeEjPKc(i32 noundef 33506, i32 noundef %362, ptr noundef nonnull @.str.4)
          to label %364 unwind label %451

364:                                              ; preds = %363
  %365 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK3Raz19RenderShaderProgram15getVertexShaderEv(ptr noundef nonnull align 8 dereferenceable(384) %354) #11
  %366 = call noundef i32 @_ZNK3Raz6Shader8getIndexEv(ptr noundef nonnull align 8 dereferenceable(48) %365) #11
  invoke void @_ZN3Raz8Renderer8setLabelENS_16RenderObjectTypeEjPKc(i32 noundef 33505, i32 noundef %366, ptr noundef nonnull @.str.5)
          to label %367 unwind label %451

367:                                              ; preds = %364
  %368 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK3Raz19RenderShaderProgram28getTessellationControlShaderEv(ptr noundef nonnull align 8 dereferenceable(384) %354) #11
  %369 = call noundef i32 @_ZNK3Raz6Shader8getIndexEv(ptr noundef nonnull align 8 dereferenceable(48) %368) #11
  invoke void @_ZN3Raz8Renderer8setLabelENS_16RenderObjectTypeEjPKc(i32 noundef 33505, i32 noundef %369, ptr noundef nonnull @.str.6)
          to label %370 unwind label %451

370:                                              ; preds = %367
  %371 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK3Raz19RenderShaderProgram31getTessellationEvaluationShaderEv(ptr noundef nonnull align 8 dereferenceable(384) %354) #11
  %372 = call noundef i32 @_ZNK3Raz6Shader8getIndexEv(ptr noundef nonnull align 8 dereferenceable(48) %371) #11
  invoke void @_ZN3Raz8Renderer8setLabelENS_16RenderObjectTypeEjPKc(i32 noundef 33505, i32 noundef %372, ptr noundef nonnull @.str.7)
          to label %373 unwind label %451

373:                                              ; preds = %370
  %374 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK3Raz19RenderShaderProgram17getFragmentShaderEv(ptr noundef nonnull align 8 dereferenceable(384) %354) #11
  %375 = call noundef i32 @_ZNK3Raz6Shader8getIndexEv(ptr noundef nonnull align 8 dereferenceable(48) %374) #11
  invoke void @_ZN3Raz8Renderer8setLabelENS_16RenderObjectTypeEjPKc(i32 noundef 33505, i32 noundef %375, ptr noundef nonnull @.str.8)
          to label %463 unwind label %451

376:                                              ; preds = %.critedge232.thread
  %377 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %7) #11
  br label %509

378:                                              ; preds = %176
  %379 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  br label %382

380:                                              ; preds = %181, %178
  %381 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #11
  br label %382

382:                                              ; preds = %380, %378
  %.pn198 = phi { ptr, i32 } [ %381, %380 ], [ %379, %378 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #11
  br label %509

383:                                              ; preds = %184
  %384 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  br label %509

385:                                              ; preds = %186
  %386 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %14) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #11
  br label %509

387:                                              ; preds = %195, %191, %189
  %388 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  br label %509

389:                                              ; preds = %193
  %390 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #11
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #11
  br label %509

391:                                              ; preds = %194
  %392 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #11
  br label %509

393:                                              ; preds = %198, %196
  %394 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  br label %508

395:                                              ; preds = %200
  %396 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %22) #11
  br label %508

397:                                              ; preds = %206
  %398 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %26) #11
  br label %508

399:                                              ; preds = %212
  %400 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %33) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %30) #11
  br label %508

401:                                              ; preds = %218
  %402 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %37) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %36) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %35) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %34) #11
  br label %508

403:                                              ; preds = %224
  %404 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %41) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %40) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %39) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %38) #11
  br label %508

405:                                              ; preds = %230
  %406 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %45) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %44) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %43) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %42) #11
  br label %508

407:                                              ; preds = %236
  %408 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %49) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %48) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %47) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %46) #11
  br label %508

409:                                              ; preds = %242
  %410 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %53) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %52) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %51) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %50) #11
  br label %508

411:                                              ; preds = %248
  %412 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %57) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %56) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %55) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %54) #11
  br label %508

413:                                              ; preds = %253
  %414 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %61) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %60) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %59) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %58) #11
  br label %508

415:                                              ; preds = %258
  %416 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %65) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %64) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %63) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %62) #11
  br label %508

417:                                              ; preds = %263
  %418 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %69) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %68) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %67) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %66) #11
  br label %508

419:                                              ; preds = %268
  %420 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %73) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %72) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %71) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %70) #11
  br label %508

421:                                              ; preds = %275
  %422 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %77) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %76) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %75) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %74) #11
  br label %508

423:                                              ; preds = %282
  %424 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %81) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %80) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %79) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %78) #11
  br label %508

425:                                              ; preds = %289
  %426 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %85) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %84) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %83) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %82) #11
  br label %508

427:                                              ; preds = %296
  %428 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %89) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %88) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %87) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %86) #11
  br label %508

429:                                              ; preds = %301
  %430 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %93) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %92) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %91) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %90) #11
  br label %508

431:                                              ; preds = %306
  %432 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %97) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %96) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %95) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %94) #11
  br label %508

433:                                              ; preds = %311
  %434 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %101) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %100) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %99) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %98) #11
  br label %508

435:                                              ; preds = %316
  %436 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %105) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %104) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %103) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %102) #11
  br label %508

437:                                              ; preds = %323
  %438 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %109) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %108) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %107) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %106) #11
  br label %508

439:                                              ; preds = %330
  %440 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %113) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %112) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %111) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %110) #11
  br label %508

441:                                              ; preds = %337
  %442 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %117) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %116) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %115) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %114) #11
  br label %508

443:                                              ; preds = %344
  %444 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  br label %508

445:                                              ; preds = %346
  %446 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  br label %508

447:                                              ; preds = %348
  %448 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %118) #11
  br label %508

449:                                              ; preds = %350
  %450 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  br label %508

451:                                              ; preds = %373, %370, %367, %364, %363, %361, %358
  %452 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  br label %508

453:                                              ; preds = %351
  %454 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  br label %457

455:                                              ; preds = %355
  %456 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  call void @_ZN3Raz6ShaderD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %119) #11
  br label %457

457:                                              ; preds = %455, %453
  %.pn200 = phi { ptr, i32 } [ %456, %455 ], [ %454, %453 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %119) #11
  br label %508

458:                                              ; preds = %356
  %459 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  br label %462

460:                                              ; preds = %357
  %461 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  call void @_ZN3Raz6ShaderD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %120) #11
  br label %462

462:                                              ; preds = %460, %458
  %.pn202 = phi { ptr, i32 } [ %461, %460 ], [ %459, %458 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %120) #11
  br label %508

463:                                              ; preds = %373, %359
  %464 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3Raz6Window10getOverlayEv(ptr noundef nonnull align 8 dereferenceable(273) %192) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %122) #11
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %122) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %121, ptr noundef nonnull @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %122)
          to label %465 unwind label %481

465:                                              ; preds = %463
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %123) #11
  call void @_ZN3Raz6VectorIfLm2EEC2Ef(ptr noundef nonnull align 4 dereferenceable(8) %123, float noundef -1.000000e+00) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %124) #11
  call void @_ZN3Raz6VectorIfLm2EEC2Ef(ptr noundef nonnull align 4 dereferenceable(8) %124, float noundef 0.000000e+00) #11
  %466 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZN3Raz7Overlay9addWindowENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_6VectorIfLm2EEESA_(ptr noundef nonnull align 8 dereferenceable(24) %464, ptr noundef nonnull %121, ptr noundef nonnull align 4 dereferenceable(8) %123, ptr noundef nonnull align 4 dereferenceable(8) %124)
          to label %467 unwind label %483

467:                                              ; preds = %465
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %124) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %123) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %121) #11
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %122) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %122) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %126) #11
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %126) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %125, ptr noundef nonnull @.str.10, ptr noundef nonnull align 1 dereferenceable(1) %126)
          to label %468 unwind label %486

468:                                              ; preds = %467
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %128) #11
  store ptr %354, ptr %128, align 8, !tbaa !13
  call void @"_ZNSt8functionIFvfEEC2IZ4mainE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %127, ptr noundef nonnull align 8 dereferenceable(8) %128) #11
  %469 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN3Raz13OverlayWindow9addSliderENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt8functionIFvfEEfff(ptr noundef nonnull align 8 dereferenceable(80) %466, ptr noundef nonnull %125, ptr noundef nonnull %127, float noundef 1.000000e+00, float noundef 6.400000e+01, float noundef 4.000000e+00)
          to label %470 unwind label %488

470:                                              ; preds = %468
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %127) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %128) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %125) #11
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %126) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %126) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %130) #11
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %130) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %129, ptr noundef nonnull @.str.11, ptr noundef nonnull align 1 dereferenceable(1) %130)
          to label %471 unwind label %491

471:                                              ; preds = %470
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %132) #11
  store ptr %354, ptr %132, align 8, !tbaa !13
  call void @"_ZNSt8functionIFvfEEC2IZ4mainE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %131, ptr noundef nonnull align 8 dereferenceable(8) %132) #11
  %472 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN3Raz13OverlayWindow9addSliderENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt8functionIFvfEEfff(ptr noundef nonnull align 8 dereferenceable(80) %466, ptr noundef nonnull %129, ptr noundef nonnull %131, float noundef 1.000000e+00, float noundef 6.400000e+01, float noundef 4.000000e+00)
          to label %473 unwind label %493

473:                                              ; preds = %471
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %131) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %132) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %129) #11
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %130) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %130) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %134) #11
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %134) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %133, ptr noundef nonnull @.str.12, ptr noundef nonnull align 1 dereferenceable(1) %134)
          to label %474 unwind label %496

474:                                              ; preds = %473
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %136) #11
  store ptr %354, ptr %136, align 8, !tbaa !13
  call void @"_ZNSt8functionIFvvEEC2IZ4mainE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %135, ptr noundef nonnull align 8 dereferenceable(8) %136) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %138) #11
  store ptr %354, ptr %138, align 8, !tbaa !13
  call void @"_ZNSt8functionIFvvEEC2IZ4mainE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %137, ptr noundef nonnull align 8 dereferenceable(8) %138) #11
  %475 = invoke noundef nonnull align 8 dereferenceable(120) ptr @_ZN3Raz13OverlayWindow11addCheckboxENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt8functionIFvvEES9_b(ptr noundef nonnull align 8 dereferenceable(80) %466, ptr noundef nonnull %133, ptr noundef nonnull %135, ptr noundef nonnull %137, i1 noundef zeroext true)
          to label %476 unwind label %498

476:                                              ; preds = %474
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %137) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %138) #11
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %135) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %136) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %133) #11
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %134) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %134) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %140) #11
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %140) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %139, ptr noundef nonnull @.str.13, ptr noundef nonnull align 1 dereferenceable(1) %140)
          to label %477 unwind label %501

477:                                              ; preds = %476
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %142) #11
  call void @"_ZNSt8functionIFvvEEC2IZ4mainE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %141, ptr noundef nonnull align 1 dereferenceable(1) %142) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %144) #11
  call void @"_ZNSt8functionIFvvEEC2IZ4mainE3$_7vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %143, ptr noundef nonnull align 1 dereferenceable(1) %144) #11
  %478 = invoke noundef nonnull align 8 dereferenceable(120) ptr @_ZN3Raz13OverlayWindow11addCheckboxENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt8functionIFvvEES9_b(ptr noundef nonnull align 8 dereferenceable(80) %466, ptr noundef nonnull %139, ptr noundef nonnull %141, ptr noundef nonnull %143, i1 noundef zeroext true)
          to label %479 unwind label %503

479:                                              ; preds = %477
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %143) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %144) #11
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %141) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %142) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %139) #11
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %140) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %140) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %145) #11
  store ptr %347, ptr %145, align 8, !tbaa !13
  invoke void @"_ZN3Raz11Application3runIZ4mainE3$_8EEvOT_"(ptr noundef nonnull align 8 dereferenceable(93) %1, ptr noundef nonnull align 8 dereferenceable(8) %145)
          to label %480 unwind label %506

480:                                              ; preds = %479
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %145) #11
  call void @_ZN3Raz4MeshD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %21) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %21) #11
  call void @_ZN3Raz11ApplicationD2Ev(ptr noundef nonnull align 8 dereferenceable(93) %1) #11
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %1) #11
  br label %522

481:                                              ; preds = %463
  %482 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  br label %485

483:                                              ; preds = %465
  %484 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %124) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %123) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %121) #11
  br label %485

485:                                              ; preds = %483, %481
  %.pn204 = phi { ptr, i32 } [ %484, %483 ], [ %482, %481 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %122) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %122) #11
  br label %508

486:                                              ; preds = %467
  %487 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  br label %490

488:                                              ; preds = %468
  %489 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %127) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %128) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %125) #11
  br label %490

490:                                              ; preds = %488, %486
  %.pn206 = phi { ptr, i32 } [ %489, %488 ], [ %487, %486 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %126) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %126) #11
  br label %508

491:                                              ; preds = %470
  %492 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  br label %495

493:                                              ; preds = %471
  %494 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %131) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %132) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %129) #11
  br label %495

495:                                              ; preds = %493, %491
  %.pn208 = phi { ptr, i32 } [ %494, %493 ], [ %492, %491 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %130) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %130) #11
  br label %508

496:                                              ; preds = %473
  %497 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  br label %500

498:                                              ; preds = %474
  %499 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %137) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %138) #11
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %135) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %136) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %133) #11
  br label %500

500:                                              ; preds = %498, %496
  %.pn210 = phi { ptr, i32 } [ %499, %498 ], [ %497, %496 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %134) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %134) #11
  br label %508

501:                                              ; preds = %476
  %502 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  br label %505

503:                                              ; preds = %477
  %504 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %143) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %144) #11
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %141) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %142) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %139) #11
  br label %505

505:                                              ; preds = %503, %501
  %.pn212 = phi { ptr, i32 } [ %504, %503 ], [ %502, %501 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %140) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %140) #11
  br label %508

506:                                              ; preds = %479
  %507 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %145) #11
  br label %508

508:                                              ; preds = %443, %447, %449, %485, %490, %495, %500, %505, %506, %462, %457, %451, %445, %441, %439, %437, %435, %433, %431, %429, %427, %425, %423, %421, %419, %417, %415, %413, %411, %409, %407, %405, %403, %401, %399, %397, %395, %393
  %.pn214.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %442, %441 ], [ %440, %439 ], [ %438, %437 ], [ %436, %435 ], [ %434, %433 ], [ %432, %431 ], [ %430, %429 ], [ %428, %427 ], [ %426, %425 ], [ %424, %423 ], [ %422, %421 ], [ %420, %419 ], [ %418, %417 ], [ %416, %415 ], [ %414, %413 ], [ %412, %411 ], [ %410, %409 ], [ %408, %407 ], [ %406, %405 ], [ %404, %403 ], [ %402, %401 ], [ %400, %399 ], [ %398, %397 ], [ %396, %395 ], [ %394, %393 ], [ %444, %443 ], [ %446, %445 ], [ %450, %449 ], [ %448, %447 ], [ %452, %451 ], [ %.pn202, %462 ], [ %.pn200, %457 ], [ %507, %506 ], [ %.pn212, %505 ], [ %.pn210, %500 ], [ %.pn208, %495 ], [ %.pn206, %490 ], [ %.pn204, %485 ]
  call void @_ZN3Raz4MeshD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %21) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %21) #11
  br label %509

509:                                              ; preds = %164, %171, %173, %170, %383, %385, %508, %391, %389, %387, %382, %376, %162
  %.pn224.pn = phi { ptr, i32 } [ %163, %162 ], [ %174, %173 ], [ %172, %171 ], [ %.pn, %170 ], [ %165, %164 ], [ %.pn198, %382 ], [ %377, %376 ], [ %386, %385 ], [ %384, %383 ], [ %.pn214.pn.pn.pn.pn.pn, %508 ], [ %388, %387 ], [ %392, %391 ], [ %390, %389 ]
  call void @_ZN3Raz11ApplicationD2Ev(ptr noundef nonnull align 8 dereferenceable(93) %1) #11
  br label %510

510:                                              ; preds = %509, %160
  %.pn224.pn.pn = phi { ptr, i32 } [ %.pn224.pn, %509 ], [ %161, %160 ]
  %.20189 = extractvalue { ptr, i32 } %.pn224.pn.pn, 1
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %1) #11
  %511 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTISt9exception) #11
  %512 = icmp eq i32 %.20189, %511
  br i1 %512, label %513, label %531

513:                                              ; preds = %510
  %.20 = extractvalue { ptr, i32 } %.pn224.pn.pn, 0
  %514 = call ptr @__cxa_begin_catch(ptr %.20) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %146) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %147) #11
  invoke void @_ZNSt8literals15string_literalsli1sB5cxx11EPKcm(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %147, ptr noundef nonnull @.str.14, i64 noundef 20)
          to label %515 unwind label %523

515:                                              ; preds = %513
  %516 = load ptr, ptr %514, align 8, !tbaa !21
  %517 = getelementptr inbounds i8, ptr %516, i64 16
  %518 = load ptr, ptr %517, align 8
  %519 = call noundef ptr %518(ptr noundef nonnull align 8 dereferenceable(8) %514) #11
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %146, ptr noundef nonnull align 8 dereferenceable(32) %147, ptr noundef %519)
          to label %520 unwind label %525

520:                                              ; preds = %515
  invoke void @_ZN3Raz6Logger5errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %146)
          to label %521 unwind label %527

521:                                              ; preds = %520
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %146) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %147) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %147) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %146) #11
  call void @__cxa_end_catch()
  br label %522

522:                                              ; preds = %521, %480
  ret i32 0

523:                                              ; preds = %513
  %524 = landingpad { ptr, i32 }
          cleanup
  br label %530

525:                                              ; preds = %515
  %526 = landingpad { ptr, i32 }
          cleanup
  br label %529

527:                                              ; preds = %520
  %528 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %146) #11
  br label %529

529:                                              ; preds = %527, %525
  %.pn228 = phi { ptr, i32 } [ %528, %527 ], [ %526, %525 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %147) #11
  br label %530

530:                                              ; preds = %529, %523
  %.pn228.pn = phi { ptr, i32 } [ %.pn228, %529 ], [ %524, %523 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %147) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %146) #11
  invoke void @__cxa_end_catch()
          to label %531 unwind label %532

531:                                              ; preds = %530, %510
  %.merged = phi { ptr, i32 } [ %.pn224.pn.pn, %510 ], [ %.pn228.pn, %530 ]
  resume { ptr, i32 } %.merged

532:                                              ; preds = %530
  %533 = landingpad { ptr, i32 }
          catch ptr null
  %534 = extractvalue { ptr, i32 } %533, 0
  call void @__clang_call_terminate(ptr %534) #13
  unreachable

535:                                              ; preds = %159
  unreachable
}

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

declare void @_ZN3Raz11ApplicationC1Em(ptr noundef nonnull align 8 dereferenceable(93), i64 noundef) unnamed_addr #2

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(104) ptr @_ZN3Raz11Application8addWorldIJiEEERNS_5WorldEDpOT_(ptr noundef nonnull align 8 dereferenceable(93), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #3 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN3Raz6Logger15setLoggingLevelENS_12LoggingLevelE(i32 noundef) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(776) ptr @_ZN3Raz5World9addSystemINS_12RenderSystemEJjjRA4_KcEEERT_DpOT0_(ptr noundef nonnull align 8 dereferenceable(104), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(4)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN3Raz8Renderer12checkVersionEii(i32 noundef, i32 noundef) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN3Raz8Renderer20isExtensionSupportedERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #3 align 2

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

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

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

declare void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) unnamed_addr #2

declare void @__cxa_free_exception(ptr) local_unnamed_addr

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(80) ptr @_ZN3Raz5World22addEntityWithComponentINS_9TransformEJNS_6VectorIfLm3EEEEEERNS_6EntityEDpOT0_(ptr noundef nonnull align 8 dereferenceable(104), ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN3Raz6VectorIfLm3EEC2IJfffEvvEEDpOT_(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(312) ptr @_ZN3Raz6Entity12addComponentINS_6CameraEJjjEEERT_DpOT0_(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(273) ptr @_ZN3Raz12RenderSystem9getWindowEv(ptr noundef nonnull align 8 dereferenceable(776)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3Raz6Window8getWidthEv(ptr noundef nonnull align 8 dereferenceable(273)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3Raz6Window9getHeightEv(ptr noundef nonnull align 8 dereferenceable(273)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(80) ptr @_ZN3Raz5World22addEntityWithComponentINS_9TransformEJEEERNS_6EntityEDpOT0_(ptr noundef nonnull align 8 dereferenceable(104)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(48) ptr @_ZN3Raz6Entity12addComponentINS_5LightEJNS_9LightTypeENS_6VectorIfLm3EEEfRKNS_5ColorEEEERT_DpOT0_(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local { <2 x float>, float } @_ZNK3Raz6VectorIfLm3EEngEv(ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #4 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(776) ptr @_ZN3Raz5World9getSystemINS_12RenderSystemEEERT_v(ptr noundef nonnull align 8 dereferenceable(104)) local_unnamed_addr #3 align 2

declare void @_ZN3Raz6Window14addKeyCallbackENS_8Keyboard3KeyESt8functionIFvfEENS_5Input13ActionTriggerES3_IFvvEE(ptr noundef nonnull align 8 dereferenceable(273), i32 noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvfEEC2IZ4mainE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #4 align 2

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

declare void @_ZN3Raz6Window16setCloseCallbackESt8functionIFvvEE(ptr noundef nonnull align 8 dereferenceable(273), ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvvEEC2IZ4mainE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #4 align 2

declare void @_ZN3Raz8Renderer14setPolygonModeENS_15FaceOrientationENS_11PolygonModeE(i32 noundef, i32 noundef) local_unnamed_addr #2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(104) ptr @_ZN3Raz4Mesh10addSubmeshIJEEERNS_7SubmeshEDpOT_(ptr noundef nonnull align 8 dereferenceable(64)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZN3Raz7Submesh11getVerticesEv(ptr noundef nonnull align 8 dereferenceable(104)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIN3Raz6VertexESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(44) ptr @_ZNSt6vectorIN3Raz6VertexESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(44)) local_unnamed_addr #3 align 2

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

declare noundef nonnull align 8 dereferenceable(80) ptr @_ZN3Raz5World9addEntityEb(ptr noundef nonnull align 8 dereferenceable(104), i1 noundef zeroext) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(56) ptr @_ZN3Raz6Entity12addComponentINS_9TransformEJEEERT_DpOT0_(ptr noundef nonnull align 8 dereferenceable(80)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(64) ptr @_ZN3Raz6Entity12addComponentINS_12MeshRendererEJRNS_4MeshENS_10RenderModeEEEERT_DpOT0_(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef nonnull align 8 dereferenceable(64), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #3 align 2

declare void @_ZN3Raz8Renderer19setPatchVertexCountEi(i32 noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZN3Raz12MeshRenderer12getMaterialsEv(ptr noundef nonnull align 8 dereferenceable(64)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(384) ptr @_ZNSt6vectorIN3Raz8MaterialESaIS1_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(384) ptr @_ZN3Raz8Material10getProgramEv(ptr noundef nonnull align 8 dereferenceable(384)) local_unnamed_addr #4 align 2

declare void @_ZN3Raz19RenderShaderProgram28setTessellationControlShaderEONS_25TessellationControlShaderE(ptr noundef nonnull align 8 dereferenceable(384), ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3Raz25TessellationControlShader14loadFromSourceESt17basic_string_viewIcSt11char_traitsIcEE(ptr dead_on_unwind noalias writable sret(%"class.Raz::TessellationControlShader") align 8, i64, ptr) local_unnamed_addr #3 align 2

declare void @_ZN3Raz19RenderShaderProgram31setTessellationEvaluationShaderEONS_28TessellationEvaluationShaderE(ptr noundef nonnull align 8 dereferenceable(384), ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3Raz28TessellationEvaluationShader14loadFromSourceESt17basic_string_viewIcSt11char_traitsIcEE(ptr dead_on_unwind noalias writable sret(%"class.Raz::TessellationEvaluationShader") align 8, i64, ptr) local_unnamed_addr #3 align 2

declare void @_ZN3Raz13ShaderProgram4linkEv(ptr noundef nonnull align 8 dereferenceable(120)) local_unnamed_addr #2

declare void @_ZN3Raz8Renderer8setLabelENS_16RenderObjectTypeEjPKc(i32 noundef, i32 noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZNK3Raz13ShaderProgram8getIndexEv(ptr noundef nonnull align 8 dereferenceable(120)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(48) ptr @_ZNK3Raz19RenderShaderProgram15getVertexShaderEv(ptr noundef nonnull align 8 dereferenceable(384)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3Raz6Shader8getIndexEv(ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(48) ptr @_ZNK3Raz19RenderShaderProgram28getTessellationControlShaderEv(ptr noundef nonnull align 8 dereferenceable(384)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(48) ptr @_ZNK3Raz19RenderShaderProgram31getTessellationEvaluationShaderEv(ptr noundef nonnull align 8 dereferenceable(384)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(48) ptr @_ZNK3Raz19RenderShaderProgram17getFragmentShaderEv(ptr noundef nonnull align 8 dereferenceable(384)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZN3Raz6Window10getOverlayEv(ptr noundef nonnull align 8 dereferenceable(273)) local_unnamed_addr #4 align 2

declare noundef nonnull align 8 dereferenceable(80) ptr @_ZN3Raz7Overlay9addWindowENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_6VectorIfLm2EEESA_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef, ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8)) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN3Raz6VectorIfLm2EEC2Ef(ptr noundef nonnull align 4 dereferenceable(8), float noundef) unnamed_addr #4 align 2

declare noundef nonnull align 8 dereferenceable(96) ptr @_ZN3Raz13OverlayWindow9addSliderENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt8functionIFvfEEfff(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef, ptr noundef, float noundef, float noundef, float noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvfEEC2IZ4mainE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvfEEC2IZ4mainE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #4 align 2

declare noundef nonnull align 8 dereferenceable(120) ptr @_ZN3Raz13OverlayWindow11addCheckboxENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt8functionIFvvEES9_b(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef, ptr noundef, ptr noundef, i1 noundef zeroext) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvvEEC2IZ4mainE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvvEEC2IZ4mainE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvvEEC2IZ4mainE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvvEEC2IZ4mainE3$_7vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZN3Raz11Application3runIZ4mainE3$_8EEvOT_"(ptr noundef nonnull align 8 dereferenceable(93), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3Raz4MeshD2Ev(ptr noundef nonnull align 8 dereferenceable(64)) unnamed_addr #7 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3Raz11ApplicationD2Ev(ptr noundef nonnull align 8 dereferenceable(93)) unnamed_addr #7 align 2

; Function Attrs: nofree nosync nounwind memory(none)
declare i32 @llvm.eh.typeid.for.p0(ptr) #8

declare ptr @__cxa_begin_catch(ptr) local_unnamed_addr

declare void @_ZN3Raz6Logger5errorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNSt8literals15string_literalsli1sB5cxx11EPKcm(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef, i64 noundef) local_unnamed_addr #9

declare void @__cxa_end_catch() local_unnamed_addr

; Function Attrs: noinline noreturn nounwind uwtable
declare hidden void @__clang_call_terminate(ptr noundef) local_unnamed_addr #10

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

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

attributes #0 = { mustprogress norecurse 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 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "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 uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress 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 #5 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #7 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { nofree nosync nounwind memory(none) }
attributes #9 = { 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 #10 = { noinline noreturn nounwind uwtable "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 #11 = { nounwind }
attributes #12 = { noreturn }
attributes #13 = { 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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"float", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"_ZTSN3Raz9LightTypeE", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"any pointer", !7, i64 0}
!15 = !{i64 0, i64 12, !16}
!16 = !{!7, !7, i64 0}
!17 = !{!18, !18, i64 0}
!18 = !{!"_ZTSN3Raz10RenderModeE", !7, i64 0}
!19 = !{!20, !20, i64 0}
!20 = !{!"long", !7, i64 0}
!21 = !{!22, !22, i64 0}
!22 = !{!"vtable pointer", !8, i64 0}


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