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

%"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::buffer_stack" = type { float, float, float }
%"struct.vcl::mat" = type { float, float, float, float, float, float, float, float, float }
%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::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::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::shading_mesh" = type { float, float, float, i32 }
%"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.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 }
%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
@glad_glEnable = external global ptr, align 8
@glad_glBindTexture = external global ptr, align 8
@glad_glTexParameteri = external global ptr, align 8
@glad_glPolygonOffset = external global ptr, align 8
@glad_glBlendFunc = external global ptr, align 8
@glad_glDepthMask = external global ptr, align 8
@.str.9 = external hidden unnamed_addr constant [10 x i8], align 1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11scene_model14update_terrainEv(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: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11scene_model10frame_drawERSt3mapINSt7__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) #5 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 float, align 4
  %10 = alloca float, align 4
  %11 = alloca float, align 4
  %12 = alloca float, align 4
  %13 = alloca float, align 4
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %"class.std::allocator.21", align 1
  %16 = alloca ptr, align 8
  %17 = alloca i32, align 4
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::allocator.21", align 1
  %20 = alloca %"struct.vcl::buffer_stack", align 4
  %21 = alloca %"struct.vcl::mat", align 4
  %22 = alloca %"struct.vcl::buffer_stack", align 4
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.std::allocator.21", align 1
  %25 = alloca i32, align 4
  %26 = alloca %"class.std::__cxx11::basic_string", align 8
  %27 = alloca %"class.std::allocator.21", align 1
  %28 = alloca %"struct.vcl::buffer_stack", align 4
  %29 = alloca %"class.std::__cxx11::basic_string", align 8
  %30 = alloca %"class.std::allocator.21", align 1
  %31 = alloca %"struct.vcl::buffer_stack", align 4
  %32 = alloca %"class.std::__cxx11::basic_string", align 8
  %33 = alloca %"class.std::allocator.21", align 1
  %34 = alloca %"struct.vcl::buffer_stack", align 4
  %35 = alloca %"class.std::__cxx11::basic_string", align 8
  %36 = alloca %"class.std::allocator.21", align 1
  %37 = alloca %"struct.vcl::buffer_stack", align 4
  %38 = alloca %"class.std::__cxx11::basic_string", align 8
  %39 = alloca %"class.std::allocator.21", align 1
  %40 = alloca %"class.std::__cxx11::basic_string", align 8
  %41 = alloca %"class.std::allocator.21", align 1
  %42 = alloca i32, align 4
  %43 = alloca %"class.std::__cxx11::basic_string", align 8
  %44 = alloca %"class.std::allocator.21", align 1
  %45 = alloca %"struct.vcl::buffer_stack", align 4
  %46 = alloca { <2 x float>, float }, align 8
  %47 = alloca %"class.std::__cxx11::basic_string", align 8
  %48 = alloca %"class.std::allocator.21", align 1
  %49 = alloca %"class.std::__cxx11::basic_string", align 8
  %50 = alloca %"class.std::allocator.21", align 1
  %51 = alloca %"class.std::__cxx11::basic_string", align 8
  %52 = alloca %"class.std::allocator.21", align 1
  %53 = alloca %"class.std::__cxx11::basic_string", align 8
  %54 = alloca %"class.std::allocator.21", align 1
  %55 = alloca %"class.std::__cxx11::basic_string", align 8
  %56 = alloca %"class.std::allocator.21", align 1
  %57 = alloca %"class.std::__cxx11::basic_string", align 8
  %58 = alloca %"class.std::allocator.21", align 1
  %59 = alloca %"struct.vcl::buffer_stack", align 4
  %60 = alloca %"class.std::__cxx11::basic_string", align 8
  %61 = alloca %"class.std::allocator.21", align 1
  %62 = alloca %"struct.vcl::buffer_stack", align 4
  %63 = alloca %"class.std::__cxx11::basic_string", align 8
  %64 = alloca %"class.std::allocator.21", align 1
  %65 = alloca %"struct.vcl::buffer_stack", align 4
  %66 = alloca %"class.std::__cxx11::basic_string", align 8
  %67 = alloca %"class.std::allocator.21", align 1
  %68 = alloca %"struct.vcl::buffer_stack", align 4
  %69 = alloca %"class.std::__cxx11::basic_string", align 8
  %70 = alloca %"class.std::allocator.21", align 1
  %71 = alloca %"class.std::__cxx11::basic_string", align 8
  %72 = alloca %"class.std::allocator.21", align 1
  %73 = alloca %"class.std::__cxx11::basic_string", align 8
  %74 = alloca %"class.std::allocator.21", align 1
  %75 = alloca %"class.std::__cxx11::basic_string", align 8
  %76 = alloca %"class.std::allocator.21", align 1
  %77 = alloca %"class.std::__cxx11::basic_string", align 8
  %78 = alloca %"class.std::allocator.21", align 1
  %79 = alloca i32, align 4
  %80 = alloca %"class.std::__cxx11::basic_string", align 8
  %81 = alloca %"class.std::allocator.21", align 1
  %82 = alloca i32, align 4
  %83 = alloca %"class.std::__cxx11::basic_string", align 8
  %84 = 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
  %85 = load ptr, ptr %5, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #6
  store float 1.000000e+00, ptr %9, align 4, !tbaa !9
  %86 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 28
  %87 = call noundef float @_ZN3vcl14timer_interval6updateEv(ptr noundef nonnull align 4 dereferenceable(24) %86)
  %88 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 28
  %89 = getelementptr inbounds %"class.vcl::timer_basic", ptr %88, i32 0, i32 0
  %90 = load float, ptr %89, align 4, !tbaa !11
  %91 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 28
  %92 = getelementptr inbounds %"class.vcl::timer_interval", ptr %91, i32 0, i32 2
  %93 = load float, ptr %92, align 4, !tbaa !14
  %94 = fsub float %93, 1.000000e+00
  %95 = fcmp oge float %90, %94
  br i1 %95, label %96, label %107

96:                                               ; preds = %4
  %97 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 35
  %98 = load i8, ptr %97, align 2, !tbaa !55, !range !56, !noundef !57
  %99 = trunc i8 %98 to i1
  br i1 %99, label %107, label %100

100:                                              ; preds = %96
  %101 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 36
  %102 = load i8, ptr %101, align 1, !tbaa !58, !range !56, !noundef !57
  %103 = trunc i8 %102 to i1
  br i1 %103, label %104, label %107

104:                                              ; preds = %100
  %105 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 35
  store i8 1, ptr %105, align 2, !tbaa !55
  %106 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 36
  store i8 0, ptr %106, align 1, !tbaa !58
  br label %107

107:                                              ; preds = %104, %100, %96, %4
  %108 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 28
  %109 = getelementptr inbounds %"class.vcl::timer_basic", ptr %108, i32 0, i32 0
  %110 = load float, ptr %109, align 4, !tbaa !11
  %111 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 28
  %112 = getelementptr inbounds %"class.vcl::timer_interval", ptr %111, i32 0, i32 2
  %113 = load float, ptr %112, align 4, !tbaa !14
  %114 = fsub float %113, 1.000000e+00
  %115 = fcmp oge float %110, %114
  br i1 %115, label %116, label %127

116:                                              ; preds = %107
  %117 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 35
  %118 = load i8, ptr %117, align 2, !tbaa !55, !range !56, !noundef !57
  %119 = trunc i8 %118 to i1
  br i1 %119, label %120, label %127

120:                                              ; preds = %116
  %121 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 36
  %122 = load i8, ptr %121, align 1, !tbaa !58, !range !56, !noundef !57
  %123 = trunc i8 %122 to i1
  br i1 %123, label %124, label %127

124:                                              ; preds = %120
  %125 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 35
  store i8 0, ptr %125, align 2, !tbaa !55
  %126 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 36
  store i8 0, ptr %126, align 1, !tbaa !58
  br label %127

127:                                              ; preds = %124, %120, %116, %107
  %128 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 28
  %129 = getelementptr inbounds %"class.vcl::timer_basic", ptr %128, i32 0, i32 0
  %130 = load float, ptr %129, align 4, !tbaa !11
  %131 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 28
  %132 = getelementptr inbounds %"class.vcl::timer_interval", ptr %131, i32 0, i32 1
  %133 = load float, ptr %132, align 4, !tbaa !59
  %134 = fadd float %133, 1.000000e+00
  %135 = fcmp ole float %130, %134
  br i1 %135, label %136, label %138

136:                                              ; preds = %127
  %137 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 36
  store i8 1, ptr %137, align 1, !tbaa !58
  br label %138

138:                                              ; preds = %136, %127
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #6
  %139 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 28
  %140 = getelementptr inbounds %"class.vcl::timer_basic", ptr %139, i32 0, i32 0
  %141 = load float, ptr %140, align 4, !tbaa !11
  %142 = fdiv float %141, 1.000000e+01
  store float %142, ptr %10, align 4, !tbaa !9
  %143 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 28
  %144 = getelementptr inbounds %"class.vcl::timer_basic", ptr %143, i32 0, i32 0
  %145 = load float, ptr %144, align 4, !tbaa !11
  %146 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 28
  %147 = getelementptr inbounds %"class.vcl::timer_interval", ptr %146, i32 0, i32 2
  %148 = load float, ptr %147, align 4, !tbaa !14
  %149 = fsub float %148, 1.000000e+00
  %150 = fcmp oge float %145, %149
  %151 = zext i1 %150 to i32
  %152 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 35
  %153 = load i8, ptr %152, align 2, !tbaa !55, !range !56, !noundef !57
  %154 = trunc i8 %153 to i1
  %155 = zext i1 %154 to i32
  %156 = icmp ne i32 %151, %155
  br i1 %156, label %157, label %161

157:                                              ; preds = %138
  %158 = load float, ptr %10, align 4, !tbaa !9
  %159 = fpext float %158 to double
  %160 = fsub double 1.010000e+01, %159
  br label %164

161:                                              ; preds = %138
  %162 = load float, ptr %10, align 4, !tbaa !9
  %163 = fpext float %162 to double
  br label %164

164:                                              ; preds = %161, %157
  %165 = phi double [ %160, %157 ], [ %163, %161 ]
  %166 = fptrunc double %165 to float
  %167 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 27
  %168 = getelementptr inbounds %struct.gui_scene_structure, ptr %167, i32 0, i32 4
  store float %166, ptr %168, align 8, !tbaa !60
  %169 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 29
  %170 = call noundef float @_ZN3vcl14timer_interval6updateEv(ptr noundef nonnull align 4 dereferenceable(24) %169)
  %171 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 29
  %172 = getelementptr inbounds %"class.vcl::timer_basic", ptr %171, i32 0, i32 0
  %173 = load float, ptr %172, align 4, !tbaa !11
  %174 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 29
  %175 = getelementptr inbounds %"class.vcl::timer_interval", ptr %174, i32 0, i32 2
  %176 = load float, ptr %175, align 4, !tbaa !61
  %177 = fsub float %176, 1.000000e+00
  %178 = fcmp oge float %173, %177
  br i1 %178, label %179, label %190

179:                                              ; preds = %164
  %180 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 33
  %181 = load i8, ptr %180, align 8, !tbaa !62, !range !56, !noundef !57
  %182 = trunc i8 %181 to i1
  br i1 %182, label %190, label %183

183:                                              ; preds = %179
  %184 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 34
  %185 = load i8, ptr %184, align 1, !tbaa !63, !range !56, !noundef !57
  %186 = trunc i8 %185 to i1
  br i1 %186, label %187, label %190

187:                                              ; preds = %183
  %188 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 33
  store i8 1, ptr %188, align 8, !tbaa !62
  %189 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 34
  store i8 0, ptr %189, align 1, !tbaa !63
  br label %190

190:                                              ; preds = %187, %183, %179, %164
  %191 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 29
  %192 = getelementptr inbounds %"class.vcl::timer_basic", ptr %191, i32 0, i32 0
  %193 = load float, ptr %192, align 4, !tbaa !11
  %194 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 29
  %195 = getelementptr inbounds %"class.vcl::timer_interval", ptr %194, i32 0, i32 2
  %196 = load float, ptr %195, align 4, !tbaa !61
  %197 = fsub float %196, 1.000000e+00
  %198 = fcmp oge float %193, %197
  br i1 %198, label %199, label %210

199:                                              ; preds = %190
  %200 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 33
  %201 = load i8, ptr %200, align 8, !tbaa !62, !range !56, !noundef !57
  %202 = trunc i8 %201 to i1
  br i1 %202, label %203, label %210

203:                                              ; preds = %199
  %204 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 34
  %205 = load i8, ptr %204, align 1, !tbaa !63, !range !56, !noundef !57
  %206 = trunc i8 %205 to i1
  br i1 %206, label %207, label %210

207:                                              ; preds = %203
  %208 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 33
  store i8 0, ptr %208, align 8, !tbaa !62
  %209 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 34
  store i8 0, ptr %209, align 1, !tbaa !63
  br label %210

210:                                              ; preds = %207, %203, %199, %190
  %211 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 29
  %212 = getelementptr inbounds %"class.vcl::timer_basic", ptr %211, i32 0, i32 0
  %213 = load float, ptr %212, align 4, !tbaa !11
  %214 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 29
  %215 = getelementptr inbounds %"class.vcl::timer_interval", ptr %214, i32 0, i32 1
  %216 = load float, ptr %215, align 4, !tbaa !64
  %217 = fadd float %216, 1.000000e+00
  %218 = fcmp ole float %213, %217
  br i1 %218, label %219, label %221

219:                                              ; preds = %210
  %220 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 34
  store i8 1, ptr %220, align 1, !tbaa !63
  br label %221

221:                                              ; preds = %219, %210
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #6
  %222 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 29
  %223 = getelementptr inbounds %"class.vcl::timer_basic", ptr %222, i32 0, i32 0
  %224 = load float, ptr %223, align 4, !tbaa !11
  %225 = fdiv float %224, 2.000000e+02
  store float %225, ptr %11, align 4, !tbaa !9
  %226 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 29
  %227 = getelementptr inbounds %"class.vcl::timer_basic", ptr %226, i32 0, i32 0
  %228 = load float, ptr %227, align 4, !tbaa !11
  %229 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 29
  %230 = getelementptr inbounds %"class.vcl::timer_interval", ptr %229, i32 0, i32 2
  %231 = load float, ptr %230, align 4, !tbaa !61
  %232 = fsub float %231, 1.000000e+00
  %233 = fcmp oge float %228, %232
  %234 = zext i1 %233 to i32
  %235 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 33
  %236 = load i8, ptr %235, align 8, !tbaa !62, !range !56, !noundef !57
  %237 = trunc i8 %236 to i1
  %238 = zext i1 %237 to i32
  %239 = icmp ne i32 %234, %238
  br i1 %239, label %240, label %243

240:                                              ; preds = %221
  %241 = load float, ptr %11, align 4, !tbaa !9
  %242 = fpext float %241 to double
  br label %247

243:                                              ; preds = %221
  %244 = load float, ptr %11, align 4, !tbaa !9
  %245 = fpext float %244 to double
  %246 = fsub double 1.500000e+00, %245
  br label %247

247:                                              ; preds = %243, %240
  %248 = phi double [ %242, %240 ], [ %246, %243 ]
  %249 = fptrunc double %248 to float
  %250 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 27
  %251 = getelementptr inbounds %struct.gui_scene_structure, ptr %250, i32 0, i32 3
  store float %249, ptr %251, align 4, !tbaa !65
  %252 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 30
  %253 = call noundef float @_ZN3vcl14timer_interval6updateEv(ptr noundef nonnull align 4 dereferenceable(24) %252)
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #6
  %254 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 30
  %255 = getelementptr inbounds %"class.vcl::timer_basic", ptr %254, i32 0, i32 0
  %256 = load float, ptr %255, align 4, !tbaa !11
  store float %256, ptr %12, align 4, !tbaa !9
  %257 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 31
  %258 = call noundef float @_ZN3vcl14timer_interval6updateEv(ptr noundef nonnull align 4 dereferenceable(24) %257)
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #6
  %259 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 31
  %260 = getelementptr inbounds %"class.vcl::timer_basic", ptr %259, i32 0, i32 0
  %261 = load float, ptr %260, align 4, !tbaa !11
  store float %261, ptr %13, align 4, !tbaa !9
  call void @_ZN11scene_model7set_guiEv(ptr noundef nonnull align 8 dereferenceable(1516) %85)
  %262 = load ptr, ptr @glad_glEnable, align 8, !tbaa !5
  call void %262(i32 noundef 32823)
  %263 = load ptr, ptr @glad_glBindTexture, align 8, !tbaa !5
  %264 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 15
  %265 = load i32, ptr %264, align 8, !tbaa !66
  call void %263(i32 noundef 3553, i32 noundef %265)
  %266 = load ptr, ptr @glad_glTexParameteri, align 8, !tbaa !5
  call void %266(i32 noundef 3553, i32 noundef 10242, i32 noundef 33648)
  %267 = load ptr, ptr @glad_glTexParameteri, align 8, !tbaa !5
  call void %267(i32 noundef 3553, i32 noundef 10243, i32 noundef 33648)
  %268 = load ptr, ptr @glad_glPolygonOffset, align 8, !tbaa !5
  call void %268(float noundef 1.000000e+00, float noundef 1.000000e+00)
  %269 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 0
  %270 = load ptr, ptr %7, align 8, !tbaa !5
  %271 = getelementptr inbounds %struct.scene_structure, ptr %270, i32 0, i32 0
  %272 = load ptr, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %14) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %15) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef @.str, ptr noundef nonnull align 1 dereferenceable(1) %15)
          to label %273 unwind label %331

273:                                              ; preds = %247
  %274 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEEixEOS5_(ptr noundef nonnull align 8 dereferenceable(48) %272, ptr noundef nonnull align 8 dereferenceable(32) %14)
          to label %275 unwind label %335

275:                                              ; preds = %273
  %276 = load i32, ptr %274, align 4, !tbaa !67
  invoke void @_ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEj(ptr noundef nonnull align 4 dereferenceable(132) %269, ptr noundef nonnull align 4 dereferenceable(80) %271, i32 noundef %276)
          to label %277 unwind label %335

277:                                              ; preds = %275
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %14) #6
  %278 = load ptr, ptr @glad_glBindTexture, align 8, !tbaa !5
  %279 = load ptr, ptr %7, align 8, !tbaa !5
  %280 = getelementptr inbounds %struct.scene_structure, ptr %279, i32 0, i32 4
  %281 = load i32, ptr %280, align 4, !tbaa !68
  call void %278(i32 noundef 3553, i32 noundef %281)
  %282 = load ptr, ptr @glad_glBindTexture, align 8, !tbaa !5
  %283 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 20
  %284 = load i32, ptr %283, align 4, !tbaa !75
  call void %282(i32 noundef 3553, i32 noundef %284)
  %285 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 1
  %286 = load ptr, ptr %7, align 8, !tbaa !5
  %287 = getelementptr inbounds %struct.scene_structure, ptr %286, i32 0, i32 0
  %288 = load ptr, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %18) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef @.str, ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %289 unwind label %340

289:                                              ; preds = %277
  %290 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEEixEOS5_(ptr noundef nonnull align 8 dereferenceable(48) %288, ptr noundef nonnull align 8 dereferenceable(32) %18)
          to label %291 unwind label %344

291:                                              ; preds = %289
  %292 = load i32, ptr %290, align 4, !tbaa !67
  invoke void @_ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEj(ptr noundef nonnull align 4 dereferenceable(132) %285, ptr noundef nonnull align 4 dereferenceable(80) %287, i32 noundef %292)
          to label %293 unwind label %344

293:                                              ; preds = %291
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #6
  %294 = load ptr, ptr @glad_glBindTexture, align 8, !tbaa !5
  %295 = load ptr, ptr %7, align 8, !tbaa !5
  %296 = getelementptr inbounds %struct.scene_structure, ptr %295, i32 0, i32 4
  %297 = load i32, ptr %296, align 4, !tbaa !68
  call void %294(i32 noundef 3553, i32 noundef %297)
  %298 = load ptr, ptr @glad_glBindTexture, align 8, !tbaa !5
  %299 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 18
  %300 = load i32, ptr %299, align 4, !tbaa !76
  call void %298(i32 noundef 3553, i32 noundef %300)
  call void @llvm.lifetime.start.p0(i64 12, ptr %20) #6
  call void @_ZN3vcl12buffer_stackIfLm3EEC1Efff(ptr noundef nonnull align 4 dereferenceable(12) %20, float noundef -6.000000e+00, float noundef -6.000000e+00, float noundef 0.000000e+00)
  %301 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 7
  %302 = getelementptr inbounds %"struct.vcl::mesh_drawable", ptr %301, i32 0, i32 1
  %303 = getelementptr inbounds %"struct.vcl::mesh_drawable_uniform", ptr %302, i32 0, i32 0
  %304 = getelementptr inbounds %"struct.vcl::affine_transform", ptr %303, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %304, ptr align 4 %20, i64 12, i1 false), !tbaa.struct !77
  call void @llvm.lifetime.end.p0(i64 12, ptr %20) #6
  call void @llvm.lifetime.start.p0(i64 36, ptr %21) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr %22) #6
  call void @_ZN3vcl12buffer_stackIfLm3EEC1Efff(ptr noundef nonnull align 4 dereferenceable(12) %22, float noundef 0.000000e+00, float noundef 1.000000e+00, float noundef 0.000000e+00)
  call void @_ZN3vcl29rotation_from_axis_angle_mat3ERKNS_12buffer_stackIfLm3EEEf(ptr dead_on_unwind writable sret(%"struct.vcl::mat") align 4 %21, ptr noundef nonnull align 4 dereferenceable(12) %22, float noundef 0x3FE0BF25A0000000)
  call void @llvm.lifetime.end.p0(i64 12, ptr %22) #6
  %305 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 7
  %306 = getelementptr inbounds %"struct.vcl::mesh_drawable", ptr %305, i32 0, i32 1
  %307 = getelementptr inbounds %"struct.vcl::mesh_drawable_uniform", ptr %306, i32 0, i32 0
  %308 = getelementptr inbounds %"struct.vcl::affine_transform", ptr %307, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %308, ptr align 4 %21, i64 36, i1 false), !tbaa.struct !78
  %309 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 7
  %310 = load ptr, ptr %7, align 8, !tbaa !5
  %311 = getelementptr inbounds %struct.scene_structure, ptr %310, i32 0, i32 0
  %312 = load ptr, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %23) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %24) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef @.str, ptr noundef nonnull align 1 dereferenceable(1) %24)
          to label %313 unwind label %349

313:                                              ; preds = %293
  %314 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEEixEOS5_(ptr noundef nonnull align 8 dereferenceable(48) %312, ptr noundef nonnull align 8 dereferenceable(32) %23)
          to label %315 unwind label %353

315:                                              ; preds = %313
  %316 = load i32, ptr %314, align 4, !tbaa !67
  invoke void @_ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEj(ptr noundef nonnull align 4 dereferenceable(132) %309, ptr noundef nonnull align 4 dereferenceable(80) %311, i32 noundef %316)
          to label %317 unwind label %353

317:                                              ; preds = %315
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #6
  %318 = load ptr, ptr @glad_glBindTexture, align 8, !tbaa !5
  %319 = load ptr, ptr %7, align 8, !tbaa !5
  %320 = getelementptr inbounds %struct.scene_structure, ptr %319, i32 0, i32 4
  %321 = load i32, ptr %320, align 4, !tbaa !68
  call void %318(i32 noundef 3553, i32 noundef %321)
  %322 = load ptr, ptr @glad_glBindTexture, align 8, !tbaa !5
  %323 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 17
  %324 = load i32, ptr %323, align 8, !tbaa !79
  call void %322(i32 noundef 3553, i32 noundef %324)
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #6
  store i32 0, ptr %25, align 4, !tbaa !67
  br label %325

325:                                              ; preds = %376, %317
  %326 = load i32, ptr %25, align 4, !tbaa !67
  %327 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 13
  %328 = load i32, ptr %327, align 8, !tbaa !80
  %329 = icmp slt i32 %326, %328
  br i1 %329, label %358, label %330

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

331:                                              ; preds = %247
  %332 = landingpad { ptr, i32 }
          cleanup
  %333 = extractvalue { ptr, i32 } %332, 0
  store ptr %333, ptr %16, align 8
  %334 = extractvalue { ptr, i32 } %332, 1
  store i32 %334, ptr %17, align 4
  br label %339

335:                                              ; preds = %275, %273
  %336 = landingpad { ptr, i32 }
          cleanup
  %337 = extractvalue { ptr, i32 } %336, 0
  store ptr %337, ptr %16, align 8
  %338 = extractvalue { ptr, i32 } %336, 1
  store i32 %338, ptr %17, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #6
  br label %339

339:                                              ; preds = %335, %331
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %14) #6
  br label %935

340:                                              ; preds = %277
  %341 = landingpad { ptr, i32 }
          cleanup
  %342 = extractvalue { ptr, i32 } %341, 0
  store ptr %342, ptr %16, align 8
  %343 = extractvalue { ptr, i32 } %341, 1
  store i32 %343, ptr %17, align 4
  br label %348

344:                                              ; preds = %291, %289
  %345 = landingpad { ptr, i32 }
          cleanup
  %346 = extractvalue { ptr, i32 } %345, 0
  store ptr %346, ptr %16, align 8
  %347 = extractvalue { ptr, i32 } %345, 1
  store i32 %347, ptr %17, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #6
  br label %348

348:                                              ; preds = %344, %340
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #6
  br label %935

349:                                              ; preds = %293
  %350 = landingpad { ptr, i32 }
          cleanup
  %351 = extractvalue { ptr, i32 } %350, 0
  store ptr %351, ptr %16, align 8
  %352 = extractvalue { ptr, i32 } %350, 1
  store i32 %352, ptr %17, align 4
  br label %357

353:                                              ; preds = %315, %313
  %354 = landingpad { ptr, i32 }
          cleanup
  %355 = extractvalue { ptr, i32 } %354, 0
  store ptr %355, ptr %16, align 8
  %356 = extractvalue { ptr, i32 } %354, 1
  store i32 %356, ptr %17, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #6
  br label %357

357:                                              ; preds = %353, %349
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #6
  br label %934

358:                                              ; preds = %325
  %359 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 2
  %360 = load i32, ptr %25, align 4, !tbaa !67
  %361 = sext i32 %360 to i64
  %362 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3vcl12buffer_stackIfLm3EEESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %359, i64 noundef %361) #6
  %363 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 3
  %364 = getelementptr inbounds %"struct.vcl::mesh_drawable", ptr %363, i32 0, i32 1
  %365 = getelementptr inbounds %"struct.vcl::mesh_drawable_uniform", ptr %364, i32 0, i32 0
  %366 = getelementptr inbounds %"struct.vcl::affine_transform", ptr %365, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %366, ptr align 4 %362, i64 12, i1 false), !tbaa.struct !77
  %367 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 3
  %368 = load ptr, ptr %7, align 8, !tbaa !5
  %369 = getelementptr inbounds %struct.scene_structure, ptr %368, i32 0, i32 0
  %370 = load ptr, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %26) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef @.str, ptr noundef nonnull align 1 dereferenceable(1) %27)
          to label %371 unwind label %379

371:                                              ; preds = %358
  %372 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEEixEOS5_(ptr noundef nonnull align 8 dereferenceable(48) %370, ptr noundef nonnull align 8 dereferenceable(32) %26)
          to label %373 unwind label %383

373:                                              ; preds = %371
  %374 = load i32, ptr %372, align 4, !tbaa !67
  invoke void @_ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEj(ptr noundef nonnull align 4 dereferenceable(132) %367, ptr noundef nonnull align 4 dereferenceable(80) %369, i32 noundef %374)
          to label %375 unwind label %383

375:                                              ; preds = %373
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #6
  br label %376

376:                                              ; preds = %375
  %377 = load i32, ptr %25, align 4, !tbaa !67
  %378 = add nsw i32 %377, 1
  store i32 %378, ptr %25, align 4, !tbaa !67
  br label %325, !llvm.loop !81

379:                                              ; preds = %358
  %380 = landingpad { ptr, i32 }
          cleanup
  %381 = extractvalue { ptr, i32 } %380, 0
  store ptr %381, ptr %16, align 8
  %382 = extractvalue { ptr, i32 } %380, 1
  store i32 %382, ptr %17, align 4
  br label %387

383:                                              ; preds = %373, %371
  %384 = landingpad { ptr, i32 }
          cleanup
  %385 = extractvalue { ptr, i32 } %384, 0
  store ptr %385, ptr %16, align 8
  %386 = extractvalue { ptr, i32 } %384, 1
  store i32 %386, ptr %17, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #6
  br label %387

387:                                              ; preds = %383, %379
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #6
  br label %934

388:                                              ; preds = %330
  %389 = load ptr, ptr @glad_glBindTexture, align 8, !tbaa !5
  %390 = load ptr, ptr %7, align 8, !tbaa !5
  %391 = getelementptr inbounds %struct.scene_structure, ptr %390, i32 0, i32 4
  %392 = load i32, ptr %391, align 4, !tbaa !68
  call void %389(i32 noundef 3553, i32 noundef %392)
  %393 = load ptr, ptr @glad_glBindTexture, align 8, !tbaa !5
  %394 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 21
  %395 = load i32, ptr %394, align 8, !tbaa !83
  call void %393(i32 noundef 3553, i32 noundef %395)
  %396 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 9
  %397 = getelementptr inbounds %"struct.vcl::mesh_drawable", ptr %396, i32 0, i32 1
  %398 = getelementptr inbounds %"struct.vcl::mesh_drawable_uniform", ptr %397, i32 0, i32 0
  %399 = getelementptr inbounds %"struct.vcl::affine_transform", ptr %398, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %399, ptr align 4 %21, i64 36, i1 false), !tbaa.struct !78
  call void @llvm.lifetime.start.p0(i64 12, ptr %28) #6
  call void @_ZN3vcl12buffer_stackIfLm3EEC1Efff(ptr noundef nonnull align 4 dereferenceable(12) %28, float noundef -6.000000e+00, float noundef -6.000000e+00, float noundef 0.000000e+00)
  %400 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 9
  %401 = getelementptr inbounds %"struct.vcl::mesh_drawable", ptr %400, i32 0, i32 1
  %402 = getelementptr inbounds %"struct.vcl::mesh_drawable_uniform", ptr %401, i32 0, i32 0
  %403 = getelementptr inbounds %"struct.vcl::affine_transform", ptr %402, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %403, ptr align 4 %28, i64 12, i1 false), !tbaa.struct !77
  call void @llvm.lifetime.end.p0(i64 12, ptr %28) #6
  %404 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 9
  %405 = load ptr, ptr %7, align 8, !tbaa !5
  %406 = getelementptr inbounds %struct.scene_structure, ptr %405, i32 0, i32 0
  %407 = load ptr, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %29) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %30) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef @.str, ptr noundef nonnull align 1 dereferenceable(1) %30)
          to label %408 unwind label %493

408:                                              ; preds = %388
  %409 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEEixEOS5_(ptr noundef nonnull align 8 dereferenceable(48) %407, ptr noundef nonnull align 8 dereferenceable(32) %29)
          to label %410 unwind label %497

410:                                              ; preds = %408
  %411 = load i32, ptr %409, align 4, !tbaa !67
  invoke void @_ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEj(ptr noundef nonnull align 4 dereferenceable(132) %404, ptr noundef nonnull align 4 dereferenceable(80) %406, i32 noundef %411)
          to label %412 unwind label %497

412:                                              ; preds = %410
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr %31) #6
  call void @_ZN3vcl12buffer_stackIfLm3EEC1Efff(ptr noundef nonnull align 4 dereferenceable(12) %31, float noundef -5.000000e+00, float noundef -6.000000e+00, float noundef -1.000000e+00)
  %413 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 9
  %414 = getelementptr inbounds %"struct.vcl::mesh_drawable", ptr %413, i32 0, i32 1
  %415 = getelementptr inbounds %"struct.vcl::mesh_drawable_uniform", ptr %414, i32 0, i32 0
  %416 = getelementptr inbounds %"struct.vcl::affine_transform", ptr %415, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %416, ptr align 4 %31, i64 12, i1 false), !tbaa.struct !77
  call void @llvm.lifetime.end.p0(i64 12, ptr %31) #6
  %417 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 9
  %418 = load ptr, ptr %7, align 8, !tbaa !5
  %419 = getelementptr inbounds %struct.scene_structure, ptr %418, i32 0, i32 0
  %420 = load ptr, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %32) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef @.str, ptr noundef nonnull align 1 dereferenceable(1) %33)
          to label %421 unwind label %502

421:                                              ; preds = %412
  %422 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEEixEOS5_(ptr noundef nonnull align 8 dereferenceable(48) %420, ptr noundef nonnull align 8 dereferenceable(32) %32)
          to label %423 unwind label %506

423:                                              ; preds = %421
  %424 = load i32, ptr %422, align 4, !tbaa !67
  invoke void @_ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEj(ptr noundef nonnull align 4 dereferenceable(132) %417, ptr noundef nonnull align 4 dereferenceable(80) %419, i32 noundef %424)
          to label %425 unwind label %506

425:                                              ; preds = %423
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr %34) #6
  call void @_ZN3vcl12buffer_stackIfLm3EEC1Efff(ptr noundef nonnull align 4 dereferenceable(12) %34, float noundef -6.000000e+00, float noundef 0xC019333340000000, float noundef 0.000000e+00)
  %426 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 9
  %427 = getelementptr inbounds %"struct.vcl::mesh_drawable", ptr %426, i32 0, i32 1
  %428 = getelementptr inbounds %"struct.vcl::mesh_drawable_uniform", ptr %427, i32 0, i32 0
  %429 = getelementptr inbounds %"struct.vcl::affine_transform", ptr %428, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %429, ptr align 4 %34, i64 12, i1 false), !tbaa.struct !77
  call void @llvm.lifetime.end.p0(i64 12, ptr %34) #6
  %430 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 9
  %431 = load ptr, ptr %7, align 8, !tbaa !5
  %432 = getelementptr inbounds %struct.scene_structure, ptr %431, i32 0, i32 0
  %433 = load ptr, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %35) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef @.str, ptr noundef nonnull align 1 dereferenceable(1) %36)
          to label %434 unwind label %511

434:                                              ; preds = %425
  %435 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEEixEOS5_(ptr noundef nonnull align 8 dereferenceable(48) %433, ptr noundef nonnull align 8 dereferenceable(32) %35)
          to label %436 unwind label %515

436:                                              ; preds = %434
  %437 = load i32, ptr %435, align 4, !tbaa !67
  invoke void @_ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEj(ptr noundef nonnull align 4 dereferenceable(132) %430, ptr noundef nonnull align 4 dereferenceable(80) %432, i32 noundef %437)
          to label %438 unwind label %515

438:                                              ; preds = %436
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr %37) #6
  call void @_ZN3vcl12buffer_stackIfLm3EEC1Efff(ptr noundef nonnull align 4 dereferenceable(12) %37, float noundef -5.000000e+00, float noundef 0xC019333340000000, float noundef -1.000000e+00)
  %439 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 9
  %440 = getelementptr inbounds %"struct.vcl::mesh_drawable", ptr %439, i32 0, i32 1
  %441 = getelementptr inbounds %"struct.vcl::mesh_drawable_uniform", ptr %440, i32 0, i32 0
  %442 = getelementptr inbounds %"struct.vcl::affine_transform", ptr %441, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %442, ptr align 4 %37, i64 12, i1 false), !tbaa.struct !77
  call void @llvm.lifetime.end.p0(i64 12, ptr %37) #6
  %443 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 9
  %444 = load ptr, ptr %7, align 8, !tbaa !5
  %445 = getelementptr inbounds %struct.scene_structure, ptr %444, i32 0, i32 0
  %446 = load ptr, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %38) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %39) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef @.str, ptr noundef nonnull align 1 dereferenceable(1) %39)
          to label %447 unwind label %520

447:                                              ; preds = %438
  %448 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEEixEOS5_(ptr noundef nonnull align 8 dereferenceable(48) %446, ptr noundef nonnull align 8 dereferenceable(32) %38)
          to label %449 unwind label %524

449:                                              ; preds = %447
  %450 = load i32, ptr %448, align 4, !tbaa !67
  invoke void @_ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEj(ptr noundef nonnull align 4 dereferenceable(132) %443, ptr noundef nonnull align 4 dereferenceable(80) %445, i32 noundef %450)
          to label %451 unwind label %524

451:                                              ; preds = %449
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #6
  %452 = load ptr, ptr @glad_glBindTexture, align 8, !tbaa !5
  %453 = load ptr, ptr %7, align 8, !tbaa !5
  %454 = getelementptr inbounds %struct.scene_structure, ptr %453, i32 0, i32 4
  %455 = load i32, ptr %454, align 4, !tbaa !68
  call void %452(i32 noundef 3553, i32 noundef %455)
  %456 = load ptr, ptr @glad_glBindTexture, align 8, !tbaa !5
  %457 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 19
  %458 = load i32, ptr %457, align 8, !tbaa !84
  call void %456(i32 noundef 3553, i32 noundef %458)
  %459 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 8
  %460 = load ptr, ptr %7, align 8, !tbaa !5
  %461 = getelementptr inbounds %struct.scene_structure, ptr %460, i32 0, i32 0
  %462 = load ptr, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %40) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %41) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef @.str, ptr noundef nonnull align 1 dereferenceable(1) %41)
          to label %463 unwind label %529

463:                                              ; preds = %451
  %464 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEEixEOS5_(ptr noundef nonnull align 8 dereferenceable(48) %462, ptr noundef nonnull align 8 dereferenceable(32) %40)
          to label %465 unwind label %533

465:                                              ; preds = %463
  %466 = load i32, ptr %464, align 4, !tbaa !67
  invoke void @_ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEj(ptr noundef nonnull align 4 dereferenceable(132) %459, ptr noundef nonnull align 4 dereferenceable(80) %461, i32 noundef %466)
          to label %467 unwind label %533

467:                                              ; preds = %465
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #6
  %468 = load ptr, ptr @glad_glBindTexture, align 8, !tbaa !5
  %469 = load ptr, ptr %7, align 8, !tbaa !5
  %470 = getelementptr inbounds %struct.scene_structure, ptr %469, i32 0, i32 4
  %471 = load i32, ptr %470, align 4, !tbaa !68
  call void %468(i32 noundef 3553, i32 noundef %471)
  %472 = load ptr, ptr @glad_glEnable, align 8, !tbaa !5
  call void %472(i32 noundef 3042)
  %473 = load ptr, ptr @glad_glBlendFunc, align 8, !tbaa !5
  call void %473(i32 noundef 770, i32 noundef 771)
  %474 = load ptr, ptr @glad_glDepthMask, align 8, !tbaa !5
  call void %474(i8 noundef zeroext 0)
  %475 = load ptr, ptr @glad_glBindTexture, align 8, !tbaa !5
  %476 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 16
  %477 = load i32, ptr %476, align 4, !tbaa !85
  call void %475(i32 noundef 3553, i32 noundef %477)
  %478 = load ptr, ptr @glad_glTexParameteri, align 8, !tbaa !5
  call void %478(i32 noundef 3553, i32 noundef 10242, i32 noundef 33071)
  %479 = load ptr, ptr @glad_glTexParameteri, align 8, !tbaa !5
  call void %479(i32 noundef 3553, i32 noundef 10243, i32 noundef 33071)
  %480 = load ptr, ptr %7, align 8, !tbaa !5
  %481 = getelementptr inbounds %struct.scene_structure, ptr %480, i32 0, i32 0
  %482 = getelementptr inbounds %"struct.vcl::camera_scene", ptr %481, i32 0, i32 2
  %483 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 6
  %484 = getelementptr inbounds %"struct.vcl::mesh_drawable", ptr %483, i32 0, i32 1
  %485 = getelementptr inbounds %"struct.vcl::mesh_drawable_uniform", ptr %484, i32 0, i32 0
  %486 = getelementptr inbounds %"struct.vcl::affine_transform", ptr %485, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %486, ptr align 4 %482, i64 36, i1 false), !tbaa.struct !78
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #6
  store i32 0, ptr %42, align 4, !tbaa !67
  br label %487

487:                                              ; preds = %556, %467
  %488 = load i32, ptr %42, align 4, !tbaa !67
  %489 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 14
  %490 = load i32, ptr %489, align 4, !tbaa !86
  %491 = icmp slt i32 %488, %490
  br i1 %491, label %538, label %492

492:                                              ; preds = %487
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #6
  br label %568

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

497:                                              ; preds = %410, %408
  %498 = landingpad { ptr, i32 }
          cleanup
  %499 = extractvalue { ptr, i32 } %498, 0
  store ptr %499, ptr %16, align 8
  %500 = extractvalue { ptr, i32 } %498, 1
  store i32 %500, ptr %17, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #6
  br label %501

501:                                              ; preds = %497, %493
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #6
  br label %934

502:                                              ; preds = %412
  %503 = landingpad { ptr, i32 }
          cleanup
  %504 = extractvalue { ptr, i32 } %503, 0
  store ptr %504, ptr %16, align 8
  %505 = extractvalue { ptr, i32 } %503, 1
  store i32 %505, ptr %17, align 4
  br label %510

506:                                              ; preds = %423, %421
  %507 = landingpad { ptr, i32 }
          cleanup
  %508 = extractvalue { ptr, i32 } %507, 0
  store ptr %508, ptr %16, align 8
  %509 = extractvalue { ptr, i32 } %507, 1
  store i32 %509, ptr %17, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #6
  br label %510

510:                                              ; preds = %506, %502
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #6
  br label %934

511:                                              ; preds = %425
  %512 = landingpad { ptr, i32 }
          cleanup
  %513 = extractvalue { ptr, i32 } %512, 0
  store ptr %513, ptr %16, align 8
  %514 = extractvalue { ptr, i32 } %512, 1
  store i32 %514, ptr %17, align 4
  br label %519

515:                                              ; preds = %436, %434
  %516 = landingpad { ptr, i32 }
          cleanup
  %517 = extractvalue { ptr, i32 } %516, 0
  store ptr %517, ptr %16, align 8
  %518 = extractvalue { ptr, i32 } %516, 1
  store i32 %518, ptr %17, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #6
  br label %519

519:                                              ; preds = %515, %511
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #6
  br label %934

520:                                              ; preds = %438
  %521 = landingpad { ptr, i32 }
          cleanup
  %522 = extractvalue { ptr, i32 } %521, 0
  store ptr %522, ptr %16, align 8
  %523 = extractvalue { ptr, i32 } %521, 1
  store i32 %523, ptr %17, align 4
  br label %528

524:                                              ; preds = %449, %447
  %525 = landingpad { ptr, i32 }
          cleanup
  %526 = extractvalue { ptr, i32 } %525, 0
  store ptr %526, ptr %16, align 8
  %527 = extractvalue { ptr, i32 } %525, 1
  store i32 %527, ptr %17, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #6
  br label %528

528:                                              ; preds = %524, %520
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #6
  br label %934

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

533:                                              ; preds = %465, %463
  %534 = landingpad { ptr, i32 }
          cleanup
  %535 = extractvalue { ptr, i32 } %534, 0
  store ptr %535, ptr %16, align 8
  %536 = extractvalue { ptr, i32 } %534, 1
  store i32 %536, ptr %17, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #6
  br label %537

537:                                              ; preds = %533, %529
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #6
  br label %934

538:                                              ; preds = %487
  %539 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 5
  %540 = load i32, ptr %42, align 4, !tbaa !67
  %541 = sext i32 %540 to i64
  %542 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3vcl12buffer_stackIfLm3EEESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %539, i64 noundef %541) #6
  %543 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 6
  %544 = getelementptr inbounds %"struct.vcl::mesh_drawable", ptr %543, i32 0, i32 1
  %545 = getelementptr inbounds %"struct.vcl::mesh_drawable_uniform", ptr %544, i32 0, i32 0
  %546 = getelementptr inbounds %"struct.vcl::affine_transform", ptr %545, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %546, ptr align 4 %542, i64 12, i1 false), !tbaa.struct !77
  %547 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 6
  %548 = load ptr, ptr %7, align 8, !tbaa !5
  %549 = getelementptr inbounds %struct.scene_structure, ptr %548, i32 0, i32 0
  %550 = load ptr, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %43) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %44) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %43, ptr noundef @.str, ptr noundef nonnull align 1 dereferenceable(1) %44)
          to label %551 unwind label %559

551:                                              ; preds = %538
  %552 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEEixEOS5_(ptr noundef nonnull align 8 dereferenceable(48) %550, ptr noundef nonnull align 8 dereferenceable(32) %43)
          to label %553 unwind label %563

553:                                              ; preds = %551
  %554 = load i32, ptr %552, align 4, !tbaa !67
  invoke void @_ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEj(ptr noundef nonnull align 4 dereferenceable(132) %547, ptr noundef nonnull align 4 dereferenceable(80) %549, i32 noundef %554)
          to label %555 unwind label %563

555:                                              ; preds = %553
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %43) #6
  br label %556

556:                                              ; preds = %555
  %557 = load i32, ptr %42, align 4, !tbaa !67
  %558 = add nsw i32 %557, 1
  store i32 %558, ptr %42, align 4, !tbaa !67
  br label %487, !llvm.loop !87

559:                                              ; preds = %538
  %560 = landingpad { ptr, i32 }
          cleanup
  %561 = extractvalue { ptr, i32 } %560, 0
  store ptr %561, ptr %16, align 8
  %562 = extractvalue { ptr, i32 } %560, 1
  store i32 %562, ptr %17, align 4
  br label %567

563:                                              ; preds = %553, %551
  %564 = landingpad { ptr, i32 }
          cleanup
  %565 = extractvalue { ptr, i32 } %564, 0
  store ptr %565, ptr %16, align 8
  %566 = extractvalue { ptr, i32 } %564, 1
  store i32 %566, ptr %17, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #6
  br label %567

567:                                              ; preds = %563, %559
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %43) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #6
  br label %934

568:                                              ; preds = %492
  %569 = load ptr, ptr @glad_glBindTexture, align 8, !tbaa !5
  %570 = load ptr, ptr %7, align 8, !tbaa !5
  %571 = getelementptr inbounds %struct.scene_structure, ptr %570, i32 0, i32 4
  %572 = load i32, ptr %571, align 4, !tbaa !68
  call void %569(i32 noundef 3553, i32 noundef %572)
  call void @_ZN11scene_model14update_terrainEv(ptr noundef nonnull align 8 dereferenceable(1516) %85)
  call void @_ZN11scene_model10update_boxEv(ptr noundef nonnull align 8 dereferenceable(1516) %85)
  call void @_ZN11scene_model11update_fishEv(ptr noundef nonnull align 8 dereferenceable(1516) %85)
  %573 = load float, ptr %12, align 4, !tbaa !9
  call void @_ZN11scene_model21set_creature_rotationEf(ptr noundef nonnull align 8 dereferenceable(1516) %85, float noundef %573)
  call void @llvm.lifetime.start.p0(i64 12, ptr %45) #6
  %574 = load float, ptr %13, align 4, !tbaa !9
  %575 = call { <2 x float>, float } @_ZN11scene_model18set_plane_rotationEf(ptr noundef nonnull align 8 dereferenceable(1516) %85, float noundef %574)
  store { <2 x float>, float } %575, ptr %46, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %45, ptr align 8 %46, i64 12, i1 false)
  call void @_ZN11scene_model20set_missle_animationERKN3vcl12buffer_stackIfLm3EEE(ptr noundef nonnull align 8 dereferenceable(1516) %85, ptr noundef nonnull align 4 dereferenceable(12) %45)
  %576 = load ptr, ptr @glad_glBindTexture, align 8, !tbaa !5
  %577 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 22
  %578 = load i32, ptr %577, align 4, !tbaa !88
  call void %576(i32 noundef 3553, i32 noundef %578)
  %579 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 25
  %580 = load ptr, ptr %7, align 8, !tbaa !5
  %581 = getelementptr inbounds %struct.scene_structure, ptr %580, i32 0, i32 0
  %582 = load ptr, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %47) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %48) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef @.str, ptr noundef nonnull align 1 dereferenceable(1) %48)
          to label %583 unwind label %737

583:                                              ; preds = %568
  %584 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEEixEOS5_(ptr noundef nonnull align 8 dereferenceable(48) %582, ptr noundef nonnull align 8 dereferenceable(32) %47)
          to label %585 unwind label %741

585:                                              ; preds = %583
  %586 = load i32, ptr %584, align 4, !tbaa !67
  invoke void @_ZN3vcl4drawERKNS_23hierarchy_mesh_drawableERKNS_12camera_sceneEi(ptr noundef nonnull align 8 dereferenceable(72) %579, ptr noundef nonnull align 4 dereferenceable(80) %581, i32 noundef %586)
          to label %587 unwind label %741

587:                                              ; preds = %585
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %47) #6
  %588 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 26
  %589 = load ptr, ptr %7, align 8, !tbaa !5
  %590 = getelementptr inbounds %struct.scene_structure, ptr %589, i32 0, i32 0
  %591 = load ptr, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %49) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %50) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %49, ptr noundef @.str, ptr noundef nonnull align 1 dereferenceable(1) %50)
          to label %592 unwind label %746

592:                                              ; preds = %587
  %593 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEEixEOS5_(ptr noundef nonnull align 8 dereferenceable(48) %591, ptr noundef nonnull align 8 dereferenceable(32) %49)
          to label %594 unwind label %750

594:                                              ; preds = %592
  %595 = load i32, ptr %593, align 4, !tbaa !67
  invoke void @_ZN3vcl4drawERKNS_23hierarchy_mesh_drawableERKNS_12camera_sceneEi(ptr noundef nonnull align 8 dereferenceable(72) %588, ptr noundef nonnull align 4 dereferenceable(80) %590, i32 noundef %595)
          to label %596 unwind label %750

596:                                              ; preds = %594
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %50) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %49) #6
  %597 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 10
  %598 = load ptr, ptr %7, align 8, !tbaa !5
  %599 = getelementptr inbounds %struct.scene_structure, ptr %598, i32 0, i32 0
  %600 = load ptr, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %51) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %52) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %51, ptr noundef @.str, ptr noundef nonnull align 1 dereferenceable(1) %52)
          to label %601 unwind label %755

601:                                              ; preds = %596
  %602 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEEixEOS5_(ptr noundef nonnull align 8 dereferenceable(48) %600, ptr noundef nonnull align 8 dereferenceable(32) %51)
          to label %603 unwind label %759

603:                                              ; preds = %601
  %604 = load i32, ptr %602, align 4, !tbaa !67
  invoke void @_ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEj(ptr noundef nonnull align 4 dereferenceable(132) %597, ptr noundef nonnull align 4 dereferenceable(80) %599, i32 noundef %604)
          to label %605 unwind label %759

605:                                              ; preds = %603
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %51) #6
  %606 = load ptr, ptr @glad_glBindTexture, align 8, !tbaa !5
  %607 = load ptr, ptr %7, align 8, !tbaa !5
  %608 = getelementptr inbounds %struct.scene_structure, ptr %607, i32 0, i32 4
  %609 = load i32, ptr %608, align 4, !tbaa !68
  call void %606(i32 noundef 3553, i32 noundef %609)
  %610 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 27
  %611 = getelementptr inbounds %struct.gui_scene_structure, ptr %610, i32 0, i32 0
  %612 = load i8, ptr %611, align 8, !tbaa !89, !range !56, !noundef !57
  %613 = trunc i8 %612 to i1
  br i1 %613, label %614, label %931

614:                                              ; preds = %605
  %615 = load ptr, ptr @glad_glPolygonOffset, align 8, !tbaa !5
  call void %615(float noundef 1.000000e+00, float noundef 1.000000e+00)
  %616 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 0
  %617 = load ptr, ptr %7, align 8, !tbaa !5
  %618 = getelementptr inbounds %struct.scene_structure, ptr %617, i32 0, i32 0
  %619 = load ptr, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %53) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %54) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %53, ptr noundef @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %54)
          to label %620 unwind label %764

620:                                              ; preds = %614
  %621 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEEixEOS5_(ptr noundef nonnull align 8 dereferenceable(48) %619, ptr noundef nonnull align 8 dereferenceable(32) %53)
          to label %622 unwind label %768

622:                                              ; preds = %620
  %623 = load i32, ptr %621, align 4, !tbaa !67
  invoke void @_ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEj(ptr noundef nonnull align 4 dereferenceable(132) %616, ptr noundef nonnull align 4 dereferenceable(80) %618, i32 noundef %623)
          to label %624 unwind label %768

624:                                              ; preds = %622
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %54) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %53) #6
  %625 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 1
  %626 = load ptr, ptr %7, align 8, !tbaa !5
  %627 = getelementptr inbounds %struct.scene_structure, ptr %626, i32 0, i32 0
  %628 = load ptr, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %55) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %56) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %56) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %55, ptr noundef @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %56)
          to label %629 unwind label %773

629:                                              ; preds = %624
  %630 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEEixEOS5_(ptr noundef nonnull align 8 dereferenceable(48) %628, ptr noundef nonnull align 8 dereferenceable(32) %55)
          to label %631 unwind label %777

631:                                              ; preds = %629
  %632 = load i32, ptr %630, align 4, !tbaa !67
  invoke void @_ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEj(ptr noundef nonnull align 4 dereferenceable(132) %625, ptr noundef nonnull align 4 dereferenceable(80) %627, i32 noundef %632)
          to label %633 unwind label %777

633:                                              ; preds = %631
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %56) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %56) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %55) #6
  %634 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 7
  %635 = load ptr, ptr %7, align 8, !tbaa !5
  %636 = getelementptr inbounds %struct.scene_structure, ptr %635, i32 0, i32 0
  %637 = load ptr, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %57) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %58) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %57, ptr noundef @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %58)
          to label %638 unwind label %782

638:                                              ; preds = %633
  %639 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEEixEOS5_(ptr noundef nonnull align 8 dereferenceable(48) %637, ptr noundef nonnull align 8 dereferenceable(32) %57)
          to label %640 unwind label %786

640:                                              ; preds = %638
  %641 = load i32, ptr %639, align 4, !tbaa !67
  invoke void @_ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEj(ptr noundef nonnull align 4 dereferenceable(132) %634, ptr noundef nonnull align 4 dereferenceable(80) %636, i32 noundef %641)
          to label %642 unwind label %786

642:                                              ; preds = %640
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %57) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr %59) #6
  call void @_ZN3vcl12buffer_stackIfLm3EEC1Efff(ptr noundef nonnull align 4 dereferenceable(12) %59, float noundef -6.000000e+00, float noundef -6.000000e+00, float noundef 0.000000e+00)
  %643 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 9
  %644 = getelementptr inbounds %"struct.vcl::mesh_drawable", ptr %643, i32 0, i32 1
  %645 = getelementptr inbounds %"struct.vcl::mesh_drawable_uniform", ptr %644, i32 0, i32 0
  %646 = getelementptr inbounds %"struct.vcl::affine_transform", ptr %645, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %646, ptr align 4 %59, i64 12, i1 false), !tbaa.struct !77
  call void @llvm.lifetime.end.p0(i64 12, ptr %59) #6
  %647 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 9
  %648 = load ptr, ptr %7, align 8, !tbaa !5
  %649 = getelementptr inbounds %struct.scene_structure, ptr %648, i32 0, i32 0
  %650 = load ptr, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %60) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %61) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %61) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %60, ptr noundef @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %61)
          to label %651 unwind label %791

651:                                              ; preds = %642
  %652 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEEixEOS5_(ptr noundef nonnull align 8 dereferenceable(48) %650, ptr noundef nonnull align 8 dereferenceable(32) %60)
          to label %653 unwind label %795

653:                                              ; preds = %651
  %654 = load i32, ptr %652, align 4, !tbaa !67
  invoke void @_ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEj(ptr noundef nonnull align 4 dereferenceable(132) %647, ptr noundef nonnull align 4 dereferenceable(80) %649, i32 noundef %654)
          to label %655 unwind label %795

655:                                              ; preds = %653
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %61) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %61) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %60) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr %62) #6
  call void @_ZN3vcl12buffer_stackIfLm3EEC1Efff(ptr noundef nonnull align 4 dereferenceable(12) %62, float noundef -5.000000e+00, float noundef -6.000000e+00, float noundef -1.000000e+00)
  %656 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 9
  %657 = getelementptr inbounds %"struct.vcl::mesh_drawable", ptr %656, i32 0, i32 1
  %658 = getelementptr inbounds %"struct.vcl::mesh_drawable_uniform", ptr %657, i32 0, i32 0
  %659 = getelementptr inbounds %"struct.vcl::affine_transform", ptr %658, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %659, ptr align 4 %62, i64 12, i1 false), !tbaa.struct !77
  call void @llvm.lifetime.end.p0(i64 12, ptr %62) #6
  %660 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 9
  %661 = load ptr, ptr %7, align 8, !tbaa !5
  %662 = getelementptr inbounds %struct.scene_structure, ptr %661, i32 0, i32 0
  %663 = load ptr, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %63) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %64) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %64) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %63, ptr noundef @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %64)
          to label %664 unwind label %800

664:                                              ; preds = %655
  %665 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEEixEOS5_(ptr noundef nonnull align 8 dereferenceable(48) %663, ptr noundef nonnull align 8 dereferenceable(32) %63)
          to label %666 unwind label %804

666:                                              ; preds = %664
  %667 = load i32, ptr %665, align 4, !tbaa !67
  invoke void @_ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEj(ptr noundef nonnull align 4 dereferenceable(132) %660, ptr noundef nonnull align 4 dereferenceable(80) %662, i32 noundef %667)
          to label %668 unwind label %804

668:                                              ; preds = %666
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %64) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %64) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %63) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr %65) #6
  call void @_ZN3vcl12buffer_stackIfLm3EEC1Efff(ptr noundef nonnull align 4 dereferenceable(12) %65, float noundef -6.000000e+00, float noundef 0xC019333340000000, float noundef 0.000000e+00)
  %669 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 9
  %670 = getelementptr inbounds %"struct.vcl::mesh_drawable", ptr %669, i32 0, i32 1
  %671 = getelementptr inbounds %"struct.vcl::mesh_drawable_uniform", ptr %670, i32 0, i32 0
  %672 = getelementptr inbounds %"struct.vcl::affine_transform", ptr %671, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %672, ptr align 4 %65, i64 12, i1 false), !tbaa.struct !77
  call void @llvm.lifetime.end.p0(i64 12, ptr %65) #6
  %673 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 9
  %674 = load ptr, ptr %7, align 8, !tbaa !5
  %675 = getelementptr inbounds %struct.scene_structure, ptr %674, i32 0, i32 0
  %676 = load ptr, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %66) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %67) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %67) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %66, ptr noundef @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %67)
          to label %677 unwind label %809

677:                                              ; preds = %668
  %678 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEEixEOS5_(ptr noundef nonnull align 8 dereferenceable(48) %676, ptr noundef nonnull align 8 dereferenceable(32) %66)
          to label %679 unwind label %813

679:                                              ; preds = %677
  %680 = load i32, ptr %678, align 4, !tbaa !67
  invoke void @_ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEj(ptr noundef nonnull align 4 dereferenceable(132) %673, ptr noundef nonnull align 4 dereferenceable(80) %675, i32 noundef %680)
          to label %681 unwind label %813

681:                                              ; preds = %679
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %67) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %67) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %66) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr %68) #6
  call void @_ZN3vcl12buffer_stackIfLm3EEC1Efff(ptr noundef nonnull align 4 dereferenceable(12) %68, float noundef -5.000000e+00, float noundef 0xC019333340000000, float noundef -1.000000e+00)
  %682 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 9
  %683 = getelementptr inbounds %"struct.vcl::mesh_drawable", ptr %682, i32 0, i32 1
  %684 = getelementptr inbounds %"struct.vcl::mesh_drawable_uniform", ptr %683, i32 0, i32 0
  %685 = getelementptr inbounds %"struct.vcl::affine_transform", ptr %684, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %685, ptr align 4 %68, i64 12, i1 false), !tbaa.struct !77
  call void @llvm.lifetime.end.p0(i64 12, ptr %68) #6
  %686 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 9
  %687 = load ptr, ptr %7, align 8, !tbaa !5
  %688 = getelementptr inbounds %struct.scene_structure, ptr %687, i32 0, i32 0
  %689 = load ptr, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %69) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %70) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %70) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %69, ptr noundef @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %70)
          to label %690 unwind label %818

690:                                              ; preds = %681
  %691 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEEixEOS5_(ptr noundef nonnull align 8 dereferenceable(48) %689, ptr noundef nonnull align 8 dereferenceable(32) %69)
          to label %692 unwind label %822

692:                                              ; preds = %690
  %693 = load i32, ptr %691, align 4, !tbaa !67
  invoke void @_ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEj(ptr noundef nonnull align 4 dereferenceable(132) %686, ptr noundef nonnull align 4 dereferenceable(80) %688, i32 noundef %693)
          to label %694 unwind label %822

694:                                              ; preds = %692
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %70) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %70) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %69) #6
  %695 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 8
  %696 = load ptr, ptr %7, align 8, !tbaa !5
  %697 = getelementptr inbounds %struct.scene_structure, ptr %696, i32 0, i32 0
  %698 = load ptr, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %71) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %72) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %72) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %71, ptr noundef @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %72)
          to label %699 unwind label %827

699:                                              ; preds = %694
  %700 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEEixEOS5_(ptr noundef nonnull align 8 dereferenceable(48) %698, ptr noundef nonnull align 8 dereferenceable(32) %71)
          to label %701 unwind label %831

701:                                              ; preds = %699
  %702 = load i32, ptr %700, align 4, !tbaa !67
  invoke void @_ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEj(ptr noundef nonnull align 4 dereferenceable(132) %695, ptr noundef nonnull align 4 dereferenceable(80) %697, i32 noundef %702)
          to label %703 unwind label %831

703:                                              ; preds = %701
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %72) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %72) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %71) #6
  %704 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 25
  %705 = load ptr, ptr %7, align 8, !tbaa !5
  %706 = getelementptr inbounds %struct.scene_structure, ptr %705, i32 0, i32 0
  %707 = load ptr, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %73) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %74) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %74) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %73, ptr noundef @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %74)
          to label %708 unwind label %836

708:                                              ; preds = %703
  %709 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEEixEOS5_(ptr noundef nonnull align 8 dereferenceable(48) %707, ptr noundef nonnull align 8 dereferenceable(32) %73)
          to label %710 unwind label %840

710:                                              ; preds = %708
  %711 = load i32, ptr %709, align 4, !tbaa !67
  invoke void @_ZN3vcl4drawERKNS_23hierarchy_mesh_drawableERKNS_12camera_sceneEi(ptr noundef nonnull align 8 dereferenceable(72) %704, ptr noundef nonnull align 4 dereferenceable(80) %706, i32 noundef %711)
          to label %712 unwind label %840

712:                                              ; preds = %710
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %73) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %74) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %74) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %73) #6
  %713 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 26
  %714 = load ptr, ptr %7, align 8, !tbaa !5
  %715 = getelementptr inbounds %struct.scene_structure, ptr %714, i32 0, i32 0
  %716 = load ptr, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %75) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %76) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %76) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %75, ptr noundef @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %76)
          to label %717 unwind label %845

717:                                              ; preds = %712
  %718 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEEixEOS5_(ptr noundef nonnull align 8 dereferenceable(48) %716, ptr noundef nonnull align 8 dereferenceable(32) %75)
          to label %719 unwind label %849

719:                                              ; preds = %717
  %720 = load i32, ptr %718, align 4, !tbaa !67
  invoke void @_ZN3vcl4drawERKNS_23hierarchy_mesh_drawableERKNS_12camera_sceneEi(ptr noundef nonnull align 8 dereferenceable(72) %713, ptr noundef nonnull align 4 dereferenceable(80) %715, i32 noundef %720)
          to label %721 unwind label %849

721:                                              ; preds = %719
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %76) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %76) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %75) #6
  %722 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 10
  %723 = load ptr, ptr %7, align 8, !tbaa !5
  %724 = getelementptr inbounds %struct.scene_structure, ptr %723, i32 0, i32 0
  %725 = load ptr, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %77) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %78) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %78) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %77, ptr noundef @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %78)
          to label %726 unwind label %854

726:                                              ; preds = %721
  %727 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEEixEOS5_(ptr noundef nonnull align 8 dereferenceable(48) %725, ptr noundef nonnull align 8 dereferenceable(32) %77)
          to label %728 unwind label %858

728:                                              ; preds = %726
  %729 = load i32, ptr %727, align 4, !tbaa !67
  invoke void @_ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEj(ptr noundef nonnull align 4 dereferenceable(132) %722, ptr noundef nonnull align 4 dereferenceable(80) %724, i32 noundef %729)
          to label %730 unwind label %858

730:                                              ; preds = %728
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %77) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %78) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %78) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %77) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #6
  store i32 0, ptr %79, align 4, !tbaa !67
  br label %731

731:                                              ; preds = %881, %730
  %732 = load i32, ptr %79, align 4, !tbaa !67
  %733 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 13
  %734 = load i32, ptr %733, align 8, !tbaa !80
  %735 = icmp slt i32 %732, %734
  br i1 %735, label %863, label %736

736:                                              ; preds = %731
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #6
  br label %893

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

741:                                              ; preds = %585, %583
  %742 = landingpad { ptr, i32 }
          cleanup
  %743 = extractvalue { ptr, i32 } %742, 0
  store ptr %743, ptr %16, align 8
  %744 = extractvalue { ptr, i32 } %742, 1
  store i32 %744, ptr %17, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #6
  br label %745

745:                                              ; preds = %741, %737
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %47) #6
  br label %933

746:                                              ; preds = %587
  %747 = landingpad { ptr, i32 }
          cleanup
  %748 = extractvalue { ptr, i32 } %747, 0
  store ptr %748, ptr %16, align 8
  %749 = extractvalue { ptr, i32 } %747, 1
  store i32 %749, ptr %17, align 4
  br label %754

750:                                              ; preds = %594, %592
  %751 = landingpad { ptr, i32 }
          cleanup
  %752 = extractvalue { ptr, i32 } %751, 0
  store ptr %752, ptr %16, align 8
  %753 = extractvalue { ptr, i32 } %751, 1
  store i32 %753, ptr %17, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #6
  br label %754

754:                                              ; preds = %750, %746
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %50) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %49) #6
  br label %933

755:                                              ; preds = %596
  %756 = landingpad { ptr, i32 }
          cleanup
  %757 = extractvalue { ptr, i32 } %756, 0
  store ptr %757, ptr %16, align 8
  %758 = extractvalue { ptr, i32 } %756, 1
  store i32 %758, ptr %17, align 4
  br label %763

759:                                              ; preds = %603, %601
  %760 = landingpad { ptr, i32 }
          cleanup
  %761 = extractvalue { ptr, i32 } %760, 0
  store ptr %761, ptr %16, align 8
  %762 = extractvalue { ptr, i32 } %760, 1
  store i32 %762, ptr %17, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #6
  br label %763

763:                                              ; preds = %759, %755
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %51) #6
  br label %933

764:                                              ; preds = %614
  %765 = landingpad { ptr, i32 }
          cleanup
  %766 = extractvalue { ptr, i32 } %765, 0
  store ptr %766, ptr %16, align 8
  %767 = extractvalue { ptr, i32 } %765, 1
  store i32 %767, ptr %17, align 4
  br label %772

768:                                              ; preds = %622, %620
  %769 = landingpad { ptr, i32 }
          cleanup
  %770 = extractvalue { ptr, i32 } %769, 0
  store ptr %770, ptr %16, align 8
  %771 = extractvalue { ptr, i32 } %769, 1
  store i32 %771, ptr %17, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #6
  br label %772

772:                                              ; preds = %768, %764
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %54) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %53) #6
  br label %933

773:                                              ; preds = %624
  %774 = landingpad { ptr, i32 }
          cleanup
  %775 = extractvalue { ptr, i32 } %774, 0
  store ptr %775, ptr %16, align 8
  %776 = extractvalue { ptr, i32 } %774, 1
  store i32 %776, ptr %17, align 4
  br label %781

777:                                              ; preds = %631, %629
  %778 = landingpad { ptr, i32 }
          cleanup
  %779 = extractvalue { ptr, i32 } %778, 0
  store ptr %779, ptr %16, align 8
  %780 = extractvalue { ptr, i32 } %778, 1
  store i32 %780, ptr %17, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #6
  br label %781

781:                                              ; preds = %777, %773
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %56) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %56) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %55) #6
  br label %933

782:                                              ; preds = %633
  %783 = landingpad { ptr, i32 }
          cleanup
  %784 = extractvalue { ptr, i32 } %783, 0
  store ptr %784, ptr %16, align 8
  %785 = extractvalue { ptr, i32 } %783, 1
  store i32 %785, ptr %17, align 4
  br label %790

786:                                              ; preds = %640, %638
  %787 = landingpad { ptr, i32 }
          cleanup
  %788 = extractvalue { ptr, i32 } %787, 0
  store ptr %788, ptr %16, align 8
  %789 = extractvalue { ptr, i32 } %787, 1
  store i32 %789, ptr %17, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #6
  br label %790

790:                                              ; preds = %786, %782
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %57) #6
  br label %933

791:                                              ; preds = %642
  %792 = landingpad { ptr, i32 }
          cleanup
  %793 = extractvalue { ptr, i32 } %792, 0
  store ptr %793, ptr %16, align 8
  %794 = extractvalue { ptr, i32 } %792, 1
  store i32 %794, ptr %17, align 4
  br label %799

795:                                              ; preds = %653, %651
  %796 = landingpad { ptr, i32 }
          cleanup
  %797 = extractvalue { ptr, i32 } %796, 0
  store ptr %797, ptr %16, align 8
  %798 = extractvalue { ptr, i32 } %796, 1
  store i32 %798, ptr %17, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #6
  br label %799

799:                                              ; preds = %795, %791
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %61) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %61) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %60) #6
  br label %933

800:                                              ; preds = %655
  %801 = landingpad { ptr, i32 }
          cleanup
  %802 = extractvalue { ptr, i32 } %801, 0
  store ptr %802, ptr %16, align 8
  %803 = extractvalue { ptr, i32 } %801, 1
  store i32 %803, ptr %17, align 4
  br label %808

804:                                              ; preds = %666, %664
  %805 = landingpad { ptr, i32 }
          cleanup
  %806 = extractvalue { ptr, i32 } %805, 0
  store ptr %806, ptr %16, align 8
  %807 = extractvalue { ptr, i32 } %805, 1
  store i32 %807, ptr %17, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #6
  br label %808

808:                                              ; preds = %804, %800
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %64) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %64) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %63) #6
  br label %933

809:                                              ; preds = %668
  %810 = landingpad { ptr, i32 }
          cleanup
  %811 = extractvalue { ptr, i32 } %810, 0
  store ptr %811, ptr %16, align 8
  %812 = extractvalue { ptr, i32 } %810, 1
  store i32 %812, ptr %17, align 4
  br label %817

813:                                              ; preds = %679, %677
  %814 = landingpad { ptr, i32 }
          cleanup
  %815 = extractvalue { ptr, i32 } %814, 0
  store ptr %815, ptr %16, align 8
  %816 = extractvalue { ptr, i32 } %814, 1
  store i32 %816, ptr %17, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #6
  br label %817

817:                                              ; preds = %813, %809
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %67) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %67) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %66) #6
  br label %933

818:                                              ; preds = %681
  %819 = landingpad { ptr, i32 }
          cleanup
  %820 = extractvalue { ptr, i32 } %819, 0
  store ptr %820, ptr %16, align 8
  %821 = extractvalue { ptr, i32 } %819, 1
  store i32 %821, ptr %17, align 4
  br label %826

822:                                              ; preds = %692, %690
  %823 = landingpad { ptr, i32 }
          cleanup
  %824 = extractvalue { ptr, i32 } %823, 0
  store ptr %824, ptr %16, align 8
  %825 = extractvalue { ptr, i32 } %823, 1
  store i32 %825, ptr %17, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #6
  br label %826

826:                                              ; preds = %822, %818
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %70) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %70) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %69) #6
  br label %933

827:                                              ; preds = %694
  %828 = landingpad { ptr, i32 }
          cleanup
  %829 = extractvalue { ptr, i32 } %828, 0
  store ptr %829, ptr %16, align 8
  %830 = extractvalue { ptr, i32 } %828, 1
  store i32 %830, ptr %17, align 4
  br label %835

831:                                              ; preds = %701, %699
  %832 = landingpad { ptr, i32 }
          cleanup
  %833 = extractvalue { ptr, i32 } %832, 0
  store ptr %833, ptr %16, align 8
  %834 = extractvalue { ptr, i32 } %832, 1
  store i32 %834, ptr %17, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #6
  br label %835

835:                                              ; preds = %831, %827
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %72) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %72) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %71) #6
  br label %933

836:                                              ; preds = %703
  %837 = landingpad { ptr, i32 }
          cleanup
  %838 = extractvalue { ptr, i32 } %837, 0
  store ptr %838, ptr %16, align 8
  %839 = extractvalue { ptr, i32 } %837, 1
  store i32 %839, ptr %17, align 4
  br label %844

840:                                              ; preds = %710, %708
  %841 = landingpad { ptr, i32 }
          cleanup
  %842 = extractvalue { ptr, i32 } %841, 0
  store ptr %842, ptr %16, align 8
  %843 = extractvalue { ptr, i32 } %841, 1
  store i32 %843, ptr %17, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %73) #6
  br label %844

844:                                              ; preds = %840, %836
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %74) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %74) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %73) #6
  br label %933

845:                                              ; preds = %712
  %846 = landingpad { ptr, i32 }
          cleanup
  %847 = extractvalue { ptr, i32 } %846, 0
  store ptr %847, ptr %16, align 8
  %848 = extractvalue { ptr, i32 } %846, 1
  store i32 %848, ptr %17, align 4
  br label %853

849:                                              ; preds = %719, %717
  %850 = landingpad { ptr, i32 }
          cleanup
  %851 = extractvalue { ptr, i32 } %850, 0
  store ptr %851, ptr %16, align 8
  %852 = extractvalue { ptr, i32 } %850, 1
  store i32 %852, ptr %17, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #6
  br label %853

853:                                              ; preds = %849, %845
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %76) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %76) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %75) #6
  br label %933

854:                                              ; preds = %721
  %855 = landingpad { ptr, i32 }
          cleanup
  %856 = extractvalue { ptr, i32 } %855, 0
  store ptr %856, ptr %16, align 8
  %857 = extractvalue { ptr, i32 } %855, 1
  store i32 %857, ptr %17, align 4
  br label %862

858:                                              ; preds = %728, %726
  %859 = landingpad { ptr, i32 }
          cleanup
  %860 = extractvalue { ptr, i32 } %859, 0
  store ptr %860, ptr %16, align 8
  %861 = extractvalue { ptr, i32 } %859, 1
  store i32 %861, ptr %17, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %77) #6
  br label %862

862:                                              ; preds = %858, %854
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %78) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %78) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %77) #6
  br label %933

863:                                              ; preds = %731
  %864 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 2
  %865 = load i32, ptr %79, align 4, !tbaa !67
  %866 = sext i32 %865 to i64
  %867 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3vcl12buffer_stackIfLm3EEESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %864, i64 noundef %866) #6
  %868 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 3
  %869 = getelementptr inbounds %"struct.vcl::mesh_drawable", ptr %868, i32 0, i32 1
  %870 = getelementptr inbounds %"struct.vcl::mesh_drawable_uniform", ptr %869, i32 0, i32 0
  %871 = getelementptr inbounds %"struct.vcl::affine_transform", ptr %870, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %871, ptr align 4 %867, i64 12, i1 false), !tbaa.struct !77
  %872 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 3
  %873 = load ptr, ptr %7, align 8, !tbaa !5
  %874 = getelementptr inbounds %struct.scene_structure, ptr %873, i32 0, i32 0
  %875 = load ptr, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %80) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %81) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %81) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %80, ptr noundef @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %81)
          to label %876 unwind label %884

876:                                              ; preds = %863
  %877 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEEixEOS5_(ptr noundef nonnull align 8 dereferenceable(48) %875, ptr noundef nonnull align 8 dereferenceable(32) %80)
          to label %878 unwind label %888

878:                                              ; preds = %876
  %879 = load i32, ptr %877, align 4, !tbaa !67
  invoke void @_ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEj(ptr noundef nonnull align 4 dereferenceable(132) %872, ptr noundef nonnull align 4 dereferenceable(80) %874, i32 noundef %879)
          to label %880 unwind label %888

880:                                              ; preds = %878
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %80) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %81) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %81) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %80) #6
  br label %881

881:                                              ; preds = %880
  %882 = load i32, ptr %79, align 4, !tbaa !67
  %883 = add nsw i32 %882, 1
  store i32 %883, ptr %79, align 4, !tbaa !67
  br label %731, !llvm.loop !90

884:                                              ; preds = %863
  %885 = landingpad { ptr, i32 }
          cleanup
  %886 = extractvalue { ptr, i32 } %885, 0
  store ptr %886, ptr %16, align 8
  %887 = extractvalue { ptr, i32 } %885, 1
  store i32 %887, ptr %17, align 4
  br label %892

888:                                              ; preds = %878, %876
  %889 = landingpad { ptr, i32 }
          cleanup
  %890 = extractvalue { ptr, i32 } %889, 0
  store ptr %890, ptr %16, align 8
  %891 = extractvalue { ptr, i32 } %889, 1
  store i32 %891, ptr %17, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %80) #6
  br label %892

892:                                              ; preds = %888, %884
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %81) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %81) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %80) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #6
  br label %933

893:                                              ; preds = %736
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #6
  store i32 0, ptr %82, align 4, !tbaa !67
  br label %894

894:                                              ; preds = %918, %893
  %895 = load i32, ptr %82, align 4, !tbaa !67
  %896 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 14
  %897 = load i32, ptr %896, align 4, !tbaa !86
  %898 = icmp slt i32 %895, %897
  br i1 %898, label %900, label %899

899:                                              ; preds = %894
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #6
  br label %930

900:                                              ; preds = %894
  %901 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 5
  %902 = load i32, ptr %82, align 4, !tbaa !67
  %903 = sext i32 %902 to i64
  %904 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3vcl12buffer_stackIfLm3EEESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %901, i64 noundef %903) #6
  %905 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 6
  %906 = getelementptr inbounds %"struct.vcl::mesh_drawable", ptr %905, i32 0, i32 1
  %907 = getelementptr inbounds %"struct.vcl::mesh_drawable_uniform", ptr %906, i32 0, i32 0
  %908 = getelementptr inbounds %"struct.vcl::affine_transform", ptr %907, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %908, ptr align 4 %904, i64 12, i1 false), !tbaa.struct !77
  %909 = getelementptr inbounds %struct.scene_model, ptr %85, i32 0, i32 6
  %910 = load ptr, ptr %7, align 8, !tbaa !5
  %911 = getelementptr inbounds %struct.scene_structure, ptr %910, i32 0, i32 0
  %912 = load ptr, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %83) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %84) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %84) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %83, ptr noundef @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %84)
          to label %913 unwind label %921

913:                                              ; preds = %900
  %914 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEEixEOS5_(ptr noundef nonnull align 8 dereferenceable(48) %912, ptr noundef nonnull align 8 dereferenceable(32) %83)
          to label %915 unwind label %925

915:                                              ; preds = %913
  %916 = load i32, ptr %914, align 4, !tbaa !67
  invoke void @_ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEj(ptr noundef nonnull align 4 dereferenceable(132) %909, ptr noundef nonnull align 4 dereferenceable(80) %911, i32 noundef %916)
          to label %917 unwind label %925

917:                                              ; preds = %915
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %83) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %84) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %84) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %83) #6
  br label %918

918:                                              ; preds = %917
  %919 = load i32, ptr %82, align 4, !tbaa !67
  %920 = add nsw i32 %919, 1
  store i32 %920, ptr %82, align 4, !tbaa !67
  br label %894, !llvm.loop !91

921:                                              ; preds = %900
  %922 = landingpad { ptr, i32 }
          cleanup
  %923 = extractvalue { ptr, i32 } %922, 0
  store ptr %923, ptr %16, align 8
  %924 = extractvalue { ptr, i32 } %922, 1
  store i32 %924, ptr %17, align 4
  br label %929

925:                                              ; preds = %915, %913
  %926 = landingpad { ptr, i32 }
          cleanup
  %927 = extractvalue { ptr, i32 } %926, 0
  store ptr %927, ptr %16, align 8
  %928 = extractvalue { ptr, i32 } %926, 1
  store i32 %928, ptr %17, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %83) #6
  br label %929

929:                                              ; preds = %925, %921
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %84) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %84) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %83) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #6
  br label %933

930:                                              ; preds = %899
  br label %931

931:                                              ; preds = %930, %605
  %932 = load ptr, ptr @glad_glDepthMask, align 8, !tbaa !5
  call void %932(i8 noundef zeroext 1)
  call void @llvm.lifetime.end.p0(i64 12, ptr %45) #6
  call void @llvm.lifetime.end.p0(i64 36, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #6
  ret void

933:                                              ; preds = %929, %892, %862, %853, %844, %835, %826, %817, %808, %799, %790, %781, %772, %763, %754, %745
  call void @llvm.lifetime.end.p0(i64 12, ptr %45) #6
  br label %934

934:                                              ; preds = %933, %567, %537, %528, %519, %510, %501, %387, %357
  call void @llvm.lifetime.end.p0(i64 36, ptr %21) #6
  br label %935

935:                                              ; preds = %934, %348, %339
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #6
  br label %936

936:                                              ; preds = %935
  %937 = load ptr, ptr %16, align 8
  %938 = load i32, ptr %17, align 4
  %939 = insertvalue { ptr, i32 } poison, ptr %937, 0
  %940 = insertvalue { ptr, i32 } %939, i32 %938, 1
  resume { ptr, i32 } %940
}

declare noundef float @_ZN3vcl14timer_interval6updateEv(ptr noundef nonnull align 4 dereferenceable(24)) #4

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

declare void @_ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEj(ptr noundef nonnull align 4 dereferenceable(132), ptr noundef nonnull align 4 dereferenceable(80), i32 noundef) #4

declare void @_ZN3vcl29rotation_from_axis_angle_mat3ERKNS_12buffer_stackIfLm3EEEf(ptr dead_on_unwind writable sret(%"struct.vcl::mat") align 4, ptr noundef nonnull align 4 dereferenceable(12), float noundef) #4

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11scene_model21set_creature_rotationEf(ptr noundef nonnull align 8 dereferenceable(1516), float noundef) #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { <2 x float>, float } @_ZN11scene_model18set_plane_rotationEf(ptr noundef nonnull align 8 dereferenceable(1516), float noundef) #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11scene_model20set_missle_animationERKN3vcl12buffer_stackIfLm3EEE(ptr noundef nonnull align 8 dereferenceable(1516), ptr noundef nonnull align 4 dereferenceable(12)) #5 align 2

declare void @_ZN3vcl4drawERKNS_23hierarchy_mesh_drawableERKNS_12camera_sceneEi(ptr noundef nonnull align 8 dereferenceable(72), ptr noundef nonnull align 4 dereferenceable(80), i32 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 nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { mustprogress 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 #6 = { 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 = !{!"float", !7, i64 0}
!11 = !{!12, !10, i64 0}
!12 = !{!"_ZTSN3vcl11timer_basicE", !10, i64 0, !10, i64 4, !13, i64 8, !10, i64 12}
!13 = !{!"bool", !7, i64 0}
!14 = !{!15, !10, i64 1408}
!15 = !{!"_ZTS11scene_model", !16, i64 0, !16, i64 132, !24, i64 264, !16, i64 288, !24, i64 424, !16, i64 448, !16, i64 580, !16, i64 712, !16, i64 844, !16, i64 976, !28, i64 1112, !18, i64 1136, !18, i64 1140, !18, i64 1144, !18, i64 1148, !18, i64 1152, !18, i64 1156, !18, i64 1160, !18, i64 1164, !18, i64 1168, !18, i64 1172, !34, i64 1176, !34, i64 1200, !39, i64 1224, !39, i64 1296, !52, i64 1368, !53, i64 1388, !53, i64 1412, !53, i64 1436, !53, i64 1460, !54, i64 1484, !13, i64 1512, !13, i64 1513, !13, i64 1514, !13, i64 1515}
!16 = !{!"_ZTSN3vcl13mesh_drawableE", !17, i64 0, !19, i64 28, !18, i64 124, !18, i64 128}
!17 = !{!"_ZTSN3vcl22mesh_drawable_gpu_dataE", !18, i64 0, !18, i64 4, !18, i64 8, !18, i64 12, !18, i64 16, !18, i64 20, !18, i64 24}
!18 = !{!"int", !7, i64 0}
!19 = !{!"_ZTSN3vcl21mesh_drawable_uniformE", !20, i64 0, !21, i64 64, !23, i64 76, !10, i64 92}
!20 = !{!"_ZTSN3vcl16affine_transformE", !21, i64 0, !22, i64 12, !10, i64 48, !21, i64 52}
!21 = !{!"_ZTSN3vcl12buffer_stackIfLm3EEE", !10, i64 0, !10, i64 4, !10, i64 8}
!22 = !{!"_ZTSN3vcl3matILm3ELm3EEE", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32}
!23 = !{!"_ZTSN3vcl12shading_meshE", !10, i64 0, !10, i64 4, !10, i64 8, !18, 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", !13, i64 0, !13, i64 1, !13, i64 2, !10, i64 4, !10, i64 8, !18, i64 12, !10, i64 16}
!53 = !{!"_ZTSN3vcl14timer_intervalE", !12, i64 0, !10, i64 16, !10, i64 20}
!54 = !{!"_ZTSN3vcl11timer_eventE", !12, i64 0, !13, i64 16, !10, i64 20, !10, i64 24}
!55 = !{!15, !13, i64 1514}
!56 = !{i8 0, i8 2}
!57 = !{}
!58 = !{!15, !13, i64 1515}
!59 = !{!15, !10, i64 1404}
!60 = !{!15, !10, i64 1376}
!61 = !{!15, !10, i64 1432}
!62 = !{!15, !13, i64 1512}
!63 = !{!15, !13, i64 1513}
!64 = !{!15, !10, i64 1428}
!65 = !{!15, !10, i64 1372}
!66 = !{!15, !18, i64 1144}
!67 = !{!18, !18, i64 0}
!68 = !{!69, !18, i64 356}
!69 = !{!"_ZTS15scene_structure", !70, i64 0, !74, i64 80, !16, i64 92, !16, i64 224, !18, i64 356}
!70 = !{!"_ZTSN3vcl12camera_sceneE", !10, i64 0, !21, i64 4, !22, i64 16, !71, i64 52, !72, i64 68, !73, i64 72}
!71 = !{!"_ZTSN3vcl21perspective_structureE", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12}
!72 = !{!"_ZTSN3vcl19camera_control_typeE", !7, i64 0}
!73 = !{!"_ZTSN3vcl12buffer_stackIfLm2EEE", !10, i64 0, !10, i64 4}
!74 = !{!"_ZTSN3vcl19camera_control_glfwE", !13, i64 0, !10, i64 4, !10, i64 8}
!75 = !{!15, !18, i64 1164}
!76 = !{!15, !18, i64 1156}
!77 = !{i64 0, i64 4, !9, i64 4, i64 4, !9, i64 8, i64 4, !9}
!78 = !{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, !9, i64 32, i64 4, !9}
!79 = !{!15, !18, i64 1152}
!80 = !{!15, !18, i64 1136}
!81 = distinct !{!81, !82}
!82 = !{!"llvm.loop.mustprogress"}
!83 = !{!15, !18, i64 1168}
!84 = !{!15, !18, i64 1160}
!85 = !{!15, !18, i64 1148}
!86 = !{!15, !18, i64 1140}
!87 = distinct !{!87, !82}
!88 = !{!15, !18, i64 1172}
!89 = !{!15, !13, i64 1368}
!90 = distinct !{!90, !82}
!91 = distinct !{!91, !82}


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

%"class.std::__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::buffer_stack" = type { float, float, float }
%"struct.vcl::mat" = type { float, float, float, float, float, float, float, float, float }

@.str = external hidden unnamed_addr constant [5 x i8], align 1
@glad_glEnable = external local_unnamed_addr global ptr, align 8
@glad_glBindTexture = external local_unnamed_addr global ptr, align 8
@glad_glTexParameteri = external local_unnamed_addr global ptr, align 8
@glad_glPolygonOffset = external local_unnamed_addr global ptr, align 8
@glad_glBlendFunc = external local_unnamed_addr global ptr, align 8
@glad_glDepthMask = external local_unnamed_addr global ptr, align 8
@.str.9 = external hidden unnamed_addr constant [10 x i8], align 1

; 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 nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1

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

; Function Attrs: mustprogress 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 #2 align 2

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11scene_model10frame_drawERSt3mapINSt7__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 #5 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca %"class.std::allocator.21", align 1
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.std::allocator.21", align 1
  %9 = alloca %"struct.vcl::buffer_stack", align 4
  %10 = alloca %"struct.vcl::mat", align 4
  %11 = alloca %"struct.vcl::buffer_stack", align 4
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.std::allocator.21", align 1
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %"class.std::allocator.21", align 1
  %16 = alloca %"struct.vcl::buffer_stack", align 4
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca %"class.std::allocator.21", align 1
  %19 = alloca %"struct.vcl::buffer_stack", align 4
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %"class.std::allocator.21", align 1
  %22 = alloca %"struct.vcl::buffer_stack", align 4
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.std::allocator.21", align 1
  %25 = alloca %"struct.vcl::buffer_stack", align 4
  %26 = alloca %"class.std::__cxx11::basic_string", align 8
  %27 = alloca %"class.std::allocator.21", align 1
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  %29 = alloca %"class.std::allocator.21", align 1
  %30 = alloca %"class.std::__cxx11::basic_string", align 8
  %31 = alloca %"class.std::allocator.21", align 1
  %32 = alloca %"struct.vcl::buffer_stack", align 8
  %33 = alloca %"class.std::__cxx11::basic_string", align 8
  %34 = alloca %"class.std::allocator.21", align 1
  %35 = alloca %"class.std::__cxx11::basic_string", align 8
  %36 = alloca %"class.std::allocator.21", align 1
  %37 = alloca %"class.std::__cxx11::basic_string", align 8
  %38 = alloca %"class.std::allocator.21", align 1
  %39 = alloca %"class.std::__cxx11::basic_string", align 8
  %40 = alloca %"class.std::allocator.21", align 1
  %41 = alloca %"class.std::__cxx11::basic_string", align 8
  %42 = alloca %"class.std::allocator.21", align 1
  %43 = alloca %"class.std::__cxx11::basic_string", align 8
  %44 = alloca %"class.std::allocator.21", align 1
  %45 = alloca %"struct.vcl::buffer_stack", align 4
  %46 = alloca %"class.std::__cxx11::basic_string", align 8
  %47 = alloca %"class.std::allocator.21", align 1
  %48 = alloca %"struct.vcl::buffer_stack", align 4
  %49 = alloca %"class.std::__cxx11::basic_string", align 8
  %50 = alloca %"class.std::allocator.21", align 1
  %51 = alloca %"struct.vcl::buffer_stack", align 4
  %52 = alloca %"class.std::__cxx11::basic_string", align 8
  %53 = alloca %"class.std::allocator.21", align 1
  %54 = alloca %"struct.vcl::buffer_stack", align 4
  %55 = alloca %"class.std::__cxx11::basic_string", align 8
  %56 = alloca %"class.std::allocator.21", align 1
  %57 = alloca %"class.std::__cxx11::basic_string", align 8
  %58 = alloca %"class.std::allocator.21", align 1
  %59 = alloca %"class.std::__cxx11::basic_string", align 8
  %60 = alloca %"class.std::allocator.21", align 1
  %61 = alloca %"class.std::__cxx11::basic_string", align 8
  %62 = alloca %"class.std::allocator.21", align 1
  %63 = alloca %"class.std::__cxx11::basic_string", align 8
  %64 = alloca %"class.std::allocator.21", align 1
  %65 = alloca %"class.std::__cxx11::basic_string", align 8
  %66 = alloca %"class.std::allocator.21", align 1
  %67 = alloca %"class.std::__cxx11::basic_string", align 8
  %68 = alloca %"class.std::allocator.21", align 1
  %69 = getelementptr inbounds i8, ptr %0, i64 1388
  %70 = tail call noundef float @_ZN3vcl14timer_interval6updateEv(ptr noundef nonnull align 4 dereferenceable(24) %69)
  %71 = load float, ptr %69, align 4, !tbaa !5
  %72 = getelementptr inbounds i8, ptr %0, i64 1408
  %73 = load float, ptr %72, align 8, !tbaa !11
  %74 = fadd float %73, -1.000000e+00
  %75 = fcmp ult float %71, %74
  br i1 %75, label %91, label %76

76:                                               ; preds = %4
  %77 = getelementptr inbounds i8, ptr %0, i64 1514
  %78 = load i8, ptr %77, align 2, !tbaa !53, !range !54, !noundef !55
  %79 = trunc nuw i8 %78 to i1
  br i1 %79, label %84, label %80

80:                                               ; preds = %76
  %81 = getelementptr inbounds i8, ptr %0, i64 1515
  %82 = load i8, ptr %81, align 1, !tbaa !56, !range !54, !noundef !55
  %83 = trunc nuw i8 %82 to i1
  br i1 %83, label %.thread, label %84

.thread:                                          ; preds = %80
  store i8 1, ptr %77, align 2, !tbaa !53
  store i8 0, ptr %81, align 1, !tbaa !56
  br label %86

84:                                               ; preds = %80, %76
  %85 = trunc nuw i8 %78 to i1
  br i1 %85, label %86, label %91

86:                                               ; preds = %.thread, %84
  %87 = getelementptr inbounds i8, ptr %0, i64 1515
  %88 = load i8, ptr %87, align 1, !tbaa !56, !range !54, !noundef !55
  %89 = trunc nuw i8 %88 to i1
  br i1 %89, label %90, label %91

90:                                               ; preds = %86
  store i8 0, ptr %77, align 2, !tbaa !53
  store i8 0, ptr %87, align 1, !tbaa !56
  br label %91

91:                                               ; preds = %4, %90, %86, %84
  %92 = getelementptr inbounds i8, ptr %0, i64 1404
  %93 = load float, ptr %92, align 4, !tbaa !57
  %94 = fadd float %93, 1.000000e+00
  %95 = fcmp ugt float %71, %94
  br i1 %95, label %98, label %96

96:                                               ; preds = %91
  %97 = getelementptr inbounds i8, ptr %0, i64 1515
  store i8 1, ptr %97, align 1, !tbaa !56
  br label %98

98:                                               ; preds = %96, %91
  %99 = fdiv float %71, 1.000000e+01
  %100 = fcmp oge float %71, %74
  %101 = getelementptr inbounds i8, ptr %0, i64 1514
  %102 = load i8, ptr %101, align 2, !tbaa !53, !range !54, !noundef !55
  %103 = zext i1 %100 to i8
  %.not = icmp eq i8 %102, %103
  %104 = fpext float %99 to double
  %105 = fsub double 1.010000e+01, %104
  %106 = fptrunc double %105 to float
  %narrow.sel = select i1 %.not, float %99, float %106
  %107 = getelementptr inbounds i8, ptr %0, i64 1368
  %108 = getelementptr inbounds i8, ptr %0, i64 1376
  store float %narrow.sel, ptr %108, align 8, !tbaa !58
  %109 = getelementptr inbounds i8, ptr %0, i64 1412
  %110 = tail call noundef float @_ZN3vcl14timer_interval6updateEv(ptr noundef nonnull align 4 dereferenceable(24) %109)
  %111 = load float, ptr %109, align 4, !tbaa !5
  %112 = getelementptr inbounds i8, ptr %0, i64 1432
  %113 = load float, ptr %112, align 8, !tbaa !59
  %114 = fadd float %113, -1.000000e+00
  %115 = fcmp ult float %111, %114
  br i1 %115, label %131, label %116

116:                                              ; preds = %98
  %117 = getelementptr inbounds i8, ptr %0, i64 1512
  %118 = load i8, ptr %117, align 8, !tbaa !60, !range !54, !noundef !55
  %119 = trunc nuw i8 %118 to i1
  br i1 %119, label %124, label %120

120:                                              ; preds = %116
  %121 = getelementptr inbounds i8, ptr %0, i64 1513
  %122 = load i8, ptr %121, align 1, !tbaa !61, !range !54, !noundef !55
  %123 = trunc nuw i8 %122 to i1
  br i1 %123, label %.thread197, label %124

.thread197:                                       ; preds = %120
  store i8 1, ptr %117, align 8, !tbaa !60
  store i8 0, ptr %121, align 1, !tbaa !61
  br label %126

124:                                              ; preds = %120, %116
  %125 = trunc nuw i8 %118 to i1
  br i1 %125, label %126, label %131

126:                                              ; preds = %.thread197, %124
  %127 = getelementptr inbounds i8, ptr %0, i64 1513
  %128 = load i8, ptr %127, align 1, !tbaa !61, !range !54, !noundef !55
  %129 = trunc nuw i8 %128 to i1
  br i1 %129, label %130, label %131

130:                                              ; preds = %126
  store i8 0, ptr %117, align 8, !tbaa !60
  store i8 0, ptr %127, align 1, !tbaa !61
  br label %131

131:                                              ; preds = %98, %130, %126, %124
  %132 = getelementptr inbounds i8, ptr %0, i64 1428
  %133 = load float, ptr %132, align 4, !tbaa !62
  %134 = fadd float %133, 1.000000e+00
  %135 = fcmp ugt float %111, %134
  br i1 %135, label %138, label %136

136:                                              ; preds = %131
  %137 = getelementptr inbounds i8, ptr %0, i64 1513
  store i8 1, ptr %137, align 1, !tbaa !61
  br label %138

138:                                              ; preds = %136, %131
  %139 = fdiv float %111, 2.000000e+02
  %140 = fcmp oge float %111, %114
  %141 = getelementptr inbounds i8, ptr %0, i64 1512
  %142 = load i8, ptr %141, align 8, !tbaa !60, !range !54, !noundef !55
  %143 = zext i1 %140 to i8
  %.not114 = icmp eq i8 %142, %143
  %144 = fsub float 1.500000e+00, %139
  %narrow.sel171 = select i1 %.not114, float %144, float %139
  %145 = getelementptr inbounds i8, ptr %0, i64 1372
  store float %narrow.sel171, ptr %145, align 4, !tbaa !63
  %146 = getelementptr inbounds i8, ptr %0, i64 1436
  %147 = tail call noundef float @_ZN3vcl14timer_interval6updateEv(ptr noundef nonnull align 4 dereferenceable(24) %146)
  %148 = load float, ptr %146, align 4, !tbaa !5
  %149 = getelementptr inbounds i8, ptr %0, i64 1460
  %150 = tail call noundef float @_ZN3vcl14timer_interval6updateEv(ptr noundef nonnull align 4 dereferenceable(24) %149)
  %151 = load float, ptr %149, align 4, !tbaa !5
  tail call void @_ZN11scene_model7set_guiEv(ptr noundef nonnull align 8 dereferenceable(1516) %0)
  %152 = load ptr, ptr @glad_glEnable, align 8, !tbaa !64
  tail call void %152(i32 noundef 32823)
  %153 = load ptr, ptr @glad_glBindTexture, align 8, !tbaa !64
  %154 = getelementptr inbounds i8, ptr %0, i64 1144
  %155 = load i32, ptr %154, align 8, !tbaa !65
  tail call void %153(i32 noundef 3553, i32 noundef %155)
  %156 = load ptr, ptr @glad_glTexParameteri, align 8, !tbaa !64
  tail call void %156(i32 noundef 3553, i32 noundef 10242, i32 noundef 33648)
  %157 = load ptr, ptr @glad_glTexParameteri, align 8, !tbaa !64
  tail call void %157(i32 noundef 3553, i32 noundef 10243, i32 noundef 33648)
  %158 = load ptr, ptr @glad_glPolygonOffset, align 8, !tbaa !64
  tail call void %158(float noundef 1.000000e+00, float noundef 1.000000e+00)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %6) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull @.str, ptr noundef nonnull align 1 dereferenceable(1) %6)
          to label %159 unwind label %208

159:                                              ; preds = %138
  %160 = 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) %5)
          to label %161 unwind label %210

161:                                              ; preds = %159
  %162 = load i32, ptr %160, align 4, !tbaa !66
  invoke void @_ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEj(ptr noundef nonnull align 4 dereferenceable(132) %0, ptr noundef nonnull align 4 dereferenceable(80) %2, i32 noundef %162)
          to label %163 unwind label %210

163:                                              ; preds = %161
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #6
  %164 = load ptr, ptr @glad_glBindTexture, align 8, !tbaa !64
  %165 = getelementptr inbounds i8, ptr %2, i64 356
  %166 = load i32, ptr %165, align 4, !tbaa !67
  call void %164(i32 noundef 3553, i32 noundef %166)
  %167 = load ptr, ptr @glad_glBindTexture, align 8, !tbaa !64
  %168 = getelementptr inbounds i8, ptr %0, i64 1164
  %169 = load i32, ptr %168, align 4, !tbaa !74
  call void %167(i32 noundef 3553, i32 noundef %169)
  %170 = getelementptr inbounds i8, ptr %0, i64 132
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %8) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull @.str, ptr noundef nonnull align 1 dereferenceable(1) %8)
          to label %171 unwind label %213

171:                                              ; preds = %163
  %172 = 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) %7)
          to label %173 unwind label %215

173:                                              ; preds = %171
  %174 = load i32, ptr %172, align 4, !tbaa !66
  invoke void @_ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEj(ptr noundef nonnull align 4 dereferenceable(132) %170, ptr noundef nonnull align 4 dereferenceable(80) %2, i32 noundef %174)
          to label %175 unwind label %215

175:                                              ; preds = %173
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #6
  %176 = load ptr, ptr @glad_glBindTexture, align 8, !tbaa !64
  %177 = load i32, ptr %165, align 4, !tbaa !67
  call void %176(i32 noundef 3553, i32 noundef %177)
  %178 = load ptr, ptr @glad_glBindTexture, align 8, !tbaa !64
  %179 = getelementptr inbounds i8, ptr %0, i64 1156
  %180 = load i32, ptr %179, align 4, !tbaa !75
  call void %178(i32 noundef 3553, i32 noundef %180)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %9) #6
  call void @_ZN3vcl12buffer_stackIfLm3EEC1Efff(ptr noundef nonnull align 4 dereferenceable(12) %9, float noundef -6.000000e+00, float noundef -6.000000e+00, float noundef 0.000000e+00)
  %181 = getelementptr inbounds i8, ptr %0, i64 580
  %182 = getelementptr inbounds i8, ptr %0, i64 608
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(12) %182, ptr noundef nonnull align 4 dereferenceable(12) %9, i64 12, i1 false), !tbaa.struct !76
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %9) #6
  call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %10) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %11) #6
  call void @_ZN3vcl12buffer_stackIfLm3EEC1Efff(ptr noundef nonnull align 4 dereferenceable(12) %11, float noundef 0.000000e+00, float noundef 1.000000e+00, float noundef 0.000000e+00)
  call void @_ZN3vcl29rotation_from_axis_angle_mat3ERKNS_12buffer_stackIfLm3EEEf(ptr dead_on_unwind nonnull writable sret(%"struct.vcl::mat") align 4 %10, ptr noundef nonnull align 4 dereferenceable(12) %11, float noundef 0x3FE0BF25A0000000)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %11) #6
  %183 = getelementptr inbounds i8, ptr %0, i64 620
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %183, ptr noundef nonnull align 4 dereferenceable(36) %10, i64 36, i1 false), !tbaa.struct !78
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %13) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull @.str, ptr noundef nonnull align 1 dereferenceable(1) %13)
          to label %184 unwind label %218

184:                                              ; preds = %175
  %185 = 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) %12)
          to label %186 unwind label %220

186:                                              ; preds = %184
  %187 = load i32, ptr %185, align 4, !tbaa !66
  invoke void @_ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEj(ptr noundef nonnull align 4 dereferenceable(132) %181, ptr noundef nonnull align 4 dereferenceable(80) %2, i32 noundef %187)
          to label %188 unwind label %220

188:                                              ; preds = %186
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #6
  %189 = load ptr, ptr @glad_glBindTexture, align 8, !tbaa !64
  %190 = load i32, ptr %165, align 4, !tbaa !67
  call void %189(i32 noundef 3553, i32 noundef %190)
  %191 = load ptr, ptr @glad_glBindTexture, align 8, !tbaa !64
  %192 = getelementptr inbounds i8, ptr %0, i64 1152
  %193 = load i32, ptr %192, align 8, !tbaa !79
  call void %191(i32 noundef 3553, i32 noundef %193)
  %194 = getelementptr inbounds i8, ptr %0, i64 1136
  %195 = load i32, ptr %194, align 8, !tbaa !80
  %196 = icmp sgt i32 %195, 0
  br i1 %196, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %188
  %197 = getelementptr inbounds i8, ptr %0, i64 264
  %198 = getelementptr inbounds i8, ptr %0, i64 288
  %199 = getelementptr inbounds i8, ptr %0, i64 316
  br label %223

._crit_edge:                                      ; preds = %229, %188
  %200 = load ptr, ptr @glad_glBindTexture, align 8, !tbaa !64
  %201 = load i32, ptr %165, align 4, !tbaa !67
  call void %200(i32 noundef 3553, i32 noundef %201)
  %202 = load ptr, ptr @glad_glBindTexture, align 8, !tbaa !64
  %203 = getelementptr inbounds i8, ptr %0, i64 1168
  %204 = load i32, ptr %203, align 8, !tbaa !81
  call void %202(i32 noundef 3553, i32 noundef %204)
  %205 = getelementptr inbounds i8, ptr %0, i64 844
  %206 = getelementptr inbounds i8, ptr %0, i64 872
  %207 = getelementptr inbounds i8, ptr %0, i64 884
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %207, ptr noundef nonnull align 4 dereferenceable(36) %10, i64 36, i1 false), !tbaa.struct !78
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %16) #6
  call void @_ZN3vcl12buffer_stackIfLm3EEC1Efff(ptr noundef nonnull align 4 dereferenceable(12) %16, float noundef -6.000000e+00, float noundef -6.000000e+00, float noundef 0.000000e+00)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(12) %206, ptr noundef nonnull align 4 dereferenceable(12) %16, i64 12, i1 false), !tbaa.struct !76
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %16) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %18) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull @.str, ptr noundef nonnull align 1 dereferenceable(1) %18)
          to label %238 unwind label %294

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

210:                                              ; preds = %161, %159
  %211 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #6
  br label %212

212:                                              ; preds = %210, %208
  %.pn = phi { ptr, i32 } [ %211, %210 ], [ %209, %208 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #6
  br label %523

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

215:                                              ; preds = %173, %171
  %216 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #6
  br label %217

217:                                              ; preds = %215, %213
  %.pn116 = phi { ptr, i32 } [ %216, %215 ], [ %214, %213 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #6
  br label %523

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

220:                                              ; preds = %186, %184
  %221 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #6
  br label %222

222:                                              ; preds = %220, %218
  %.pn118 = phi { ptr, i32 } [ %221, %220 ], [ %219, %218 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #6
  br label %522

223:                                              ; preds = %.lr.ph, %229
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %229 ]
  %224 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3vcl12buffer_stackIfLm3EEESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %197, i64 noundef %indvars.iv) #6
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %199, ptr noundef nonnull align 4 dereferenceable(12) %224, i64 12, i1 false), !tbaa.struct !76
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %15) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull @.str, ptr noundef nonnull align 1 dereferenceable(1) %15)
          to label %225 unwind label %233

225:                                              ; preds = %223
  %226 = 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) %14)
          to label %227 unwind label %235

227:                                              ; preds = %225
  %228 = load i32, ptr %226, align 4, !tbaa !66
  invoke void @_ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEj(ptr noundef nonnull align 4 dereferenceable(132) %198, ptr noundef nonnull align 4 dereferenceable(80) %2, i32 noundef %228)
          to label %229 unwind label %235

229:                                              ; preds = %227
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #6
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %230 = load i32, ptr %194, align 8, !tbaa !80
  %231 = sext i32 %230 to i64
  %232 = icmp slt i64 %indvars.iv.next, %231
  br i1 %232, label %223, label %._crit_edge, !llvm.loop !82

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

235:                                              ; preds = %227, %225
  %236 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #6
  br label %237

237:                                              ; preds = %235, %233
  %.pn165 = phi { ptr, i32 } [ %236, %235 ], [ %234, %233 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #6
  br label %522

238:                                              ; preds = %._crit_edge
  %239 = 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) %17)
          to label %240 unwind label %296

240:                                              ; preds = %238
  %241 = load i32, ptr %239, align 4, !tbaa !66
  invoke void @_ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEj(ptr noundef nonnull align 4 dereferenceable(132) %205, ptr noundef nonnull align 4 dereferenceable(80) %2, i32 noundef %241)
          to label %242 unwind label %296

242:                                              ; preds = %240
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %19) #6
  call void @_ZN3vcl12buffer_stackIfLm3EEC1Efff(ptr noundef nonnull align 4 dereferenceable(12) %19, float noundef -5.000000e+00, float noundef -6.000000e+00, float noundef -1.000000e+00)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(12) %206, ptr noundef nonnull align 4 dereferenceable(12) %19, i64 12, i1 false), !tbaa.struct !76
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %19) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %20) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %21) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef nonnull @.str, ptr noundef nonnull align 1 dereferenceable(1) %21)
          to label %243 unwind label %299

243:                                              ; preds = %242
  %244 = 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) %20)
          to label %245 unwind label %301

245:                                              ; preds = %243
  %246 = load i32, ptr %244, align 4, !tbaa !66
  invoke void @_ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEj(ptr noundef nonnull align 4 dereferenceable(132) %205, ptr noundef nonnull align 4 dereferenceable(80) %2, i32 noundef %246)
          to label %247 unwind label %301

247:                                              ; preds = %245
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %21) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %22) #6
  call void @_ZN3vcl12buffer_stackIfLm3EEC1Efff(ptr noundef nonnull align 4 dereferenceable(12) %22, float noundef -6.000000e+00, float noundef 0xC019333340000000, float noundef 0.000000e+00)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(12) %206, ptr noundef nonnull align 4 dereferenceable(12) %22, i64 12, i1 false), !tbaa.struct !76
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %22) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %23) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %24) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull @.str, ptr noundef nonnull align 1 dereferenceable(1) %24)
          to label %248 unwind label %304

248:                                              ; preds = %247
  %249 = 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) %23)
          to label %250 unwind label %306

250:                                              ; preds = %248
  %251 = load i32, ptr %249, align 4, !tbaa !66
  invoke void @_ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEj(ptr noundef nonnull align 4 dereferenceable(132) %205, ptr noundef nonnull align 4 dereferenceable(80) %2, i32 noundef %251)
          to label %252 unwind label %306

252:                                              ; preds = %250
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %24) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %25) #6
  call void @_ZN3vcl12buffer_stackIfLm3EEC1Efff(ptr noundef nonnull align 4 dereferenceable(12) %25, float noundef -5.000000e+00, float noundef 0xC019333340000000, float noundef -1.000000e+00)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(12) %206, ptr noundef nonnull align 4 dereferenceable(12) %25, i64 12, i1 false), !tbaa.struct !76
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %25) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %26) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %27) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef nonnull @.str, ptr noundef nonnull align 1 dereferenceable(1) %27)
          to label %253 unwind label %309

253:                                              ; preds = %252
  %254 = 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) %26)
          to label %255 unwind label %311

255:                                              ; preds = %253
  %256 = load i32, ptr %254, align 4, !tbaa !66
  invoke void @_ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEj(ptr noundef nonnull align 4 dereferenceable(132) %205, ptr noundef nonnull align 4 dereferenceable(80) %2, i32 noundef %256)
          to label %257 unwind label %311

257:                                              ; preds = %255
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #6
  %258 = load ptr, ptr @glad_glBindTexture, align 8, !tbaa !64
  %259 = load i32, ptr %165, align 4, !tbaa !67
  call void %258(i32 noundef 3553, i32 noundef %259)
  %260 = load ptr, ptr @glad_glBindTexture, align 8, !tbaa !64
  %261 = getelementptr inbounds i8, ptr %0, i64 1160
  %262 = load i32, ptr %261, align 8, !tbaa !84
  call void %260(i32 noundef 3553, i32 noundef %262)
  %263 = getelementptr inbounds i8, ptr %0, i64 712
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %28) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %29) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef nonnull @.str, ptr noundef nonnull align 1 dereferenceable(1) %29)
          to label %264 unwind label %314

264:                                              ; preds = %257
  %265 = 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) %28)
          to label %266 unwind label %316

266:                                              ; preds = %264
  %267 = load i32, ptr %265, align 4, !tbaa !66
  invoke void @_ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEj(ptr noundef nonnull align 4 dereferenceable(132) %263, ptr noundef nonnull align 4 dereferenceable(80) %2, i32 noundef %267)
          to label %268 unwind label %316

268:                                              ; preds = %266
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %29) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #6
  %269 = load ptr, ptr @glad_glBindTexture, align 8, !tbaa !64
  %270 = load i32, ptr %165, align 4, !tbaa !67
  call void %269(i32 noundef 3553, i32 noundef %270)
  %271 = load ptr, ptr @glad_glEnable, align 8, !tbaa !64
  call void %271(i32 noundef 3042)
  %272 = load ptr, ptr @glad_glBlendFunc, align 8, !tbaa !64
  call void %272(i32 noundef 770, i32 noundef 771)
  %273 = load ptr, ptr @glad_glDepthMask, align 8, !tbaa !64
  call void %273(i8 noundef zeroext 0)
  %274 = load ptr, ptr @glad_glBindTexture, align 8, !tbaa !64
  %275 = getelementptr inbounds i8, ptr %0, i64 1148
  %276 = load i32, ptr %275, align 4, !tbaa !85
  call void %274(i32 noundef 3553, i32 noundef %276)
  %277 = load ptr, ptr @glad_glTexParameteri, align 8, !tbaa !64
  call void %277(i32 noundef 3553, i32 noundef 10242, i32 noundef 33071)
  %278 = load ptr, ptr @glad_glTexParameteri, align 8, !tbaa !64
  call void %278(i32 noundef 3553, i32 noundef 10243, i32 noundef 33071)
  %279 = getelementptr inbounds i8, ptr %2, i64 16
  %280 = getelementptr inbounds i8, ptr %0, i64 448
  %281 = getelementptr inbounds i8, ptr %0, i64 476
  %282 = getelementptr inbounds i8, ptr %0, i64 488
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(36) %282, ptr noundef nonnull align 4 dereferenceable(36) %279, i64 36, i1 false), !tbaa.struct !78
  %283 = getelementptr inbounds i8, ptr %0, i64 1140
  %284 = load i32, ptr %283, align 4, !tbaa !86
  %285 = icmp sgt i32 %284, 0
  br i1 %285, label %.lr.ph180, label %._crit_edge181

.lr.ph180:                                        ; preds = %268
  %286 = getelementptr inbounds i8, ptr %0, i64 424
  br label %319

._crit_edge181:                                   ; preds = %325, %268
  %287 = load ptr, ptr @glad_glBindTexture, align 8, !tbaa !64
  %288 = load i32, ptr %165, align 4, !tbaa !67
  call void %287(i32 noundef 3553, i32 noundef %288)
  call void @_ZN11scene_model14update_terrainEv(ptr noundef nonnull align 8 dereferenceable(1516) %0)
  call void @_ZN11scene_model10update_boxEv(ptr noundef nonnull align 8 dereferenceable(1516) %0)
  call void @_ZN11scene_model11update_fishEv(ptr noundef nonnull align 8 dereferenceable(1516) %0)
  call void @_ZN11scene_model21set_creature_rotationEf(ptr noundef nonnull align 8 dereferenceable(1516) %0, float noundef %148)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %32) #6
  %289 = call { <2 x float>, float } @_ZN11scene_model18set_plane_rotationEf(ptr noundef nonnull align 8 dereferenceable(1516) %0, float noundef %151)
  %.fca.0.extract = extractvalue { <2 x float>, float } %289, 0
  %.fca.1.extract = extractvalue { <2 x float>, float } %289, 1
  store <2 x float> %.fca.0.extract, ptr %32, align 8
  %.sroa.2.0..sroa_idx = getelementptr inbounds i8, ptr %32, i64 8
  store float %.fca.1.extract, ptr %.sroa.2.0..sroa_idx, align 8
  call void @_ZN11scene_model20set_missle_animationERKN3vcl12buffer_stackIfLm3EEE(ptr noundef nonnull align 8 dereferenceable(1516) %0, ptr noundef nonnull align 4 dereferenceable(12) %32)
  %290 = load ptr, ptr @glad_glBindTexture, align 8, !tbaa !64
  %291 = getelementptr inbounds i8, ptr %0, i64 1172
  %292 = load i32, ptr %291, align 4, !tbaa !87
  call void %290(i32 noundef 3553, i32 noundef %292)
  %293 = getelementptr inbounds i8, ptr %0, i64 1224
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %33) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %34) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef nonnull @.str, ptr noundef nonnull align 1 dereferenceable(1) %34)
          to label %334 unwind label %420

294:                                              ; preds = %._crit_edge
  %295 = landingpad { ptr, i32 }
          cleanup
  br label %298

296:                                              ; preds = %240, %238
  %297 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #6
  br label %298

298:                                              ; preds = %296, %294
  %.pn120 = phi { ptr, i32 } [ %297, %296 ], [ %295, %294 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #6
  br label %522

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

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

303:                                              ; preds = %301, %299
  %.pn122 = phi { ptr, i32 } [ %302, %301 ], [ %300, %299 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %21) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #6
  br label %522

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

306:                                              ; preds = %250, %248
  %307 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #6
  br label %308

308:                                              ; preds = %306, %304
  %.pn124 = phi { ptr, i32 } [ %307, %306 ], [ %305, %304 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %24) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #6
  br label %522

309:                                              ; preds = %252
  %310 = landingpad { ptr, i32 }
          cleanup
  br label %313

311:                                              ; preds = %255, %253
  %312 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #6
  br label %313

313:                                              ; preds = %311, %309
  %.pn126 = phi { ptr, i32 } [ %312, %311 ], [ %310, %309 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #6
  br label %522

314:                                              ; preds = %257
  %315 = landingpad { ptr, i32 }
          cleanup
  br label %318

316:                                              ; preds = %266, %264
  %317 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #6
  br label %318

318:                                              ; preds = %316, %314
  %.pn128 = phi { ptr, i32 } [ %317, %316 ], [ %315, %314 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %29) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #6
  br label %522

319:                                              ; preds = %.lr.ph180, %325
  %indvars.iv188 = phi i64 [ 0, %.lr.ph180 ], [ %indvars.iv.next189, %325 ]
  %320 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3vcl12buffer_stackIfLm3EEESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %286, i64 noundef %indvars.iv188) #6
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %281, ptr noundef nonnull align 4 dereferenceable(12) %320, i64 12, i1 false), !tbaa.struct !76
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %30) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %31) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef nonnull @.str, ptr noundef nonnull align 1 dereferenceable(1) %31)
          to label %321 unwind label %329

321:                                              ; preds = %319
  %322 = 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) %30)
          to label %323 unwind label %331

323:                                              ; preds = %321
  %324 = load i32, ptr %322, align 4, !tbaa !66
  invoke void @_ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEj(ptr noundef nonnull align 4 dereferenceable(132) %280, ptr noundef nonnull align 4 dereferenceable(80) %2, i32 noundef %324)
          to label %325 unwind label %331

325:                                              ; preds = %323
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %31) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #6
  %indvars.iv.next189 = add nuw nsw i64 %indvars.iv188, 1
  %326 = load i32, ptr %283, align 4, !tbaa !86
  %327 = sext i32 %326 to i64
  %328 = icmp slt i64 %indvars.iv.next189, %327
  br i1 %328, label %319, label %._crit_edge181, !llvm.loop !88

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

331:                                              ; preds = %323, %321
  %332 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #6
  br label %333

333:                                              ; preds = %331, %329
  %.pn163 = phi { ptr, i32 } [ %332, %331 ], [ %330, %329 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %31) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #6
  br label %522

334:                                              ; preds = %._crit_edge181
  %335 = 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) %33)
          to label %336 unwind label %422

336:                                              ; preds = %334
  %337 = load i32, ptr %335, align 4, !tbaa !66
  invoke void @_ZN3vcl4drawERKNS_23hierarchy_mesh_drawableERKNS_12camera_sceneEi(ptr noundef nonnull align 8 dereferenceable(72) %293, ptr noundef nonnull align 4 dereferenceable(80) %2, i32 noundef %337)
          to label %338 unwind label %422

338:                                              ; preds = %336
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %34) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %33) #6
  %339 = getelementptr inbounds i8, ptr %0, i64 1296
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %35) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %36) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef nonnull @.str, ptr noundef nonnull align 1 dereferenceable(1) %36)
          to label %340 unwind label %425

340:                                              ; preds = %338
  %341 = 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) %35)
          to label %342 unwind label %427

342:                                              ; preds = %340
  %343 = load i32, ptr %341, align 4, !tbaa !66
  invoke void @_ZN3vcl4drawERKNS_23hierarchy_mesh_drawableERKNS_12camera_sceneEi(ptr noundef nonnull align 8 dereferenceable(72) %339, ptr noundef nonnull align 4 dereferenceable(80) %2, i32 noundef %343)
          to label %344 unwind label %427

344:                                              ; preds = %342
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %36) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %35) #6
  %345 = getelementptr inbounds i8, ptr %0, i64 976
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %37) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %38) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %37, ptr noundef nonnull @.str, ptr noundef nonnull align 1 dereferenceable(1) %38)
          to label %346 unwind label %430

346:                                              ; preds = %344
  %347 = 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) %37)
          to label %348 unwind label %432

348:                                              ; preds = %346
  %349 = load i32, ptr %347, align 4, !tbaa !66
  invoke void @_ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEj(ptr noundef nonnull align 4 dereferenceable(132) %345, ptr noundef nonnull align 4 dereferenceable(80) %2, i32 noundef %349)
          to label %350 unwind label %432

350:                                              ; preds = %348
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %38) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %37) #6
  %351 = load ptr, ptr @glad_glBindTexture, align 8, !tbaa !64
  %352 = load i32, ptr %165, align 4, !tbaa !67
  call void %351(i32 noundef 3553, i32 noundef %352)
  %353 = load i8, ptr %107, align 8, !tbaa !89, !range !54, !noundef !55
  %354 = trunc nuw i8 %353 to i1
  br i1 %354, label %355, label %.loopexit

355:                                              ; preds = %350
  %356 = load ptr, ptr @glad_glPolygonOffset, align 8, !tbaa !64
  call void %356(float noundef 1.000000e+00, float noundef 1.000000e+00)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %39) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %40) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %39, ptr noundef nonnull @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %40)
          to label %357 unwind label %435

357:                                              ; preds = %355
  %358 = 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) %39)
          to label %359 unwind label %437

359:                                              ; preds = %357
  %360 = load i32, ptr %358, align 4, !tbaa !66
  invoke void @_ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEj(ptr noundef nonnull align 4 dereferenceable(132) %0, ptr noundef nonnull align 4 dereferenceable(80) %2, i32 noundef %360)
          to label %361 unwind label %437

361:                                              ; preds = %359
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %40) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %39) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %41) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %42) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %41, ptr noundef nonnull @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %42)
          to label %362 unwind label %440

362:                                              ; preds = %361
  %363 = 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) %41)
          to label %364 unwind label %442

364:                                              ; preds = %362
  %365 = load i32, ptr %363, align 4, !tbaa !66
  invoke void @_ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEj(ptr noundef nonnull align 4 dereferenceable(132) %170, ptr noundef nonnull align 4 dereferenceable(80) %2, i32 noundef %365)
          to label %366 unwind label %442

366:                                              ; preds = %364
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %42) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %41) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %43) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %44) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %43, ptr noundef nonnull @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %44)
          to label %367 unwind label %445

367:                                              ; preds = %366
  %368 = 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) %43)
          to label %369 unwind label %447

369:                                              ; preds = %367
  %370 = load i32, ptr %368, align 4, !tbaa !66
  invoke void @_ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEj(ptr noundef nonnull align 4 dereferenceable(132) %181, ptr noundef nonnull align 4 dereferenceable(80) %2, i32 noundef %370)
          to label %371 unwind label %447

371:                                              ; preds = %369
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %44) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %43) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %45) #6
  call void @_ZN3vcl12buffer_stackIfLm3EEC1Efff(ptr noundef nonnull align 4 dereferenceable(12) %45, float noundef -6.000000e+00, float noundef -6.000000e+00, float noundef 0.000000e+00)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(12) %206, ptr noundef nonnull align 4 dereferenceable(12) %45, i64 12, i1 false), !tbaa.struct !76
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %45) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %46) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %47) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %46, ptr noundef nonnull @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %47)
          to label %372 unwind label %450

372:                                              ; preds = %371
  %373 = 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) %46)
          to label %374 unwind label %452

374:                                              ; preds = %372
  %375 = load i32, ptr %373, align 4, !tbaa !66
  invoke void @_ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEj(ptr noundef nonnull align 4 dereferenceable(132) %205, ptr noundef nonnull align 4 dereferenceable(80) %2, i32 noundef %375)
          to label %376 unwind label %452

376:                                              ; preds = %374
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %47) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %46) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %48) #6
  call void @_ZN3vcl12buffer_stackIfLm3EEC1Efff(ptr noundef nonnull align 4 dereferenceable(12) %48, float noundef -5.000000e+00, float noundef -6.000000e+00, float noundef -1.000000e+00)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(12) %206, ptr noundef nonnull align 4 dereferenceable(12) %48, i64 12, i1 false), !tbaa.struct !76
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %48) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %49) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %50) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %49, ptr noundef nonnull @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %50)
          to label %377 unwind label %455

377:                                              ; preds = %376
  %378 = 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) %49)
          to label %379 unwind label %457

379:                                              ; preds = %377
  %380 = load i32, ptr %378, align 4, !tbaa !66
  invoke void @_ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEj(ptr noundef nonnull align 4 dereferenceable(132) %205, ptr noundef nonnull align 4 dereferenceable(80) %2, i32 noundef %380)
          to label %381 unwind label %457

381:                                              ; preds = %379
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %50) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %49) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %51) #6
  call void @_ZN3vcl12buffer_stackIfLm3EEC1Efff(ptr noundef nonnull align 4 dereferenceable(12) %51, float noundef -6.000000e+00, float noundef 0xC019333340000000, float noundef 0.000000e+00)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(12) %206, ptr noundef nonnull align 4 dereferenceable(12) %51, i64 12, i1 false), !tbaa.struct !76
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %51) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %52) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %53) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %52, ptr noundef nonnull @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %53)
          to label %382 unwind label %460

382:                                              ; preds = %381
  %383 = 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) %52)
          to label %384 unwind label %462

384:                                              ; preds = %382
  %385 = load i32, ptr %383, align 4, !tbaa !66
  invoke void @_ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEj(ptr noundef nonnull align 4 dereferenceable(132) %205, ptr noundef nonnull align 4 dereferenceable(80) %2, i32 noundef %385)
          to label %386 unwind label %462

386:                                              ; preds = %384
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %53) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %52) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %54) #6
  call void @_ZN3vcl12buffer_stackIfLm3EEC1Efff(ptr noundef nonnull align 4 dereferenceable(12) %54, float noundef -5.000000e+00, float noundef 0xC019333340000000, float noundef -1.000000e+00)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(12) %206, ptr noundef nonnull align 4 dereferenceable(12) %54, i64 12, i1 false), !tbaa.struct !76
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %54) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %55) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %56) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %56) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %55, ptr noundef nonnull @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %56)
          to label %387 unwind label %465

387:                                              ; preds = %386
  %388 = 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) %55)
          to label %389 unwind label %467

389:                                              ; preds = %387
  %390 = load i32, ptr %388, align 4, !tbaa !66
  invoke void @_ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEj(ptr noundef nonnull align 4 dereferenceable(132) %205, ptr noundef nonnull align 4 dereferenceable(80) %2, i32 noundef %390)
          to label %391 unwind label %467

391:                                              ; preds = %389
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %56) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %56) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %55) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %57) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %58) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %57, ptr noundef nonnull @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %58)
          to label %392 unwind label %470

392:                                              ; preds = %391
  %393 = 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) %57)
          to label %394 unwind label %472

394:                                              ; preds = %392
  %395 = load i32, ptr %393, align 4, !tbaa !66
  invoke void @_ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEj(ptr noundef nonnull align 4 dereferenceable(132) %263, ptr noundef nonnull align 4 dereferenceable(80) %2, i32 noundef %395)
          to label %396 unwind label %472

396:                                              ; preds = %394
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %58) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %57) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %59) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %60) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %60) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %59, ptr noundef nonnull @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %60)
          to label %397 unwind label %475

397:                                              ; preds = %396
  %398 = 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) %59)
          to label %399 unwind label %477

399:                                              ; preds = %397
  %400 = load i32, ptr %398, align 4, !tbaa !66
  invoke void @_ZN3vcl4drawERKNS_23hierarchy_mesh_drawableERKNS_12camera_sceneEi(ptr noundef nonnull align 8 dereferenceable(72) %293, ptr noundef nonnull align 4 dereferenceable(80) %2, i32 noundef %400)
          to label %401 unwind label %477

401:                                              ; preds = %399
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %60) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %60) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %59) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %61) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %62) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %61, ptr noundef nonnull @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %62)
          to label %402 unwind label %480

402:                                              ; preds = %401
  %403 = 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) %61)
          to label %404 unwind label %482

404:                                              ; preds = %402
  %405 = load i32, ptr %403, align 4, !tbaa !66
  invoke void @_ZN3vcl4drawERKNS_23hierarchy_mesh_drawableERKNS_12camera_sceneEi(ptr noundef nonnull align 8 dereferenceable(72) %339, ptr noundef nonnull align 4 dereferenceable(80) %2, i32 noundef %405)
          to label %406 unwind label %482

406:                                              ; preds = %404
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %62) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %61) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %63) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %64) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %64) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %63, ptr noundef nonnull @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %64)
          to label %407 unwind label %485

407:                                              ; preds = %406
  %408 = 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) %63)
          to label %409 unwind label %487

409:                                              ; preds = %407
  %410 = load i32, ptr %408, align 4, !tbaa !66
  invoke void @_ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEj(ptr noundef nonnull align 4 dereferenceable(132) %345, ptr noundef nonnull align 4 dereferenceable(80) %2, i32 noundef %410)
          to label %411 unwind label %487

411:                                              ; preds = %409
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %64) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %64) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %63) #6
  %412 = load i32, ptr %194, align 8, !tbaa !80
  %413 = icmp sgt i32 %412, 0
  br i1 %413, label %.lr.ph184, label %.preheader

.lr.ph184:                                        ; preds = %411
  %414 = getelementptr inbounds i8, ptr %0, i64 264
  %415 = getelementptr inbounds i8, ptr %0, i64 288
  %416 = getelementptr inbounds i8, ptr %0, i64 316
  br label %490

.preheader:                                       ; preds = %496, %411
  %417 = load i32, ptr %283, align 4, !tbaa !86
  %418 = icmp sgt i32 %417, 0
  br i1 %418, label %.lr.ph186, label %.loopexit

.lr.ph186:                                        ; preds = %.preheader
  %419 = getelementptr inbounds i8, ptr %0, i64 424
  br label %505

420:                                              ; preds = %._crit_edge181
  %421 = landingpad { ptr, i32 }
          cleanup
  br label %424

422:                                              ; preds = %336, %334
  %423 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #6
  br label %424

424:                                              ; preds = %422, %420
  %.pn130 = phi { ptr, i32 } [ %423, %422 ], [ %421, %420 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %34) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %33) #6
  br label %521

425:                                              ; preds = %338
  %426 = landingpad { ptr, i32 }
          cleanup
  br label %429

427:                                              ; preds = %342, %340
  %428 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #6
  br label %429

429:                                              ; preds = %427, %425
  %.pn132 = phi { ptr, i32 } [ %428, %427 ], [ %426, %425 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %36) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %35) #6
  br label %521

430:                                              ; preds = %344
  %431 = landingpad { ptr, i32 }
          cleanup
  br label %434

432:                                              ; preds = %348, %346
  %433 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #6
  br label %434

434:                                              ; preds = %432, %430
  %.pn134 = phi { ptr, i32 } [ %433, %432 ], [ %431, %430 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %38) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %37) #6
  br label %521

435:                                              ; preds = %355
  %436 = landingpad { ptr, i32 }
          cleanup
  br label %439

437:                                              ; preds = %359, %357
  %438 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #6
  br label %439

439:                                              ; preds = %437, %435
  %.pn136 = phi { ptr, i32 } [ %438, %437 ], [ %436, %435 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %40) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %39) #6
  br label %521

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

442:                                              ; preds = %364, %362
  %443 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #6
  br label %444

444:                                              ; preds = %442, %440
  %.pn138 = phi { ptr, i32 } [ %443, %442 ], [ %441, %440 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %42) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %41) #6
  br label %521

445:                                              ; preds = %366
  %446 = landingpad { ptr, i32 }
          cleanup
  br label %449

447:                                              ; preds = %369, %367
  %448 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #6
  br label %449

449:                                              ; preds = %447, %445
  %.pn140 = phi { ptr, i32 } [ %448, %447 ], [ %446, %445 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %44) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %43) #6
  br label %521

450:                                              ; preds = %371
  %451 = landingpad { ptr, i32 }
          cleanup
  br label %454

452:                                              ; preds = %374, %372
  %453 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #6
  br label %454

454:                                              ; preds = %452, %450
  %.pn142 = phi { ptr, i32 } [ %453, %452 ], [ %451, %450 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %47) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %46) #6
  br label %521

455:                                              ; preds = %376
  %456 = landingpad { ptr, i32 }
          cleanup
  br label %459

457:                                              ; preds = %379, %377
  %458 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #6
  br label %459

459:                                              ; preds = %457, %455
  %.pn144 = phi { ptr, i32 } [ %458, %457 ], [ %456, %455 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %50) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %49) #6
  br label %521

460:                                              ; preds = %381
  %461 = landingpad { ptr, i32 }
          cleanup
  br label %464

462:                                              ; preds = %384, %382
  %463 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #6
  br label %464

464:                                              ; preds = %462, %460
  %.pn146 = phi { ptr, i32 } [ %463, %462 ], [ %461, %460 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %53) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %52) #6
  br label %521

465:                                              ; preds = %386
  %466 = landingpad { ptr, i32 }
          cleanup
  br label %469

467:                                              ; preds = %389, %387
  %468 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #6
  br label %469

469:                                              ; preds = %467, %465
  %.pn148 = phi { ptr, i32 } [ %468, %467 ], [ %466, %465 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %56) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %56) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %55) #6
  br label %521

470:                                              ; preds = %391
  %471 = landingpad { ptr, i32 }
          cleanup
  br label %474

472:                                              ; preds = %394, %392
  %473 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #6
  br label %474

474:                                              ; preds = %472, %470
  %.pn150 = phi { ptr, i32 } [ %473, %472 ], [ %471, %470 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %58) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %57) #6
  br label %521

475:                                              ; preds = %396
  %476 = landingpad { ptr, i32 }
          cleanup
  br label %479

477:                                              ; preds = %399, %397
  %478 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #6
  br label %479

479:                                              ; preds = %477, %475
  %.pn152 = phi { ptr, i32 } [ %478, %477 ], [ %476, %475 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %60) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %60) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %59) #6
  br label %521

480:                                              ; preds = %401
  %481 = landingpad { ptr, i32 }
          cleanup
  br label %484

482:                                              ; preds = %404, %402
  %483 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #6
  br label %484

484:                                              ; preds = %482, %480
  %.pn154 = phi { ptr, i32 } [ %483, %482 ], [ %481, %480 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %62) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %61) #6
  br label %521

485:                                              ; preds = %406
  %486 = landingpad { ptr, i32 }
          cleanup
  br label %489

487:                                              ; preds = %409, %407
  %488 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #6
  br label %489

489:                                              ; preds = %487, %485
  %.pn156 = phi { ptr, i32 } [ %488, %487 ], [ %486, %485 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %64) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %64) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %63) #6
  br label %521

490:                                              ; preds = %.lr.ph184, %496
  %indvars.iv191 = phi i64 [ 0, %.lr.ph184 ], [ %indvars.iv.next192, %496 ]
  %491 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3vcl12buffer_stackIfLm3EEESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %414, i64 noundef %indvars.iv191) #6
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %416, ptr noundef nonnull align 4 dereferenceable(12) %491, i64 12, i1 false), !tbaa.struct !76
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %65) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %66) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %66) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %65, ptr noundef nonnull @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %66)
          to label %492 unwind label %500

492:                                              ; preds = %490
  %493 = 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) %65)
          to label %494 unwind label %502

494:                                              ; preds = %492
  %495 = load i32, ptr %493, align 4, !tbaa !66
  invoke void @_ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEj(ptr noundef nonnull align 4 dereferenceable(132) %415, ptr noundef nonnull align 4 dereferenceable(80) %2, i32 noundef %495)
          to label %496 unwind label %502

496:                                              ; preds = %494
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %66) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %66) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %65) #6
  %indvars.iv.next192 = add nuw nsw i64 %indvars.iv191, 1
  %497 = load i32, ptr %194, align 8, !tbaa !80
  %498 = sext i32 %497 to i64
  %499 = icmp slt i64 %indvars.iv.next192, %498
  br i1 %499, label %490, label %.preheader, !llvm.loop !90

500:                                              ; preds = %490
  %501 = landingpad { ptr, i32 }
          cleanup
  br label %504

502:                                              ; preds = %494, %492
  %503 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #6
  br label %504

504:                                              ; preds = %502, %500
  %.pn160 = phi { ptr, i32 } [ %503, %502 ], [ %501, %500 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %66) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %66) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %65) #6
  br label %521

505:                                              ; preds = %.lr.ph186, %511
  %indvars.iv194 = phi i64 [ 0, %.lr.ph186 ], [ %indvars.iv.next195, %511 ]
  %506 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3vcl12buffer_stackIfLm3EEESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %419, i64 noundef %indvars.iv194) #6
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %281, ptr noundef nonnull align 4 dereferenceable(12) %506, i64 12, i1 false), !tbaa.struct !76
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %67) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %68) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %67, ptr noundef nonnull @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %68)
          to label %507 unwind label %515

507:                                              ; preds = %505
  %508 = 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) %67)
          to label %509 unwind label %517

509:                                              ; preds = %507
  %510 = load i32, ptr %508, align 4, !tbaa !66
  invoke void @_ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEj(ptr noundef nonnull align 4 dereferenceable(132) %280, ptr noundef nonnull align 4 dereferenceable(80) %2, i32 noundef %510)
          to label %511 unwind label %517

511:                                              ; preds = %509
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %68) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %67) #6
  %indvars.iv.next195 = add nuw nsw i64 %indvars.iv194, 1
  %512 = load i32, ptr %283, align 4, !tbaa !86
  %513 = sext i32 %512 to i64
  %514 = icmp slt i64 %indvars.iv.next195, %513
  br i1 %514, label %505, label %.loopexit, !llvm.loop !91

515:                                              ; preds = %505
  %516 = landingpad { ptr, i32 }
          cleanup
  br label %519

517:                                              ; preds = %509, %507
  %518 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #6
  br label %519

519:                                              ; preds = %517, %515
  %.pn158 = phi { ptr, i32 } [ %518, %517 ], [ %516, %515 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %68) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %67) #6
  br label %521

.loopexit:                                        ; preds = %511, %.preheader, %350
  %520 = load ptr, ptr @glad_glDepthMask, align 8, !tbaa !64
  call void %520(i8 noundef zeroext 1)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %32) #6
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %10) #6
  ret void

521:                                              ; preds = %519, %504, %489, %484, %479, %474, %469, %464, %459, %454, %449, %444, %439, %434, %429, %424
  %.pn160.pn = phi { ptr, i32 } [ %.pn160, %504 ], [ %.pn158, %519 ], [ %.pn156, %489 ], [ %.pn154, %484 ], [ %.pn152, %479 ], [ %.pn150, %474 ], [ %.pn148, %469 ], [ %.pn146, %464 ], [ %.pn144, %459 ], [ %.pn142, %454 ], [ %.pn140, %449 ], [ %.pn138, %444 ], [ %.pn136, %439 ], [ %.pn134, %434 ], [ %.pn132, %429 ], [ %.pn130, %424 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %32) #6
  br label %522

522:                                              ; preds = %521, %333, %318, %313, %308, %303, %298, %237, %222
  %.pn165.pn = phi { ptr, i32 } [ %.pn165, %237 ], [ %.pn163, %333 ], [ %.pn160.pn, %521 ], [ %.pn128, %318 ], [ %.pn126, %313 ], [ %.pn124, %308 ], [ %.pn122, %303 ], [ %.pn120, %298 ], [ %.pn118, %222 ]
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %10) #6
  br label %523

523:                                              ; preds = %522, %217, %212
  %.pn165.pn.pn = phi { ptr, i32 } [ %.pn165.pn, %522 ], [ %.pn116, %217 ], [ %.pn, %212 ]
  resume { ptr, i32 } %.pn165.pn.pn
}

declare noundef float @_ZN3vcl14timer_interval6updateEv(ptr noundef nonnull align 4 dereferenceable(24)) local_unnamed_addr #4

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

declare void @_ZN3vcl4drawERKNS_13mesh_drawableERKNS_12camera_sceneEj(ptr noundef nonnull align 4 dereferenceable(132), ptr noundef nonnull align 4 dereferenceable(80), i32 noundef) local_unnamed_addr #4

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11scene_model21set_creature_rotationEf(ptr noundef nonnull align 8 dereferenceable(1516), float noundef) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { <2 x float>, float } @_ZN11scene_model18set_plane_rotationEf(ptr noundef nonnull align 8 dereferenceable(1516), float noundef) local_unnamed_addr #5 align 2

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

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


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass,TailCallElimPass