; LLVM IR from goldest-star/seawave-animation :: src/scenes/3D_graphics/01_modeling (modeling)

; 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"

%"struct.vcl::hierarchy_mesh_drawable" = type { %"class.std::map", %"class.std::vector.11" }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, int>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, int>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, int>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, int>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::vector.11" = type { %"struct.std::_Vector_base.12" }
%"struct.std::_Vector_base.12" = type { %"struct.std::_Vector_base<vcl::hierarchy_mesh_drawable_node, std::allocator<vcl::hierarchy_mesh_drawable_node>>::_Vector_impl" }
%"struct.std::_Vector_base<vcl::hierarchy_mesh_drawable_node, std::allocator<vcl::hierarchy_mesh_drawable_node>>::_Vector_impl" = type { %"struct.std::_Vector_base<vcl::hierarchy_mesh_drawable_node, std::allocator<vcl::hierarchy_mesh_drawable_node>>::_Vector_impl_data" }
%"struct.std::_Vector_base<vcl::hierarchy_mesh_drawable_node, std::allocator<vcl::hierarchy_mesh_drawable_node>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator.21" = type { i8 }
%"struct.vcl::mesh_drawable" = type { %"struct.vcl::mesh_drawable_gpu_data", %"struct.vcl::mesh_drawable_uniform", i32, i32 }
%"struct.vcl::mesh_drawable_gpu_data" = type { i32, i32, i32, i32, i32, i32, i32 }
%"struct.vcl::mesh_drawable_uniform" = type { %"struct.vcl::affine_transform", %"struct.vcl::buffer_stack", %"struct.vcl::shading_mesh", float }
%"struct.vcl::affine_transform" = type { %"struct.vcl::buffer_stack", %"struct.vcl::mat", float, %"struct.vcl::buffer_stack" }
%"struct.vcl::mat" = type { float, float, float, float, float, float, float, float, float }
%"struct.vcl::buffer_stack" = type { float, float, float }
%"struct.vcl::shading_mesh" = type { float, float, float, i32 }
%"struct.vcl::mesh" = type { %"struct.vcl::buffer.24", %"struct.vcl::buffer.24", %"struct.vcl::buffer.25", %"struct.vcl::buffer.31", %"struct.vcl::buffer.37" }
%"struct.vcl::buffer.24" = type { %"class.std::vector" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<vcl::buffer_stack<float, 3>, std::allocator<vcl::buffer_stack<float, 3>>>::_Vector_impl" }
%"struct.std::_Vector_base<vcl::buffer_stack<float, 3>, std::allocator<vcl::buffer_stack<float, 3>>>::_Vector_impl" = type { %"struct.std::_Vector_base<vcl::buffer_stack<float, 3>, std::allocator<vcl::buffer_stack<float, 3>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<vcl::buffer_stack<float, 3>, std::allocator<vcl::buffer_stack<float, 3>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.vcl::buffer.25" = type { %"class.std::vector.26" }
%"class.std::vector.26" = type { %"struct.std::_Vector_base.27" }
%"struct.std::_Vector_base.27" = type { %"struct.std::_Vector_base<vcl::buffer_stack<float, 4>, std::allocator<vcl::buffer_stack<float, 4>>>::_Vector_impl" }
%"struct.std::_Vector_base<vcl::buffer_stack<float, 4>, std::allocator<vcl::buffer_stack<float, 4>>>::_Vector_impl" = type { %"struct.std::_Vector_base<vcl::buffer_stack<float, 4>, std::allocator<vcl::buffer_stack<float, 4>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<vcl::buffer_stack<float, 4>, std::allocator<vcl::buffer_stack<float, 4>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.vcl::buffer.31" = type { %"class.std::vector.32" }
%"class.std::vector.32" = type { %"struct.std::_Vector_base.33" }
%"struct.std::_Vector_base.33" = type { %"struct.std::_Vector_base<vcl::buffer_stack<float, 2>, std::allocator<vcl::buffer_stack<float, 2>>>::_Vector_impl" }
%"struct.std::_Vector_base<vcl::buffer_stack<float, 2>, std::allocator<vcl::buffer_stack<float, 2>>>::_Vector_impl" = type { %"struct.std::_Vector_base<vcl::buffer_stack<float, 2>, std::allocator<vcl::buffer_stack<float, 2>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<vcl::buffer_stack<float, 2>, std::allocator<vcl::buffer_stack<float, 2>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.vcl::buffer.37" = type { %"class.std::vector.38" }
%"class.std::vector.38" = type { %"struct.std::_Vector_base.39" }
%"struct.std::_Vector_base.39" = type { %"struct.std::_Vector_base<std::array<unsigned int, 3>, std::allocator<std::array<unsigned int, 3>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::array<unsigned int, 3>, std::allocator<std::array<unsigned int, 3>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::array<unsigned int, 3>, std::allocator<std::array<unsigned int, 3>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::array<unsigned int, 3>, std::allocator<std::array<unsigned int, 3>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.vcl::image_raw" = type { i32, i32, i32, %"class.std::vector.43" }
%"class.std::vector.43" = type { %"struct.std::_Vector_base.44" }
%"struct.std::_Vector_base.44" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.scene_model = type <{ %"struct.vcl::mesh_drawable", %"struct.vcl::mesh_drawable", %"class.std::vector", %"struct.vcl::mesh_drawable", [4 x i8], %"class.std::vector", %"struct.vcl::mesh_drawable", %"struct.vcl::mesh_drawable", %"struct.vcl::mesh_drawable", %"struct.vcl::mesh_drawable", %"struct.vcl::mesh_drawable", [4 x i8], %"class.std::__cxx11::list", i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, %"struct.vcl::buffer", %"struct.vcl::buffer", %"struct.vcl::hierarchy_mesh_drawable", %"struct.vcl::hierarchy_mesh_drawable", %struct.gui_scene_structure, %"class.vcl::timer_interval", %"class.vcl::timer_interval", %"class.vcl::timer_interval", %"class.vcl::timer_interval", %"class.vcl::timer_event", i8, i8, i8, i8, [4 x i8] }>
%"class.std::__cxx11::list" = type { %"class.std::__cxx11::_List_base" }
%"class.std::__cxx11::_List_base" = type { %"struct.std::__cxx11::_List_base<particle_structure, std::allocator<particle_structure>>::_List_impl" }
%"struct.std::__cxx11::_List_base<particle_structure, std::allocator<particle_structure>>::_List_impl" = type { %"struct.std::__detail::_List_node_header" }
%"struct.std::__detail::_List_node_header" = type { %"struct.std::__detail::_List_node_base", i64 }
%"struct.std::__detail::_List_node_base" = type { ptr, ptr }
%"struct.vcl::buffer" = type { %"class.std::vector.3" }
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = type { %"struct.std::_Vector_base<vec3t, std::allocator<vec3t>>::_Vector_impl" }
%"struct.std::_Vector_base<vec3t, std::allocator<vec3t>>::_Vector_impl" = type { %"struct.std::_Vector_base<vec3t, std::allocator<vec3t>>::_Vector_impl_data" }
%"struct.std::_Vector_base<vec3t, std::allocator<vec3t>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.gui_scene_structure = type { i8, i8, i8, float, float, i32, float }
%"class.vcl::timer_interval" = type { %"class.vcl::timer_basic", float, float }
%"class.vcl::timer_basic" = type { float, float, i8, float }
%"class.vcl::timer_event" = type { %"class.vcl::timer_basic", i8, float, float }
%struct.scene_structure = type { %"struct.vcl::camera_scene", %"class.vcl::camera_control_glfw", %"struct.vcl::mesh_drawable", %"struct.vcl::mesh_drawable", i32 }
%"struct.vcl::camera_scene" = type { float, %"struct.vcl::buffer_stack", %"struct.vcl::mat", %"struct.vcl::perspective_structure", i32, %"struct.vcl::buffer_stack.48" }
%"struct.vcl::perspective_structure" = type { float, float, float, float }
%"struct.vcl::buffer_stack.48" = type { float, float }
%"class.vcl::camera_control_glfw" = type { i8, float, float }

@.str = external hidden unnamed_addr constant [5 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [48 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11scene_model10setup_dataERSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS6_ESaISt4pairIKS6_jEEER15scene_structureR13gui_structure(ptr noundef nonnull align 8 dereferenceable(1516) %0, ptr noundef nonnull align 8 dereferenceable(48) %1, ptr noundef nonnull align 4 dereferenceable(360) %2, ptr noundef nonnull align 8 dereferenceable(42) %3) #0 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca %"struct.vcl::hierarchy_mesh_drawable", align 8
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.std::allocator.21", align 1
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca %"struct.vcl::hierarchy_mesh_drawable", align 8
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca %"class.std::allocator.21", align 1
  %17 = alloca %"struct.vcl::mesh_drawable", align 4
  %18 = alloca %"struct.vcl::mesh", align 8
  %19 = alloca %"struct.vcl::shading_mesh", align 4
  %20 = alloca %"struct.vcl::mesh_drawable", align 4
  %21 = alloca %"struct.vcl::mesh", align 8
  %22 = alloca %"struct.vcl::shading_mesh", align 4
  %23 = alloca %"struct.vcl::mesh_drawable", align 4
  %24 = alloca %"struct.vcl::mesh", align 8
  %25 = alloca %"struct.vcl::shading_mesh", align 4
  %26 = alloca %"struct.vcl::mesh_drawable", align 4
  %27 = alloca %"struct.vcl::mesh", align 8
  %28 = alloca %"struct.vcl::shading_mesh", align 4
  %29 = alloca %"struct.vcl::buffer_stack", align 4
  %30 = alloca %"struct.vcl::buffer_stack", align 4
  %31 = alloca %"struct.vcl::mesh_drawable", align 4
  %32 = alloca %"struct.vcl::mesh", align 8
  %33 = alloca %"struct.vcl::mesh_drawable", align 4
  %34 = alloca %"struct.vcl::mesh", align 8
  %35 = alloca %"struct.vcl::shading_mesh", align 4
  %36 = alloca %"struct.vcl::buffer_stack", align 4
  %37 = alloca %"struct.vcl::buffer_stack", align 4
  %38 = alloca i32, align 4
  %39 = alloca float, align 4
  %40 = alloca float, align 4
  %41 = alloca %"struct.vcl::buffer_stack", align 4
  %42 = alloca i32, align 4
  %43 = alloca float, align 4
  %44 = alloca float, align 4
  %45 = alloca %"struct.vcl::buffer_stack", align 4
  %46 = alloca %"struct.vcl::image_raw", align 8
  %47 = alloca %"class.std::__cxx11::basic_string", align 8
  %48 = alloca %"class.std::allocator.21", align 1
  %49 = alloca %"struct.vcl::image_raw", align 8
  %50 = alloca %"class.std::__cxx11::basic_string", align 8
  %51 = alloca %"class.std::allocator.21", align 1
  %52 = alloca %"struct.vcl::image_raw", align 8
  %53 = alloca %"class.std::__cxx11::basic_string", align 8
  %54 = alloca %"class.std::allocator.21", align 1
  %55 = alloca %"struct.vcl::image_raw", align 8
  %56 = alloca %"class.std::__cxx11::basic_string", align 8
  %57 = alloca %"class.std::allocator.21", align 1
  %58 = alloca %"struct.vcl::image_raw", align 8
  %59 = alloca %"class.std::__cxx11::basic_string", align 8
  %60 = alloca %"class.std::allocator.21", align 1
  %61 = alloca %"struct.vcl::image_raw", align 8
  %62 = alloca %"class.std::__cxx11::basic_string", align 8
  %63 = alloca %"class.std::allocator.21", align 1
  %64 = alloca %"struct.vcl::image_raw", align 8
  %65 = alloca %"class.std::__cxx11::basic_string", align 8
  %66 = alloca %"class.std::allocator.21", align 1
  %67 = alloca %"struct.vcl::image_raw", align 8
  %68 = alloca %"class.std::__cxx11::basic_string", align 8
  %69 = alloca %"class.std::allocator.21", align 1
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store ptr %2, ptr %7, align 8, !tbaa !5
  store ptr %3, ptr %8, align 8, !tbaa !5
  %70 = load ptr, ptr %5, align 8
  call void @_ZN11scene_model14update_terrainEv(ptr noundef nonnull align 8 dereferenceable(1516) %70)
  call void @_ZN11scene_model13update_islandEv(ptr noundef nonnull align 8 dereferenceable(1516) %70)
  call void @llvm.lifetime.start.p0(i64 72, ptr %9) #7
  call void @_Z15create_creaturev(ptr dead_on_unwind writable sret(%"struct.vcl::hierarchy_mesh_drawable") align 8 %9)
  %71 = getelementptr inbounds %struct.scene_model, ptr %70, i32 0, i32 25
  %72 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZN3vcl23hierarchy_mesh_drawableaSEOS0_(ptr noundef nonnull align 8 dereferenceable(72) %71, ptr noundef nonnull align 8 dereferenceable(72) %9) #7
  call void @_ZN3vcl23hierarchy_mesh_drawableD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %9) #7
  call void @llvm.lifetime.end.p0(i64 72, ptr %9) #7
  %73 = getelementptr inbounds %struct.scene_model, ptr %70, i32 0, i32 25
  %74 = load ptr, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %10) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %11) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef @.str, ptr noundef nonnull align 1 dereferenceable(1) %11)
          to label %75 unwind label %133

75:                                               ; preds = %4
  %76 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEEixEOS5_(ptr noundef nonnull align 8 dereferenceable(48) %74, ptr noundef nonnull align 8 dereferenceable(32) %10)
          to label %77 unwind label %137

77:                                               ; preds = %75
  %78 = load i32, ptr %76, align 4, !tbaa !9
  invoke void @_ZN3vcl23hierarchy_mesh_drawable27set_shader_for_all_elementsEj(ptr noundef nonnull align 8 dereferenceable(72) %73, i32 noundef %78)
          to label %79 unwind label %137

79:                                               ; preds = %77
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %10) #7
  call void @llvm.lifetime.start.p0(i64 72, ptr %14) #7
  call void @_Z12create_planev(ptr dead_on_unwind writable sret(%"struct.vcl::hierarchy_mesh_drawable") align 8 %14)
  %80 = getelementptr inbounds %struct.scene_model, ptr %70, i32 0, i32 26
  %81 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZN3vcl23hierarchy_mesh_drawableaSEOS0_(ptr noundef nonnull align 8 dereferenceable(72) %80, ptr noundef nonnull align 8 dereferenceable(72) %14) #7
  call void @_ZN3vcl23hierarchy_mesh_drawableD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %14) #7
  call void @llvm.lifetime.end.p0(i64 72, ptr %14) #7
  %82 = getelementptr inbounds %struct.scene_model, ptr %70, i32 0, i32 26
  %83 = load ptr, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %15) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef @.str, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %84 unwind label %142

84:                                               ; preds = %79
  %85 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEEixEOS5_(ptr noundef nonnull align 8 dereferenceable(48) %83, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %86 unwind label %146

86:                                               ; preds = %84
  %87 = load i32, ptr %85, align 4, !tbaa !9
  invoke void @_ZN3vcl23hierarchy_mesh_drawable27set_shader_for_all_elementsEj(ptr noundef nonnull align 8 dereferenceable(72) %82, i32 noundef %87)
          to label %88 unwind label %146

88:                                               ; preds = %86
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %15) #7
  call void @llvm.lifetime.start.p0(i64 132, ptr %17) #7
  call void @llvm.lifetime.start.p0(i64 120, ptr %18) #7
  call void @_Z11create_boatfff(ptr dead_on_unwind writable sret(%"struct.vcl::mesh") align 8 %18, float noundef 5.000000e+00, float noundef 2.000000e+00, float noundef 1.000000e+00)
  invoke void @_ZN3vcl13mesh_drawableC1ERKNS_4meshEjj(ptr noundef nonnull align 4 dereferenceable(132) %17, ptr noundef nonnull align 8 dereferenceable(120) %18, i32 noundef 0, i32 noundef 0)
          to label %89 unwind label %151

89:                                               ; preds = %88
  %90 = getelementptr inbounds %struct.scene_model, ptr %70, i32 0, i32 7
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %90, ptr align 4 %17, i64 132, i1 false), !tbaa.struct !11
  call void @_ZN3vcl4meshD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %18) #7
  call void @llvm.lifetime.end.p0(i64 120, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 132, ptr %17) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %19) #7
  call void @_ZN3vcl12shading_meshC1Efffi(ptr noundef nonnull align 4 dereferenceable(16) %19, float noundef 1.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00, i32 noundef 128)
  %91 = getelementptr inbounds %struct.scene_model, ptr %70, i32 0, i32 7
  %92 = getelementptr inbounds %"struct.vcl::mesh_drawable", ptr %91, i32 0, i32 1
  %93 = getelementptr inbounds %"struct.vcl::mesh_drawable_uniform", ptr %92, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %93, ptr align 4 %19, i64 16, i1 false), !tbaa.struct !14
  call void @llvm.lifetime.end.p0(i64 16, ptr %19) #7
  call void @llvm.lifetime.start.p0(i64 132, ptr %20) #7
  call void @llvm.lifetime.start.p0(i64 120, ptr %21) #7
  call void @_Z11create_flagff(ptr dead_on_unwind writable sret(%"struct.vcl::mesh") align 8 %21, float noundef 4.000000e+00, float noundef 4.000000e+00)
  invoke void @_ZN3vcl13mesh_drawableC1ERKNS_4meshEjj(ptr noundef nonnull align 4 dereferenceable(132) %20, ptr noundef nonnull align 8 dereferenceable(120) %21, i32 noundef 0, i32 noundef 0)
          to label %94 unwind label %155

94:                                               ; preds = %89
  %95 = getelementptr inbounds %struct.scene_model, ptr %70, i32 0, i32 9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %95, ptr align 4 %20, i64 132, i1 false), !tbaa.struct !11
  call void @_ZN3vcl4meshD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %21) #7
  call void @llvm.lifetime.end.p0(i64 120, ptr %21) #7
  call void @llvm.lifetime.end.p0(i64 132, ptr %20) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %22) #7
  call void @_ZN3vcl12shading_meshC1Efffi(ptr noundef nonnull align 4 dereferenceable(16) %22, float noundef 1.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00, i32 noundef 128)
  %96 = getelementptr inbounds %struct.scene_model, ptr %70, i32 0, i32 9
  %97 = getelementptr inbounds %"struct.vcl::mesh_drawable", ptr %96, i32 0, i32 1
  %98 = getelementptr inbounds %"struct.vcl::mesh_drawable_uniform", ptr %97, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %98, ptr align 4 %22, i64 16, i1 false), !tbaa.struct !14
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #7
  call void @llvm.lifetime.start.p0(i64 132, ptr %23) #7
  call void @llvm.lifetime.start.p0(i64 120, ptr %24) #7
  call void @_Z13create_missleff(ptr dead_on_unwind writable sret(%"struct.vcl::mesh") align 8 %24, float noundef 0x3FB99999A0000000, float noundef 1.000000e+00)
  invoke void @_ZN3vcl13mesh_drawableC1ERKNS_4meshEjj(ptr noundef nonnull align 4 dereferenceable(132) %23, ptr noundef nonnull align 8 dereferenceable(120) %24, i32 noundef 0, i32 noundef 0)
          to label %99 unwind label %159

99:                                               ; preds = %94
  %100 = getelementptr inbounds %struct.scene_model, ptr %70, i32 0, i32 10
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %100, ptr align 4 %23, i64 132, i1 false), !tbaa.struct !11
  call void @_ZN3vcl4meshD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %24) #7
  call void @llvm.lifetime.end.p0(i64 120, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 132, ptr %23) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %25) #7
  call void @_ZN3vcl12shading_meshC1Efffi(ptr noundef nonnull align 4 dereferenceable(16) %25, float noundef 1.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00, i32 noundef 128)
  %101 = getelementptr inbounds %struct.scene_model, ptr %70, i32 0, i32 10
  %102 = getelementptr inbounds %"struct.vcl::mesh_drawable", ptr %101, i32 0, i32 1
  %103 = getelementptr inbounds %"struct.vcl::mesh_drawable_uniform", ptr %102, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %103, ptr align 4 %25, i64 16, i1 false), !tbaa.struct !14
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #7
  call void @llvm.lifetime.start.p0(i64 132, ptr %26) #7
  call void @llvm.lifetime.start.p0(i64 120, ptr %27) #7
  call void @_Z11create_fishff(ptr dead_on_unwind writable sret(%"struct.vcl::mesh") align 8 %27, float noundef 0x3FC99999A0000000, float noundef 0x3FD99999A0000000)
  invoke void @_ZN3vcl13mesh_drawableC1ERKNS_4meshEjj(ptr noundef nonnull align 4 dereferenceable(132) %26, ptr noundef nonnull align 8 dereferenceable(120) %27, i32 noundef 0, i32 noundef 0)
          to label %104 unwind label %163

104:                                              ; preds = %99
  %105 = getelementptr inbounds %struct.scene_model, ptr %70, i32 0, i32 6
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %105, ptr align 4 %26, i64 132, i1 false), !tbaa.struct !11
  call void @_ZN3vcl4meshD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %27) #7
  call void @llvm.lifetime.end.p0(i64 120, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 132, ptr %26) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %28) #7
  call void @_ZN3vcl12shading_meshC1Efffi(ptr noundef nonnull align 4 dereferenceable(16) %28, float noundef 1.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00, i32 noundef 128)
  %106 = getelementptr inbounds %struct.scene_model, ptr %70, i32 0, i32 6
  %107 = getelementptr inbounds %"struct.vcl::mesh_drawable", ptr %106, i32 0, i32 1
  %108 = getelementptr inbounds %"struct.vcl::mesh_drawable_uniform", ptr %107, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %108, ptr align 4 %28, i64 16, i1 false), !tbaa.struct !14
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr %29) #7
  call void @_ZN3vcl12buffer_stackIfLm3EEC1Efff(ptr noundef nonnull align 4 dereferenceable(12) %29, float noundef 0.000000e+00, float noundef 0x3FEB333340000000, float noundef 5.000000e-01)
  call void @llvm.lifetime.start.p0(i64 12, ptr %30) #7
  call void @_ZN3vcl12buffer_stackIfLm3EEC1Efff(ptr noundef nonnull align 4 dereferenceable(12) %30, float noundef 0x3FEBD70A40000000, float noundef 0x3FE70A3D80000000, float noundef 0x3FE0A3D700000000)
  call void @llvm.lifetime.start.p0(i64 132, ptr %31) #7
  call void @llvm.lifetime.start.p0(i64 120, ptr %32) #7
  call void @_Z10create_boxfff(ptr dead_on_unwind writable sret(%"struct.vcl::mesh") align 8 %32, float noundef 0x3FB99999A0000000, float noundef 0x3FD99999A0000000, float noundef 1.000000e+00)
  invoke void @_ZN3vcl13mesh_drawableC1ERKNS_4meshEjj(ptr noundef nonnull align 4 dereferenceable(132) %31, ptr noundef nonnull align 8 dereferenceable(120) %32, i32 noundef 0, i32 noundef 0)
          to label %109 unwind label %167

109:                                              ; preds = %104
  %110 = getelementptr inbounds %struct.scene_model, ptr %70, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %110, ptr align 4 %31, i64 132, i1 false), !tbaa.struct !11
  call void @_ZN3vcl4meshD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %32) #7
  call void @llvm.lifetime.end.p0(i64 120, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 132, ptr %31) #7
  %111 = getelementptr inbounds %struct.scene_model, ptr %70, i32 0, i32 3
  %112 = getelementptr inbounds %"struct.vcl::mesh_drawable", ptr %111, i32 0, i32 1
  %113 = getelementptr inbounds %"struct.vcl::mesh_drawable_uniform", ptr %112, i32 0, i32 2
  %114 = getelementptr inbounds %"struct.vcl::shading_mesh", ptr %113, i32 0, i32 2
  store float 0.000000e+00, ptr %114, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 132, ptr %33) #7
  call void @llvm.lifetime.start.p0(i64 120, ptr %34) #7
  call void @_Z10create_skyf(ptr dead_on_unwind writable sret(%"struct.vcl::mesh") align 8 %34, float noundef 5.000000e+01)
  invoke void @_ZN3vcl13mesh_drawableC1ERKNS_4meshEjj(ptr noundef nonnull align 4 dereferenceable(132) %33, ptr noundef nonnull align 8 dereferenceable(120) %34, i32 noundef 0, i32 noundef 0)
          to label %115 unwind label %171

115:                                              ; preds = %109
  %116 = getelementptr inbounds %struct.scene_model, ptr %70, i32 0, i32 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %116, ptr align 4 %33, i64 132, i1 false), !tbaa.struct !11
  call void @_ZN3vcl4meshD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %34) #7
  call void @llvm.lifetime.end.p0(i64 120, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 132, ptr %33) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %35) #7
  call void @_ZN3vcl12shading_meshC1Efffi(ptr noundef nonnull align 4 dereferenceable(16) %35, float noundef 1.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00, i32 noundef 128)
  %117 = getelementptr inbounds %struct.scene_model, ptr %70, i32 0, i32 8
  %118 = getelementptr inbounds %"struct.vcl::mesh_drawable", ptr %117, i32 0, i32 1
  %119 = getelementptr inbounds %"struct.vcl::mesh_drawable_uniform", ptr %118, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %119, ptr align 4 %35, i64 16, i1 false), !tbaa.struct !14
  call void @llvm.lifetime.end.p0(i64 16, ptr %35) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr %36) #7
  call void @_ZN3vcl12buffer_stackIfLm3EEC1Efff(ptr noundef nonnull align 4 dereferenceable(12) %36, float noundef 1.000000e+00, float noundef 1.000000e+00, float noundef 1.000000e+00)
  %120 = getelementptr inbounds %struct.scene_model, ptr %70, i32 0, i32 8
  %121 = getelementptr inbounds %"struct.vcl::mesh_drawable", ptr %120, i32 0, i32 1
  %122 = getelementptr inbounds %"struct.vcl::mesh_drawable_uniform", ptr %121, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %122, ptr align 4 %36, i64 12, i1 false), !tbaa.struct !57
  call void @llvm.lifetime.end.p0(i64 12, ptr %36) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr %37) #7
  call void @_ZN3vcl12buffer_stackIfLm3EEC1Efff(ptr noundef nonnull align 4 dereferenceable(12) %37, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef -2.500000e+01)
  %123 = getelementptr inbounds %struct.scene_model, ptr %70, i32 0, i32 8
  %124 = getelementptr inbounds %"struct.vcl::mesh_drawable", ptr %123, i32 0, i32 1
  %125 = getelementptr inbounds %"struct.vcl::mesh_drawable_uniform", ptr %124, i32 0, i32 0
  %126 = getelementptr inbounds %"struct.vcl::affine_transform", ptr %125, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %126, ptr align 4 %37, i64 12, i1 false), !tbaa.struct !57
  call void @llvm.lifetime.end.p0(i64 12, ptr %37) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #7
  store i32 0, ptr %38, align 4, !tbaa !9
  br label %127

127:                                              ; preds = %189, %115
  %128 = load i32, ptr %38, align 4, !tbaa !9
  %129 = getelementptr inbounds %struct.scene_model, ptr %70, i32 0, i32 14
  %130 = load i32, ptr %129, align 4, !tbaa !58
  %131 = icmp slt i32 %128, %130
  br i1 %131, label %175, label %132

132:                                              ; preds = %127
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #7
  br label %192

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

137:                                              ; preds = %77, %75
  %138 = landingpad { ptr, i32 }
          cleanup
  %139 = extractvalue { ptr, i32 } %138, 0
  store ptr %139, ptr %12, align 8
  %140 = extractvalue { ptr, i32 } %138, 1
  store i32 %140, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #7
  br label %141

141:                                              ; preds = %137, %133
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %10) #7
  br label %400

142:                                              ; preds = %79
  %143 = landingpad { ptr, i32 }
          cleanup
  %144 = extractvalue { ptr, i32 } %143, 0
  store ptr %144, ptr %12, align 8
  %145 = extractvalue { ptr, i32 } %143, 1
  store i32 %145, ptr %13, align 4
  br label %150

146:                                              ; preds = %86, %84
  %147 = landingpad { ptr, i32 }
          cleanup
  %148 = extractvalue { ptr, i32 } %147, 0
  store ptr %148, ptr %12, align 8
  %149 = extractvalue { ptr, i32 } %147, 1
  store i32 %149, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  br label %150

150:                                              ; preds = %146, %142
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %15) #7
  br label %400

151:                                              ; preds = %88
  %152 = landingpad { ptr, i32 }
          cleanup
  %153 = extractvalue { ptr, i32 } %152, 0
  store ptr %153, ptr %12, align 8
  %154 = extractvalue { ptr, i32 } %152, 1
  store i32 %154, ptr %13, align 4
  call void @_ZN3vcl4meshD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %18) #7
  call void @llvm.lifetime.end.p0(i64 120, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 132, ptr %17) #7
  br label %400

155:                                              ; preds = %89
  %156 = landingpad { ptr, i32 }
          cleanup
  %157 = extractvalue { ptr, i32 } %156, 0
  store ptr %157, ptr %12, align 8
  %158 = extractvalue { ptr, i32 } %156, 1
  store i32 %158, ptr %13, align 4
  call void @_ZN3vcl4meshD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %21) #7
  call void @llvm.lifetime.end.p0(i64 120, ptr %21) #7
  call void @llvm.lifetime.end.p0(i64 132, ptr %20) #7
  br label %400

159:                                              ; preds = %94
  %160 = landingpad { ptr, i32 }
          cleanup
  %161 = extractvalue { ptr, i32 } %160, 0
  store ptr %161, ptr %12, align 8
  %162 = extractvalue { ptr, i32 } %160, 1
  store i32 %162, ptr %13, align 4
  call void @_ZN3vcl4meshD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %24) #7
  call void @llvm.lifetime.end.p0(i64 120, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 132, ptr %23) #7
  br label %400

163:                                              ; preds = %99
  %164 = landingpad { ptr, i32 }
          cleanup
  %165 = extractvalue { ptr, i32 } %164, 0
  store ptr %165, ptr %12, align 8
  %166 = extractvalue { ptr, i32 } %164, 1
  store i32 %166, ptr %13, align 4
  call void @_ZN3vcl4meshD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %27) #7
  call void @llvm.lifetime.end.p0(i64 120, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 132, ptr %26) #7
  br label %400

167:                                              ; preds = %104
  %168 = landingpad { ptr, i32 }
          cleanup
  %169 = extractvalue { ptr, i32 } %168, 0
  store ptr %169, ptr %12, align 8
  %170 = extractvalue { ptr, i32 } %168, 1
  store i32 %170, ptr %13, align 4
  call void @_ZN3vcl4meshD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %32) #7
  call void @llvm.lifetime.end.p0(i64 120, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 132, ptr %31) #7
  br label %399

171:                                              ; preds = %109
  %172 = landingpad { ptr, i32 }
          cleanup
  %173 = extractvalue { ptr, i32 } %172, 0
  store ptr %173, ptr %12, align 8
  %174 = extractvalue { ptr, i32 } %172, 1
  store i32 %174, ptr %13, align 4
  call void @_ZN3vcl4meshD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %34) #7
  call void @llvm.lifetime.end.p0(i64 120, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 132, ptr %33) #7
  br label %399

175:                                              ; preds = %127
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #7
  %176 = call noundef float @_ZN3vcl13rand_intervalEff(float noundef 0.000000e+00, float noundef 1.000000e+00)
  store float %176, ptr %39, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #7
  %177 = call noundef float @_ZN3vcl13rand_intervalEff(float noundef 0.000000e+00, float noundef 1.000000e+00)
  store float %177, ptr %40, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 12, ptr %41) #7
  %178 = load float, ptr %39, align 4, !tbaa !12
  %179 = fsub float %178, 5.000000e-01
  %180 = fmul float 2.000000e+01, %179
  %181 = load float, ptr %40, align 4, !tbaa !12
  %182 = fsub float %181, 5.000000e-01
  %183 = fmul float 2.000000e+01, %182
  %184 = load float, ptr %39, align 4, !tbaa !12
  %185 = load float, ptr %40, align 4, !tbaa !12
  %186 = getelementptr inbounds %struct.scene_model, ptr %70, i32 0, i32 27
  %187 = call noundef float @_Z25evaluate_perlin_terrain_zffRK19gui_scene_structure(float noundef %184, float noundef %185, ptr noundef nonnull align 4 dereferenceable(20) %186)
  call void @_ZN3vcl12buffer_stackIfLm3EEC1Efff(ptr noundef nonnull align 4 dereferenceable(12) %41, float noundef %180, float noundef %183, float noundef %187)
  %188 = getelementptr inbounds %struct.scene_model, ptr %70, i32 0, i32 5
  call void @_ZNSt6vectorIN3vcl12buffer_stackIfLm3EEESaIS2_EE9push_backERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %188, ptr noundef nonnull align 4 dereferenceable(12) %41)
  call void @llvm.lifetime.end.p0(i64 12, ptr %41) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #7
  br label %189

189:                                              ; preds = %175
  %190 = load i32, ptr %38, align 4, !tbaa !9
  %191 = add nsw i32 %190, 1
  store i32 %191, ptr %38, align 4, !tbaa !9
  br label %127, !llvm.loop !59

192:                                              ; preds = %132
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #7
  store i32 0, ptr %42, align 4, !tbaa !9
  br label %193

193:                                              ; preds = %213, %192
  %194 = load i32, ptr %42, align 4, !tbaa !9
  %195 = getelementptr inbounds %struct.scene_model, ptr %70, i32 0, i32 13
  %196 = load i32, ptr %195, align 8, !tbaa !61
  %197 = icmp slt i32 %194, %196
  br i1 %197, label %199, label %198

198:                                              ; preds = %193
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #7
  br label %216

199:                                              ; preds = %193
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #7
  %200 = call noundef float @_ZN3vcl13rand_intervalEff(float noundef 0.000000e+00, float noundef 1.000000e+00)
  store float %200, ptr %43, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #7
  %201 = call noundef float @_ZN3vcl13rand_intervalEff(float noundef 0.000000e+00, float noundef 1.000000e+00)
  store float %201, ptr %44, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 12, ptr %45) #7
  %202 = load float, ptr %43, align 4, !tbaa !12
  %203 = fsub float %202, 5.000000e-01
  %204 = fmul float 2.000000e+01, %203
  %205 = load float, ptr %44, align 4, !tbaa !12
  %206 = fsub float %205, 5.000000e-01
  %207 = fmul float 2.000000e+01, %206
  %208 = load float, ptr %43, align 4, !tbaa !12
  %209 = load float, ptr %44, align 4, !tbaa !12
  %210 = getelementptr inbounds %struct.scene_model, ptr %70, i32 0, i32 27
  %211 = call noundef float @_Z25evaluate_perlin_terrain_zffRK19gui_scene_structure(float noundef %208, float noundef %209, ptr noundef nonnull align 4 dereferenceable(20) %210)
  call void @_ZN3vcl12buffer_stackIfLm3EEC1Efff(ptr noundef nonnull align 4 dereferenceable(12) %45, float noundef %204, float noundef %207, float noundef %211)
  %212 = getelementptr inbounds %struct.scene_model, ptr %70, i32 0, i32 2
  call void @_ZNSt6vectorIN3vcl12buffer_stackIfLm3EEESaIS2_EE9push_backERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %212, ptr noundef nonnull align 4 dereferenceable(12) %45)
  call void @llvm.lifetime.end.p0(i64 12, ptr %45) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #7
  br label %213

213:                                              ; preds = %199
  %214 = load i32, ptr %42, align 4, !tbaa !9
  %215 = add nsw i32 %214, 1
  store i32 %215, ptr %42, align 4, !tbaa !9
  br label %193, !llvm.loop !62

216:                                              ; preds = %198
  call void @llvm.lifetime.start.p0(i64 40, ptr %46) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %47) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %48) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %48)
          to label %217 unwind label %287

217:                                              ; preds = %216
  invoke void @_ZN3vcl14image_load_pngERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_16image_color_typeE(ptr dead_on_unwind writable sret(%"struct.vcl::image_raw") align 8 %46, ptr noundef nonnull align 8 dereferenceable(32) %47, i32 noundef 1)
          to label %218 unwind label %291

218:                                              ; preds = %217
  %219 = invoke noundef i32 @_ZN3vcl18create_texture_gpuERKNS_9image_rawEii(ptr noundef nonnull align 8 dereferenceable(40) %46, i32 noundef 33071, i32 noundef 33071)
          to label %220 unwind label %295

220:                                              ; preds = %218
  %221 = getelementptr inbounds %struct.scene_model, ptr %70, i32 0, i32 15
  store i32 %219, ptr %221, align 8, !tbaa !63
  call void @_ZN3vcl9image_rawD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %46) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %47) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %46) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr %49) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %50) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %51) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %50, ptr noundef @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %51)
          to label %222 unwind label %301

222:                                              ; preds = %220
  invoke void @_ZN3vcl14image_load_pngERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_16image_color_typeE(ptr dead_on_unwind writable sret(%"struct.vcl::image_raw") align 8 %49, ptr noundef nonnull align 8 dereferenceable(32) %50, i32 noundef 1)
          to label %223 unwind label %305

223:                                              ; preds = %222
  %224 = invoke noundef i32 @_ZN3vcl18create_texture_gpuERKNS_9image_rawEii(ptr noundef nonnull align 8 dereferenceable(40) %49, i32 noundef 10497, i32 noundef 10497)
          to label %225 unwind label %309

225:                                              ; preds = %223
  %226 = getelementptr inbounds %struct.scene_model, ptr %70, i32 0, i32 20
  store i32 %224, ptr %226, align 4, !tbaa !64
  call void @_ZN3vcl9image_rawD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %49) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %50) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %49) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr %52) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %53) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %54) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %53, ptr noundef @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %54)
          to label %227 unwind label %315

227:                                              ; preds = %225
  invoke void @_ZN3vcl14image_load_pngERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_16image_color_typeE(ptr dead_on_unwind writable sret(%"struct.vcl::image_raw") align 8 %52, ptr noundef nonnull align 8 dereferenceable(32) %53, i32 noundef 1)
          to label %228 unwind label %319

228:                                              ; preds = %227
  %229 = invoke noundef i32 @_ZN3vcl18create_texture_gpuERKNS_9image_rawEii(ptr noundef nonnull align 8 dereferenceable(40) %52, i32 noundef 10497, i32 noundef 10497)
          to label %230 unwind label %323

230:                                              ; preds = %228
  %231 = getelementptr inbounds %struct.scene_model, ptr %70, i32 0, i32 17
  store i32 %229, ptr %231, align 8, !tbaa !65
  call void @_ZN3vcl9image_rawD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %52) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %54) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %53) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %52) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr %55) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %56) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %57) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %56, ptr noundef @.str.4, ptr noundef nonnull align 1 dereferenceable(1) %57)
          to label %232 unwind label %329

232:                                              ; preds = %230
  invoke void @_ZN3vcl14image_load_pngERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_16image_color_typeE(ptr dead_on_unwind writable sret(%"struct.vcl::image_raw") align 8 %55, ptr noundef nonnull align 8 dereferenceable(32) %56, i32 noundef 1)
          to label %233 unwind label %333

233:                                              ; preds = %232
  %234 = invoke noundef i32 @_ZN3vcl18create_texture_gpuERKNS_9image_rawEii(ptr noundef nonnull align 8 dereferenceable(40) %55, i32 noundef 10497, i32 noundef 10497)
          to label %235 unwind label %337

235:                                              ; preds = %233
  %236 = getelementptr inbounds %struct.scene_model, ptr %70, i32 0, i32 18
  store i32 %234, ptr %236, align 4, !tbaa !66
  call void @_ZN3vcl9image_rawD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %55) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %57) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %56) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %55) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr %58) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %59) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %60) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %60) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %59, ptr noundef @.str.5, ptr noundef nonnull align 1 dereferenceable(1) %60)
          to label %237 unwind label %343

237:                                              ; preds = %235
  invoke void @_ZN3vcl14image_load_pngERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_16image_color_typeE(ptr dead_on_unwind writable sret(%"struct.vcl::image_raw") align 8 %58, ptr noundef nonnull align 8 dereferenceable(32) %59, i32 noundef 1)
          to label %238 unwind label %347

238:                                              ; preds = %237
  %239 = invoke noundef i32 @_ZN3vcl18create_texture_gpuERKNS_9image_rawEii(ptr noundef nonnull align 8 dereferenceable(40) %58, i32 noundef 10497, i32 noundef 10497)
          to label %240 unwind label %351

240:                                              ; preds = %238
  %241 = getelementptr inbounds %struct.scene_model, ptr %70, i32 0, i32 21
  store i32 %239, ptr %241, align 8, !tbaa !67
  call void @_ZN3vcl9image_rawD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %58) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %60) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %60) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %59) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %58) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr %61) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %62) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %63) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %63) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %62, ptr noundef @.str.6, ptr noundef nonnull align 1 dereferenceable(1) %63)
          to label %242 unwind label %357

242:                                              ; preds = %240
  invoke void @_ZN3vcl14image_load_pngERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_16image_color_typeE(ptr dead_on_unwind writable sret(%"struct.vcl::image_raw") align 8 %61, ptr noundef nonnull align 8 dereferenceable(32) %62, i32 noundef 1)
          to label %243 unwind label %361

243:                                              ; preds = %242
  %244 = invoke noundef i32 @_ZN3vcl18create_texture_gpuERKNS_9image_rawEii(ptr noundef nonnull align 8 dereferenceable(40) %61, i32 noundef 10497, i32 noundef 10497)
          to label %245 unwind label %365

245:                                              ; preds = %243
  %246 = getelementptr inbounds %struct.scene_model, ptr %70, i32 0, i32 16
  store i32 %244, ptr %246, align 4, !tbaa !68
  call void @_ZN3vcl9image_rawD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %61) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %63) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %63) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %62) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %61) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr %64) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %65) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %66) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %66) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %65, ptr noundef @.str.7, ptr noundef nonnull align 1 dereferenceable(1) %66)
          to label %247 unwind label %371

247:                                              ; preds = %245
  invoke void @_ZN3vcl14image_load_pngERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_16image_color_typeE(ptr dead_on_unwind writable sret(%"struct.vcl::image_raw") align 8 %64, ptr noundef nonnull align 8 dereferenceable(32) %65, i32 noundef 1)
          to label %248 unwind label %375

248:                                              ; preds = %247
  %249 = invoke noundef i32 @_ZN3vcl18create_texture_gpuERKNS_9image_rawEii(ptr noundef nonnull align 8 dereferenceable(40) %64, i32 noundef 33071, i32 noundef 33071)
          to label %250 unwind label %379

250:                                              ; preds = %248
  %251 = getelementptr inbounds %struct.scene_model, ptr %70, i32 0, i32 19
  store i32 %249, ptr %251, align 8, !tbaa !69
  call void @_ZN3vcl9image_rawD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %64) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %66) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %66) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %65) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %64) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr %67) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %68) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %69) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %69) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %68, ptr noundef @.str.8, ptr noundef nonnull align 1 dereferenceable(1) %69)
          to label %252 unwind label %385

252:                                              ; preds = %250
  invoke void @_ZN3vcl14image_load_pngERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_16image_color_typeE(ptr dead_on_unwind writable sret(%"struct.vcl::image_raw") align 8 %67, ptr noundef nonnull align 8 dereferenceable(32) %68, i32 noundef 1)
          to label %253 unwind label %389

253:                                              ; preds = %252
  %254 = invoke noundef i32 @_ZN3vcl18create_texture_gpuERKNS_9image_rawEii(ptr noundef nonnull align 8 dereferenceable(40) %67, i32 noundef 10497, i32 noundef 10497)
          to label %255 unwind label %393

255:                                              ; preds = %253
  %256 = getelementptr inbounds %struct.scene_model, ptr %70, i32 0, i32 22
  store i32 %254, ptr %256, align 4, !tbaa !70
  call void @_ZN3vcl9image_rawD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %67) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %69) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %69) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %68) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %67) #7
  %257 = getelementptr inbounds %struct.scene_model, ptr %70, i32 0, i32 28
  %258 = getelementptr inbounds %"class.vcl::timer_interval", ptr %257, i32 0, i32 1
  store float 1.000000e+00, ptr %258, align 4, !tbaa !71
  %259 = getelementptr inbounds %struct.scene_model, ptr %70, i32 0, i32 28
  %260 = getelementptr inbounds %"class.vcl::timer_interval", ptr %259, i32 0, i32 2
  store float 1.000000e+02, ptr %260, align 4, !tbaa !72
  %261 = getelementptr inbounds %struct.scene_model, ptr %70, i32 0, i32 28
  %262 = getelementptr inbounds %"class.vcl::timer_interval", ptr %261, i32 0, i32 1
  %263 = load float, ptr %262, align 4, !tbaa !71
  %264 = getelementptr inbounds %struct.scene_model, ptr %70, i32 0, i32 28
  %265 = getelementptr inbounds %"class.vcl::timer_basic", ptr %264, i32 0, i32 0
  store float %263, ptr %265, align 4, !tbaa !73
  %266 = getelementptr inbounds %struct.scene_model, ptr %70, i32 0, i32 29
  %267 = getelementptr inbounds %"class.vcl::timer_interval", ptr %266, i32 0, i32 1
  store float 1.000000e+02, ptr %267, align 4, !tbaa !74
  %268 = getelementptr inbounds %struct.scene_model, ptr %70, i32 0, i32 29
  %269 = getelementptr inbounds %"class.vcl::timer_interval", ptr %268, i32 0, i32 2
  store float 2.000000e+02, ptr %269, align 4, !tbaa !75
  %270 = getelementptr inbounds %struct.scene_model, ptr %70, i32 0, i32 29
  %271 = getelementptr inbounds %"class.vcl::timer_interval", ptr %270, i32 0, i32 1
  %272 = load float, ptr %271, align 4, !tbaa !74
  %273 = getelementptr inbounds %struct.scene_model, ptr %70, i32 0, i32 29
  %274 = getelementptr inbounds %"class.vcl::timer_basic", ptr %273, i32 0, i32 0
  store float %272, ptr %274, align 4, !tbaa !73
  %275 = getelementptr inbounds %struct.scene_model, ptr %70, i32 0, i32 32
  %276 = getelementptr inbounds %"class.vcl::timer_event", ptr %275, i32 0, i32 2
  store float 0x3FF3333340000000, ptr %276, align 4, !tbaa !76
  %277 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN11scene_model27set_data_creature_animationERSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS6_ESaISt4pairIKS6_jEEE(ptr noundef nonnull align 8 dereferenceable(1516) %70, ptr noundef nonnull align 8 dereferenceable(48) %277)
  %278 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN11scene_model24set_data_plane_animationERSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS6_ESaISt4pairIKS6_jEEE(ptr noundef nonnull align 8 dereferenceable(1516) %70, ptr noundef nonnull align 8 dereferenceable(48) %278)
  %279 = load ptr, ptr %7, align 8, !tbaa !5
  %280 = getelementptr inbounds %struct.scene_structure, ptr %279, i32 0, i32 0
  %281 = getelementptr inbounds %"struct.vcl::camera_scene", ptr %280, i32 0, i32 4
  store i32 1, ptr %281, align 4, !tbaa !77
  %282 = load ptr, ptr %7, align 8, !tbaa !5
  %283 = getelementptr inbounds %struct.scene_structure, ptr %282, i32 0, i32 0
  %284 = getelementptr inbounds %"struct.vcl::camera_scene", ptr %283, i32 0, i32 0
  store float 1.500000e+01, ptr %284, align 4, !tbaa !84
  %285 = load ptr, ptr %7, align 8, !tbaa !5
  %286 = getelementptr inbounds %struct.scene_structure, ptr %285, i32 0, i32 0
  call void @_ZN3vcl12camera_scene14apply_rotationEffff(ptr noundef nonnull align 4 dereferenceable(80) %286, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 3.500000e+00, float noundef 0x3FF3333340000000)
  call void @llvm.lifetime.end.p0(i64 12, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %29) #7
  ret void

287:                                              ; preds = %216
  %288 = landingpad { ptr, i32 }
          cleanup
  %289 = extractvalue { ptr, i32 } %288, 0
  store ptr %289, ptr %12, align 8
  %290 = extractvalue { ptr, i32 } %288, 1
  store i32 %290, ptr %13, align 4
  br label %300

291:                                              ; preds = %217
  %292 = landingpad { ptr, i32 }
          cleanup
  %293 = extractvalue { ptr, i32 } %292, 0
  store ptr %293, ptr %12, align 8
  %294 = extractvalue { ptr, i32 } %292, 1
  store i32 %294, ptr %13, align 4
  br label %299

295:                                              ; preds = %218
  %296 = landingpad { ptr, i32 }
          cleanup
  %297 = extractvalue { ptr, i32 } %296, 0
  store ptr %297, ptr %12, align 8
  %298 = extractvalue { ptr, i32 } %296, 1
  store i32 %298, ptr %13, align 4
  call void @_ZN3vcl9image_rawD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %46) #7
  br label %299

299:                                              ; preds = %295, %291
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #7
  br label %300

300:                                              ; preds = %299, %287
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %47) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %46) #7
  br label %399

301:                                              ; preds = %220
  %302 = landingpad { ptr, i32 }
          cleanup
  %303 = extractvalue { ptr, i32 } %302, 0
  store ptr %303, ptr %12, align 8
  %304 = extractvalue { ptr, i32 } %302, 1
  store i32 %304, ptr %13, align 4
  br label %314

305:                                              ; preds = %222
  %306 = landingpad { ptr, i32 }
          cleanup
  %307 = extractvalue { ptr, i32 } %306, 0
  store ptr %307, ptr %12, align 8
  %308 = extractvalue { ptr, i32 } %306, 1
  store i32 %308, ptr %13, align 4
  br label %313

309:                                              ; preds = %223
  %310 = landingpad { ptr, i32 }
          cleanup
  %311 = extractvalue { ptr, i32 } %310, 0
  store ptr %311, ptr %12, align 8
  %312 = extractvalue { ptr, i32 } %310, 1
  store i32 %312, ptr %13, align 4
  call void @_ZN3vcl9image_rawD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %49) #7
  br label %313

313:                                              ; preds = %309, %305
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #7
  br label %314

314:                                              ; preds = %313, %301
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %50) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %49) #7
  br label %399

315:                                              ; preds = %225
  %316 = landingpad { ptr, i32 }
          cleanup
  %317 = extractvalue { ptr, i32 } %316, 0
  store ptr %317, ptr %12, align 8
  %318 = extractvalue { ptr, i32 } %316, 1
  store i32 %318, ptr %13, align 4
  br label %328

319:                                              ; preds = %227
  %320 = landingpad { ptr, i32 }
          cleanup
  %321 = extractvalue { ptr, i32 } %320, 0
  store ptr %321, ptr %12, align 8
  %322 = extractvalue { ptr, i32 } %320, 1
  store i32 %322, ptr %13, align 4
  br label %327

323:                                              ; preds = %228
  %324 = landingpad { ptr, i32 }
          cleanup
  %325 = extractvalue { ptr, i32 } %324, 0
  store ptr %325, ptr %12, align 8
  %326 = extractvalue { ptr, i32 } %324, 1
  store i32 %326, ptr %13, align 4
  call void @_ZN3vcl9image_rawD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %52) #7
  br label %327

327:                                              ; preds = %323, %319
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #7
  br label %328

328:                                              ; preds = %327, %315
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %54) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %53) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %52) #7
  br label %399

329:                                              ; preds = %230
  %330 = landingpad { ptr, i32 }
          cleanup
  %331 = extractvalue { ptr, i32 } %330, 0
  store ptr %331, ptr %12, align 8
  %332 = extractvalue { ptr, i32 } %330, 1
  store i32 %332, ptr %13, align 4
  br label %342

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

337:                                              ; preds = %233
  %338 = landingpad { ptr, i32 }
          cleanup
  %339 = extractvalue { ptr, i32 } %338, 0
  store ptr %339, ptr %12, align 8
  %340 = extractvalue { ptr, i32 } %338, 1
  store i32 %340, ptr %13, align 4
  call void @_ZN3vcl9image_rawD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %55) #7
  br label %341

341:                                              ; preds = %337, %333
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #7
  br label %342

342:                                              ; preds = %341, %329
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %57) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %56) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %55) #7
  br label %399

343:                                              ; preds = %235
  %344 = landingpad { ptr, i32 }
          cleanup
  %345 = extractvalue { ptr, i32 } %344, 0
  store ptr %345, ptr %12, align 8
  %346 = extractvalue { ptr, i32 } %344, 1
  store i32 %346, ptr %13, align 4
  br label %356

347:                                              ; preds = %237
  %348 = landingpad { ptr, i32 }
          cleanup
  %349 = extractvalue { ptr, i32 } %348, 0
  store ptr %349, ptr %12, align 8
  %350 = extractvalue { ptr, i32 } %348, 1
  store i32 %350, ptr %13, align 4
  br label %355

351:                                              ; preds = %238
  %352 = landingpad { ptr, i32 }
          cleanup
  %353 = extractvalue { ptr, i32 } %352, 0
  store ptr %353, ptr %12, align 8
  %354 = extractvalue { ptr, i32 } %352, 1
  store i32 %354, ptr %13, align 4
  call void @_ZN3vcl9image_rawD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %58) #7
  br label %355

355:                                              ; preds = %351, %347
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #7
  br label %356

356:                                              ; preds = %355, %343
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %60) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %60) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %59) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %58) #7
  br label %399

357:                                              ; preds = %240
  %358 = landingpad { ptr, i32 }
          cleanup
  %359 = extractvalue { ptr, i32 } %358, 0
  store ptr %359, ptr %12, align 8
  %360 = extractvalue { ptr, i32 } %358, 1
  store i32 %360, ptr %13, align 4
  br label %370

361:                                              ; preds = %242
  %362 = landingpad { ptr, i32 }
          cleanup
  %363 = extractvalue { ptr, i32 } %362, 0
  store ptr %363, ptr %12, align 8
  %364 = extractvalue { ptr, i32 } %362, 1
  store i32 %364, ptr %13, align 4
  br label %369

365:                                              ; preds = %243
  %366 = landingpad { ptr, i32 }
          cleanup
  %367 = extractvalue { ptr, i32 } %366, 0
  store ptr %367, ptr %12, align 8
  %368 = extractvalue { ptr, i32 } %366, 1
  store i32 %368, ptr %13, align 4
  call void @_ZN3vcl9image_rawD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %61) #7
  br label %369

369:                                              ; preds = %365, %361
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #7
  br label %370

370:                                              ; preds = %369, %357
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %63) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %63) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %62) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %61) #7
  br label %399

371:                                              ; preds = %245
  %372 = landingpad { ptr, i32 }
          cleanup
  %373 = extractvalue { ptr, i32 } %372, 0
  store ptr %373, ptr %12, align 8
  %374 = extractvalue { ptr, i32 } %372, 1
  store i32 %374, ptr %13, align 4
  br label %384

375:                                              ; preds = %247
  %376 = landingpad { ptr, i32 }
          cleanup
  %377 = extractvalue { ptr, i32 } %376, 0
  store ptr %377, ptr %12, align 8
  %378 = extractvalue { ptr, i32 } %376, 1
  store i32 %378, ptr %13, align 4
  br label %383

379:                                              ; preds = %248
  %380 = landingpad { ptr, i32 }
          cleanup
  %381 = extractvalue { ptr, i32 } %380, 0
  store ptr %381, ptr %12, align 8
  %382 = extractvalue { ptr, i32 } %380, 1
  store i32 %382, ptr %13, align 4
  call void @_ZN3vcl9image_rawD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %64) #7
  br label %383

383:                                              ; preds = %379, %375
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #7
  br label %384

384:                                              ; preds = %383, %371
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %66) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %66) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %65) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %64) #7
  br label %399

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

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

393:                                              ; preds = %253
  %394 = landingpad { ptr, i32 }
          cleanup
  %395 = extractvalue { ptr, i32 } %394, 0
  store ptr %395, ptr %12, align 8
  %396 = extractvalue { ptr, i32 } %394, 1
  store i32 %396, ptr %13, align 4
  call void @_ZN3vcl9image_rawD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %67) #7
  br label %397

397:                                              ; preds = %393, %389
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #7
  br label %398

398:                                              ; preds = %397, %385
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %69) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %69) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %68) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %67) #7
  br label %399

399:                                              ; preds = %398, %384, %370, %356, %342, %328, %314, %300, %171, %167
  call void @llvm.lifetime.end.p0(i64 12, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %29) #7
  br label %400

400:                                              ; preds = %399, %163, %159, %155, %151, %150, %141
  %401 = load ptr, ptr %12, align 8
  %402 = load i32, ptr %13, align 4
  %403 = insertvalue { ptr, i32 } poison, ptr %401, 0
  %404 = insertvalue { ptr, i32 } %403, i32 %402, 1
  resume { ptr, i32 } %404
}

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11scene_model14update_terrainEv(ptr noundef nonnull align 8 dereferenceable(1516)) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11scene_model13update_islandEv(ptr noundef nonnull align 8 dereferenceable(1516)) #0 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z15create_creaturev(ptr dead_on_unwind noalias writable sret(%"struct.vcl::hierarchy_mesh_drawable") align 8) #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(72) ptr @_ZN3vcl23hierarchy_mesh_drawableaSEOS0_(ptr noundef nonnull align 8 dereferenceable(72), ptr noundef nonnull align 8 dereferenceable(72)) #3 align 2

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

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

declare void @_ZN3vcl23hierarchy_mesh_drawable27set_shader_for_all_elementsEj(ptr noundef nonnull align 8 dereferenceable(72), i32 noundef) #4

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEEixEOS5_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(32)) #0 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 #0 align 2

declare i32 @__gxx_personality_v0(...)

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z12create_planev(ptr dead_on_unwind noalias writable sret(%"struct.vcl::hierarchy_mesh_drawable") align 8) #0

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z11create_boatfff(ptr dead_on_unwind noalias writable sret(%"struct.vcl::mesh") align 8, float noundef, float noundef, float noundef) #0

declare void @_ZN3vcl13mesh_drawableC1ERKNS_4meshEjj(ptr noundef nonnull align 4 dereferenceable(132), ptr noundef nonnull align 8 dereferenceable(120), i32 noundef, i32 noundef) unnamed_addr #4

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

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

declare void @_ZN3vcl12shading_meshC1Efffi(ptr noundef nonnull align 4 dereferenceable(16), float noundef, float noundef, float noundef, i32 noundef) unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z11create_flagff(ptr dead_on_unwind noalias writable sret(%"struct.vcl::mesh") align 8, float noundef, float noundef) #0

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z13create_missleff(ptr dead_on_unwind noalias writable sret(%"struct.vcl::mesh") align 8, float noundef, float noundef) #0

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z11create_fishff(ptr dead_on_unwind noalias writable sret(%"struct.vcl::mesh") align 8, float noundef, float noundef) #0

declare void @_ZN3vcl12buffer_stackIfLm3EEC1Efff(ptr noundef nonnull align 4 dereferenceable(12), float noundef, float noundef, float noundef) unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z10create_boxfff(ptr dead_on_unwind noalias writable sret(%"struct.vcl::mesh") align 8, float noundef, float noundef, float noundef) #0

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z10create_skyf(ptr dead_on_unwind noalias writable sret(%"struct.vcl::mesh") align 8, float noundef) #0

declare noundef float @_ZN3vcl13rand_intervalEff(float noundef, float noundef) #4

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_Z25evaluate_perlin_terrain_zffRK19gui_scene_structure(float noundef, float noundef, ptr noundef nonnull align 4 dereferenceable(20)) #0

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

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

declare void @_ZN3vcl14image_load_pngERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_16image_color_typeE(ptr dead_on_unwind writable sret(%"struct.vcl::image_raw") align 8, ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) #4

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11scene_model27set_data_creature_animationERSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS6_ESaISt4pairIKS6_jEEE(ptr noundef nonnull align 8 dereferenceable(1516), ptr noundef nonnull align 8 dereferenceable(48)) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11scene_model24set_data_plane_animationERSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS6_ESaISt4pairIKS6_jEEE(ptr noundef nonnull align 8 dereferenceable(1516), ptr noundef nonnull align 8 dereferenceable(48)) #0 align 2

declare void @_ZN3vcl12camera_scene14apply_rotationEffff(ptr noundef nonnull align 4 dereferenceable(80), float noundef, float noundef, float noundef, float noundef) #4

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{i64 0, i64 4, !9, i64 4, i64 4, !9, i64 8, i64 4, !9, i64 12, i64 4, !9, i64 16, i64 4, !9, i64 20, i64 4, !9, i64 24, i64 4, !9, i64 28, i64 4, !12, i64 32, i64 4, !12, i64 36, i64 4, !12, i64 40, i64 4, !12, i64 44, i64 4, !12, i64 48, i64 4, !12, i64 52, i64 4, !12, i64 56, i64 4, !12, i64 60, i64 4, !12, i64 64, i64 4, !12, i64 68, i64 4, !12, i64 72, i64 4, !12, i64 76, i64 4, !12, i64 80, i64 4, !12, i64 84, i64 4, !12, i64 88, i64 4, !12, i64 92, i64 4, !12, i64 96, i64 4, !12, i64 100, i64 4, !12, i64 104, i64 4, !12, i64 108, i64 4, !12, i64 112, i64 4, !12, i64 116, i64 4, !9, i64 120, i64 4, !12, i64 124, i64 4, !9, i64 128, i64 4, !9}
!12 = !{!13, !13, i64 0}
!13 = !{!"float", !7, i64 0}
!14 = !{i64 0, i64 4, !12, i64 4, i64 4, !12, i64 8, i64 4, !12, i64 12, i64 4, !9}
!15 = !{!16, !13, i64 400}
!16 = !{!"_ZTS11scene_model", !17, i64 0, !17, i64 132, !24, i64 264, !17, i64 288, !24, i64 424, !17, i64 448, !17, i64 580, !17, i64 712, !17, i64 844, !17, i64 976, !28, i64 1112, !10, i64 1136, !10, i64 1140, !10, i64 1144, !10, i64 1148, !10, i64 1152, !10, i64 1156, !10, i64 1160, !10, i64 1164, !10, i64 1168, !10, i64 1172, !34, i64 1176, !34, i64 1200, !39, i64 1224, !39, i64 1296, !52, i64 1368, !54, i64 1388, !54, i64 1412, !54, i64 1436, !54, i64 1460, !56, i64 1484, !53, i64 1512, !53, i64 1513, !53, i64 1514, !53, i64 1515}
!17 = !{!"_ZTSN3vcl13mesh_drawableE", !18, i64 0, !19, i64 28, !10, i64 124, !10, i64 128}
!18 = !{!"_ZTSN3vcl22mesh_drawable_gpu_dataE", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24}
!19 = !{!"_ZTSN3vcl21mesh_drawable_uniformE", !20, i64 0, !21, i64 64, !23, i64 76, !13, i64 92}
!20 = !{!"_ZTSN3vcl16affine_transformE", !21, i64 0, !22, i64 12, !13, i64 48, !21, i64 52}
!21 = !{!"_ZTSN3vcl12buffer_stackIfLm3EEE", !13, i64 0, !13, i64 4, !13, i64 8}
!22 = !{!"_ZTSN3vcl3matILm3ELm3EEE", !13, i64 0, !13, i64 4, !13, i64 8, !13, i64 12, !13, i64 16, !13, i64 20, !13, i64 24, !13, i64 28, !13, i64 32}
!23 = !{!"_ZTSN3vcl12shading_meshE", !13, i64 0, !13, i64 4, !13, i64 8, !10, i64 12}
!24 = !{!"_ZTSSt6vectorIN3vcl12buffer_stackIfLm3EEESaIS2_EE", !25, i64 0}
!25 = !{!"_ZTSSt12_Vector_baseIN3vcl12buffer_stackIfLm3EEESaIS2_EE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIN3vcl12buffer_stackIfLm3EEESaIS2_EE12_Vector_implE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIN3vcl12buffer_stackIfLm3EEESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!28 = !{!"_ZTSNSt7__cxx114listI18particle_structureSaIS1_EEE", !29, i64 0}
!29 = !{!"_ZTSNSt7__cxx1110_List_baseI18particle_structureSaIS1_EEE", !30, i64 0}
!30 = !{!"_ZTSNSt7__cxx1110_List_baseI18particle_structureSaIS1_EE10_List_implE", !31, i64 0}
!31 = !{!"_ZTSNSt8__detail17_List_node_headerE", !32, i64 0, !33, i64 16}
!32 = !{!"_ZTSNSt8__detail15_List_node_baseE", !6, i64 0, !6, i64 8}
!33 = !{!"long", !7, i64 0}
!34 = !{!"_ZTSN3vcl6bufferI5vec3tEE", !35, i64 0}
!35 = !{!"_ZTSSt6vectorI5vec3tSaIS0_EE", !36, i64 0}
!36 = !{!"_ZTSSt12_Vector_baseI5vec3tSaIS0_EE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseI5vec3tSaIS0_EE12_Vector_implE", !38, i64 0}
!38 = !{!"_ZTSNSt12_Vector_baseI5vec3tSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!39 = !{!"_ZTSN3vcl23hierarchy_mesh_drawableE", !40, i64 0, !48, i64 48}
!40 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiSt4lessIS5_ESaISt4pairIKS5_iEEE", !41, i64 0}
!41 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_iESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE", !42, i64 0}
!42 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_iESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE13_Rb_tree_implISC_Lb1EEE", !43, i64 0, !45, i64 8}
!43 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !44, i64 0}
!44 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!45 = !{!"_ZTSSt15_Rb_tree_header", !46, i64 0, !33, i64 32}
!46 = !{!"_ZTSSt18_Rb_tree_node_base", !47, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!47 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!48 = !{!"_ZTSSt6vectorIN3vcl28hierarchy_mesh_drawable_nodeESaIS1_EE", !49, i64 0}
!49 = !{!"_ZTSSt12_Vector_baseIN3vcl28hierarchy_mesh_drawable_nodeESaIS1_EE", !50, i64 0}
!50 = !{!"_ZTSNSt12_Vector_baseIN3vcl28hierarchy_mesh_drawable_nodeESaIS1_EE12_Vector_implE", !51, i64 0}
!51 = !{!"_ZTSNSt12_Vector_baseIN3vcl28hierarchy_mesh_drawable_nodeESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!52 = !{!"_ZTS19gui_scene_structure", !53, i64 0, !53, i64 1, !53, i64 2, !13, i64 4, !13, i64 8, !10, i64 12, !13, i64 16}
!53 = !{!"bool", !7, i64 0}
!54 = !{!"_ZTSN3vcl14timer_intervalE", !55, i64 0, !13, i64 16, !13, i64 20}
!55 = !{!"_ZTSN3vcl11timer_basicE", !13, i64 0, !13, i64 4, !53, i64 8, !13, i64 12}
!56 = !{!"_ZTSN3vcl11timer_eventE", !55, i64 0, !53, i64 16, !13, i64 20, !13, i64 24}
!57 = !{i64 0, i64 4, !12, i64 4, i64 4, !12, i64 8, i64 4, !12}
!58 = !{!16, !10, i64 1140}
!59 = distinct !{!59, !60}
!60 = !{!"llvm.loop.mustprogress"}
!61 = !{!16, !10, i64 1136}
!62 = distinct !{!62, !60}
!63 = !{!16, !10, i64 1144}
!64 = !{!16, !10, i64 1164}
!65 = !{!16, !10, i64 1152}
!66 = !{!16, !10, i64 1156}
!67 = !{!16, !10, i64 1168}
!68 = !{!16, !10, i64 1148}
!69 = !{!16, !10, i64 1160}
!70 = !{!16, !10, i64 1172}
!71 = !{!16, !13, i64 1404}
!72 = !{!16, !13, i64 1408}
!73 = !{!55, !13, i64 0}
!74 = !{!16, !13, i64 1428}
!75 = !{!16, !13, i64 1432}
!76 = !{!16, !13, i64 1504}
!77 = !{!78, !81, i64 68}
!78 = !{!"_ZTS15scene_structure", !79, i64 0, !83, i64 80, !17, i64 92, !17, i64 224, !10, i64 356}
!79 = !{!"_ZTSN3vcl12camera_sceneE", !13, i64 0, !21, i64 4, !22, i64 16, !80, i64 52, !81, i64 68, !82, i64 72}
!80 = !{!"_ZTSN3vcl21perspective_structureE", !13, i64 0, !13, i64 4, !13, i64 8, !13, i64 12}
!81 = !{!"_ZTSN3vcl19camera_control_typeE", !7, i64 0}
!82 = !{!"_ZTSN3vcl12buffer_stackIfLm2EEE", !13, i64 0, !13, i64 4}
!83 = !{!"_ZTSN3vcl19camera_control_glfwE", !53, i64 0, !13, i64 4, !13, i64 8}
!84 = !{!78, !13, 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"

%"struct.vcl::hierarchy_mesh_drawable" = type { %"class.std::map", %"class.std::vector.11" }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, int>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, int>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, int>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, int>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::vector.11" = type { %"struct.std::_Vector_base.12" }
%"struct.std::_Vector_base.12" = type { %"struct.std::_Vector_base<vcl::hierarchy_mesh_drawable_node, std::allocator<vcl::hierarchy_mesh_drawable_node>>::_Vector_impl" }
%"struct.std::_Vector_base<vcl::hierarchy_mesh_drawable_node, std::allocator<vcl::hierarchy_mesh_drawable_node>>::_Vector_impl" = type { %"struct.std::_Vector_base<vcl::hierarchy_mesh_drawable_node, std::allocator<vcl::hierarchy_mesh_drawable_node>>::_Vector_impl_data" }
%"struct.std::_Vector_base<vcl::hierarchy_mesh_drawable_node, std::allocator<vcl::hierarchy_mesh_drawable_node>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator.21" = type { i8 }
%"struct.vcl::mesh_drawable" = type { %"struct.vcl::mesh_drawable_gpu_data", %"struct.vcl::mesh_drawable_uniform", i32, i32 }
%"struct.vcl::mesh_drawable_gpu_data" = type { i32, i32, i32, i32, i32, i32, i32 }
%"struct.vcl::mesh_drawable_uniform" = type { %"struct.vcl::affine_transform", %"struct.vcl::buffer_stack", %"struct.vcl::shading_mesh", float }
%"struct.vcl::affine_transform" = type { %"struct.vcl::buffer_stack", %"struct.vcl::mat", float, %"struct.vcl::buffer_stack" }
%"struct.vcl::mat" = type { float, float, float, float, float, float, float, float, float }
%"struct.vcl::buffer_stack" = type { float, float, float }
%"struct.vcl::shading_mesh" = type { float, float, float, i32 }
%"struct.vcl::mesh" = type { %"struct.vcl::buffer.24", %"struct.vcl::buffer.24", %"struct.vcl::buffer.25", %"struct.vcl::buffer.31", %"struct.vcl::buffer.37" }
%"struct.vcl::buffer.24" = type { %"class.std::vector" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<vcl::buffer_stack<float, 3>, std::allocator<vcl::buffer_stack<float, 3>>>::_Vector_impl" }
%"struct.std::_Vector_base<vcl::buffer_stack<float, 3>, std::allocator<vcl::buffer_stack<float, 3>>>::_Vector_impl" = type { %"struct.std::_Vector_base<vcl::buffer_stack<float, 3>, std::allocator<vcl::buffer_stack<float, 3>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<vcl::buffer_stack<float, 3>, std::allocator<vcl::buffer_stack<float, 3>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.vcl::buffer.25" = type { %"class.std::vector.26" }
%"class.std::vector.26" = type { %"struct.std::_Vector_base.27" }
%"struct.std::_Vector_base.27" = type { %"struct.std::_Vector_base<vcl::buffer_stack<float, 4>, std::allocator<vcl::buffer_stack<float, 4>>>::_Vector_impl" }
%"struct.std::_Vector_base<vcl::buffer_stack<float, 4>, std::allocator<vcl::buffer_stack<float, 4>>>::_Vector_impl" = type { %"struct.std::_Vector_base<vcl::buffer_stack<float, 4>, std::allocator<vcl::buffer_stack<float, 4>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<vcl::buffer_stack<float, 4>, std::allocator<vcl::buffer_stack<float, 4>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.vcl::buffer.31" = type { %"class.std::vector.32" }
%"class.std::vector.32" = type { %"struct.std::_Vector_base.33" }
%"struct.std::_Vector_base.33" = type { %"struct.std::_Vector_base<vcl::buffer_stack<float, 2>, std::allocator<vcl::buffer_stack<float, 2>>>::_Vector_impl" }
%"struct.std::_Vector_base<vcl::buffer_stack<float, 2>, std::allocator<vcl::buffer_stack<float, 2>>>::_Vector_impl" = type { %"struct.std::_Vector_base<vcl::buffer_stack<float, 2>, std::allocator<vcl::buffer_stack<float, 2>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<vcl::buffer_stack<float, 2>, std::allocator<vcl::buffer_stack<float, 2>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.vcl::buffer.37" = type { %"class.std::vector.38" }
%"class.std::vector.38" = type { %"struct.std::_Vector_base.39" }
%"struct.std::_Vector_base.39" = type { %"struct.std::_Vector_base<std::array<unsigned int, 3>, std::allocator<std::array<unsigned int, 3>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::array<unsigned int, 3>, std::allocator<std::array<unsigned int, 3>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::array<unsigned int, 3>, std::allocator<std::array<unsigned int, 3>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::array<unsigned int, 3>, std::allocator<std::array<unsigned int, 3>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.vcl::image_raw" = type { i32, i32, i32, %"class.std::vector.43" }
%"class.std::vector.43" = type { %"struct.std::_Vector_base.44" }
%"struct.std::_Vector_base.44" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@.str = external hidden unnamed_addr constant [5 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [48 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11scene_model10setup_dataERSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS6_ESaISt4pairIKS6_jEEER15scene_structureR13gui_structure(ptr noundef nonnull align 8 dereferenceable(1516) %0, ptr noundef nonnull align 8 dereferenceable(48) %1, ptr noundef nonnull align 4 dereferenceable(360) %2, ptr nocapture noundef nonnull readnone align 8 dereferenceable(42) %3) local_unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca %"struct.vcl::hierarchy_mesh_drawable", align 8
  %6 = alloca %"class.std::__cxx11::basic_string", align 8
  %7 = alloca %"class.std::allocator.21", align 1
  %8 = alloca %"struct.vcl::hierarchy_mesh_drawable", align 8
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca %"class.std::allocator.21", align 1
  %11 = alloca %"struct.vcl::mesh_drawable", align 4
  %12 = alloca %"struct.vcl::mesh", align 8
  %13 = alloca %"struct.vcl::shading_mesh", align 4
  %14 = alloca %"struct.vcl::mesh_drawable", align 4
  %15 = alloca %"struct.vcl::mesh", align 8
  %16 = alloca %"struct.vcl::shading_mesh", align 4
  %17 = alloca %"struct.vcl::mesh_drawable", align 4
  %18 = alloca %"struct.vcl::mesh", align 8
  %19 = alloca %"struct.vcl::shading_mesh", align 4
  %20 = alloca %"struct.vcl::mesh_drawable", align 4
  %21 = alloca %"struct.vcl::mesh", align 8
  %22 = alloca %"struct.vcl::shading_mesh", align 4
  %23 = alloca %"struct.vcl::buffer_stack", align 4
  %24 = alloca %"struct.vcl::buffer_stack", align 4
  %25 = alloca %"struct.vcl::mesh_drawable", align 4
  %26 = alloca %"struct.vcl::mesh", align 8
  %27 = alloca %"struct.vcl::mesh_drawable", align 4
  %28 = alloca %"struct.vcl::mesh", align 8
  %29 = alloca %"struct.vcl::shading_mesh", align 4
  %30 = alloca %"struct.vcl::buffer_stack", align 4
  %31 = alloca %"struct.vcl::buffer_stack", align 4
  %32 = alloca %"struct.vcl::buffer_stack", align 4
  %33 = alloca %"struct.vcl::buffer_stack", align 4
  %34 = alloca %"struct.vcl::image_raw", align 8
  %35 = alloca %"class.std::__cxx11::basic_string", align 8
  %36 = alloca %"class.std::allocator.21", align 1
  %37 = alloca %"struct.vcl::image_raw", align 8
  %38 = alloca %"class.std::__cxx11::basic_string", align 8
  %39 = alloca %"class.std::allocator.21", align 1
  %40 = alloca %"struct.vcl::image_raw", align 8
  %41 = alloca %"class.std::__cxx11::basic_string", align 8
  %42 = alloca %"class.std::allocator.21", align 1
  %43 = alloca %"struct.vcl::image_raw", align 8
  %44 = alloca %"class.std::__cxx11::basic_string", align 8
  %45 = alloca %"class.std::allocator.21", align 1
  %46 = alloca %"struct.vcl::image_raw", align 8
  %47 = alloca %"class.std::__cxx11::basic_string", align 8
  %48 = alloca %"class.std::allocator.21", align 1
  %49 = alloca %"struct.vcl::image_raw", align 8
  %50 = alloca %"class.std::__cxx11::basic_string", align 8
  %51 = alloca %"class.std::allocator.21", align 1
  %52 = alloca %"struct.vcl::image_raw", align 8
  %53 = alloca %"class.std::__cxx11::basic_string", align 8
  %54 = alloca %"class.std::allocator.21", align 1
  %55 = alloca %"struct.vcl::image_raw", align 8
  %56 = alloca %"class.std::__cxx11::basic_string", align 8
  %57 = alloca %"class.std::allocator.21", align 1
  tail call void @_ZN11scene_model14update_terrainEv(ptr noundef nonnull align 8 dereferenceable(1516) %0)
  tail call void @_ZN11scene_model13update_islandEv(ptr noundef nonnull align 8 dereferenceable(1516) %0)
  call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %5) #7
  call void @_Z15create_creaturev(ptr dead_on_unwind nonnull writable sret(%"struct.vcl::hierarchy_mesh_drawable") align 8 %5)
  %58 = getelementptr inbounds i8, ptr %0, i64 1224
  %59 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZN3vcl23hierarchy_mesh_drawableaSEOS0_(ptr noundef nonnull align 8 dereferenceable(72) %58, ptr noundef nonnull align 8 dereferenceable(72) %5) #7
  call void @_ZN3vcl23hierarchy_mesh_drawableD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %5) #7
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %5) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %7) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull @.str, ptr noundef nonnull align 1 dereferenceable(1) %7)
          to label %60 unwind label %102

60:                                               ; preds = %4
  %61 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEEixEOS5_(ptr noundef nonnull align 8 dereferenceable(48) %1, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %62 unwind label %104

62:                                               ; preds = %60
  %63 = load i32, ptr %61, align 4, !tbaa !5
  invoke void @_ZN3vcl23hierarchy_mesh_drawable27set_shader_for_all_elementsEj(ptr noundef nonnull align 8 dereferenceable(72) %58, i32 noundef %63)
          to label %64 unwind label %104

64:                                               ; preds = %62
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #7
  call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %8) #7
  call void @_Z12create_planev(ptr dead_on_unwind nonnull writable sret(%"struct.vcl::hierarchy_mesh_drawable") align 8 %8)
  %65 = getelementptr inbounds i8, ptr %0, i64 1296
  %66 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZN3vcl23hierarchy_mesh_drawableaSEOS0_(ptr noundef nonnull align 8 dereferenceable(72) %65, ptr noundef nonnull align 8 dereferenceable(72) %8) #7
  call void @_ZN3vcl23hierarchy_mesh_drawableD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %8) #7
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %8) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull @.str, ptr noundef nonnull align 1 dereferenceable(1) %10)
          to label %67 unwind label %107

67:                                               ; preds = %64
  %68 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEEixEOS5_(ptr noundef nonnull align 8 dereferenceable(48) %1, ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %69 unwind label %109

69:                                               ; preds = %67
  %70 = load i32, ptr %68, align 4, !tbaa !5
  invoke void @_ZN3vcl23hierarchy_mesh_drawable27set_shader_for_all_elementsEj(ptr noundef nonnull align 8 dereferenceable(72) %65, i32 noundef %70)
          to label %71 unwind label %109

71:                                               ; preds = %69
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #7
  call void @llvm.lifetime.start.p0(i64 132, ptr nonnull %11) #7
  call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %12) #7
  call void @_Z11create_boatfff(ptr dead_on_unwind nonnull writable sret(%"struct.vcl::mesh") align 8 %12, float noundef 5.000000e+00, float noundef 2.000000e+00, float noundef 1.000000e+00)
  invoke void @_ZN3vcl13mesh_drawableC1ERKNS_4meshEjj(ptr noundef nonnull align 4 dereferenceable(132) %11, ptr noundef nonnull align 8 dereferenceable(120) %12, i32 noundef 0, i32 noundef 0)
          to label %72 unwind label %112

72:                                               ; preds = %71
  %73 = getelementptr inbounds i8, ptr %0, i64 580
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(132) %73, ptr noundef nonnull align 4 dereferenceable(132) %11, i64 132, i1 false), !tbaa.struct !9
  call void @_ZN3vcl4meshD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %12) #7
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 132, ptr nonnull %11) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #7
  call void @_ZN3vcl12shading_meshC1Efffi(ptr noundef nonnull align 4 dereferenceable(16) %13, float noundef 1.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00, i32 noundef 128)
  %74 = getelementptr inbounds i8, ptr %0, i64 684
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %74, ptr noundef nonnull align 4 dereferenceable(16) %13, i64 16, i1 false), !tbaa.struct !12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #7
  call void @llvm.lifetime.start.p0(i64 132, ptr nonnull %14) #7
  call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %15) #7
  call void @_Z11create_flagff(ptr dead_on_unwind nonnull writable sret(%"struct.vcl::mesh") align 8 %15, float noundef 4.000000e+00, float noundef 4.000000e+00)
  invoke void @_ZN3vcl13mesh_drawableC1ERKNS_4meshEjj(ptr noundef nonnull align 4 dereferenceable(132) %14, ptr noundef nonnull align 8 dereferenceable(120) %15, i32 noundef 0, i32 noundef 0)
          to label %75 unwind label %114

75:                                               ; preds = %72
  %76 = getelementptr inbounds i8, ptr %0, i64 844
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(132) %76, ptr noundef nonnull align 4 dereferenceable(132) %14, i64 132, i1 false), !tbaa.struct !9
  call void @_ZN3vcl4meshD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %15) #7
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 132, ptr nonnull %14) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #7
  call void @_ZN3vcl12shading_meshC1Efffi(ptr noundef nonnull align 4 dereferenceable(16) %16, float noundef 1.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00, i32 noundef 128)
  %77 = getelementptr inbounds i8, ptr %0, i64 948
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %77, ptr noundef nonnull align 4 dereferenceable(16) %16, i64 16, i1 false), !tbaa.struct !12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #7
  call void @llvm.lifetime.start.p0(i64 132, ptr nonnull %17) #7
  call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %18) #7
  call void @_Z13create_missleff(ptr dead_on_unwind nonnull writable sret(%"struct.vcl::mesh") align 8 %18, float noundef 0x3FB99999A0000000, float noundef 1.000000e+00)
  invoke void @_ZN3vcl13mesh_drawableC1ERKNS_4meshEjj(ptr noundef nonnull align 4 dereferenceable(132) %17, ptr noundef nonnull align 8 dereferenceable(120) %18, i32 noundef 0, i32 noundef 0)
          to label %78 unwind label %116

78:                                               ; preds = %75
  %79 = getelementptr inbounds i8, ptr %0, i64 976
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(132) %79, ptr noundef nonnull align 4 dereferenceable(132) %17, i64 132, i1 false), !tbaa.struct !9
  call void @_ZN3vcl4meshD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %18) #7
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 132, ptr nonnull %17) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %19) #7
  call void @_ZN3vcl12shading_meshC1Efffi(ptr noundef nonnull align 4 dereferenceable(16) %19, float noundef 1.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00, i32 noundef 128)
  %80 = getelementptr inbounds i8, ptr %0, i64 1080
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %80, ptr noundef nonnull align 4 dereferenceable(16) %19, i64 16, i1 false), !tbaa.struct !12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #7
  call void @llvm.lifetime.start.p0(i64 132, ptr nonnull %20) #7
  call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %21) #7
  call void @_Z11create_fishff(ptr dead_on_unwind nonnull writable sret(%"struct.vcl::mesh") align 8 %21, float noundef 0x3FC99999A0000000, float noundef 0x3FD99999A0000000)
  invoke void @_ZN3vcl13mesh_drawableC1ERKNS_4meshEjj(ptr noundef nonnull align 4 dereferenceable(132) %20, ptr noundef nonnull align 8 dereferenceable(120) %21, i32 noundef 0, i32 noundef 0)
          to label %81 unwind label %118

81:                                               ; preds = %78
  %82 = getelementptr inbounds i8, ptr %0, i64 448
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(132) %82, ptr noundef nonnull align 4 dereferenceable(132) %20, i64 132, i1 false), !tbaa.struct !9
  call void @_ZN3vcl4meshD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %21) #7
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 132, ptr nonnull %20) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %22) #7
  call void @_ZN3vcl12shading_meshC1Efffi(ptr noundef nonnull align 4 dereferenceable(16) %22, float noundef 1.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00, i32 noundef 128)
  %83 = getelementptr inbounds i8, ptr %0, i64 552
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %83, ptr noundef nonnull align 4 dereferenceable(16) %22, i64 16, i1 false), !tbaa.struct !12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %23) #7
  call void @_ZN3vcl12buffer_stackIfLm3EEC1Efff(ptr noundef nonnull align 4 dereferenceable(12) %23, float noundef 0.000000e+00, float noundef 0x3FEB333340000000, float noundef 5.000000e-01)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %24) #7
  call void @_ZN3vcl12buffer_stackIfLm3EEC1Efff(ptr noundef nonnull align 4 dereferenceable(12) %24, float noundef 0x3FEBD70A40000000, float noundef 0x3FE70A3D80000000, float noundef 0x3FE0A3D700000000)
  call void @llvm.lifetime.start.p0(i64 132, ptr nonnull %25) #7
  call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %26) #7
  call void @_Z10create_boxfff(ptr dead_on_unwind nonnull writable sret(%"struct.vcl::mesh") align 8 %26, float noundef 0x3FB99999A0000000, float noundef 0x3FD99999A0000000, float noundef 1.000000e+00)
  invoke void @_ZN3vcl13mesh_drawableC1ERKNS_4meshEjj(ptr noundef nonnull align 4 dereferenceable(132) %25, ptr noundef nonnull align 8 dereferenceable(120) %26, i32 noundef 0, i32 noundef 0)
          to label %84 unwind label %120

84:                                               ; preds = %81
  %85 = getelementptr inbounds i8, ptr %0, i64 288
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(132) %85, ptr noundef nonnull align 4 dereferenceable(132) %25, i64 132, i1 false), !tbaa.struct !9
  call void @_ZN3vcl4meshD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %26) #7
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %26) #7
  call void @llvm.lifetime.end.p0(i64 132, ptr nonnull %25) #7
  %86 = getelementptr inbounds i8, ptr %0, i64 400
  store float 0.000000e+00, ptr %86, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 132, ptr nonnull %27) #7
  call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %28) #7
  call void @_Z10create_skyf(ptr dead_on_unwind nonnull writable sret(%"struct.vcl::mesh") align 8 %28, float noundef 5.000000e+01)
  invoke void @_ZN3vcl13mesh_drawableC1ERKNS_4meshEjj(ptr noundef nonnull align 4 dereferenceable(132) %27, ptr noundef nonnull align 8 dereferenceable(120) %28, i32 noundef 0, i32 noundef 0)
          to label %87 unwind label %122

87:                                               ; preds = %84
  %88 = getelementptr inbounds i8, ptr %0, i64 712
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(132) %88, ptr noundef nonnull align 4 dereferenceable(132) %27, i64 132, i1 false), !tbaa.struct !9
  call void @_ZN3vcl4meshD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %28) #7
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %28) #7
  call void @llvm.lifetime.end.p0(i64 132, ptr nonnull %27) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %29) #7
  call void @_ZN3vcl12shading_meshC1Efffi(ptr noundef nonnull align 4 dereferenceable(16) %29, float noundef 1.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00, i32 noundef 128)
  %89 = getelementptr inbounds i8, ptr %0, i64 740
  %90 = getelementptr inbounds i8, ptr %0, i64 816
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %90, ptr noundef nonnull align 4 dereferenceable(16) %29, i64 16, i1 false), !tbaa.struct !12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %29) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %30) #7
  call void @_ZN3vcl12buffer_stackIfLm3EEC1Efff(ptr noundef nonnull align 4 dereferenceable(12) %30, float noundef 1.000000e+00, float noundef 1.000000e+00, float noundef 1.000000e+00)
  %91 = getelementptr inbounds i8, ptr %0, i64 804
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %91, ptr noundef nonnull align 4 dereferenceable(12) %30, i64 12, i1 false), !tbaa.struct !56
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %30) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %31) #7
  call void @_ZN3vcl12buffer_stackIfLm3EEC1Efff(ptr noundef nonnull align 4 dereferenceable(12) %31, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef -2.500000e+01)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %89, ptr noundef nonnull align 4 dereferenceable(12) %31, i64 12, i1 false), !tbaa.struct !56
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %31) #7
  %92 = getelementptr inbounds i8, ptr %0, i64 1140
  %93 = load i32, ptr %92, align 4, !tbaa !57
  %94 = icmp sgt i32 %93, 0
  br i1 %94, label %.lr.ph, label %.preheader

.lr.ph:                                           ; preds = %87
  %95 = getelementptr inbounds i8, ptr %0, i64 1368
  %96 = getelementptr inbounds i8, ptr %0, i64 424
  br label %124

.preheader:                                       ; preds = %124, %87
  %97 = getelementptr inbounds i8, ptr %0, i64 1136
  %98 = load i32, ptr %97, align 8, !tbaa !58
  %99 = icmp sgt i32 %98, 0
  br i1 %99, label %.lr.ph74, label %._crit_edge

.lr.ph74:                                         ; preds = %.preheader
  %100 = getelementptr inbounds i8, ptr %0, i64 1368
  %101 = getelementptr inbounds i8, ptr %0, i64 264
  br label %135

102:                                              ; preds = %4
  %103 = landingpad { ptr, i32 }
          cleanup
  br label %106

104:                                              ; preds = %62, %60
  %105 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #7
  br label %106

106:                                              ; preds = %104, %102
  %.pn = phi { ptr, i32 } [ %105, %104 ], [ %103, %102 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #7
  br label %257

107:                                              ; preds = %64
  %108 = landingpad { ptr, i32 }
          cleanup
  br label %111

109:                                              ; preds = %69, %67
  %110 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #7
  br label %111

111:                                              ; preds = %109, %107
  %.pn44 = phi { ptr, i32 } [ %110, %109 ], [ %108, %107 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #7
  br label %257

112:                                              ; preds = %71
  %113 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3vcl4meshD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %12) #7
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 132, ptr nonnull %11) #7
  br label %257

114:                                              ; preds = %72
  %115 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3vcl4meshD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %15) #7
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 132, ptr nonnull %14) #7
  br label %257

116:                                              ; preds = %75
  %117 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3vcl4meshD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %18) #7
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 132, ptr nonnull %17) #7
  br label %257

118:                                              ; preds = %78
  %119 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3vcl4meshD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %21) #7
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 132, ptr nonnull %20) #7
  br label %257

120:                                              ; preds = %81
  %121 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3vcl4meshD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %26) #7
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %26) #7
  call void @llvm.lifetime.end.p0(i64 132, ptr nonnull %25) #7
  br label %256

122:                                              ; preds = %84
  %123 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3vcl4meshD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %28) #7
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %28) #7
  call void @llvm.lifetime.end.p0(i64 132, ptr nonnull %27) #7
  br label %256

124:                                              ; preds = %.lr.ph, %124
  %.04272 = phi i32 [ 0, %.lr.ph ], [ %132, %124 ]
  %125 = call noundef float @_ZN3vcl13rand_intervalEff(float noundef 0.000000e+00, float noundef 1.000000e+00)
  %126 = call noundef float @_ZN3vcl13rand_intervalEff(float noundef 0.000000e+00, float noundef 1.000000e+00)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %32) #7
  %127 = fadd float %125, -5.000000e-01
  %128 = fmul float %127, 2.000000e+01
  %129 = fadd float %126, -5.000000e-01
  %130 = fmul float %129, 2.000000e+01
  %131 = call noundef float @_Z25evaluate_perlin_terrain_zffRK19gui_scene_structure(float noundef %125, float noundef %126, ptr noundef nonnull align 4 dereferenceable(20) %95)
  call void @_ZN3vcl12buffer_stackIfLm3EEC1Efff(ptr noundef nonnull align 4 dereferenceable(12) %32, float noundef %128, float noundef %130, float noundef %131)
  call void @_ZNSt6vectorIN3vcl12buffer_stackIfLm3EEESaIS2_EE9push_backERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %96, ptr noundef nonnull align 4 dereferenceable(12) %32)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %32) #7
  %132 = add nuw nsw i32 %.04272, 1
  %133 = load i32, ptr %92, align 4, !tbaa !57
  %134 = icmp slt i32 %132, %133
  br i1 %134, label %124, label %.preheader, !llvm.loop !59

._crit_edge:                                      ; preds = %135, %.preheader
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %34) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %35) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %36) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %36)
          to label %146 unwind label %192

135:                                              ; preds = %.lr.ph74, %135
  %.04173 = phi i32 [ 0, %.lr.ph74 ], [ %143, %135 ]
  %136 = call noundef float @_ZN3vcl13rand_intervalEff(float noundef 0.000000e+00, float noundef 1.000000e+00)
  %137 = call noundef float @_ZN3vcl13rand_intervalEff(float noundef 0.000000e+00, float noundef 1.000000e+00)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %33) #7
  %138 = fadd float %136, -5.000000e-01
  %139 = fmul float %138, 2.000000e+01
  %140 = fadd float %137, -5.000000e-01
  %141 = fmul float %140, 2.000000e+01
  %142 = call noundef float @_Z25evaluate_perlin_terrain_zffRK19gui_scene_structure(float noundef %136, float noundef %137, ptr noundef nonnull align 4 dereferenceable(20) %100)
  call void @_ZN3vcl12buffer_stackIfLm3EEC1Efff(ptr noundef nonnull align 4 dereferenceable(12) %33, float noundef %139, float noundef %141, float noundef %142)
  call void @_ZNSt6vectorIN3vcl12buffer_stackIfLm3EEESaIS2_EE9push_backERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %101, ptr noundef nonnull align 4 dereferenceable(12) %33)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %33) #7
  %143 = add nuw nsw i32 %.04173, 1
  %144 = load i32, ptr %97, align 8, !tbaa !58
  %145 = icmp slt i32 %143, %144
  br i1 %145, label %135, label %._crit_edge, !llvm.loop !61

146:                                              ; preds = %._crit_edge
  invoke void @_ZN3vcl14image_load_pngERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_16image_color_typeE(ptr dead_on_unwind nonnull writable sret(%"struct.vcl::image_raw") align 8 %34, ptr noundef nonnull align 8 dereferenceable(32) %35, i32 noundef 1)
          to label %147 unwind label %194

147:                                              ; preds = %146
  %148 = invoke noundef i32 @_ZN3vcl18create_texture_gpuERKNS_9image_rawEii(ptr noundef nonnull align 8 dereferenceable(40) %34, i32 noundef 33071, i32 noundef 33071)
          to label %149 unwind label %196

149:                                              ; preds = %147
  %150 = getelementptr inbounds i8, ptr %0, i64 1144
  store i32 %148, ptr %150, align 8, !tbaa !62
  call void @_ZN3vcl9image_rawD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %34) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %36) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %35) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %34) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %37) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %38) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %39) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef nonnull @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %39)
          to label %151 unwind label %200

151:                                              ; preds = %149
  invoke void @_ZN3vcl14image_load_pngERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_16image_color_typeE(ptr dead_on_unwind nonnull writable sret(%"struct.vcl::image_raw") align 8 %37, ptr noundef nonnull align 8 dereferenceable(32) %38, i32 noundef 1)
          to label %152 unwind label %202

152:                                              ; preds = %151
  %153 = invoke noundef i32 @_ZN3vcl18create_texture_gpuERKNS_9image_rawEii(ptr noundef nonnull align 8 dereferenceable(40) %37, i32 noundef 10497, i32 noundef 10497)
          to label %154 unwind label %204

154:                                              ; preds = %152
  %155 = getelementptr inbounds i8, ptr %0, i64 1164
  store i32 %153, ptr %155, align 4, !tbaa !63
  call void @_ZN3vcl9image_rawD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %37) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %39) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %38) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %37) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %40) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %41) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %42) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %41, ptr noundef nonnull @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %42)
          to label %156 unwind label %208

156:                                              ; preds = %154
  invoke void @_ZN3vcl14image_load_pngERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_16image_color_typeE(ptr dead_on_unwind nonnull writable sret(%"struct.vcl::image_raw") align 8 %40, ptr noundef nonnull align 8 dereferenceable(32) %41, i32 noundef 1)
          to label %157 unwind label %210

157:                                              ; preds = %156
  %158 = invoke noundef i32 @_ZN3vcl18create_texture_gpuERKNS_9image_rawEii(ptr noundef nonnull align 8 dereferenceable(40) %40, i32 noundef 10497, i32 noundef 10497)
          to label %159 unwind label %212

159:                                              ; preds = %157
  %160 = getelementptr inbounds i8, ptr %0, i64 1152
  store i32 %158, ptr %160, align 8, !tbaa !64
  call void @_ZN3vcl9image_rawD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %40) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %42) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %41) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %40) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %43) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %44) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %45) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %44, ptr noundef nonnull @.str.4, ptr noundef nonnull align 1 dereferenceable(1) %45)
          to label %161 unwind label %216

161:                                              ; preds = %159
  invoke void @_ZN3vcl14image_load_pngERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_16image_color_typeE(ptr dead_on_unwind nonnull writable sret(%"struct.vcl::image_raw") align 8 %43, ptr noundef nonnull align 8 dereferenceable(32) %44, i32 noundef 1)
          to label %162 unwind label %218

162:                                              ; preds = %161
  %163 = invoke noundef i32 @_ZN3vcl18create_texture_gpuERKNS_9image_rawEii(ptr noundef nonnull align 8 dereferenceable(40) %43, i32 noundef 10497, i32 noundef 10497)
          to label %164 unwind label %220

164:                                              ; preds = %162
  %165 = getelementptr inbounds i8, ptr %0, i64 1156
  store i32 %163, ptr %165, align 4, !tbaa !65
  call void @_ZN3vcl9image_rawD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %43) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %45) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %44) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %43) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %46) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %47) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %48) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef nonnull @.str.5, ptr noundef nonnull align 1 dereferenceable(1) %48)
          to label %166 unwind label %224

166:                                              ; preds = %164
  invoke void @_ZN3vcl14image_load_pngERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_16image_color_typeE(ptr dead_on_unwind nonnull writable sret(%"struct.vcl::image_raw") align 8 %46, ptr noundef nonnull align 8 dereferenceable(32) %47, i32 noundef 1)
          to label %167 unwind label %226

167:                                              ; preds = %166
  %168 = invoke noundef i32 @_ZN3vcl18create_texture_gpuERKNS_9image_rawEii(ptr noundef nonnull align 8 dereferenceable(40) %46, i32 noundef 10497, i32 noundef 10497)
          to label %169 unwind label %228

169:                                              ; preds = %167
  %170 = getelementptr inbounds i8, ptr %0, i64 1168
  store i32 %168, ptr %170, align 8, !tbaa !66
  call void @_ZN3vcl9image_rawD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %46) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %48) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %47) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %46) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %49) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %50) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %51) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %50, ptr noundef nonnull @.str.6, ptr noundef nonnull align 1 dereferenceable(1) %51)
          to label %171 unwind label %232

171:                                              ; preds = %169
  invoke void @_ZN3vcl14image_load_pngERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_16image_color_typeE(ptr dead_on_unwind nonnull writable sret(%"struct.vcl::image_raw") align 8 %49, ptr noundef nonnull align 8 dereferenceable(32) %50, i32 noundef 1)
          to label %172 unwind label %234

172:                                              ; preds = %171
  %173 = invoke noundef i32 @_ZN3vcl18create_texture_gpuERKNS_9image_rawEii(ptr noundef nonnull align 8 dereferenceable(40) %49, i32 noundef 10497, i32 noundef 10497)
          to label %174 unwind label %236

174:                                              ; preds = %172
  %175 = getelementptr inbounds i8, ptr %0, i64 1148
  store i32 %173, ptr %175, align 4, !tbaa !67
  call void @_ZN3vcl9image_rawD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %49) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %51) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %50) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %49) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %52) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %53) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %54) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %53, ptr noundef nonnull @.str.7, ptr noundef nonnull align 1 dereferenceable(1) %54)
          to label %176 unwind label %240

176:                                              ; preds = %174
  invoke void @_ZN3vcl14image_load_pngERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_16image_color_typeE(ptr dead_on_unwind nonnull writable sret(%"struct.vcl::image_raw") align 8 %52, ptr noundef nonnull align 8 dereferenceable(32) %53, i32 noundef 1)
          to label %177 unwind label %242

177:                                              ; preds = %176
  %178 = invoke noundef i32 @_ZN3vcl18create_texture_gpuERKNS_9image_rawEii(ptr noundef nonnull align 8 dereferenceable(40) %52, i32 noundef 33071, i32 noundef 33071)
          to label %179 unwind label %244

179:                                              ; preds = %177
  %180 = getelementptr inbounds i8, ptr %0, i64 1160
  store i32 %178, ptr %180, align 8, !tbaa !68
  call void @_ZN3vcl9image_rawD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %52) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %54) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %53) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %52) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %55) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %56) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %57) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %56, ptr noundef nonnull @.str.8, ptr noundef nonnull align 1 dereferenceable(1) %57)
          to label %181 unwind label %248

181:                                              ; preds = %179
  invoke void @_ZN3vcl14image_load_pngERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_16image_color_typeE(ptr dead_on_unwind nonnull writable sret(%"struct.vcl::image_raw") align 8 %55, ptr noundef nonnull align 8 dereferenceable(32) %56, i32 noundef 1)
          to label %182 unwind label %250

182:                                              ; preds = %181
  %183 = invoke noundef i32 @_ZN3vcl18create_texture_gpuERKNS_9image_rawEii(ptr noundef nonnull align 8 dereferenceable(40) %55, i32 noundef 10497, i32 noundef 10497)
          to label %184 unwind label %252

184:                                              ; preds = %182
  %185 = getelementptr inbounds i8, ptr %0, i64 1172
  store i32 %183, ptr %185, align 4, !tbaa !69
  call void @_ZN3vcl9image_rawD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %55) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %57) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %56) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %55) #7
  %186 = getelementptr inbounds i8, ptr %0, i64 1388
  %187 = getelementptr inbounds i8, ptr %0, i64 1404
  store <2 x float> <float 1.000000e+00, float 1.000000e+02>, ptr %187, align 4, !tbaa !10
  store float 1.000000e+00, ptr %186, align 4, !tbaa !70
  %188 = getelementptr inbounds i8, ptr %0, i64 1412
  %189 = getelementptr inbounds i8, ptr %0, i64 1428
  store <2 x float> <float 1.000000e+02, float 2.000000e+02>, ptr %189, align 4, !tbaa !10
  store float 1.000000e+02, ptr %188, align 4, !tbaa !70
  %190 = getelementptr inbounds i8, ptr %0, i64 1504
  store float 0x3FF3333340000000, ptr %190, align 8, !tbaa !71
  call void @_ZN11scene_model27set_data_creature_animationERSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS6_ESaISt4pairIKS6_jEEE(ptr noundef nonnull align 8 dereferenceable(1516) %0, ptr noundef nonnull align 8 dereferenceable(48) %1)
  call void @_ZN11scene_model24set_data_plane_animationERSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS6_ESaISt4pairIKS6_jEEE(ptr noundef nonnull align 8 dereferenceable(1516) %0, ptr noundef nonnull align 8 dereferenceable(48) %1)
  %191 = getelementptr inbounds i8, ptr %2, i64 68
  store i32 1, ptr %191, align 4, !tbaa !72
  store float 1.500000e+01, ptr %2, align 4, !tbaa !79
  call void @_ZN3vcl12camera_scene14apply_rotationEffff(ptr noundef nonnull align 4 dereferenceable(80) %2, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 3.500000e+00, float noundef 0x3FF3333340000000)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %24) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %23) #7
  ret void

192:                                              ; preds = %._crit_edge
  %193 = landingpad { ptr, i32 }
          cleanup
  br label %199

194:                                              ; preds = %146
  %195 = landingpad { ptr, i32 }
          cleanup
  br label %198

196:                                              ; preds = %147
  %197 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3vcl9image_rawD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %34) #7
  br label %198

198:                                              ; preds = %196, %194
  %.pn46 = phi { ptr, i32 } [ %197, %196 ], [ %195, %194 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #7
  br label %199

199:                                              ; preds = %198, %192
  %.pn46.pn = phi { ptr, i32 } [ %.pn46, %198 ], [ %193, %192 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %36) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %35) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %34) #7
  br label %256

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

202:                                              ; preds = %151
  %203 = landingpad { ptr, i32 }
          cleanup
  br label %206

204:                                              ; preds = %152
  %205 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3vcl9image_rawD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %37) #7
  br label %206

206:                                              ; preds = %204, %202
  %.pn49 = phi { ptr, i32 } [ %205, %204 ], [ %203, %202 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #7
  br label %207

207:                                              ; preds = %206, %200
  %.pn49.pn = phi { ptr, i32 } [ %.pn49, %206 ], [ %201, %200 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %39) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %38) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %37) #7
  br label %256

208:                                              ; preds = %154
  %209 = landingpad { ptr, i32 }
          cleanup
  br label %215

210:                                              ; preds = %156
  %211 = landingpad { ptr, i32 }
          cleanup
  br label %214

212:                                              ; preds = %157
  %213 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3vcl9image_rawD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %40) #7
  br label %214

214:                                              ; preds = %212, %210
  %.pn52 = phi { ptr, i32 } [ %213, %212 ], [ %211, %210 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #7
  br label %215

215:                                              ; preds = %214, %208
  %.pn52.pn = phi { ptr, i32 } [ %.pn52, %214 ], [ %209, %208 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %42) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %41) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %40) #7
  br label %256

216:                                              ; preds = %159
  %217 = landingpad { ptr, i32 }
          cleanup
  br label %223

218:                                              ; preds = %161
  %219 = landingpad { ptr, i32 }
          cleanup
  br label %222

220:                                              ; preds = %162
  %221 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3vcl9image_rawD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %43) #7
  br label %222

222:                                              ; preds = %220, %218
  %.pn55 = phi { ptr, i32 } [ %221, %220 ], [ %219, %218 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #7
  br label %223

223:                                              ; preds = %222, %216
  %.pn55.pn = phi { ptr, i32 } [ %.pn55, %222 ], [ %217, %216 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %45) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %44) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %43) #7
  br label %256

224:                                              ; preds = %164
  %225 = landingpad { ptr, i32 }
          cleanup
  br label %231

226:                                              ; preds = %166
  %227 = landingpad { ptr, i32 }
          cleanup
  br label %230

228:                                              ; preds = %167
  %229 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3vcl9image_rawD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %46) #7
  br label %230

230:                                              ; preds = %228, %226
  %.pn58 = phi { ptr, i32 } [ %229, %228 ], [ %227, %226 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #7
  br label %231

231:                                              ; preds = %230, %224
  %.pn58.pn = phi { ptr, i32 } [ %.pn58, %230 ], [ %225, %224 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %48) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %47) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %46) #7
  br label %256

232:                                              ; preds = %169
  %233 = landingpad { ptr, i32 }
          cleanup
  br label %239

234:                                              ; preds = %171
  %235 = landingpad { ptr, i32 }
          cleanup
  br label %238

236:                                              ; preds = %172
  %237 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3vcl9image_rawD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %49) #7
  br label %238

238:                                              ; preds = %236, %234
  %.pn61 = phi { ptr, i32 } [ %237, %236 ], [ %235, %234 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #7
  br label %239

239:                                              ; preds = %238, %232
  %.pn61.pn = phi { ptr, i32 } [ %.pn61, %238 ], [ %233, %232 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %51) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %50) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %49) #7
  br label %256

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

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

244:                                              ; preds = %177
  %245 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3vcl9image_rawD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %52) #7
  br label %246

246:                                              ; preds = %244, %242
  %.pn64 = phi { ptr, i32 } [ %245, %244 ], [ %243, %242 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #7
  br label %247

247:                                              ; preds = %246, %240
  %.pn64.pn = phi { ptr, i32 } [ %.pn64, %246 ], [ %241, %240 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %54) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %53) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %52) #7
  br label %256

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

250:                                              ; preds = %181
  %251 = landingpad { ptr, i32 }
          cleanup
  br label %254

252:                                              ; preds = %182
  %253 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3vcl9image_rawD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %55) #7
  br label %254

254:                                              ; preds = %252, %250
  %.pn67 = phi { ptr, i32 } [ %253, %252 ], [ %251, %250 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #7
  br label %255

255:                                              ; preds = %254, %248
  %.pn67.pn = phi { ptr, i32 } [ %.pn67, %254 ], [ %249, %248 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %57) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %56) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %55) #7
  br label %256

256:                                              ; preds = %255, %247, %239, %231, %223, %215, %207, %199, %122, %120
  %.pn67.pn.pn = phi { ptr, i32 } [ %.pn67.pn, %255 ], [ %.pn64.pn, %247 ], [ %.pn61.pn, %239 ], [ %.pn58.pn, %231 ], [ %.pn55.pn, %223 ], [ %.pn52.pn, %215 ], [ %.pn49.pn, %207 ], [ %.pn46.pn, %199 ], [ %123, %122 ], [ %121, %120 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %24) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %23) #7
  br label %257

257:                                              ; preds = %256, %118, %116, %114, %112, %111, %106
  %.pn67.pn.pn.pn = phi { ptr, i32 } [ %.pn67.pn.pn, %256 ], [ %119, %118 ], [ %117, %116 ], [ %115, %114 ], [ %113, %112 ], [ %.pn44, %111 ], [ %.pn, %106 ]
  resume { ptr, i32 } %.pn67.pn.pn.pn
}

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11scene_model14update_terrainEv(ptr noundef nonnull align 8 dereferenceable(1516)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11scene_model13update_islandEv(ptr noundef nonnull align 8 dereferenceable(1516)) local_unnamed_addr #0 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z15create_creaturev(ptr dead_on_unwind noalias writable sret(%"struct.vcl::hierarchy_mesh_drawable") align 8) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(72) ptr @_ZN3vcl23hierarchy_mesh_drawableaSEOS0_(ptr noundef nonnull align 8 dereferenceable(72), ptr noundef nonnull align 8 dereferenceable(72)) local_unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3vcl23hierarchy_mesh_drawableD2Ev(ptr noundef nonnull align 8 dereferenceable(72)) 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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEEixEOS5_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0 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 #0 align 2

declare i32 @__gxx_personality_v0(...)

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z12create_planev(ptr dead_on_unwind noalias writable sret(%"struct.vcl::hierarchy_mesh_drawable") align 8) local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z11create_boatfff(ptr dead_on_unwind noalias writable sret(%"struct.vcl::mesh") align 8, float noundef, float noundef, float noundef) local_unnamed_addr #0

declare void @_ZN3vcl13mesh_drawableC1ERKNS_4meshEjj(ptr noundef nonnull align 4 dereferenceable(132), ptr noundef nonnull align 8 dereferenceable(120), i32 noundef, i32 noundef) unnamed_addr #4

; 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: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3vcl4meshD2Ev(ptr noundef nonnull align 8 dereferenceable(120)) unnamed_addr #3 align 2

declare void @_ZN3vcl12shading_meshC1Efffi(ptr noundef nonnull align 4 dereferenceable(16), float noundef, float noundef, float noundef, i32 noundef) unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z11create_flagff(ptr dead_on_unwind noalias writable sret(%"struct.vcl::mesh") align 8, float noundef, float noundef) local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z13create_missleff(ptr dead_on_unwind noalias writable sret(%"struct.vcl::mesh") align 8, float noundef, float noundef) local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z11create_fishff(ptr dead_on_unwind noalias writable sret(%"struct.vcl::mesh") align 8, float noundef, float noundef) local_unnamed_addr #0

declare void @_ZN3vcl12buffer_stackIfLm3EEC1Efff(ptr noundef nonnull align 4 dereferenceable(12), float noundef, float noundef, float noundef) unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z10create_boxfff(ptr dead_on_unwind noalias writable sret(%"struct.vcl::mesh") align 8, float noundef, float noundef, float noundef) local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z10create_skyf(ptr dead_on_unwind noalias writable sret(%"struct.vcl::mesh") align 8, float noundef) local_unnamed_addr #0

declare noundef float @_ZN3vcl13rand_intervalEff(float noundef, float noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_Z25evaluate_perlin_terrain_zffRK19gui_scene_structure(float noundef, float noundef, ptr noundef nonnull align 4 dereferenceable(20)) local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIN3vcl12buffer_stackIfLm3EEESaIS2_EE9push_backERKS2_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #0 align 2

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

declare void @_ZN3vcl14image_load_pngERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_16image_color_typeE(ptr dead_on_unwind writable sret(%"struct.vcl::image_raw") align 8, ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) local_unnamed_addr #4

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11scene_model27set_data_creature_animationERSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS6_ESaISt4pairIKS6_jEEE(ptr noundef nonnull align 8 dereferenceable(1516), ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11scene_model24set_data_plane_animationERSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS6_ESaISt4pairIKS6_jEEE(ptr noundef nonnull align 8 dereferenceable(1516), ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #0 align 2

declare void @_ZN3vcl12camera_scene14apply_rotationEffff(ptr noundef nonnull align 4 dereferenceable(80), float noundef, float noundef, float noundef, float noundef) local_unnamed_addr #4

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { mustprogress uwtable "min-legal-vector-width"="64" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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 #4 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #7 = { 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 = !{i64 0, i64 4, !5, i64 4, i64 4, !5, i64 8, i64 4, !5, i64 12, i64 4, !5, i64 16, i64 4, !5, i64 20, i64 4, !5, i64 24, i64 4, !5, i64 28, i64 4, !10, i64 32, i64 4, !10, i64 36, i64 4, !10, i64 40, i64 4, !10, i64 44, i64 4, !10, i64 48, i64 4, !10, i64 52, i64 4, !10, i64 56, i64 4, !10, i64 60, i64 4, !10, i64 64, i64 4, !10, i64 68, i64 4, !10, i64 72, i64 4, !10, i64 76, i64 4, !10, i64 80, i64 4, !10, i64 84, i64 4, !10, i64 88, i64 4, !10, i64 92, i64 4, !10, i64 96, i64 4, !10, i64 100, i64 4, !10, i64 104, i64 4, !10, i64 108, i64 4, !10, i64 112, i64 4, !10, i64 116, i64 4, !5, i64 120, i64 4, !10, i64 124, i64 4, !5, i64 128, i64 4, !5}
!10 = !{!11, !11, i64 0}
!11 = !{!"float", !7, i64 0}
!12 = !{i64 0, i64 4, !10, i64 4, i64 4, !10, i64 8, i64 4, !10, i64 12, i64 4, !5}
!13 = !{!14, !11, i64 400}
!14 = !{!"_ZTS11scene_model", !15, i64 0, !15, i64 132, !22, i64 264, !15, i64 288, !22, i64 424, !15, i64 448, !15, i64 580, !15, i64 712, !15, i64 844, !15, i64 976, !27, i64 1112, !6, i64 1136, !6, i64 1140, !6, i64 1144, !6, i64 1148, !6, i64 1152, !6, i64 1156, !6, i64 1160, !6, i64 1164, !6, i64 1168, !6, i64 1172, !33, i64 1176, !33, i64 1200, !38, i64 1224, !38, i64 1296, !51, i64 1368, !53, i64 1388, !53, i64 1412, !53, i64 1436, !53, i64 1460, !55, i64 1484, !52, i64 1512, !52, i64 1513, !52, i64 1514, !52, i64 1515}
!15 = !{!"_ZTSN3vcl13mesh_drawableE", !16, i64 0, !17, i64 28, !6, i64 124, !6, i64 128}
!16 = !{!"_ZTSN3vcl22mesh_drawable_gpu_dataE", !6, i64 0, !6, i64 4, !6, i64 8, !6, i64 12, !6, i64 16, !6, i64 20, !6, i64 24}
!17 = !{!"_ZTSN3vcl21mesh_drawable_uniformE", !18, i64 0, !19, i64 64, !21, i64 76, !11, i64 92}
!18 = !{!"_ZTSN3vcl16affine_transformE", !19, i64 0, !20, i64 12, !11, i64 48, !19, i64 52}
!19 = !{!"_ZTSN3vcl12buffer_stackIfLm3EEE", !11, i64 0, !11, i64 4, !11, i64 8}
!20 = !{!"_ZTSN3vcl3matILm3ELm3EEE", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20, !11, i64 24, !11, i64 28, !11, i64 32}
!21 = !{!"_ZTSN3vcl12shading_meshE", !11, i64 0, !11, i64 4, !11, i64 8, !6, i64 12}
!22 = !{!"_ZTSSt6vectorIN3vcl12buffer_stackIfLm3EEESaIS2_EE", !23, i64 0}
!23 = !{!"_ZTSSt12_Vector_baseIN3vcl12buffer_stackIfLm3EEESaIS2_EE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseIN3vcl12buffer_stackIfLm3EEESaIS2_EE12_Vector_implE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIN3vcl12buffer_stackIfLm3EEESaIS2_EE17_Vector_impl_dataE", !26, i64 0, !26, i64 8, !26, i64 16}
!26 = !{!"any pointer", !7, i64 0}
!27 = !{!"_ZTSNSt7__cxx114listI18particle_structureSaIS1_EEE", !28, i64 0}
!28 = !{!"_ZTSNSt7__cxx1110_List_baseI18particle_structureSaIS1_EEE", !29, i64 0}
!29 = !{!"_ZTSNSt7__cxx1110_List_baseI18particle_structureSaIS1_EE10_List_implE", !30, i64 0}
!30 = !{!"_ZTSNSt8__detail17_List_node_headerE", !31, i64 0, !32, i64 16}
!31 = !{!"_ZTSNSt8__detail15_List_node_baseE", !26, i64 0, !26, i64 8}
!32 = !{!"long", !7, i64 0}
!33 = !{!"_ZTSN3vcl6bufferI5vec3tEE", !34, i64 0}
!34 = !{!"_ZTSSt6vectorI5vec3tSaIS0_EE", !35, i64 0}
!35 = !{!"_ZTSSt12_Vector_baseI5vec3tSaIS0_EE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseI5vec3tSaIS0_EE12_Vector_implE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseI5vec3tSaIS0_EE17_Vector_impl_dataE", !26, i64 0, !26, i64 8, !26, i64 16}
!38 = !{!"_ZTSN3vcl23hierarchy_mesh_drawableE", !39, i64 0, !47, i64 48}
!39 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiSt4lessIS5_ESaISt4pairIKS5_iEEE", !40, i64 0}
!40 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_iESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE", !41, i64 0}
!41 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_iESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE13_Rb_tree_implISC_Lb1EEE", !42, i64 0, !44, i64 8}
!42 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !43, i64 0}
!43 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!44 = !{!"_ZTSSt15_Rb_tree_header", !45, i64 0, !32, i64 32}
!45 = !{!"_ZTSSt18_Rb_tree_node_base", !46, i64 0, !26, i64 8, !26, i64 16, !26, i64 24}
!46 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!47 = !{!"_ZTSSt6vectorIN3vcl28hierarchy_mesh_drawable_nodeESaIS1_EE", !48, i64 0}
!48 = !{!"_ZTSSt12_Vector_baseIN3vcl28hierarchy_mesh_drawable_nodeESaIS1_EE", !49, i64 0}
!49 = !{!"_ZTSNSt12_Vector_baseIN3vcl28hierarchy_mesh_drawable_nodeESaIS1_EE12_Vector_implE", !50, i64 0}
!50 = !{!"_ZTSNSt12_Vector_baseIN3vcl28hierarchy_mesh_drawable_nodeESaIS1_EE17_Vector_impl_dataE", !26, i64 0, !26, i64 8, !26, i64 16}
!51 = !{!"_ZTS19gui_scene_structure", !52, i64 0, !52, i64 1, !52, i64 2, !11, i64 4, !11, i64 8, !6, i64 12, !11, i64 16}
!52 = !{!"bool", !7, i64 0}
!53 = !{!"_ZTSN3vcl14timer_intervalE", !54, i64 0, !11, i64 16, !11, i64 20}
!54 = !{!"_ZTSN3vcl11timer_basicE", !11, i64 0, !11, i64 4, !52, i64 8, !11, i64 12}
!55 = !{!"_ZTSN3vcl11timer_eventE", !54, i64 0, !52, i64 16, !11, i64 20, !11, i64 24}
!56 = !{i64 0, i64 4, !10, i64 4, i64 4, !10, i64 8, i64 4, !10}
!57 = !{!14, !6, i64 1140}
!58 = !{!14, !6, i64 1136}
!59 = distinct !{!59, !60}
!60 = !{!"llvm.loop.mustprogress"}
!61 = distinct !{!61, !60}
!62 = !{!14, !6, i64 1144}
!63 = !{!14, !6, i64 1164}
!64 = !{!14, !6, i64 1152}
!65 = !{!14, !6, i64 1156}
!66 = !{!14, !6, i64 1168}
!67 = !{!14, !6, i64 1148}
!68 = !{!14, !6, i64 1160}
!69 = !{!14, !6, i64 1172}
!70 = !{!54, !11, i64 0}
!71 = !{!14, !11, i64 1504}
!72 = !{!73, !76, i64 68}
!73 = !{!"_ZTS15scene_structure", !74, i64 0, !78, i64 80, !15, i64 92, !15, i64 224, !6, i64 356}
!74 = !{!"_ZTSN3vcl12camera_sceneE", !11, i64 0, !19, i64 4, !20, i64 16, !75, i64 52, !76, i64 68, !77, i64 72}
!75 = !{!"_ZTSN3vcl21perspective_structureE", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12}
!76 = !{!"_ZTSN3vcl19camera_control_typeE", !7, i64 0}
!77 = !{!"_ZTSN3vcl12buffer_stackIfLm2EEE", !11, i64 0, !11, i64 4}
!78 = !{!"_ZTSN3vcl19camera_control_glfwE", !52, i64 0, !11, i64 4, !11, i64 8}
!79 = !{!73, !11, i64 0}


; Effective O3 passes: EarlyCSEPass,GlobalOptPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass