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

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"struct.vcl::mat" = type { float, float, float, float, float, float, float, float, float }
%"struct.vcl::buffer_stack" = type { float, float, float }
%"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.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.vec3t = type { %"struct.vcl::buffer_stack", float }
%"struct.vcl::hierarchy_mesh_drawable_node" = type { %"struct.vcl::mesh_drawable", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"struct.vcl::affine_transform", %"struct.vcl::affine_transform" }

@.str.10 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [11 x i8], align 1

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

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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 uwtable
define dso_local void @_ZN11scene_model21set_creature_rotationEf(ptr noundef nonnull align 8 dereferenceable(1516) %0, float noundef %1) #5 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca float, align 4
  %5 = alloca i64, align 8
  %6 = alloca float, align 4
  %7 = alloca float, align 4
  %8 = alloca float, align 4
  %9 = alloca float, align 4
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca %"struct.vcl::buffer_stack", align 4
  %15 = alloca { <2 x float>, float }, align 8
  %16 = alloca %"struct.vcl::buffer_stack", align 4
  %17 = alloca { <2 x float>, float }, align 8
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::allocator.21", align 1
  %20 = alloca ptr, align 8
  %21 = alloca i32, align 4
  %22 = alloca %"struct.vcl::mat", align 4
  %23 = alloca %"struct.vcl::mat", align 4
  %24 = alloca %"struct.vcl::buffer_stack", align 4
  %25 = alloca %"struct.vcl::mat", align 4
  %26 = alloca %"struct.vcl::buffer_stack", align 4
  %27 = alloca %"class.std::__cxx11::basic_string", align 8
  %28 = alloca %"class.std::allocator.21", align 1
  %29 = alloca %"struct.vcl::mat", align 4
  %30 = alloca %"struct.vcl::buffer_stack", align 4
  %31 = alloca %"struct.vcl::mat", align 4
  %32 = alloca %"struct.vcl::buffer_stack", align 4
  %33 = alloca %"struct.vcl::mat", align 4
  %34 = alloca %"struct.vcl::mat", align 4
  %35 = alloca %"struct.vcl::buffer_stack", align 4
  %36 = alloca %"struct.vcl::mat", align 4
  %37 = alloca %"struct.vcl::buffer_stack", align 4
  %38 = alloca %"struct.vcl::mat", align 4
  %39 = alloca %"struct.vcl::buffer_stack", align 4
  %40 = alloca %"struct.vcl::mat", align 4
  %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::mat", align 4
  %46 = alloca %"class.std::__cxx11::basic_string", align 8
  %47 = alloca %"class.std::allocator.21", align 1
  %48 = alloca %"class.std::__cxx11::basic_string", align 8
  %49 = alloca %"class.std::allocator.21", align 1
  %50 = alloca %"class.std::__cxx11::basic_string", align 8
  %51 = alloca %"class.std::allocator.21", align 1
  %52 = alloca %"class.std::__cxx11::basic_string", align 8
  %53 = alloca %"class.std::allocator.21", align 1
  %54 = alloca %"class.std::__cxx11::basic_string", align 8
  %55 = alloca %"class.std::allocator.21", align 1
  %56 = alloca %"struct.vcl::mat", align 4
  %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
  store ptr %0, ptr %3, align 8, !tbaa !5
  store float %1, ptr %4, align 4, !tbaa !9
  %63 = load ptr, ptr %3, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #7
  %64 = load float, ptr %4, align 4, !tbaa !9
  %65 = getelementptr inbounds %struct.scene_model, ptr %63, i32 0, i32 23
  %66 = call noundef i64 @_ZL14index_at_valuefRKN3vcl6bufferI5vec3tEE(float noundef %64, ptr noundef nonnull align 8 dereferenceable(24) %65)
  store i64 %66, ptr %5, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #7
  %67 = getelementptr inbounds %struct.scene_model, ptr %63, i32 0, i32 23
  %68 = load i64, ptr %5, align 8, !tbaa !11
  %69 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZN3vcl6bufferI5vec3tEixEm(ptr noundef nonnull align 8 dereferenceable(24) %67, i64 noundef %68)
  %70 = getelementptr inbounds %struct.vec3t, ptr %69, i32 0, i32 1
  %71 = load float, ptr %70, align 4, !tbaa !13
  store float %71, ptr %6, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #7
  %72 = getelementptr inbounds %struct.scene_model, ptr %63, i32 0, i32 23
  %73 = load i64, ptr %5, align 8, !tbaa !11
  %74 = sub nsw i64 %73, 1
  %75 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZN3vcl6bufferI5vec3tEixEm(ptr noundef nonnull align 8 dereferenceable(24) %72, i64 noundef %74)
  %76 = getelementptr inbounds %struct.vec3t, ptr %75, i32 0, i32 1
  %77 = load float, ptr %76, align 4, !tbaa !13
  store float %77, ptr %7, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #7
  %78 = getelementptr inbounds %struct.scene_model, ptr %63, i32 0, i32 23
  %79 = load i64, ptr %5, align 8, !tbaa !11
  %80 = add nsw i64 %79, 1
  %81 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZN3vcl6bufferI5vec3tEixEm(ptr noundef nonnull align 8 dereferenceable(24) %78, i64 noundef %80)
  %82 = getelementptr inbounds %struct.vec3t, ptr %81, i32 0, i32 1
  %83 = load float, ptr %82, align 4, !tbaa !13
  store float %83, ptr %8, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #7
  %84 = getelementptr inbounds %struct.scene_model, ptr %63, i32 0, i32 23
  %85 = load i64, ptr %5, align 8, !tbaa !11
  %86 = add nsw i64 %85, 2
  %87 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZN3vcl6bufferI5vec3tEixEm(ptr noundef nonnull align 8 dereferenceable(24) %84, i64 noundef %86)
  %88 = getelementptr inbounds %struct.vec3t, ptr %87, i32 0, i32 1
  %89 = load float, ptr %88, align 4, !tbaa !13
  store float %89, ptr %9, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #7
  %90 = getelementptr inbounds %struct.scene_model, ptr %63, i32 0, i32 23
  %91 = load i64, ptr %5, align 8, !tbaa !11
  %92 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZN3vcl6bufferI5vec3tEixEm(ptr noundef nonnull align 8 dereferenceable(24) %90, i64 noundef %91)
  %93 = getelementptr inbounds %struct.vec3t, ptr %92, i32 0, i32 0
  store ptr %93, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #7
  %94 = getelementptr inbounds %struct.scene_model, ptr %63, i32 0, i32 23
  %95 = load i64, ptr %5, align 8, !tbaa !11
  %96 = sub nsw i64 %95, 1
  %97 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZN3vcl6bufferI5vec3tEixEm(ptr noundef nonnull align 8 dereferenceable(24) %94, i64 noundef %96)
  %98 = getelementptr inbounds %struct.vec3t, ptr %97, i32 0, i32 0
  store ptr %98, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #7
  %99 = getelementptr inbounds %struct.scene_model, ptr %63, i32 0, i32 23
  %100 = load i64, ptr %5, align 8, !tbaa !11
  %101 = add nsw i64 %100, 1
  %102 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZN3vcl6bufferI5vec3tEixEm(ptr noundef nonnull align 8 dereferenceable(24) %99, i64 noundef %101)
  %103 = getelementptr inbounds %struct.vec3t, ptr %102, i32 0, i32 0
  store ptr %103, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #7
  %104 = getelementptr inbounds %struct.scene_model, ptr %63, i32 0, i32 23
  %105 = load i64, ptr %5, align 8, !tbaa !11
  %106 = add nsw i64 %105, 2
  %107 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZN3vcl6bufferI5vec3tEixEm(ptr noundef nonnull align 8 dereferenceable(24) %104, i64 noundef %106)
  %108 = getelementptr inbounds %struct.vec3t, ptr %107, i32 0, i32 0
  store ptr %108, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 12, ptr %14) #7
  %109 = load float, ptr %4, align 4, !tbaa !9
  %110 = load float, ptr %7, align 4, !tbaa !9
  %111 = load float, ptr %6, align 4, !tbaa !9
  %112 = load float, ptr %8, align 4, !tbaa !9
  %113 = load float, ptr %9, align 4, !tbaa !9
  %114 = load ptr, ptr %11, align 8, !tbaa !5
  %115 = load ptr, ptr %10, align 8, !tbaa !5
  %116 = load ptr, ptr %12, align 8, !tbaa !5
  %117 = load ptr, ptr %13, align 8, !tbaa !5
  %118 = call { <2 x float>, float } @_ZL29cardinal_spline_interpolationfffffRKN3vcl12buffer_stackIfLm3EEES3_S3_S3_f(float noundef %109, float noundef %110, float noundef %111, float noundef %112, float noundef %113, ptr noundef nonnull align 4 dereferenceable(12) %114, ptr noundef nonnull align 4 dereferenceable(12) %115, ptr noundef nonnull align 4 dereferenceable(12) %116, ptr noundef nonnull align 4 dereferenceable(12) %117, float noundef 1.000000e+00)
  store { <2 x float>, float } %118, ptr %15, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %14, ptr align 8 %15, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 12, ptr %16) #7
  %119 = load float, ptr %4, align 4, !tbaa !9
  %120 = load float, ptr %7, align 4, !tbaa !9
  %121 = load float, ptr %6, align 4, !tbaa !9
  %122 = load float, ptr %8, align 4, !tbaa !9
  %123 = load float, ptr %9, align 4, !tbaa !9
  %124 = load ptr, ptr %11, align 8, !tbaa !5
  %125 = load ptr, ptr %10, align 8, !tbaa !5
  %126 = load ptr, ptr %12, align 8, !tbaa !5
  %127 = load ptr, ptr %13, align 8, !tbaa !5
  %128 = call { <2 x float>, float } @_ZL33cardinal_spline_interpolation_derfffffRKN3vcl12buffer_stackIfLm3EEES3_S3_S3_f(float noundef %119, float noundef %120, float noundef %121, float noundef %122, float noundef %123, ptr noundef nonnull align 4 dereferenceable(12) %124, ptr noundef nonnull align 4 dereferenceable(12) %125, ptr noundef nonnull align 4 dereferenceable(12) %126, ptr noundef nonnull align 4 dereferenceable(12) %127, float noundef 1.000000e+00)
  store { <2 x float>, float } %128, ptr %17, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %16, ptr align 8 %17, i64 12, i1 false)
  %129 = getelementptr inbounds %struct.scene_model, ptr %63, i32 0, i32 25
  call void @llvm.lifetime.start.p0(i64 32, ptr %18) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef @.str.10, ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %130 unwind label %222

130:                                              ; preds = %2
  %131 = invoke noundef nonnull align 8 dereferenceable(328) ptr @_ZN3vcl23hierarchy_mesh_drawableixERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(72) %129, ptr noundef nonnull align 8 dereferenceable(32) %18)
          to label %132 unwind label %226

132:                                              ; preds = %130
  %133 = getelementptr inbounds %"struct.vcl::hierarchy_mesh_drawable_node", ptr %131, i32 0, i32 3
  %134 = getelementptr inbounds %"struct.vcl::affine_transform", ptr %133, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %134, ptr align 4 %14, i64 12, i1 false), !tbaa.struct !16
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #7
  call void @llvm.lifetime.start.p0(i64 36, ptr %22) #7
  call void @llvm.lifetime.start.p0(i64 36, ptr %23) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr %24) #7
  call void @_ZN3vcl12buffer_stackIfLm3EEC1Efff(ptr noundef nonnull align 4 dereferenceable(12) %24, float noundef 0.000000e+00, float noundef -1.000000e+00, float noundef 0.000000e+00)
  call void @_ZN3vcl28rotation_between_vector_mat3ERKNS_12buffer_stackIfLm3EEES3_(ptr dead_on_unwind writable sret(%"struct.vcl::mat") align 4 %23, ptr noundef nonnull align 4 dereferenceable(12) %24, ptr noundef nonnull align 4 dereferenceable(12) %16)
  call void @llvm.lifetime.start.p0(i64 36, ptr %25) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr %26) #7
  call void @_ZN3vcl12buffer_stackIfLm3EEC1Efff(ptr noundef nonnull align 4 dereferenceable(12) %26, float noundef 1.000000e+00, float noundef 0.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 %25, ptr noundef nonnull align 4 dereferenceable(12) %26, float noundef 1.000000e+00)
  call void @_ZN3vclmlILm3ELm3ELm3EEENS_3matIXT_EXT1_EEERKNS1_IXT_EXT0_EEERKNS1_IXT0_EXT1_EEE(ptr dead_on_unwind writable sret(%"struct.vcl::mat") align 4 %22, ptr noundef nonnull align 4 dereferenceable(36) %23, ptr noundef nonnull align 4 dereferenceable(36) %25)
  %135 = getelementptr inbounds %struct.scene_model, ptr %63, i32 0, i32 25
  call void @llvm.lifetime.start.p0(i64 32, ptr %27) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %28) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef @.str.10, ptr noundef nonnull align 1 dereferenceable(1) %28)
          to label %136 unwind label %231

136:                                              ; preds = %132
  %137 = invoke noundef nonnull align 8 dereferenceable(328) ptr @_ZN3vcl23hierarchy_mesh_drawableixERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(72) %135, ptr noundef nonnull align 8 dereferenceable(32) %27)
          to label %138 unwind label %235

138:                                              ; preds = %136
  %139 = getelementptr inbounds %"struct.vcl::hierarchy_mesh_drawable_node", ptr %137, i32 0, i32 3
  %140 = getelementptr inbounds %"struct.vcl::affine_transform", ptr %139, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %140, ptr align 4 %22, i64 36, i1 false), !tbaa.struct !17
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 36, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 36, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 36, ptr %22) #7
  call void @llvm.lifetime.start.p0(i64 36, ptr %29) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr %30) #7
  call void @_ZN3vcl12buffer_stackIfLm3EEC1Efff(ptr noundef nonnull align 4 dereferenceable(12) %30, float noundef 0.000000e+00, float noundef 1.000000e+00, float noundef 0.000000e+00)
  %141 = load float, ptr %4, align 4, !tbaa !9
  %142 = fsub float %141, 0x3FD99999A0000000
  %143 = fmul float 0x40191EB860000000, %142
  %144 = call noundef float @_ZSt3sinf(float noundef %143)
  call void @_ZN3vcl29rotation_from_axis_angle_mat3ERKNS_12buffer_stackIfLm3EEEf(ptr dead_on_unwind writable sret(%"struct.vcl::mat") align 4 %29, ptr noundef nonnull align 4 dereferenceable(12) %30, float noundef %144)
  call void @llvm.lifetime.end.p0(i64 12, ptr %30) #7
  call void @llvm.lifetime.start.p0(i64 36, ptr %31) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr %32) #7
  call void @_ZN3vcl12buffer_stackIfLm3EEC1Efff(ptr noundef nonnull align 4 dereferenceable(12) %32, float noundef 0.000000e+00, float noundef 1.000000e+00, float noundef 0.000000e+00)
  %145 = load float, ptr %4, align 4, !tbaa !9
  %146 = fsub float %145, 0x3FE3333340000000
  %147 = fmul float 0x40191EB860000000, %146
  %148 = call noundef float @_ZSt3sinf(float noundef %147)
  call void @_ZN3vcl29rotation_from_axis_angle_mat3ERKNS_12buffer_stackIfLm3EEEf(ptr dead_on_unwind writable sret(%"struct.vcl::mat") align 4 %31, ptr noundef nonnull align 4 dereferenceable(12) %32, float noundef %148)
  call void @llvm.lifetime.end.p0(i64 12, ptr %32) #7
  call void @llvm.lifetime.start.p0(i64 36, ptr %33) #7
  call void @_ZN3vcl3matILm3ELm3EEC1Efffffffff(ptr noundef nonnull align 4 dereferenceable(36) %33, float noundef -1.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 1.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 1.000000e+00)
  call void @llvm.lifetime.start.p0(i64 36, ptr %34) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr %35) #7
  call void @_ZN3vcl12buffer_stackIfLm3EEC1Efff(ptr noundef nonnull align 4 dereferenceable(12) %35, float noundef 1.000000e+00, float noundef 1.000000e+00, float noundef 0.000000e+00)
  %149 = load float, ptr %4, align 4, !tbaa !9
  %150 = fsub float %149, 0x3FD99999A0000000
  %151 = fmul float 0x40191EB860000000, %150
  %152 = call noundef float @_ZSt3sinf(float noundef %151)
  call void @_ZN3vcl29rotation_from_axis_angle_mat3ERKNS_12buffer_stackIfLm3EEEf(ptr dead_on_unwind writable sret(%"struct.vcl::mat") align 4 %34, ptr noundef nonnull align 4 dereferenceable(12) %35, float noundef %152)
  call void @llvm.lifetime.end.p0(i64 12, ptr %35) #7
  call void @llvm.lifetime.start.p0(i64 36, ptr %36) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr %37) #7
  call void @_ZN3vcl12buffer_stackIfLm3EEC1Efff(ptr noundef nonnull align 4 dereferenceable(12) %37, float noundef 1.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %153 = load float, ptr %4, align 4, !tbaa !9
  %154 = fsub float %153, 0x3FE6666660000000
  %155 = fmul float 0x40191EB860000000, %154
  %156 = call noundef float @_ZSt3sinf(float noundef %155)
  call void @_ZN3vcl29rotation_from_axis_angle_mat3ERKNS_12buffer_stackIfLm3EEEf(ptr dead_on_unwind writable sret(%"struct.vcl::mat") align 4 %36, ptr noundef nonnull align 4 dereferenceable(12) %37, float noundef %156)
  call void @llvm.lifetime.end.p0(i64 12, ptr %37) #7
  call void @llvm.lifetime.start.p0(i64 36, ptr %38) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr %39) #7
  call void @_ZN3vcl12buffer_stackIfLm3EEC1Efff(ptr noundef nonnull align 4 dereferenceable(12) %39, float noundef 1.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %157 = load float, ptr %4, align 4, !tbaa !9
  %158 = fsub float %157, 1.000000e+00
  %159 = fmul float 0x40191EB860000000, %158
  %160 = call noundef float @_ZSt3sinf(float noundef %159)
  call void @_ZN3vcl29rotation_from_axis_angle_mat3ERKNS_12buffer_stackIfLm3EEEf(ptr dead_on_unwind writable sret(%"struct.vcl::mat") align 4 %38, ptr noundef nonnull align 4 dereferenceable(12) %39, float noundef %160)
  call void @llvm.lifetime.end.p0(i64 12, ptr %39) #7
  call void @llvm.lifetime.start.p0(i64 36, ptr %40) #7
  call void @_ZN3vcl3matILm3ELm3EEC1Efffffffff(ptr noundef nonnull align 4 dereferenceable(36) %40, float noundef -1.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 1.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef -1.000000e+00)
  %161 = getelementptr inbounds %struct.scene_model, ptr %63, i32 0, i32 25
  call void @llvm.lifetime.start.p0(i64 32, ptr %41) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %42) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %41, ptr noundef @.str.16, ptr noundef nonnull align 1 dereferenceable(1) %42)
          to label %162 unwind label %240

162:                                              ; preds = %138
  %163 = invoke noundef nonnull align 8 dereferenceable(328) ptr @_ZN3vcl23hierarchy_mesh_drawableixERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(72) %161, ptr noundef nonnull align 8 dereferenceable(32) %41)
          to label %164 unwind label %244

164:                                              ; preds = %162
  %165 = getelementptr inbounds %"struct.vcl::hierarchy_mesh_drawable_node", ptr %163, i32 0, i32 3
  %166 = getelementptr inbounds %"struct.vcl::affine_transform", ptr %165, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %166, ptr align 4 %29, i64 36, i1 false), !tbaa.struct !17
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %41) #7
  %167 = getelementptr inbounds %struct.scene_model, ptr %63, i32 0, i32 25
  call void @llvm.lifetime.start.p0(i64 32, ptr %43) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %44) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %43, ptr noundef @.str.18, ptr noundef nonnull align 1 dereferenceable(1) %44)
          to label %168 unwind label %249

168:                                              ; preds = %164
  %169 = invoke noundef nonnull align 8 dereferenceable(328) ptr @_ZN3vcl23hierarchy_mesh_drawableixERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(72) %167, ptr noundef nonnull align 8 dereferenceable(32) %43)
          to label %170 unwind label %253

170:                                              ; preds = %168
  %171 = getelementptr inbounds %"struct.vcl::hierarchy_mesh_drawable_node", ptr %169, i32 0, i32 3
  %172 = getelementptr inbounds %"struct.vcl::affine_transform", ptr %171, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %172, ptr align 4 %31, i64 36, i1 false), !tbaa.struct !17
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %43) #7
  call void @llvm.lifetime.start.p0(i64 36, ptr %45) #7
  call void @_ZN3vclmlILm3ELm3ELm3EEENS_3matIXT_EXT1_EEERKNS1_IXT_EXT0_EEERKNS1_IXT0_EXT1_EEE(ptr dead_on_unwind writable sret(%"struct.vcl::mat") align 4 %45, ptr noundef nonnull align 4 dereferenceable(36) %33, ptr noundef nonnull align 4 dereferenceable(36) %29)
  %173 = getelementptr inbounds %struct.scene_model, ptr %63, i32 0, i32 25
  call void @llvm.lifetime.start.p0(i64 32, ptr %46) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %47) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %46, ptr noundef @.str.19, ptr noundef nonnull align 1 dereferenceable(1) %47)
          to label %174 unwind label %258

174:                                              ; preds = %170
  %175 = invoke noundef nonnull align 8 dereferenceable(328) ptr @_ZN3vcl23hierarchy_mesh_drawableixERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(72) %173, ptr noundef nonnull align 8 dereferenceable(32) %46)
          to label %176 unwind label %262

176:                                              ; preds = %174
  %177 = getelementptr inbounds %"struct.vcl::hierarchy_mesh_drawable_node", ptr %175, i32 0, i32 3
  %178 = getelementptr inbounds %"struct.vcl::affine_transform", ptr %177, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %178, ptr align 4 %45, i64 36, i1 false), !tbaa.struct !17
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %46) #7
  call void @llvm.lifetime.end.p0(i64 36, ptr %45) #7
  %179 = getelementptr inbounds %struct.scene_model, ptr %63, i32 0, i32 25
  call void @llvm.lifetime.start.p0(i64 32, ptr %48) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %49) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %48, ptr noundef @.str.21, ptr noundef nonnull align 1 dereferenceable(1) %49)
          to label %180 unwind label %267

180:                                              ; preds = %176
  %181 = invoke noundef nonnull align 8 dereferenceable(328) ptr @_ZN3vcl23hierarchy_mesh_drawableixERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(72) %179, ptr noundef nonnull align 8 dereferenceable(32) %48)
          to label %182 unwind label %271

182:                                              ; preds = %180
  %183 = getelementptr inbounds %"struct.vcl::hierarchy_mesh_drawable_node", ptr %181, i32 0, i32 3
  %184 = getelementptr inbounds %"struct.vcl::affine_transform", ptr %183, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %184, ptr align 4 %31, i64 36, i1 false), !tbaa.struct !17
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %48) #7
  %185 = getelementptr inbounds %struct.scene_model, ptr %63, i32 0, i32 25
  call void @llvm.lifetime.start.p0(i64 32, ptr %50) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %51) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %50, ptr noundef @.str.22, ptr noundef nonnull align 1 dereferenceable(1) %51)
          to label %186 unwind label %276

186:                                              ; preds = %182
  %187 = invoke noundef nonnull align 8 dereferenceable(328) ptr @_ZN3vcl23hierarchy_mesh_drawableixERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(72) %185, ptr noundef nonnull align 8 dereferenceable(32) %50)
          to label %188 unwind label %280

188:                                              ; preds = %186
  %189 = getelementptr inbounds %"struct.vcl::hierarchy_mesh_drawable_node", ptr %187, i32 0, i32 3
  %190 = getelementptr inbounds %"struct.vcl::affine_transform", ptr %189, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %190, ptr align 4 %34, i64 36, i1 false), !tbaa.struct !17
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %50) #7
  %191 = getelementptr inbounds %struct.scene_model, ptr %63, i32 0, i32 25
  call void @llvm.lifetime.start.p0(i64 32, ptr %52) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %53) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %52, ptr noundef @.str.24, ptr noundef nonnull align 1 dereferenceable(1) %53)
          to label %192 unwind label %285

192:                                              ; preds = %188
  %193 = invoke noundef nonnull align 8 dereferenceable(328) ptr @_ZN3vcl23hierarchy_mesh_drawableixERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(72) %191, ptr noundef nonnull align 8 dereferenceable(32) %52)
          to label %194 unwind label %289

194:                                              ; preds = %192
  %195 = getelementptr inbounds %"struct.vcl::hierarchy_mesh_drawable_node", ptr %193, i32 0, i32 3
  %196 = getelementptr inbounds %"struct.vcl::affine_transform", ptr %195, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %196, ptr align 4 %36, i64 36, i1 false), !tbaa.struct !17
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %52) #7
  %197 = getelementptr inbounds %struct.scene_model, ptr %63, i32 0, i32 25
  call void @llvm.lifetime.start.p0(i64 32, ptr %54) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %55) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %54, ptr noundef @.str.26, ptr noundef nonnull align 1 dereferenceable(1) %55)
          to label %198 unwind label %294

198:                                              ; preds = %194
  %199 = invoke noundef nonnull align 8 dereferenceable(328) ptr @_ZN3vcl23hierarchy_mesh_drawableixERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(72) %197, ptr noundef nonnull align 8 dereferenceable(32) %54)
          to label %200 unwind label %298

200:                                              ; preds = %198
  %201 = getelementptr inbounds %"struct.vcl::hierarchy_mesh_drawable_node", ptr %199, i32 0, i32 3
  %202 = getelementptr inbounds %"struct.vcl::affine_transform", ptr %201, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %202, ptr align 4 %38, i64 36, i1 false), !tbaa.struct !17
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %54) #7
  call void @llvm.lifetime.start.p0(i64 36, ptr %56) #7
  call void @_ZN3vclmlILm3ELm3ELm3EEENS_3matIXT_EXT1_EEERKNS1_IXT_EXT0_EEERKNS1_IXT0_EXT1_EEE(ptr dead_on_unwind writable sret(%"struct.vcl::mat") align 4 %56, ptr noundef nonnull align 4 dereferenceable(36) %40, ptr noundef nonnull align 4 dereferenceable(36) %34)
  %203 = getelementptr inbounds %struct.scene_model, ptr %63, i32 0, i32 25
  call void @llvm.lifetime.start.p0(i64 32, ptr %57) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %58) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %57, ptr noundef @.str.27, ptr noundef nonnull align 1 dereferenceable(1) %58)
          to label %204 unwind label %303

204:                                              ; preds = %200
  %205 = invoke noundef nonnull align 8 dereferenceable(328) ptr @_ZN3vcl23hierarchy_mesh_drawableixERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(72) %203, ptr noundef nonnull align 8 dereferenceable(32) %57)
          to label %206 unwind label %307

206:                                              ; preds = %204
  %207 = getelementptr inbounds %"struct.vcl::hierarchy_mesh_drawable_node", ptr %205, i32 0, i32 3
  %208 = getelementptr inbounds %"struct.vcl::affine_transform", ptr %207, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %208, ptr align 4 %56, i64 36, i1 false), !tbaa.struct !17
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %57) #7
  call void @llvm.lifetime.end.p0(i64 36, ptr %56) #7
  %209 = getelementptr inbounds %struct.scene_model, ptr %63, i32 0, i32 25
  call void @llvm.lifetime.start.p0(i64 32, ptr %59) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %60) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %60) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %59, ptr noundef @.str.29, ptr noundef nonnull align 1 dereferenceable(1) %60)
          to label %210 unwind label %312

210:                                              ; preds = %206
  %211 = invoke noundef nonnull align 8 dereferenceable(328) ptr @_ZN3vcl23hierarchy_mesh_drawableixERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(72) %209, ptr noundef nonnull align 8 dereferenceable(32) %59)
          to label %212 unwind label %316

212:                                              ; preds = %210
  %213 = getelementptr inbounds %"struct.vcl::hierarchy_mesh_drawable_node", ptr %211, i32 0, i32 3
  %214 = getelementptr inbounds %"struct.vcl::affine_transform", ptr %213, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %214, ptr align 4 %36, i64 36, i1 false), !tbaa.struct !17
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %60) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %60) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %59) #7
  %215 = getelementptr inbounds %struct.scene_model, ptr %63, i32 0, i32 25
  call void @llvm.lifetime.start.p0(i64 32, ptr %61) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %62) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %61, ptr noundef @.str.31, ptr noundef nonnull align 1 dereferenceable(1) %62)
          to label %216 unwind label %321

216:                                              ; preds = %212
  %217 = invoke noundef nonnull align 8 dereferenceable(328) ptr @_ZN3vcl23hierarchy_mesh_drawableixERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(72) %215, ptr noundef nonnull align 8 dereferenceable(32) %61)
          to label %218 unwind label %325

218:                                              ; preds = %216
  %219 = getelementptr inbounds %"struct.vcl::hierarchy_mesh_drawable_node", ptr %217, i32 0, i32 3
  %220 = getelementptr inbounds %"struct.vcl::affine_transform", ptr %219, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %220, ptr align 4 %38, i64 36, i1 false), !tbaa.struct !17
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %62) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %61) #7
  %221 = getelementptr inbounds %struct.scene_model, ptr %63, i32 0, i32 25
  call void @_ZN3vcl23hierarchy_mesh_drawable34update_local_to_global_coordinatesEv(ptr noundef nonnull align 8 dereferenceable(72) %221)
  call void @llvm.lifetime.end.p0(i64 36, ptr %40) #7
  call void @llvm.lifetime.end.p0(i64 36, ptr %38) #7
  call void @llvm.lifetime.end.p0(i64 36, ptr %36) #7
  call void @llvm.lifetime.end.p0(i64 36, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 36, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 36, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 36, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #7
  ret void

222:                                              ; preds = %2
  %223 = landingpad { ptr, i32 }
          cleanup
  %224 = extractvalue { ptr, i32 } %223, 0
  store ptr %224, ptr %20, align 8
  %225 = extractvalue { ptr, i32 } %223, 1
  store i32 %225, ptr %21, align 4
  br label %230

226:                                              ; preds = %130
  %227 = landingpad { ptr, i32 }
          cleanup
  %228 = extractvalue { ptr, i32 } %227, 0
  store ptr %228, ptr %20, align 8
  %229 = extractvalue { ptr, i32 } %227, 1
  store i32 %229, ptr %21, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #7
  br label %230

230:                                              ; preds = %226, %222
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #7
  br label %331

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

235:                                              ; preds = %136
  %236 = landingpad { ptr, i32 }
          cleanup
  %237 = extractvalue { ptr, i32 } %236, 0
  store ptr %237, ptr %20, align 8
  %238 = extractvalue { ptr, i32 } %236, 1
  store i32 %238, ptr %21, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #7
  br label %239

239:                                              ; preds = %235, %231
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 36, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 36, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 36, ptr %22) #7
  br label %331

240:                                              ; preds = %138
  %241 = landingpad { ptr, i32 }
          cleanup
  %242 = extractvalue { ptr, i32 } %241, 0
  store ptr %242, ptr %20, align 8
  %243 = extractvalue { ptr, i32 } %241, 1
  store i32 %243, ptr %21, align 4
  br label %248

244:                                              ; preds = %162
  %245 = landingpad { ptr, i32 }
          cleanup
  %246 = extractvalue { ptr, i32 } %245, 0
  store ptr %246, ptr %20, align 8
  %247 = extractvalue { ptr, i32 } %245, 1
  store i32 %247, ptr %21, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #7
  br label %248

248:                                              ; preds = %244, %240
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %41) #7
  br label %330

249:                                              ; preds = %164
  %250 = landingpad { ptr, i32 }
          cleanup
  %251 = extractvalue { ptr, i32 } %250, 0
  store ptr %251, ptr %20, align 8
  %252 = extractvalue { ptr, i32 } %250, 1
  store i32 %252, ptr %21, align 4
  br label %257

253:                                              ; preds = %168
  %254 = landingpad { ptr, i32 }
          cleanup
  %255 = extractvalue { ptr, i32 } %254, 0
  store ptr %255, ptr %20, align 8
  %256 = extractvalue { ptr, i32 } %254, 1
  store i32 %256, ptr %21, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #7
  br label %257

257:                                              ; preds = %253, %249
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %43) #7
  br label %330

258:                                              ; preds = %170
  %259 = landingpad { ptr, i32 }
          cleanup
  %260 = extractvalue { ptr, i32 } %259, 0
  store ptr %260, ptr %20, align 8
  %261 = extractvalue { ptr, i32 } %259, 1
  store i32 %261, ptr %21, align 4
  br label %266

262:                                              ; preds = %174
  %263 = landingpad { ptr, i32 }
          cleanup
  %264 = extractvalue { ptr, i32 } %263, 0
  store ptr %264, ptr %20, align 8
  %265 = extractvalue { ptr, i32 } %263, 1
  store i32 %265, ptr %21, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #7
  br label %266

266:                                              ; preds = %262, %258
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %46) #7
  call void @llvm.lifetime.end.p0(i64 36, ptr %45) #7
  br label %330

267:                                              ; preds = %176
  %268 = landingpad { ptr, i32 }
          cleanup
  %269 = extractvalue { ptr, i32 } %268, 0
  store ptr %269, ptr %20, align 8
  %270 = extractvalue { ptr, i32 } %268, 1
  store i32 %270, ptr %21, align 4
  br label %275

271:                                              ; preds = %180
  %272 = landingpad { ptr, i32 }
          cleanup
  %273 = extractvalue { ptr, i32 } %272, 0
  store ptr %273, ptr %20, align 8
  %274 = extractvalue { ptr, i32 } %272, 1
  store i32 %274, ptr %21, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #7
  br label %275

275:                                              ; preds = %271, %267
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %48) #7
  br label %330

276:                                              ; preds = %182
  %277 = landingpad { ptr, i32 }
          cleanup
  %278 = extractvalue { ptr, i32 } %277, 0
  store ptr %278, ptr %20, align 8
  %279 = extractvalue { ptr, i32 } %277, 1
  store i32 %279, ptr %21, align 4
  br label %284

280:                                              ; preds = %186
  %281 = landingpad { ptr, i32 }
          cleanup
  %282 = extractvalue { ptr, i32 } %281, 0
  store ptr %282, ptr %20, align 8
  %283 = extractvalue { ptr, i32 } %281, 1
  store i32 %283, ptr %21, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #7
  br label %284

284:                                              ; preds = %280, %276
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %50) #7
  br label %330

285:                                              ; preds = %188
  %286 = landingpad { ptr, i32 }
          cleanup
  %287 = extractvalue { ptr, i32 } %286, 0
  store ptr %287, ptr %20, align 8
  %288 = extractvalue { ptr, i32 } %286, 1
  store i32 %288, ptr %21, align 4
  br label %293

289:                                              ; preds = %192
  %290 = landingpad { ptr, i32 }
          cleanup
  %291 = extractvalue { ptr, i32 } %290, 0
  store ptr %291, ptr %20, align 8
  %292 = extractvalue { ptr, i32 } %290, 1
  store i32 %292, ptr %21, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #7
  br label %293

293:                                              ; preds = %289, %285
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %52) #7
  br label %330

294:                                              ; preds = %194
  %295 = landingpad { ptr, i32 }
          cleanup
  %296 = extractvalue { ptr, i32 } %295, 0
  store ptr %296, ptr %20, align 8
  %297 = extractvalue { ptr, i32 } %295, 1
  store i32 %297, ptr %21, align 4
  br label %302

298:                                              ; preds = %198
  %299 = landingpad { ptr, i32 }
          cleanup
  %300 = extractvalue { ptr, i32 } %299, 0
  store ptr %300, ptr %20, align 8
  %301 = extractvalue { ptr, i32 } %299, 1
  store i32 %301, ptr %21, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #7
  br label %302

302:                                              ; preds = %298, %294
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %54) #7
  br label %330

303:                                              ; preds = %200
  %304 = landingpad { ptr, i32 }
          cleanup
  %305 = extractvalue { ptr, i32 } %304, 0
  store ptr %305, ptr %20, align 8
  %306 = extractvalue { ptr, i32 } %304, 1
  store i32 %306, ptr %21, align 4
  br label %311

307:                                              ; preds = %204
  %308 = landingpad { ptr, i32 }
          cleanup
  %309 = extractvalue { ptr, i32 } %308, 0
  store ptr %309, ptr %20, align 8
  %310 = extractvalue { ptr, i32 } %308, 1
  store i32 %310, ptr %21, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #7
  br label %311

311:                                              ; preds = %307, %303
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %57) #7
  call void @llvm.lifetime.end.p0(i64 36, ptr %56) #7
  br label %330

312:                                              ; preds = %206
  %313 = landingpad { ptr, i32 }
          cleanup
  %314 = extractvalue { ptr, i32 } %313, 0
  store ptr %314, ptr %20, align 8
  %315 = extractvalue { ptr, i32 } %313, 1
  store i32 %315, ptr %21, align 4
  br label %320

316:                                              ; preds = %210
  %317 = landingpad { ptr, i32 }
          cleanup
  %318 = extractvalue { ptr, i32 } %317, 0
  store ptr %318, ptr %20, align 8
  %319 = extractvalue { ptr, i32 } %317, 1
  store i32 %319, ptr %21, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #7
  br label %320

320:                                              ; preds = %316, %312
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %60) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %60) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %59) #7
  br label %330

321:                                              ; preds = %212
  %322 = landingpad { ptr, i32 }
          cleanup
  %323 = extractvalue { ptr, i32 } %322, 0
  store ptr %323, ptr %20, align 8
  %324 = extractvalue { ptr, i32 } %322, 1
  store i32 %324, ptr %21, align 4
  br label %329

325:                                              ; preds = %216
  %326 = landingpad { ptr, i32 }
          cleanup
  %327 = extractvalue { ptr, i32 } %326, 0
  store ptr %327, ptr %20, align 8
  %328 = extractvalue { ptr, i32 } %326, 1
  store i32 %328, ptr %21, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #7
  br label %329

329:                                              ; preds = %325, %321
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %62) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %61) #7
  br label %330

330:                                              ; preds = %329, %320, %311, %302, %293, %284, %275, %266, %257, %248
  call void @llvm.lifetime.end.p0(i64 36, ptr %40) #7
  call void @llvm.lifetime.end.p0(i64 36, ptr %38) #7
  call void @llvm.lifetime.end.p0(i64 36, ptr %36) #7
  call void @llvm.lifetime.end.p0(i64 36, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 36, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 36, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 36, ptr %29) #7
  br label %331

331:                                              ; preds = %330, %239, %230
  call void @llvm.lifetime.end.p0(i64 12, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #7
  br label %332

332:                                              ; preds = %331
  %333 = load ptr, ptr %20, align 8
  %334 = load i32, ptr %21, align 4
  %335 = insertvalue { ptr, i32 } poison, ptr %333, 0
  %336 = insertvalue { ptr, i32 } %335, i32 %334, 1
  resume { ptr, i32 } %336
}

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZSt3sinf(float noundef) #6

declare void @_ZN3vcl3matILm3ELm3EEC1Efffffffff(ptr noundef nonnull align 4 dereferenceable(36), float noundef, float noundef, float noundef, float noundef, float noundef, float noundef, float noundef, float noundef, float noundef) unnamed_addr #4

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

; Function Attrs: mustprogress uwtable
declare hidden noundef i64 @_ZL14index_at_valuefRKN3vcl6bufferI5vec3tEE(float noundef, ptr noundef nonnull align 8 dereferenceable(24)) #2

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

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

declare noundef nonnull align 8 dereferenceable(328) ptr @_ZN3vcl23hierarchy_mesh_drawableixERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(72), ptr noundef nonnull align 8 dereferenceable(32)) #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3vclmlILm3ELm3ELm3EEENS_3matIXT_EXT1_EEERKNS1_IXT_EXT0_EEERKNS1_IXT0_EXT1_EEE(ptr dead_on_unwind noalias writable sret(%"struct.vcl::mat") align 4, ptr noundef nonnull align 4 dereferenceable(36), ptr noundef nonnull align 4 dereferenceable(36)) #2

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

declare void @_ZN3vcl23hierarchy_mesh_drawable34update_local_to_global_coordinatesEv(ptr noundef nonnull align 8 dereferenceable(72)) #4

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"float", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"long", !7, i64 0}
!13 = !{!14, !10, i64 12}
!14 = !{!"_ZTS5vec3t", !15, i64 0, !10, i64 12}
!15 = !{!"_ZTSN3vcl12buffer_stackIfLm3EEE", !10, i64 0, !10, i64 4, !10, i64 8}
!16 = !{i64 0, i64 4, !9, i64 4, i64 4, !9, i64 8, i64 4, !9}
!17 = !{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}


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

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

@.str.10 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [11 x i8], align 1

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

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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 uwtable
define dso_local void @_ZN11scene_model21set_creature_rotationEf(ptr noundef nonnull align 8 dereferenceable(1516) %0, float noundef %1) local_unnamed_addr #5 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca %"struct.vcl::buffer_stack", align 8
  %4 = alloca %"class.std::__cxx11::basic_string", align 8
  %5 = alloca %"class.std::allocator.21", align 1
  %6 = alloca %"struct.vcl::mat", align 4
  %7 = alloca %"struct.vcl::mat", align 4
  %8 = alloca %"struct.vcl::buffer_stack", align 4
  %9 = alloca %"struct.vcl::mat", align 4
  %10 = alloca %"struct.vcl::buffer_stack", align 4
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::allocator.21", align 1
  %13 = alloca %"struct.vcl::mat", align 4
  %14 = alloca %"struct.vcl::buffer_stack", align 4
  %15 = alloca %"struct.vcl::mat", align 4
  %16 = alloca %"struct.vcl::buffer_stack", align 4
  %17 = alloca %"struct.vcl::mat", align 4
  %18 = alloca %"struct.vcl::mat", align 4
  %19 = alloca %"struct.vcl::buffer_stack", align 4
  %20 = alloca %"struct.vcl::mat", align 4
  %21 = alloca %"struct.vcl::buffer_stack", align 4
  %22 = alloca %"struct.vcl::mat", align 4
  %23 = alloca %"struct.vcl::buffer_stack", align 4
  %24 = alloca %"struct.vcl::mat", align 4
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca %"class.std::allocator.21", align 1
  %27 = alloca %"class.std::__cxx11::basic_string", align 8
  %28 = alloca %"class.std::allocator.21", align 1
  %29 = alloca %"struct.vcl::mat", align 4
  %30 = alloca %"class.std::__cxx11::basic_string", align 8
  %31 = alloca %"class.std::allocator.21", align 1
  %32 = alloca %"class.std::__cxx11::basic_string", align 8
  %33 = alloca %"class.std::allocator.21", align 1
  %34 = alloca %"class.std::__cxx11::basic_string", align 8
  %35 = alloca %"class.std::allocator.21", align 1
  %36 = alloca %"class.std::__cxx11::basic_string", align 8
  %37 = alloca %"class.std::allocator.21", align 1
  %38 = alloca %"class.std::__cxx11::basic_string", align 8
  %39 = alloca %"class.std::allocator.21", align 1
  %40 = alloca %"struct.vcl::mat", align 4
  %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 %"class.std::__cxx11::basic_string", align 8
  %46 = alloca %"class.std::allocator.21", align 1
  %47 = getelementptr inbounds i8, ptr %0, i64 1176
  %48 = tail call noundef i64 @_ZL14index_at_valuefRKN3vcl6bufferI5vec3tEE(float noundef %1, ptr noundef nonnull align 8 dereferenceable(24) %47)
  %49 = tail call noundef nonnull align 4 dereferenceable(16) ptr @_ZN3vcl6bufferI5vec3tEixEm(ptr noundef nonnull align 8 dereferenceable(24) %47, i64 noundef %48)
  %50 = getelementptr inbounds i8, ptr %49, i64 12
  %51 = load float, ptr %50, align 4, !tbaa !5
  %52 = add nsw i64 %48, -1
  %53 = tail call noundef nonnull align 4 dereferenceable(16) ptr @_ZN3vcl6bufferI5vec3tEixEm(ptr noundef nonnull align 8 dereferenceable(24) %47, i64 noundef %52)
  %54 = getelementptr inbounds i8, ptr %53, i64 12
  %55 = load float, ptr %54, align 4, !tbaa !5
  %56 = add nsw i64 %48, 1
  %57 = tail call noundef nonnull align 4 dereferenceable(16) ptr @_ZN3vcl6bufferI5vec3tEixEm(ptr noundef nonnull align 8 dereferenceable(24) %47, i64 noundef %56)
  %58 = getelementptr inbounds i8, ptr %57, i64 12
  %59 = load float, ptr %58, align 4, !tbaa !5
  %60 = add nsw i64 %48, 2
  %61 = tail call noundef nonnull align 4 dereferenceable(16) ptr @_ZN3vcl6bufferI5vec3tEixEm(ptr noundef nonnull align 8 dereferenceable(24) %47, i64 noundef %60)
  %62 = getelementptr inbounds i8, ptr %61, i64 12
  %63 = load float, ptr %62, align 4, !tbaa !5
  %64 = tail call noundef nonnull align 4 dereferenceable(16) ptr @_ZN3vcl6bufferI5vec3tEixEm(ptr noundef nonnull align 8 dereferenceable(24) %47, i64 noundef %48)
  %65 = tail call noundef nonnull align 4 dereferenceable(16) ptr @_ZN3vcl6bufferI5vec3tEixEm(ptr noundef nonnull align 8 dereferenceable(24) %47, i64 noundef %52)
  %66 = tail call noundef nonnull align 4 dereferenceable(16) ptr @_ZN3vcl6bufferI5vec3tEixEm(ptr noundef nonnull align 8 dereferenceable(24) %47, i64 noundef %56)
  %67 = tail call noundef nonnull align 4 dereferenceable(16) ptr @_ZN3vcl6bufferI5vec3tEixEm(ptr noundef nonnull align 8 dereferenceable(24) %47, i64 noundef %60)
  %68 = tail call { <2 x float>, float } @_ZL29cardinal_spline_interpolationfffffRKN3vcl12buffer_stackIfLm3EEES3_S3_S3_f(float noundef %1, float noundef %55, float noundef %51, float noundef %59, float noundef %63, ptr noundef nonnull align 4 dereferenceable(12) %65, ptr noundef nonnull align 4 dereferenceable(12) %64, ptr noundef nonnull align 4 dereferenceable(12) %66, ptr noundef nonnull align 4 dereferenceable(12) %67, float noundef 1.000000e+00)
  %.fca.0.extract1 = extractvalue { <2 x float>, float } %68, 0
  %.fca.1.extract2 = extractvalue { <2 x float>, float } %68, 1
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %3) #7
  %69 = tail call { <2 x float>, float } @_ZL33cardinal_spline_interpolation_derfffffRKN3vcl12buffer_stackIfLm3EEES3_S3_S3_f(float noundef %1, float noundef %55, float noundef %51, float noundef %59, float noundef %63, ptr noundef nonnull align 4 dereferenceable(12) %65, ptr noundef nonnull align 4 dereferenceable(12) %64, ptr noundef nonnull align 4 dereferenceable(12) %66, ptr noundef nonnull align 4 dereferenceable(12) %67, float noundef 1.000000e+00)
  %.fca.0.extract = extractvalue { <2 x float>, float } %69, 0
  %.fca.1.extract = extractvalue { <2 x float>, float } %69, 1
  store <2 x float> %.fca.0.extract, ptr %3, align 8
  %.sroa.2.0..sroa_idx = getelementptr inbounds i8, ptr %3, i64 8
  store float %.fca.1.extract, ptr %.sroa.2.0..sroa_idx, align 8
  %70 = getelementptr inbounds i8, ptr %0, i64 1224
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %5) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull @.str.10, ptr noundef nonnull align 1 dereferenceable(1) %5)
          to label %71 unwind label %132

71:                                               ; preds = %2
  %72 = invoke noundef nonnull align 8 dereferenceable(328) ptr @_ZN3vcl23hierarchy_mesh_drawableixERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(72) %70, ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %73 unwind label %134

73:                                               ; preds = %71
  %74 = getelementptr inbounds i8, ptr %72, i64 200
  store <2 x float> %.fca.0.extract1, ptr %74, align 8
  %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %72, i64 208
  store float %.fca.1.extract2, ptr %.sroa.5.0..sroa_idx, align 8, !tbaa !11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #7
  call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %6) #7
  call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %7) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %8) #7
  call void @_ZN3vcl12buffer_stackIfLm3EEC1Efff(ptr noundef nonnull align 4 dereferenceable(12) %8, float noundef 0.000000e+00, float noundef -1.000000e+00, float noundef 0.000000e+00)
  call void @_ZN3vcl28rotation_between_vector_mat3ERKNS_12buffer_stackIfLm3EEES3_(ptr dead_on_unwind nonnull writable sret(%"struct.vcl::mat") align 4 %7, ptr noundef nonnull align 4 dereferenceable(12) %8, ptr noundef nonnull align 4 dereferenceable(12) %3)
  call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %9) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %10) #7
  call void @_ZN3vcl12buffer_stackIfLm3EEC1Efff(ptr noundef nonnull align 4 dereferenceable(12) %10, float noundef 1.000000e+00, float noundef 0.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 %9, ptr noundef nonnull align 4 dereferenceable(12) %10, float noundef 1.000000e+00)
  call void @_ZN3vclmlILm3ELm3ELm3EEENS_3matIXT_EXT1_EEERKNS1_IXT_EXT0_EEERKNS1_IXT0_EXT1_EEE(ptr dead_on_unwind nonnull writable sret(%"struct.vcl::mat") align 4 %6, ptr noundef nonnull align 4 dereferenceable(36) %7, ptr noundef nonnull align 4 dereferenceable(36) %9)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %12) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull @.str.10, ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %75 unwind label %137

75:                                               ; preds = %73
  %76 = invoke noundef nonnull align 8 dereferenceable(328) ptr @_ZN3vcl23hierarchy_mesh_drawableixERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(72) %70, ptr noundef nonnull align 8 dereferenceable(32) %11)
          to label %77 unwind label %139

77:                                               ; preds = %75
  %78 = getelementptr inbounds i8, ptr %76, i64 212
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %78, ptr noundef nonnull align 4 dereferenceable(36) %6, i64 36, i1 false), !tbaa.struct !12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %8) #7
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %7) #7
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %6) #7
  call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %13) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %14) #7
  call void @_ZN3vcl12buffer_stackIfLm3EEC1Efff(ptr noundef nonnull align 4 dereferenceable(12) %14, float noundef 0.000000e+00, float noundef 1.000000e+00, float noundef 0.000000e+00)
  %79 = fadd float %1, 0xBFD99999A0000000
  %80 = fmul float %79, 0x40191EB860000000
  %81 = call noundef float @_ZSt3sinf(float noundef %80)
  call void @_ZN3vcl29rotation_from_axis_angle_mat3ERKNS_12buffer_stackIfLm3EEEf(ptr dead_on_unwind nonnull writable sret(%"struct.vcl::mat") align 4 %13, ptr noundef nonnull align 4 dereferenceable(12) %14, float noundef %81)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %14) #7
  call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %15) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %16) #7
  call void @_ZN3vcl12buffer_stackIfLm3EEC1Efff(ptr noundef nonnull align 4 dereferenceable(12) %16, float noundef 0.000000e+00, float noundef 1.000000e+00, float noundef 0.000000e+00)
  %82 = fadd float %1, 0xBFE3333340000000
  %83 = fmul float %82, 0x40191EB860000000
  %84 = call noundef float @_ZSt3sinf(float noundef %83)
  call void @_ZN3vcl29rotation_from_axis_angle_mat3ERKNS_12buffer_stackIfLm3EEEf(ptr dead_on_unwind nonnull writable sret(%"struct.vcl::mat") align 4 %15, ptr noundef nonnull align 4 dereferenceable(12) %16, float noundef %84)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %16) #7
  call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %17) #7
  call void @_ZN3vcl3matILm3ELm3EEC1Efffffffff(ptr noundef nonnull align 4 dereferenceable(36) %17, float noundef -1.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 1.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 1.000000e+00)
  call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %18) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %19) #7
  call void @_ZN3vcl12buffer_stackIfLm3EEC1Efff(ptr noundef nonnull align 4 dereferenceable(12) %19, float noundef 1.000000e+00, float noundef 1.000000e+00, float noundef 0.000000e+00)
  %85 = call noundef float @_ZSt3sinf(float noundef %80)
  call void @_ZN3vcl29rotation_from_axis_angle_mat3ERKNS_12buffer_stackIfLm3EEEf(ptr dead_on_unwind nonnull writable sret(%"struct.vcl::mat") align 4 %18, ptr noundef nonnull align 4 dereferenceable(12) %19, float noundef %85)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %19) #7
  call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %20) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %21) #7
  call void @_ZN3vcl12buffer_stackIfLm3EEC1Efff(ptr noundef nonnull align 4 dereferenceable(12) %21, float noundef 1.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %86 = fadd float %1, 0xBFE6666660000000
  %87 = fmul float %86, 0x40191EB860000000
  %88 = call noundef float @_ZSt3sinf(float noundef %87)
  call void @_ZN3vcl29rotation_from_axis_angle_mat3ERKNS_12buffer_stackIfLm3EEEf(ptr dead_on_unwind nonnull writable sret(%"struct.vcl::mat") align 4 %20, ptr noundef nonnull align 4 dereferenceable(12) %21, float noundef %88)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %21) #7
  call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %22) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %23) #7
  call void @_ZN3vcl12buffer_stackIfLm3EEC1Efff(ptr noundef nonnull align 4 dereferenceable(12) %23, float noundef 1.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %89 = fadd float %1, -1.000000e+00
  %90 = fmul float %89, 0x40191EB860000000
  %91 = call noundef float @_ZSt3sinf(float noundef %90)
  call void @_ZN3vcl29rotation_from_axis_angle_mat3ERKNS_12buffer_stackIfLm3EEEf(ptr dead_on_unwind nonnull writable sret(%"struct.vcl::mat") align 4 %22, ptr noundef nonnull align 4 dereferenceable(12) %23, float noundef %91)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %23) #7
  call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %24) #7
  call void @_ZN3vcl3matILm3ELm3EEC1Efffffffff(ptr noundef nonnull align 4 dereferenceable(36) %24, float noundef -1.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 1.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef -1.000000e+00)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %25) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %26) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull @.str.16, ptr noundef nonnull align 1 dereferenceable(1) %26)
          to label %92 unwind label %142

92:                                               ; preds = %77
  %93 = invoke noundef nonnull align 8 dereferenceable(328) ptr @_ZN3vcl23hierarchy_mesh_drawableixERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(72) %70, ptr noundef nonnull align 8 dereferenceable(32) %25)
          to label %94 unwind label %144

94:                                               ; preds = %92
  %95 = getelementptr inbounds i8, ptr %93, i64 212
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %95, ptr noundef nonnull align 4 dereferenceable(36) %13, i64 36, i1 false), !tbaa.struct !12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %26) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %27) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %28) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull @.str.18, ptr noundef nonnull align 1 dereferenceable(1) %28)
          to label %96 unwind label %147

96:                                               ; preds = %94
  %97 = invoke noundef nonnull align 8 dereferenceable(328) ptr @_ZN3vcl23hierarchy_mesh_drawableixERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(72) %70, ptr noundef nonnull align 8 dereferenceable(32) %27)
          to label %98 unwind label %149

98:                                               ; preds = %96
  %99 = getelementptr inbounds i8, ptr %97, i64 212
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %99, ptr noundef nonnull align 4 dereferenceable(36) %15, i64 36, i1 false), !tbaa.struct !12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #7
  call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %29) #7
  call void @_ZN3vclmlILm3ELm3ELm3EEENS_3matIXT_EXT1_EEERKNS1_IXT_EXT0_EEERKNS1_IXT0_EXT1_EEE(ptr dead_on_unwind nonnull writable sret(%"struct.vcl::mat") align 4 %29, ptr noundef nonnull align 4 dereferenceable(36) %17, ptr noundef nonnull align 4 dereferenceable(36) %13)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %30) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %31) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef nonnull @.str.19, ptr noundef nonnull align 1 dereferenceable(1) %31)
          to label %100 unwind label %152

100:                                              ; preds = %98
  %101 = invoke noundef nonnull align 8 dereferenceable(328) ptr @_ZN3vcl23hierarchy_mesh_drawableixERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(72) %70, ptr noundef nonnull align 8 dereferenceable(32) %30)
          to label %102 unwind label %154

102:                                              ; preds = %100
  %103 = getelementptr inbounds i8, ptr %101, i64 212
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %103, ptr noundef nonnull align 4 dereferenceable(36) %29, i64 36, i1 false), !tbaa.struct !12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %31) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #7
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %29) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %32) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %33) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef nonnull @.str.21, ptr noundef nonnull align 1 dereferenceable(1) %33)
          to label %104 unwind label %157

104:                                              ; preds = %102
  %105 = invoke noundef nonnull align 8 dereferenceable(328) ptr @_ZN3vcl23hierarchy_mesh_drawableixERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(72) %70, ptr noundef nonnull align 8 dereferenceable(32) %32)
          to label %106 unwind label %159

106:                                              ; preds = %104
  %107 = getelementptr inbounds i8, ptr %105, i64 212
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %107, ptr noundef nonnull align 4 dereferenceable(36) %15, i64 36, i1 false), !tbaa.struct !12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %33) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %34) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %35) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef nonnull @.str.22, ptr noundef nonnull align 1 dereferenceable(1) %35)
          to label %108 unwind label %162

108:                                              ; preds = %106
  %109 = invoke noundef nonnull align 8 dereferenceable(328) ptr @_ZN3vcl23hierarchy_mesh_drawableixERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(72) %70, ptr noundef nonnull align 8 dereferenceable(32) %34)
          to label %110 unwind label %164

110:                                              ; preds = %108
  %111 = getelementptr inbounds i8, ptr %109, i64 212
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %111, ptr noundef nonnull align 4 dereferenceable(36) %18, i64 36, i1 false), !tbaa.struct !12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %35) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %36) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %37) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %36, ptr noundef nonnull @.str.24, ptr noundef nonnull align 1 dereferenceable(1) %37)
          to label %112 unwind label %167

112:                                              ; preds = %110
  %113 = invoke noundef nonnull align 8 dereferenceable(328) ptr @_ZN3vcl23hierarchy_mesh_drawableixERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(72) %70, ptr noundef nonnull align 8 dereferenceable(32) %36)
          to label %114 unwind label %169

114:                                              ; preds = %112
  %115 = getelementptr inbounds i8, ptr %113, i64 212
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %115, ptr noundef nonnull align 4 dereferenceable(36) %20, i64 36, i1 false), !tbaa.struct !12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %37) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %36) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %38) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %39) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef nonnull @.str.26, ptr noundef nonnull align 1 dereferenceable(1) %39)
          to label %116 unwind label %172

116:                                              ; preds = %114
  %117 = invoke noundef nonnull align 8 dereferenceable(328) ptr @_ZN3vcl23hierarchy_mesh_drawableixERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(72) %70, ptr noundef nonnull align 8 dereferenceable(32) %38)
          to label %118 unwind label %174

118:                                              ; preds = %116
  %119 = getelementptr inbounds i8, ptr %117, i64 212
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %119, ptr noundef nonnull align 4 dereferenceable(36) %22, i64 36, i1 false), !tbaa.struct !12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %39) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %38) #7
  call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %40) #7
  call void @_ZN3vclmlILm3ELm3ELm3EEENS_3matIXT_EXT1_EEERKNS1_IXT_EXT0_EEERKNS1_IXT0_EXT1_EEE(ptr dead_on_unwind nonnull writable sret(%"struct.vcl::mat") align 4 %40, ptr noundef nonnull align 4 dereferenceable(36) %24, ptr noundef nonnull align 4 dereferenceable(36) %18)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %41) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %42) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %41, ptr noundef nonnull @.str.27, ptr noundef nonnull align 1 dereferenceable(1) %42)
          to label %120 unwind label %177

120:                                              ; preds = %118
  %121 = invoke noundef nonnull align 8 dereferenceable(328) ptr @_ZN3vcl23hierarchy_mesh_drawableixERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(72) %70, ptr noundef nonnull align 8 dereferenceable(32) %41)
          to label %122 unwind label %179

122:                                              ; preds = %120
  %123 = getelementptr inbounds i8, ptr %121, i64 212
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %123, ptr noundef nonnull align 4 dereferenceable(36) %40, i64 36, i1 false), !tbaa.struct !12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %42) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %41) #7
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %40) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %43) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %44) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %43, ptr noundef nonnull @.str.29, ptr noundef nonnull align 1 dereferenceable(1) %44)
          to label %124 unwind label %182

124:                                              ; preds = %122
  %125 = invoke noundef nonnull align 8 dereferenceable(328) ptr @_ZN3vcl23hierarchy_mesh_drawableixERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(72) %70, ptr noundef nonnull align 8 dereferenceable(32) %43)
          to label %126 unwind label %184

126:                                              ; preds = %124
  %127 = getelementptr inbounds i8, ptr %125, i64 212
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %127, ptr noundef nonnull align 4 dereferenceable(36) %20, i64 36, i1 false), !tbaa.struct !12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %44) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %43) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %45) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %46) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %45, ptr noundef nonnull @.str.31, ptr noundef nonnull align 1 dereferenceable(1) %46)
          to label %128 unwind label %187

128:                                              ; preds = %126
  %129 = invoke noundef nonnull align 8 dereferenceable(328) ptr @_ZN3vcl23hierarchy_mesh_drawableixERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(72) %70, ptr noundef nonnull align 8 dereferenceable(32) %45)
          to label %130 unwind label %189

130:                                              ; preds = %128
  %131 = getelementptr inbounds i8, ptr %129, i64 212
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %131, ptr noundef nonnull align 4 dereferenceable(36) %22, i64 36, i1 false), !tbaa.struct !12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %46) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %45) #7
  call void @_ZN3vcl23hierarchy_mesh_drawable34update_local_to_global_coordinatesEv(ptr noundef nonnull align 8 dereferenceable(72) %70)
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %24) #7
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %22) #7
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %20) #7
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %17) #7
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %13) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %3) #7
  ret void

132:                                              ; preds = %2
  %133 = landingpad { ptr, i32 }
          cleanup
  br label %136

134:                                              ; preds = %71
  %135 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #7
  br label %136

136:                                              ; preds = %134, %132
  %.pn = phi { ptr, i32 } [ %135, %134 ], [ %133, %132 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #7
  br label %193

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

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

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

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

144:                                              ; preds = %92
  %145 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #7
  br label %146

146:                                              ; preds = %144, %142
  %.pn56 = phi { ptr, i32 } [ %145, %144 ], [ %143, %142 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %26) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #7
  br label %192

147:                                              ; preds = %94
  %148 = landingpad { ptr, i32 }
          cleanup
  br label %151

149:                                              ; preds = %96
  %150 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #7
  br label %151

151:                                              ; preds = %149, %147
  %.pn58 = phi { ptr, i32 } [ %150, %149 ], [ %148, %147 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #7
  br label %192

152:                                              ; preds = %98
  %153 = landingpad { ptr, i32 }
          cleanup
  br label %156

154:                                              ; preds = %100
  %155 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #7
  br label %156

156:                                              ; preds = %154, %152
  %.pn60 = phi { ptr, i32 } [ %155, %154 ], [ %153, %152 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %31) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #7
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %29) #7
  br label %192

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

159:                                              ; preds = %104
  %160 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #7
  br label %161

161:                                              ; preds = %159, %157
  %.pn62 = phi { ptr, i32 } [ %160, %159 ], [ %158, %157 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %33) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #7
  br label %192

162:                                              ; preds = %106
  %163 = landingpad { ptr, i32 }
          cleanup
  br label %166

164:                                              ; preds = %108
  %165 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #7
  br label %166

166:                                              ; preds = %164, %162
  %.pn64 = phi { ptr, i32 } [ %165, %164 ], [ %163, %162 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %35) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #7
  br label %192

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

169:                                              ; preds = %112
  %170 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #7
  br label %171

171:                                              ; preds = %169, %167
  %.pn66 = phi { ptr, i32 } [ %170, %169 ], [ %168, %167 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %37) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %36) #7
  br label %192

172:                                              ; preds = %114
  %173 = landingpad { ptr, i32 }
          cleanup
  br label %176

174:                                              ; preds = %116
  %175 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #7
  br label %176

176:                                              ; preds = %174, %172
  %.pn68 = phi { ptr, i32 } [ %175, %174 ], [ %173, %172 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %39) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %38) #7
  br label %192

177:                                              ; preds = %118
  %178 = landingpad { ptr, i32 }
          cleanup
  br label %181

179:                                              ; preds = %120
  %180 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #7
  br label %181

181:                                              ; preds = %179, %177
  %.pn70 = phi { ptr, i32 } [ %180, %179 ], [ %178, %177 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %42) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %41) #7
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %40) #7
  br label %192

182:                                              ; preds = %122
  %183 = landingpad { ptr, i32 }
          cleanup
  br label %186

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

186:                                              ; preds = %184, %182
  %.pn72 = phi { ptr, i32 } [ %185, %184 ], [ %183, %182 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %44) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %43) #7
  br label %192

187:                                              ; preds = %126
  %188 = landingpad { ptr, i32 }
          cleanup
  br label %191

189:                                              ; preds = %128
  %190 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #7
  br label %191

191:                                              ; preds = %189, %187
  %.pn74 = phi { ptr, i32 } [ %190, %189 ], [ %188, %187 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %46) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %45) #7
  br label %192

192:                                              ; preds = %191, %186, %181, %176, %171, %166, %161, %156, %151, %146
  %.pn74.pn = phi { ptr, i32 } [ %.pn74, %191 ], [ %.pn72, %186 ], [ %.pn70, %181 ], [ %.pn68, %176 ], [ %.pn66, %171 ], [ %.pn64, %166 ], [ %.pn62, %161 ], [ %.pn60, %156 ], [ %.pn58, %151 ], [ %.pn56, %146 ]
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %24) #7
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %22) #7
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %20) #7
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %17) #7
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %13) #7
  br label %193

193:                                              ; preds = %192, %141, %136
  %.pn74.pn.pn = phi { ptr, i32 } [ %.pn74.pn, %192 ], [ %.pn54, %141 ], [ %.pn, %136 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %3) #7
  resume { ptr, i32 } %.pn74.pn.pn
}

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZSt3sinf(float noundef) local_unnamed_addr #6

declare void @_ZN3vcl3matILm3ELm3EEC1Efffffffff(ptr noundef nonnull align 4 dereferenceable(36), float noundef, float noundef, float noundef, float noundef, float noundef, float noundef, float noundef, float noundef, float noundef) unnamed_addr #4

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

; Function Attrs: mustprogress uwtable
declare hidden noundef i64 @_ZL14index_at_valuefRKN3vcl6bufferI5vec3tEE(float noundef, ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2

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

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

declare noundef nonnull align 8 dereferenceable(328) ptr @_ZN3vcl23hierarchy_mesh_drawableixERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(72), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3vclmlILm3ELm3ELm3EEENS_3matIXT_EXT1_EEERKNS1_IXT_EXT0_EEERKNS1_IXT0_EXT1_EEE(ptr dead_on_unwind noalias writable sret(%"struct.vcl::mat") align 4, ptr noundef nonnull align 4 dereferenceable(36), ptr noundef nonnull align 4 dereferenceable(36)) local_unnamed_addr #2

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

declare void @_ZN3vcl23hierarchy_mesh_drawable34update_local_to_global_coordinatesEv(ptr noundef nonnull align 8 dereferenceable(72)) local_unnamed_addr #4

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !8, i64 12}
!6 = !{!"_ZTS5vec3t", !7, i64 0, !8, i64 12}
!7 = !{!"_ZTSN3vcl12buffer_stackIfLm3EEE", !8, i64 0, !8, i64 4, !8, i64 8}
!8 = !{!"float", !9, i64 0}
!9 = !{!"omnipotent char", !10, i64 0}
!10 = !{!"Simple C++ TBAA"}
!11 = !{!8, !8, i64 0}
!12 = !{i64 0, i64 4, !11, i64 4, i64 4, !11, i64 8, i64 4, !11, i64 12, i64 4, !11, i64 16, i64 4, !11, i64 20, i64 4, !11, i64 24, i64 4, !11, i64 28, i64 4, !11, i64 32, i64 4, !11}


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