; LLVM IR from Overload-Technologies/Overload :: Dependencies/assimp/code/AssetLib/FBX (FBXConverter)

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

%class.aiMatrix4x4t = type { float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float }
%class.aiVector3t = 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.72" = type { i8 }
%"struct.std::_Rb_tree_const_iterator.167" = type { ptr }
%"struct.std::_Rb_tree_iterator.153" = type { ptr }
%"struct.Assimp::FBX::FBXConverter::PotentialNode" = type { %"class.std::unique_ptr.141", ptr }
%"class.std::unique_ptr.141" = type { %"struct.std::__uniq_ptr_data.142" }
%"struct.std::__uniq_ptr_data.142" = type { %"class.std::__uniq_ptr_impl.143" }
%"class.std::__uniq_ptr_impl.143" = type { %"class.std::tuple.144" }
%"class.std::tuple.144" = type { %"struct.std::_Tuple_impl.145" }
%"struct.std::_Tuple_impl.145" = type { %"struct.std::_Head_base.148" }
%"struct.std::_Head_base.148" = type { ptr }
%"class.Assimp::FBX::FBXConverter" = type <{ i32, [4 x i8], %"class.std::vector", %"class.std::vector.0", %"class.std::vector.5", %"class.std::vector.10", %"class.std::vector.15", %"class.std::vector.20", %"class.std::map", %"class.std::map.28", %"class.std::map.34", %"class.std::map.40", %"class.std::map.40", %"class.std::map.46", double, %"class.std::vector.52", ptr, ptr, i8, [7 x i8] }>
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<aiMesh *, std::allocator<aiMesh *>>::_Vector_impl" }
%"struct.std::_Vector_base<aiMesh *, std::allocator<aiMesh *>>::_Vector_impl" = type { %"struct.std::_Vector_base<aiMesh *, std::allocator<aiMesh *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<aiMesh *, std::allocator<aiMesh *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = type { %"struct.std::_Vector_base<aiMaterial *, std::allocator<aiMaterial *>>::_Vector_impl" }
%"struct.std::_Vector_base<aiMaterial *, std::allocator<aiMaterial *>>::_Vector_impl" = type { %"struct.std::_Vector_base<aiMaterial *, std::allocator<aiMaterial *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<aiMaterial *, std::allocator<aiMaterial *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.5" = type { %"struct.std::_Vector_base.6" }
%"struct.std::_Vector_base.6" = type { %"struct.std::_Vector_base<aiAnimation *, std::allocator<aiAnimation *>>::_Vector_impl" }
%"struct.std::_Vector_base<aiAnimation *, std::allocator<aiAnimation *>>::_Vector_impl" = type { %"struct.std::_Vector_base<aiAnimation *, std::allocator<aiAnimation *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<aiAnimation *, std::allocator<aiAnimation *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.10" = type { %"struct.std::_Vector_base.11" }
%"struct.std::_Vector_base.11" = type { %"struct.std::_Vector_base<aiLight *, std::allocator<aiLight *>>::_Vector_impl" }
%"struct.std::_Vector_base<aiLight *, std::allocator<aiLight *>>::_Vector_impl" = type { %"struct.std::_Vector_base<aiLight *, std::allocator<aiLight *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<aiLight *, std::allocator<aiLight *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.15" = type { %"struct.std::_Vector_base.16" }
%"struct.std::_Vector_base.16" = type { %"struct.std::_Vector_base<aiCamera *, std::allocator<aiCamera *>>::_Vector_impl" }
%"struct.std::_Vector_base<aiCamera *, std::allocator<aiCamera *>>::_Vector_impl" = type { %"struct.std::_Vector_base<aiCamera *, std::allocator<aiCamera *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<aiCamera *, std::allocator<aiCamera *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.20" = type { %"struct.std::_Vector_base.21" }
%"struct.std::_Vector_base.21" = type { %"struct.std::_Vector_base<aiTexture *, std::allocator<aiTexture *>>::_Vector_impl" }
%"struct.std::_Vector_base<aiTexture *, std::allocator<aiTexture *>>::_Vector_impl" = type { %"struct.std::_Vector_base<aiTexture *, std::allocator<aiTexture *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<aiTexture *, std::allocator<aiTexture *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<const Assimp::FBX::Material *, std::pair<const Assimp::FBX::Material *const, unsigned int>, std::_Select1st<std::pair<const Assimp::FBX::Material *const, unsigned int>>, std::less<const Assimp::FBX::Material *>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<const Assimp::FBX::Material *, std::pair<const Assimp::FBX::Material *const, unsigned int>, std::_Select1st<std::pair<const Assimp::FBX::Material *const, unsigned int>>, std::less<const Assimp::FBX::Material *>>::_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::map.28" = type { %"class.std::_Rb_tree.29" }
%"class.std::_Rb_tree.29" = type { %"struct.std::_Rb_tree<const Assimp::FBX::Video *, std::pair<const Assimp::FBX::Video *const, unsigned int>, std::_Select1st<std::pair<const Assimp::FBX::Video *const, unsigned int>>, std::less<const Assimp::FBX::Video *>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<const Assimp::FBX::Video *, std::pair<const Assimp::FBX::Video *const, unsigned int>, std::_Select1st<std::pair<const Assimp::FBX::Video *const, unsigned int>>, std::less<const Assimp::FBX::Video *>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.34" = type { %"class.std::_Rb_tree.35" }
%"class.std::_Rb_tree.35" = type { %"struct.std::_Rb_tree<const Assimp::FBX::Geometry *, std::pair<const Assimp::FBX::Geometry *const, std::vector<unsigned int>>, std::_Select1st<std::pair<const Assimp::FBX::Geometry *const, std::vector<unsigned int>>>, std::less<const Assimp::FBX::Geometry *>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<const Assimp::FBX::Geometry *, std::pair<const Assimp::FBX::Geometry *const, std::vector<unsigned int>>, std::_Select1st<std::pair<const Assimp::FBX::Geometry *const, std::vector<unsigned int>>>, std::less<const Assimp::FBX::Geometry *>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.40" = type { %"class.std::_Rb_tree.41" }
%"class.std::_Rb_tree.41" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, unsigned int>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, unsigned 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>, unsigned int>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, unsigned int>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.46" = type { %"class.std::_Rb_tree.47" }
%"class.std::_Rb_tree.47" = type { %"struct.std::_Rb_tree<const std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, aiBone *>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, aiBone *>>, std::less<const std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<const std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, aiBone *>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, aiBone *>>, std::less<const std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::vector.52" = type { %"struct.std::_Vector_base.53" }
%"struct.std::_Vector_base.53" = type { %"struct.std::_Vector_base<aiSkeleton *, std::allocator<aiSkeleton *>>::_Vector_impl" }
%"struct.std::_Vector_base<aiSkeleton *, std::allocator<aiSkeleton *>>::_Vector_impl" = type { %"struct.std::_Vector_base<aiSkeleton *, std::allocator<aiSkeleton *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<aiSkeleton *, std::allocator<aiSkeleton *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.Assimp::FBX::ImportSettings" = type { i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8 }
%"struct.std::pair.154" = type <{ %"class.std::__cxx11::basic_string", i32, [4 x i8] }>
%struct.aiNode = type { %struct.aiString, %class.aiMatrix4x4t, ptr, i32, ptr, i32, ptr, ptr }
%struct.aiString = type { i32, [1024 x i8] }

@.str.5 = external hidden unnamed_addr constant [119 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [20 x i8], align 1

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 1 dereferenceable(15) ptr @_ZNK6Assimp3FBX8Document8SettingsEv(ptr noundef nonnull align 8 dereferenceable(336)) #0 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN6Assimp3FBX12FBXConverter31GenerateTransformationNodeChainERKNS0_5ModelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERSt6vectorINS1_13PotentialNodeESaISE_EESH_(ptr noundef nonnull align 8 dereferenceable(489) %0, ptr noundef nonnull align 8 dereferenceable(208) %1, ptr noundef nonnull align 8 dereferenceable(32) %2, ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(24) %4) #4 align 2 personality ptr @__gxx_personality_v0 {
  %6 = alloca i1, align 1
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca i8, align 1
  %15 = alloca [17 x %class.aiMatrix4x4t], align 16
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca %class.aiMatrix4x4t, align 4
  %20 = alloca float, align 4
  %21 = alloca %class.aiVector3t, align 4
  %22 = alloca ptr, align 8
  %23 = alloca %class.aiVector3t, align 4
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.std::allocator.72", align 1
  %26 = alloca ptr, align 8
  %27 = alloca i32, align 4
  %28 = alloca { <2 x float>, float }, align 8
  %29 = alloca ptr, align 8
  %30 = alloca %class.aiVector3t, align 4
  %31 = alloca %"class.std::__cxx11::basic_string", align 8
  %32 = alloca %"class.std::allocator.72", align 1
  %33 = alloca { <2 x float>, float }, align 8
  %34 = alloca ptr, align 8
  %35 = alloca %class.aiVector3t, align 4
  %36 = alloca %"class.std::__cxx11::basic_string", align 8
  %37 = alloca %"class.std::allocator.72", align 1
  %38 = alloca { <2 x float>, float }, align 8
  %39 = alloca %class.aiVector3t, align 4
  %40 = alloca { <2 x float>, float }, align 8
  %41 = alloca ptr, align 8
  %42 = alloca %class.aiVector3t, align 4
  %43 = alloca %"class.std::__cxx11::basic_string", align 8
  %44 = alloca %"class.std::allocator.72", align 1
  %45 = alloca { <2 x float>, float }, align 8
  %46 = alloca ptr, align 8
  %47 = alloca %class.aiVector3t, align 4
  %48 = alloca %"class.std::__cxx11::basic_string", align 8
  %49 = alloca %"class.std::allocator.72", align 1
  %50 = alloca { <2 x float>, float }, align 8
  %51 = alloca ptr, align 8
  %52 = alloca %class.aiVector3t, align 4
  %53 = alloca %"class.std::__cxx11::basic_string", align 8
  %54 = alloca %"class.std::allocator.72", align 1
  %55 = alloca { <2 x float>, float }, align 8
  %56 = alloca %class.aiVector3t, align 4
  %57 = alloca { <2 x float>, float }, align 8
  %58 = alloca ptr, align 8
  %59 = alloca %class.aiVector3t, align 4
  %60 = alloca %"class.std::__cxx11::basic_string", align 8
  %61 = alloca %"class.std::allocator.72", align 1
  %62 = alloca { <2 x float>, float }, align 8
  %63 = alloca ptr, align 8
  %64 = alloca %class.aiVector3t, align 4
  %65 = alloca %"class.std::__cxx11::basic_string", align 8
  %66 = alloca %"class.std::allocator.72", align 1
  %67 = alloca { <2 x float>, float }, align 8
  %68 = alloca %class.aiVector3t, align 4
  %69 = alloca { <2 x float>, float }, align 8
  %70 = alloca ptr, align 8
  %71 = alloca %class.aiVector3t, align 4
  %72 = alloca %"class.std::__cxx11::basic_string", align 8
  %73 = alloca %"class.std::allocator.72", align 1
  %74 = alloca { <2 x float>, float }, align 8
  %75 = alloca ptr, align 8
  %76 = alloca %class.aiVector3t, align 4
  %77 = alloca %"class.std::__cxx11::basic_string", align 8
  %78 = alloca %"class.std::allocator.72", align 1
  %79 = alloca { <2 x float>, float }, align 8
  %80 = alloca %class.aiVector3t, align 4
  %81 = alloca { <2 x float>, float }, align 8
  %82 = alloca %class.aiVector3t, align 4
  %83 = alloca i8, align 1
  %84 = alloca i32, align 4
  %85 = alloca i32, align 4
  %86 = alloca ptr, align 8
  %87 = alloca %class.aiVector3t, align 4
  %88 = alloca %"class.std::__cxx11::basic_string", align 8
  %89 = alloca %"class.std::allocator.72", align 1
  %90 = alloca { <2 x float>, float }, align 8
  %91 = alloca ptr, align 8
  %92 = alloca %class.aiVector3t, align 4
  %93 = alloca %"class.std::__cxx11::basic_string", align 8
  %94 = alloca %"class.std::allocator.72", align 1
  %95 = alloca { <2 x float>, float }, align 8
  %96 = alloca %class.aiVector3t, align 4
  %97 = alloca { <2 x float>, float }, align 8
  %98 = alloca %"struct.std::_Rb_tree_const_iterator.167", align 8
  %99 = alloca %"struct.std::_Rb_tree_iterator.153", align 8
  %100 = alloca i32, align 4
  %101 = alloca %"struct.std::_Rb_tree_const_iterator.167", align 8
  %102 = alloca %"struct.std::_Rb_tree_iterator.153", align 8
  %103 = alloca i32, align 4
  %104 = alloca i64, align 8
  %105 = alloca i32, align 4
  %106 = alloca %"struct.Assimp::FBX::FBXConverter::PotentialNode", align 8
  %107 = alloca %"class.std::__cxx11::basic_string", align 8
  %108 = alloca %"struct.Assimp::FBX::FBXConverter::PotentialNode", align 8
  %109 = alloca i32, align 4
  %110 = alloca %class.aiMatrix4x4t, align 4
  store ptr %0, ptr %7, align 8, !tbaa !5
  store ptr %1, ptr %8, align 8, !tbaa !5
  store ptr %2, ptr %9, align 8, !tbaa !5
  store ptr %3, ptr %10, align 8, !tbaa !5
  store ptr %4, ptr %11, align 8, !tbaa !5
  %111 = load ptr, ptr %7, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #8
  %112 = load ptr, ptr %8, align 8, !tbaa !5
  %113 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNK6Assimp3FBX5Model5PropsEv(ptr noundef nonnull align 8 dereferenceable(208) %112)
  store ptr %113, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #8
  %114 = load ptr, ptr %8, align 8, !tbaa !5
  %115 = call noundef i32 @_ZNK6Assimp3FBX5Model13RotationOrderEv(ptr noundef nonnull align 8 dereferenceable(208) %114)
  store i32 %115, ptr %13, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #8
  call void @llvm.lifetime.start.p0(i64 1088, ptr %15) #8
  %116 = getelementptr inbounds [17 x %class.aiMatrix4x4t], ptr %15, i32 0, i32 0
  %117 = getelementptr inbounds %class.aiMatrix4x4t, ptr %116, i64 17
  br label %118

118:                                              ; preds = %118, %5
  %119 = phi ptr [ %116, %5 ], [ %120, %118 ]
  call void @_ZN12aiMatrix4x4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(64) %119) #8
  %120 = getelementptr inbounds %class.aiMatrix4x4t, ptr %119, i64 1
  %121 = icmp eq ptr %120, %117
  br i1 %121, label %122, label %118

122:                                              ; preds = %118
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #8
  store i32 0, ptr %16, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #8
  store i32 4232, ptr %17, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #8
  store i32 126839, ptr %18, align 4, !tbaa !11
  %123 = getelementptr inbounds [17 x %class.aiMatrix4x4t], ptr %15, i64 0, i64 0
  call void @llvm.lifetime.start.p0(i64 64, ptr %19) #8
  call void @_ZN12aiMatrix4x4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(64) %19) #8
  %124 = call noundef ptr @_ZSt6fill_nIP12aiMatrix4x4tIfEjS1_ET_S3_T0_RKT1_(ptr noundef %123, i32 noundef 17, ptr noundef nonnull align 4 dereferenceable(64) %19)
  call void @llvm.lifetime.end.p0(i64 64, ptr %19) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #8
  %125 = call noundef float @_ZN6Assimp4Math10getEpsilonIfEET_v()
  store float %125, ptr %20, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 12, ptr %21) #8
  call void @_ZN10aiVector3tIfEC2Efff(ptr noundef nonnull align 4 dereferenceable(12) %21, float noundef 1.000000e+00, float noundef 1.000000e+00, float noundef 1.000000e+00)
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #8
  call void @llvm.lifetime.start.p0(i64 12, ptr %23) #8
  %126 = load ptr, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %24) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef @.str.18, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %127 unwind label %142

127:                                              ; preds = %122
  %128 = invoke { <2 x float>, float } @_ZN6Assimp3FBX11PropertyGetI10aiVector3tIfEEET_RKNS0_13PropertyTableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERbb(ptr noundef nonnull align 8 dereferenceable(120) %126, ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull align 1 dereferenceable(1) %14, i1 noundef zeroext false)
          to label %129 unwind label %146

129:                                              ; preds = %127
  store { <2 x float>, float } %128, ptr %28, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %23, ptr align 8 %28, i64 12, i1 false)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #8
  store ptr %23, ptr %22, align 8, !tbaa !5
  %130 = load i8, ptr %14, align 1, !tbaa !15, !range !17, !noundef !18
  %131 = trunc i8 %130 to i1
  br i1 %131, label %132, label %151

132:                                              ; preds = %129
  %133 = load ptr, ptr %22, align 8, !tbaa !5
  %134 = call noundef float @_ZNK10aiVector3tIfE12SquareLengthEv(ptr noundef nonnull align 4 dereferenceable(12) %133)
  %135 = load float, ptr %20, align 4, !tbaa !13
  %136 = fcmp ogt float %134, %135
  br i1 %136, label %137, label %151

137:                                              ; preds = %132
  %138 = load i32, ptr %16, align 4, !tbaa !11
  %139 = or i32 %138, 64
  store i32 %139, ptr %16, align 4, !tbaa !11
  %140 = load ptr, ptr %22, align 8, !tbaa !5
  %141 = getelementptr inbounds [17 x %class.aiMatrix4x4t], ptr %15, i64 0, i64 6
  call void @_ZN6Assimp3FBX12FBXConverter17GetRotationMatrixENS0_5Model8RotOrderERK10aiVector3tIfER12aiMatrix4x4tIfE(ptr noundef nonnull align 8 dereferenceable(489) %111, i32 noundef 0, ptr noundef nonnull align 4 dereferenceable(12) %140, ptr noundef nonnull align 4 dereferenceable(64) %141)
  br label %151

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

146:                                              ; preds = %127
  %147 = landingpad { ptr, i32 }
          cleanup
  %148 = extractvalue { ptr, i32 } %147, 0
  store ptr %148, ptr %26, align 8
  %149 = extractvalue { ptr, i32 } %147, 1
  store i32 %149, ptr %27, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #8
  br label %150

150:                                              ; preds = %146, %142
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #8
  br label %671

151:                                              ; preds = %137, %132, %129
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #8
  call void @llvm.lifetime.start.p0(i64 12, ptr %30) #8
  %152 = load ptr, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %31) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %32) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef @.str.20, ptr noundef nonnull align 1 dereferenceable(1) %32)
          to label %153 unwind label %168

153:                                              ; preds = %151
  %154 = invoke { <2 x float>, float } @_ZN6Assimp3FBX11PropertyGetI10aiVector3tIfEEET_RKNS0_13PropertyTableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERbb(ptr noundef nonnull align 8 dereferenceable(120) %152, ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef nonnull align 1 dereferenceable(1) %14, i1 noundef zeroext false)
          to label %155 unwind label %172

155:                                              ; preds = %153
  store { <2 x float>, float } %154, ptr %33, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %30, ptr align 8 %33, i64 12, i1 false)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #8
  store ptr %30, ptr %29, align 8, !tbaa !5
  %156 = load i8, ptr %14, align 1, !tbaa !15, !range !17, !noundef !18
  %157 = trunc i8 %156 to i1
  br i1 %157, label %158, label %177

158:                                              ; preds = %155
  %159 = load ptr, ptr %29, align 8, !tbaa !5
  %160 = call noundef float @_ZNK10aiVector3tIfE12SquareLengthEv(ptr noundef nonnull align 4 dereferenceable(12) %159)
  %161 = load float, ptr %20, align 4, !tbaa !13
  %162 = fcmp ogt float %160, %161
  br i1 %162, label %163, label %177

163:                                              ; preds = %158
  %164 = load i32, ptr %16, align 4, !tbaa !11
  %165 = or i32 %164, 256
  store i32 %165, ptr %16, align 4, !tbaa !11
  %166 = load ptr, ptr %29, align 8, !tbaa !5
  %167 = getelementptr inbounds [17 x %class.aiMatrix4x4t], ptr %15, i64 0, i64 8
  call void @_ZN6Assimp3FBX12FBXConverter17GetRotationMatrixENS0_5Model8RotOrderERK10aiVector3tIfER12aiMatrix4x4tIfE(ptr noundef nonnull align 8 dereferenceable(489) %111, i32 noundef 0, ptr noundef nonnull align 4 dereferenceable(12) %166, ptr noundef nonnull align 4 dereferenceable(64) %167)
  br label %177

168:                                              ; preds = %151
  %169 = landingpad { ptr, i32 }
          cleanup
  %170 = extractvalue { ptr, i32 } %169, 0
  store ptr %170, ptr %26, align 8
  %171 = extractvalue { ptr, i32 } %169, 1
  store i32 %171, ptr %27, align 4
  br label %176

172:                                              ; preds = %153
  %173 = landingpad { ptr, i32 }
          cleanup
  %174 = extractvalue { ptr, i32 } %173, 0
  store ptr %174, ptr %26, align 8
  %175 = extractvalue { ptr, i32 } %173, 1
  store i32 %175, ptr %27, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #8
  br label %176

176:                                              ; preds = %172, %168
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #8
  br label %670

177:                                              ; preds = %163, %158, %155
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #8
  call void @llvm.lifetime.start.p0(i64 12, ptr %35) #8
  %178 = load ptr, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %36) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %37) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %36, ptr noundef @.str.17, ptr noundef nonnull align 1 dereferenceable(1) %37)
          to label %179 unwind label %200

179:                                              ; preds = %177
  %180 = invoke { <2 x float>, float } @_ZN6Assimp3FBX11PropertyGetI10aiVector3tIfEEET_RKNS0_13PropertyTableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERbb(ptr noundef nonnull align 8 dereferenceable(120) %178, ptr noundef nonnull align 8 dereferenceable(32) %36, ptr noundef nonnull align 1 dereferenceable(1) %14, i1 noundef zeroext false)
          to label %181 unwind label %204

181:                                              ; preds = %179
  store { <2 x float>, float } %180, ptr %38, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %35, ptr align 8 %38, i64 12, i1 false)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #8
  store ptr %35, ptr %34, align 8, !tbaa !5
  %182 = load i8, ptr %14, align 1, !tbaa !15, !range !17, !noundef !18
  %183 = trunc i8 %182 to i1
  br i1 %183, label %184, label %209

184:                                              ; preds = %181
  %185 = load ptr, ptr %34, align 8, !tbaa !5
  %186 = call noundef float @_ZNK10aiVector3tIfE12SquareLengthEv(ptr noundef nonnull align 4 dereferenceable(12) %185)
  %187 = load float, ptr %20, align 4, !tbaa !13
  %188 = fcmp ogt float %186, %187
  br i1 %188, label %189, label %209

189:                                              ; preds = %184
  %190 = load i32, ptr %16, align 4, !tbaa !11
  %191 = or i32 %190, 32
  %192 = or i32 %191, 512
  store i32 %192, ptr %16, align 4, !tbaa !11
  %193 = load ptr, ptr %34, align 8, !tbaa !5
  %194 = getelementptr inbounds [17 x %class.aiMatrix4x4t], ptr %15, i64 0, i64 5
  %195 = call noundef nonnull align 4 dereferenceable(64) ptr @_ZN12aiMatrix4x4tIfE11TranslationERK10aiVector3tIfERS0_(ptr noundef nonnull align 4 dereferenceable(12) %193, ptr noundef nonnull align 4 dereferenceable(64) %194)
  call void @llvm.lifetime.start.p0(i64 12, ptr %39) #8
  %196 = load ptr, ptr %34, align 8, !tbaa !5
  %197 = call { <2 x float>, float } @_ZngIfE10aiVector3tIT_ERKS2_(ptr noundef nonnull align 4 dereferenceable(12) %196)
  store { <2 x float>, float } %197, ptr %40, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %39, ptr align 8 %40, i64 12, i1 false)
  %198 = getelementptr inbounds [17 x %class.aiMatrix4x4t], ptr %15, i64 0, i64 9
  %199 = call noundef nonnull align 4 dereferenceable(64) ptr @_ZN12aiMatrix4x4tIfE11TranslationERK10aiVector3tIfERS0_(ptr noundef nonnull align 4 dereferenceable(12) %39, ptr noundef nonnull align 4 dereferenceable(64) %198)
  call void @llvm.lifetime.end.p0(i64 12, ptr %39) #8
  br label %209

200:                                              ; preds = %177
  %201 = landingpad { ptr, i32 }
          cleanup
  %202 = extractvalue { ptr, i32 } %201, 0
  store ptr %202, ptr %26, align 8
  %203 = extractvalue { ptr, i32 } %201, 1
  store i32 %203, ptr %27, align 4
  br label %208

204:                                              ; preds = %179
  %205 = landingpad { ptr, i32 }
          cleanup
  %206 = extractvalue { ptr, i32 } %205, 0
  store ptr %206, ptr %26, align 8
  %207 = extractvalue { ptr, i32 } %205, 1
  store i32 %207, ptr %27, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #8
  br label %208

208:                                              ; preds = %204, %200
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #8
  br label %669

209:                                              ; preds = %189, %184, %181
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #8
  call void @llvm.lifetime.start.p0(i64 12, ptr %42) #8
  %210 = load ptr, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %43) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %44) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %43, ptr noundef @.str.16, ptr noundef nonnull align 1 dereferenceable(1) %44)
          to label %211 unwind label %227

211:                                              ; preds = %209
  %212 = invoke { <2 x float>, float } @_ZN6Assimp3FBX11PropertyGetI10aiVector3tIfEEET_RKNS0_13PropertyTableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERbb(ptr noundef nonnull align 8 dereferenceable(120) %210, ptr noundef nonnull align 8 dereferenceable(32) %43, ptr noundef nonnull align 1 dereferenceable(1) %14, i1 noundef zeroext false)
          to label %213 unwind label %231

213:                                              ; preds = %211
  store { <2 x float>, float } %212, ptr %45, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %42, ptr align 8 %45, i64 12, i1 false)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %43) #8
  store ptr %42, ptr %41, align 8, !tbaa !5
  %214 = load i8, ptr %14, align 1, !tbaa !15, !range !17, !noundef !18
  %215 = trunc i8 %214 to i1
  br i1 %215, label %216, label %236

216:                                              ; preds = %213
  %217 = load ptr, ptr %41, align 8, !tbaa !5
  %218 = call noundef float @_ZNK10aiVector3tIfE12SquareLengthEv(ptr noundef nonnull align 4 dereferenceable(12) %217)
  %219 = load float, ptr %20, align 4, !tbaa !13
  %220 = fcmp ogt float %218, %219
  br i1 %220, label %221, label %236

221:                                              ; preds = %216
  %222 = load i32, ptr %16, align 4, !tbaa !11
  %223 = or i32 %222, 16
  store i32 %223, ptr %16, align 4, !tbaa !11
  %224 = load ptr, ptr %41, align 8, !tbaa !5
  %225 = getelementptr inbounds [17 x %class.aiMatrix4x4t], ptr %15, i64 0, i64 4
  %226 = call noundef nonnull align 4 dereferenceable(64) ptr @_ZN12aiMatrix4x4tIfE11TranslationERK10aiVector3tIfERS0_(ptr noundef nonnull align 4 dereferenceable(12) %224, ptr noundef nonnull align 4 dereferenceable(64) %225)
  br label %236

227:                                              ; preds = %209
  %228 = landingpad { ptr, i32 }
          cleanup
  %229 = extractvalue { ptr, i32 } %228, 0
  store ptr %229, ptr %26, align 8
  %230 = extractvalue { ptr, i32 } %228, 1
  store i32 %230, ptr %27, align 4
  br label %235

231:                                              ; preds = %211
  %232 = landingpad { ptr, i32 }
          cleanup
  %233 = extractvalue { ptr, i32 } %232, 0
  store ptr %233, ptr %26, align 8
  %234 = extractvalue { ptr, i32 } %232, 1
  store i32 %234, ptr %27, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #8
  br label %235

235:                                              ; preds = %231, %227
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %43) #8
  br label %668

236:                                              ; preds = %221, %216, %213
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #8
  call void @llvm.lifetime.start.p0(i64 12, ptr %47) #8
  %237 = load ptr, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %48) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %49) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %48, ptr noundef @.str.22, ptr noundef nonnull align 1 dereferenceable(1) %49)
          to label %238 unwind label %254

238:                                              ; preds = %236
  %239 = invoke { <2 x float>, float } @_ZN6Assimp3FBX11PropertyGetI10aiVector3tIfEEET_RKNS0_13PropertyTableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERbb(ptr noundef nonnull align 8 dereferenceable(120) %237, ptr noundef nonnull align 8 dereferenceable(32) %48, ptr noundef nonnull align 1 dereferenceable(1) %14, i1 noundef zeroext false)
          to label %240 unwind label %258

240:                                              ; preds = %238
  store { <2 x float>, float } %239, ptr %50, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %47, ptr align 8 %50, i64 12, i1 false)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %48) #8
  store ptr %47, ptr %46, align 8, !tbaa !5
  %241 = load i8, ptr %14, align 1, !tbaa !15, !range !17, !noundef !18
  %242 = trunc i8 %241 to i1
  br i1 %242, label %243, label %263

243:                                              ; preds = %240
  %244 = load ptr, ptr %46, align 8, !tbaa !5
  %245 = call noundef float @_ZNK10aiVector3tIfE12SquareLengthEv(ptr noundef nonnull align 4 dereferenceable(12) %244)
  %246 = load float, ptr %20, align 4, !tbaa !13
  %247 = fcmp ogt float %245, %246
  br i1 %247, label %248, label %263

248:                                              ; preds = %243
  %249 = load i32, ptr %16, align 4, !tbaa !11
  %250 = or i32 %249, 1024
  store i32 %250, ptr %16, align 4, !tbaa !11
  %251 = load ptr, ptr %46, align 8, !tbaa !5
  %252 = getelementptr inbounds [17 x %class.aiMatrix4x4t], ptr %15, i64 0, i64 10
  %253 = call noundef nonnull align 4 dereferenceable(64) ptr @_ZN12aiMatrix4x4tIfE11TranslationERK10aiVector3tIfERS0_(ptr noundef nonnull align 4 dereferenceable(12) %251, ptr noundef nonnull align 4 dereferenceable(64) %252)
  br label %263

254:                                              ; preds = %236
  %255 = landingpad { ptr, i32 }
          cleanup
  %256 = extractvalue { ptr, i32 } %255, 0
  store ptr %256, ptr %26, align 8
  %257 = extractvalue { ptr, i32 } %255, 1
  store i32 %257, ptr %27, align 4
  br label %262

258:                                              ; preds = %238
  %259 = landingpad { ptr, i32 }
          cleanup
  %260 = extractvalue { ptr, i32 } %259, 0
  store ptr %260, ptr %26, align 8
  %261 = extractvalue { ptr, i32 } %259, 1
  store i32 %261, ptr %27, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #8
  br label %262

262:                                              ; preds = %258, %254
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %48) #8
  br label %667

263:                                              ; preds = %248, %243, %240
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #8
  call void @llvm.lifetime.start.p0(i64 12, ptr %52) #8
  %264 = load ptr, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %53) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %54) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %53, ptr noundef @.str.23, ptr noundef nonnull align 1 dereferenceable(1) %54)
          to label %265 unwind label %286

265:                                              ; preds = %263
  %266 = invoke { <2 x float>, float } @_ZN6Assimp3FBX11PropertyGetI10aiVector3tIfEEET_RKNS0_13PropertyTableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERbb(ptr noundef nonnull align 8 dereferenceable(120) %264, ptr noundef nonnull align 8 dereferenceable(32) %53, ptr noundef nonnull align 1 dereferenceable(1) %14, i1 noundef zeroext false)
          to label %267 unwind label %290

267:                                              ; preds = %265
  store { <2 x float>, float } %266, ptr %55, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %52, ptr align 8 %55, i64 12, i1 false)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %54) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %53) #8
  store ptr %52, ptr %51, align 8, !tbaa !5
  %268 = load i8, ptr %14, align 1, !tbaa !15, !range !17, !noundef !18
  %269 = trunc i8 %268 to i1
  br i1 %269, label %270, label %295

270:                                              ; preds = %267
  %271 = load ptr, ptr %51, align 8, !tbaa !5
  %272 = call noundef float @_ZNK10aiVector3tIfE12SquareLengthEv(ptr noundef nonnull align 4 dereferenceable(12) %271)
  %273 = load float, ptr %20, align 4, !tbaa !13
  %274 = fcmp ogt float %272, %273
  br i1 %274, label %275, label %295

275:                                              ; preds = %270
  %276 = load i32, ptr %16, align 4, !tbaa !11
  %277 = or i32 %276, 2048
  %278 = or i32 %277, 8192
  store i32 %278, ptr %16, align 4, !tbaa !11
  %279 = load ptr, ptr %51, align 8, !tbaa !5
  %280 = getelementptr inbounds [17 x %class.aiMatrix4x4t], ptr %15, i64 0, i64 11
  %281 = call noundef nonnull align 4 dereferenceable(64) ptr @_ZN12aiMatrix4x4tIfE11TranslationERK10aiVector3tIfERS0_(ptr noundef nonnull align 4 dereferenceable(12) %279, ptr noundef nonnull align 4 dereferenceable(64) %280)
  call void @llvm.lifetime.start.p0(i64 12, ptr %56) #8
  %282 = load ptr, ptr %51, align 8, !tbaa !5
  %283 = call { <2 x float>, float } @_ZngIfE10aiVector3tIT_ERKS2_(ptr noundef nonnull align 4 dereferenceable(12) %282)
  store { <2 x float>, float } %283, ptr %57, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %56, ptr align 8 %57, i64 12, i1 false)
  %284 = getelementptr inbounds [17 x %class.aiMatrix4x4t], ptr %15, i64 0, i64 13
  %285 = call noundef nonnull align 4 dereferenceable(64) ptr @_ZN12aiMatrix4x4tIfE11TranslationERK10aiVector3tIfERS0_(ptr noundef nonnull align 4 dereferenceable(12) %56, ptr noundef nonnull align 4 dereferenceable(64) %284)
  call void @llvm.lifetime.end.p0(i64 12, ptr %56) #8
  br label %295

286:                                              ; preds = %263
  %287 = landingpad { ptr, i32 }
          cleanup
  %288 = extractvalue { ptr, i32 } %287, 0
  store ptr %288, ptr %26, align 8
  %289 = extractvalue { ptr, i32 } %287, 1
  store i32 %289, ptr %27, align 4
  br label %294

290:                                              ; preds = %265
  %291 = landingpad { ptr, i32 }
          cleanup
  %292 = extractvalue { ptr, i32 } %291, 0
  store ptr %292, ptr %26, align 8
  %293 = extractvalue { ptr, i32 } %291, 1
  store i32 %293, ptr %27, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #8
  br label %294

294:                                              ; preds = %290, %286
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %54) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %53) #8
  br label %666

295:                                              ; preds = %275, %270, %267
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #8
  call void @llvm.lifetime.start.p0(i64 12, ptr %59) #8
  %296 = load ptr, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %60) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %61) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %61) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %60, ptr noundef @.str.32, ptr noundef nonnull align 1 dereferenceable(1) %61)
          to label %297 unwind label %313

297:                                              ; preds = %295
  %298 = invoke { <2 x float>, float } @_ZN6Assimp3FBX11PropertyGetI10aiVector3tIfEEET_RKNS0_13PropertyTableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERbb(ptr noundef nonnull align 8 dereferenceable(120) %296, ptr noundef nonnull align 8 dereferenceable(32) %60, ptr noundef nonnull align 1 dereferenceable(1) %14, i1 noundef zeroext false)
          to label %299 unwind label %317

299:                                              ; preds = %297
  store { <2 x float>, float } %298, ptr %62, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %59, ptr align 8 %62, i64 12, i1 false)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %61) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %61) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %60) #8
  store ptr %59, ptr %58, align 8, !tbaa !5
  %300 = load i8, ptr %14, align 1, !tbaa !15, !range !17, !noundef !18
  %301 = trunc i8 %300 to i1
  br i1 %301, label %302, label %322

302:                                              ; preds = %299
  %303 = load ptr, ptr %58, align 8, !tbaa !5
  %304 = call noundef float @_ZNK10aiVector3tIfE12SquareLengthEv(ptr noundef nonnull align 4 dereferenceable(12) %303)
  %305 = load float, ptr %20, align 4, !tbaa !13
  %306 = fcmp ogt float %304, %305
  br i1 %306, label %307, label %322

307:                                              ; preds = %302
  %308 = load i32, ptr %16, align 4, !tbaa !11
  %309 = or i32 %308, 8
  store i32 %309, ptr %16, align 4, !tbaa !11
  %310 = load ptr, ptr %58, align 8, !tbaa !5
  %311 = getelementptr inbounds [17 x %class.aiMatrix4x4t], ptr %15, i64 0, i64 3
  %312 = call noundef nonnull align 4 dereferenceable(64) ptr @_ZN12aiMatrix4x4tIfE11TranslationERK10aiVector3tIfERS0_(ptr noundef nonnull align 4 dereferenceable(12) %310, ptr noundef nonnull align 4 dereferenceable(64) %311)
  br label %322

313:                                              ; preds = %295
  %314 = landingpad { ptr, i32 }
          cleanup
  %315 = extractvalue { ptr, i32 } %314, 0
  store ptr %315, ptr %26, align 8
  %316 = extractvalue { ptr, i32 } %314, 1
  store i32 %316, ptr %27, align 4
  br label %321

317:                                              ; preds = %297
  %318 = landingpad { ptr, i32 }
          cleanup
  %319 = extractvalue { ptr, i32 } %318, 0
  store ptr %319, ptr %26, align 8
  %320 = extractvalue { ptr, i32 } %318, 1
  store i32 %320, ptr %27, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #8
  br label %321

321:                                              ; preds = %317, %313
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %61) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %61) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %60) #8
  br label %665

322:                                              ; preds = %307, %302, %299
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #8
  call void @llvm.lifetime.start.p0(i64 12, ptr %64) #8
  %323 = load ptr, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %65) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %66) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %66) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %65, ptr noundef @.str.34, ptr noundef nonnull align 1 dereferenceable(1) %66)
          to label %324 unwind label %343

324:                                              ; preds = %322
  %325 = invoke { <2 x float>, float } @_ZN6Assimp3FBX11PropertyGetI10aiVector3tIfEEET_RKNS0_13PropertyTableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERbb(ptr noundef nonnull align 8 dereferenceable(120) %323, ptr noundef nonnull align 8 dereferenceable(32) %65, ptr noundef nonnull align 1 dereferenceable(1) %14, i1 noundef zeroext false)
          to label %326 unwind label %347

326:                                              ; preds = %324
  store { <2 x float>, float } %325, ptr %67, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %64, ptr align 8 %67, i64 12, i1 false)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %66) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %66) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %65) #8
  store ptr %64, ptr %63, align 8, !tbaa !5
  %327 = load i8, ptr %14, align 1, !tbaa !15, !range !17, !noundef !18
  %328 = trunc i8 %327 to i1
  call void @llvm.lifetime.start.p0(i64 12, ptr %68) #8
  br i1 %328, label %329, label %335

329:                                              ; preds = %326
  %330 = load ptr, ptr %63, align 8, !tbaa !5
  %331 = call { <2 x float>, float } @_ZmiIfE10aiVector3tIT_ERKS2_S4_(ptr noundef nonnull align 4 dereferenceable(12) %330, ptr noundef nonnull align 4 dereferenceable(12) %21)
  store { <2 x float>, float } %331, ptr %69, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %68, ptr align 8 %69, i64 12, i1 false)
  %332 = call noundef float @_ZNK10aiVector3tIfE12SquareLengthEv(ptr noundef nonnull align 4 dereferenceable(12) %68)
  %333 = load float, ptr %20, align 4, !tbaa !13
  %334 = fcmp ogt float %332, %333
  br label %335

335:                                              ; preds = %329, %326
  %336 = phi i1 [ false, %326 ], [ %334, %329 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr %68) #8
  br i1 %336, label %337, label %352

337:                                              ; preds = %335
  %338 = load i32, ptr %16, align 4, !tbaa !11
  %339 = or i32 %338, 4096
  store i32 %339, ptr %16, align 4, !tbaa !11
  %340 = load ptr, ptr %63, align 8, !tbaa !5
  %341 = getelementptr inbounds [17 x %class.aiMatrix4x4t], ptr %15, i64 0, i64 12
  %342 = call noundef nonnull align 4 dereferenceable(64) ptr @_ZN12aiMatrix4x4tIfE7ScalingERK10aiVector3tIfERS0_(ptr noundef nonnull align 4 dereferenceable(12) %340, ptr noundef nonnull align 4 dereferenceable(64) %341)
  br label %352

343:                                              ; preds = %322
  %344 = landingpad { ptr, i32 }
          cleanup
  %345 = extractvalue { ptr, i32 } %344, 0
  store ptr %345, ptr %26, align 8
  %346 = extractvalue { ptr, i32 } %344, 1
  store i32 %346, ptr %27, align 4
  br label %351

347:                                              ; preds = %324
  %348 = landingpad { ptr, i32 }
          cleanup
  %349 = extractvalue { ptr, i32 } %348, 0
  store ptr %349, ptr %26, align 8
  %350 = extractvalue { ptr, i32 } %348, 1
  store i32 %350, ptr %27, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #8
  br label %351

351:                                              ; preds = %347, %343
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %66) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %66) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %65) #8
  br label %664

352:                                              ; preds = %337, %335
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #8
  call void @llvm.lifetime.start.p0(i64 12, ptr %71) #8
  %353 = load ptr, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %72) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %73) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %73) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %72, ptr noundef @.str.33, ptr noundef nonnull align 1 dereferenceable(1) %73)
          to label %354 unwind label %370

354:                                              ; preds = %352
  %355 = invoke { <2 x float>, float } @_ZN6Assimp3FBX11PropertyGetI10aiVector3tIfEEET_RKNS0_13PropertyTableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERbb(ptr noundef nonnull align 8 dereferenceable(120) %353, ptr noundef nonnull align 8 dereferenceable(32) %72, ptr noundef nonnull align 1 dereferenceable(1) %14, i1 noundef zeroext false)
          to label %356 unwind label %374

356:                                              ; preds = %354
  store { <2 x float>, float } %355, ptr %74, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %71, ptr align 8 %74, i64 12, i1 false)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %73) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %72) #8
  store ptr %71, ptr %70, align 8, !tbaa !5
  %357 = load i8, ptr %14, align 1, !tbaa !15, !range !17, !noundef !18
  %358 = trunc i8 %357 to i1
  br i1 %358, label %359, label %379

359:                                              ; preds = %356
  %360 = load ptr, ptr %70, align 8, !tbaa !5
  %361 = call noundef float @_ZNK10aiVector3tIfE12SquareLengthEv(ptr noundef nonnull align 4 dereferenceable(12) %360)
  %362 = load float, ptr %20, align 4, !tbaa !13
  %363 = fcmp ogt float %361, %362
  br i1 %363, label %364, label %379

364:                                              ; preds = %359
  %365 = load i32, ptr %16, align 4, !tbaa !11
  %366 = or i32 %365, 128
  store i32 %366, ptr %16, align 4, !tbaa !11
  %367 = load i32, ptr %13, align 4, !tbaa !9
  %368 = load ptr, ptr %70, align 8, !tbaa !5
  %369 = getelementptr inbounds [17 x %class.aiMatrix4x4t], ptr %15, i64 0, i64 7
  call void @_ZN6Assimp3FBX12FBXConverter17GetRotationMatrixENS0_5Model8RotOrderERK10aiVector3tIfER12aiMatrix4x4tIfE(ptr noundef nonnull align 8 dereferenceable(489) %111, i32 noundef %367, ptr noundef nonnull align 4 dereferenceable(12) %368, ptr noundef nonnull align 4 dereferenceable(64) %369)
  br label %379

370:                                              ; preds = %352
  %371 = landingpad { ptr, i32 }
          cleanup
  %372 = extractvalue { ptr, i32 } %371, 0
  store ptr %372, ptr %26, align 8
  %373 = extractvalue { ptr, i32 } %371, 1
  store i32 %373, ptr %27, align 4
  br label %378

374:                                              ; preds = %354
  %375 = landingpad { ptr, i32 }
          cleanup
  %376 = extractvalue { ptr, i32 } %375, 0
  store ptr %376, ptr %26, align 8
  %377 = extractvalue { ptr, i32 } %375, 1
  store i32 %377, ptr %27, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #8
  br label %378

378:                                              ; preds = %374, %370
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %73) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %72) #8
  br label %663

379:                                              ; preds = %364, %359, %356
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #8
  call void @llvm.lifetime.start.p0(i64 12, ptr %76) #8
  %380 = load ptr, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %77) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %78) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %78) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %77, ptr noundef @.str.26, ptr noundef nonnull align 1 dereferenceable(1) %78)
          to label %381 unwind label %405

381:                                              ; preds = %379
  %382 = invoke { <2 x float>, float } @_ZN6Assimp3FBX11PropertyGetI10aiVector3tIfEEET_RKNS0_13PropertyTableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERbb(ptr noundef nonnull align 8 dereferenceable(120) %380, ptr noundef nonnull align 8 dereferenceable(32) %77, ptr noundef nonnull align 1 dereferenceable(1) %14, i1 noundef zeroext false)
          to label %383 unwind label %409

383:                                              ; preds = %381
  store { <2 x float>, float } %382, ptr %79, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %76, ptr align 8 %79, i64 12, i1 false)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %77) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %78) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %78) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %77) #8
  store ptr %76, ptr %75, align 8, !tbaa !5
  %384 = load i8, ptr %14, align 1, !tbaa !15, !range !17, !noundef !18
  %385 = trunc i8 %384 to i1
  call void @llvm.lifetime.start.p0(i64 12, ptr %80) #8
  br i1 %385, label %386, label %392

386:                                              ; preds = %383
  %387 = load ptr, ptr %75, align 8, !tbaa !5
  %388 = call { <2 x float>, float } @_ZmiIfE10aiVector3tIT_ERKS2_S4_(ptr noundef nonnull align 4 dereferenceable(12) %387, ptr noundef nonnull align 4 dereferenceable(12) %21)
  store { <2 x float>, float } %388, ptr %81, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %80, ptr align 8 %81, i64 12, i1 false)
  %389 = call noundef float @_ZNK10aiVector3tIfE12SquareLengthEv(ptr noundef nonnull align 4 dereferenceable(12) %80)
  %390 = load float, ptr %20, align 4, !tbaa !13
  %391 = fcmp ogt float %389, %390
  br label %392

392:                                              ; preds = %386, %383
  %393 = phi i1 [ false, %383 ], [ %391, %386 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr %80) #8
  br i1 %393, label %394, label %443

394:                                              ; preds = %392
  %395 = load i32, ptr %16, align 4, !tbaa !11
  %396 = or i32 %395, 65536
  store i32 %396, ptr %16, align 4, !tbaa !11
  %397 = load ptr, ptr %75, align 8, !tbaa !5
  %398 = getelementptr inbounds [17 x %class.aiMatrix4x4t], ptr %15, i64 0, i64 16
  %399 = call noundef nonnull align 4 dereferenceable(64) ptr @_ZN12aiMatrix4x4tIfE7ScalingERK10aiVector3tIfERS0_(ptr noundef nonnull align 4 dereferenceable(12) %397, ptr noundef nonnull align 4 dereferenceable(64) %398)
  call void @llvm.lifetime.start.p0(i64 12, ptr %82) #8
  %400 = load ptr, ptr %75, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %82, ptr align 4 %400, i64 12, i1 false), !tbaa.struct !19
  call void @llvm.lifetime.start.p0(i64 1, ptr %83) #8
  store i8 1, ptr %83, align 1, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %84) #8
  store i32 0, ptr %84, align 4, !tbaa !11
  br label %401

401:                                              ; preds = %430, %394
  %402 = load i32, ptr %84, align 4, !tbaa !11
  %403 = icmp ult i32 %402, 3
  br i1 %403, label %414, label %404

404:                                              ; preds = %401
  store i32 2, ptr %85, align 4
  br label %433

405:                                              ; preds = %379
  %406 = landingpad { ptr, i32 }
          cleanup
  %407 = extractvalue { ptr, i32 } %406, 0
  store ptr %407, ptr %26, align 8
  %408 = extractvalue { ptr, i32 } %406, 1
  store i32 %408, ptr %27, align 4
  br label %413

409:                                              ; preds = %381
  %410 = landingpad { ptr, i32 }
          cleanup
  %411 = extractvalue { ptr, i32 } %410, 0
  store ptr %411, ptr %26, align 8
  %412 = extractvalue { ptr, i32 } %410, 1
  store i32 %412, ptr %27, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %77) #8
  br label %413

413:                                              ; preds = %409, %405
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %78) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %78) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %77) #8
  br label %662

414:                                              ; preds = %401
  %415 = load i32, ptr %84, align 4, !tbaa !11
  %416 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN10aiVector3tIfEixEj(ptr noundef nonnull align 4 dereferenceable(12) %82, i32 noundef %415)
  %417 = load float, ptr %416, align 4, !tbaa !13
  %418 = call noundef float @_ZSt4fabsf(float noundef %417)
  %419 = load float, ptr %20, align 4, !tbaa !13
  %420 = fcmp ogt float %418, %419
  br i1 %420, label %421, label %428

421:                                              ; preds = %414
  %422 = load ptr, ptr %75, align 8, !tbaa !5
  %423 = load i32, ptr %84, align 4, !tbaa !11
  %424 = call noundef float @_ZNK10aiVector3tIfEixEj(ptr noundef nonnull align 4 dereferenceable(12) %422, i32 noundef %423)
  %425 = fdiv float 1.000000e+00, %424
  %426 = load i32, ptr %84, align 4, !tbaa !11
  %427 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN10aiVector3tIfEixEj(ptr noundef nonnull align 4 dereferenceable(12) %82, i32 noundef %426)
  store float %425, ptr %427, align 4, !tbaa !13
  br label %429

428:                                              ; preds = %414
  call void @_ZN6Assimp12LogFunctionsINS_11FBXImporterEE8LogErrorIJRA66_KcEEEvDpOT_(ptr noundef nonnull align 1 dereferenceable(66) @.str.44)
  store i8 0, ptr %83, align 1, !tbaa !15
  store i32 2, ptr %85, align 4
  br label %433

429:                                              ; preds = %421
  br label %430

430:                                              ; preds = %429
  %431 = load i32, ptr %84, align 4, !tbaa !11
  %432 = add i32 %431, 1
  store i32 %432, ptr %84, align 4, !tbaa !11
  br label %401, !llvm.loop !20

433:                                              ; preds = %428, %404
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #8
  br label %434

434:                                              ; preds = %433
  %435 = load i8, ptr %83, align 1, !tbaa !15, !range !17, !noundef !18
  %436 = trunc i8 %435 to i1
  br i1 %436, label %437, label %442

437:                                              ; preds = %434
  %438 = load i32, ptr %16, align 4, !tbaa !11
  %439 = or i32 %438, 1
  store i32 %439, ptr %16, align 4, !tbaa !11
  %440 = getelementptr inbounds [17 x %class.aiMatrix4x4t], ptr %15, i64 0, i64 0
  %441 = call noundef nonnull align 4 dereferenceable(64) ptr @_ZN12aiMatrix4x4tIfE7ScalingERK10aiVector3tIfERS0_(ptr noundef nonnull align 4 dereferenceable(12) %82, ptr noundef nonnull align 4 dereferenceable(64) %440)
  br label %442

442:                                              ; preds = %437, %434
  call void @llvm.lifetime.end.p0(i64 1, ptr %83) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr %82) #8
  br label %443

443:                                              ; preds = %442, %392
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #8
  call void @llvm.lifetime.start.p0(i64 12, ptr %87) #8
  %444 = load ptr, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %88) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %89) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %89) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %88, ptr noundef @.str.27, ptr noundef nonnull align 1 dereferenceable(1) %89)
          to label %445 unwind label %467

445:                                              ; preds = %443
  %446 = invoke { <2 x float>, float } @_ZN6Assimp3FBX11PropertyGetI10aiVector3tIfEEET_RKNS0_13PropertyTableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERbb(ptr noundef nonnull align 8 dereferenceable(120) %444, ptr noundef nonnull align 8 dereferenceable(32) %88, ptr noundef nonnull align 1 dereferenceable(1) %14, i1 noundef zeroext false)
          to label %447 unwind label %471

447:                                              ; preds = %445
  store { <2 x float>, float } %446, ptr %90, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %87, ptr align 8 %90, i64 12, i1 false)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %88) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %89) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %88) #8
  store ptr %87, ptr %86, align 8, !tbaa !5
  %448 = load i8, ptr %14, align 1, !tbaa !15, !range !17, !noundef !18
  %449 = trunc i8 %448 to i1
  br i1 %449, label %450, label %476

450:                                              ; preds = %447
  %451 = load ptr, ptr %86, align 8, !tbaa !5
  %452 = call noundef float @_ZNK10aiVector3tIfE12SquareLengthEv(ptr noundef nonnull align 4 dereferenceable(12) %451)
  %453 = load float, ptr %20, align 4, !tbaa !13
  %454 = fcmp ogt float %452, %453
  br i1 %454, label %455, label %476

455:                                              ; preds = %450
  %456 = load i32, ptr %16, align 4, !tbaa !11
  %457 = or i32 %456, 32768
  %458 = or i32 %457, 2
  store i32 %458, ptr %16, align 4, !tbaa !11
  %459 = load i32, ptr %13, align 4, !tbaa !9
  %460 = load ptr, ptr %86, align 8, !tbaa !5
  %461 = getelementptr inbounds [17 x %class.aiMatrix4x4t], ptr %15, i64 0, i64 15
  call void @_ZN6Assimp3FBX12FBXConverter17GetRotationMatrixENS0_5Model8RotOrderERK10aiVector3tIfER12aiMatrix4x4tIfE(ptr noundef nonnull align 8 dereferenceable(489) %111, i32 noundef %459, ptr noundef nonnull align 4 dereferenceable(12) %460, ptr noundef nonnull align 4 dereferenceable(64) %461)
  %462 = load i32, ptr %13, align 4, !tbaa !9
  %463 = load ptr, ptr %86, align 8, !tbaa !5
  %464 = getelementptr inbounds [17 x %class.aiMatrix4x4t], ptr %15, i64 0, i64 1
  call void @_ZN6Assimp3FBX12FBXConverter17GetRotationMatrixENS0_5Model8RotOrderERK10aiVector3tIfER12aiMatrix4x4tIfE(ptr noundef nonnull align 8 dereferenceable(489) %111, i32 noundef %462, ptr noundef nonnull align 4 dereferenceable(12) %463, ptr noundef nonnull align 4 dereferenceable(64) %464)
  %465 = getelementptr inbounds [17 x %class.aiMatrix4x4t], ptr %15, i64 0, i64 1
  %466 = call noundef nonnull align 4 dereferenceable(64) ptr @_ZN12aiMatrix4x4tIfE7InverseEv(ptr noundef nonnull align 4 dereferenceable(64) %465)
  br label %476

467:                                              ; preds = %443
  %468 = landingpad { ptr, i32 }
          cleanup
  %469 = extractvalue { ptr, i32 } %468, 0
  store ptr %469, ptr %26, align 8
  %470 = extractvalue { ptr, i32 } %468, 1
  store i32 %470, ptr %27, align 4
  br label %475

471:                                              ; preds = %445
  %472 = landingpad { ptr, i32 }
          cleanup
  %473 = extractvalue { ptr, i32 } %472, 0
  store ptr %473, ptr %26, align 8
  %474 = extractvalue { ptr, i32 } %472, 1
  store i32 %474, ptr %27, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %88) #8
  br label %475

475:                                              ; preds = %471, %467
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %89) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %88) #8
  br label %661

476:                                              ; preds = %455, %450, %447
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #8
  call void @llvm.lifetime.start.p0(i64 12, ptr %92) #8
  %477 = load ptr, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %93) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %94) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %94) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %93, ptr noundef @.str.28, ptr noundef nonnull align 1 dereferenceable(1) %94)
          to label %478 unwind label %499

478:                                              ; preds = %476
  %479 = invoke { <2 x float>, float } @_ZN6Assimp3FBX11PropertyGetI10aiVector3tIfEEET_RKNS0_13PropertyTableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERbb(ptr noundef nonnull align 8 dereferenceable(120) %477, ptr noundef nonnull align 8 dereferenceable(32) %93, ptr noundef nonnull align 1 dereferenceable(1) %14, i1 noundef zeroext false)
          to label %480 unwind label %503

480:                                              ; preds = %478
  store { <2 x float>, float } %479, ptr %95, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %92, ptr align 8 %95, i64 12, i1 false)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %93) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %94) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %94) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %93) #8
  store ptr %92, ptr %91, align 8, !tbaa !5
  %481 = load i8, ptr %14, align 1, !tbaa !15, !range !17, !noundef !18
  %482 = trunc i8 %481 to i1
  br i1 %482, label %483, label %508

483:                                              ; preds = %480
  %484 = load ptr, ptr %91, align 8, !tbaa !5
  %485 = call noundef float @_ZNK10aiVector3tIfE12SquareLengthEv(ptr noundef nonnull align 4 dereferenceable(12) %484)
  %486 = load float, ptr %20, align 4, !tbaa !13
  %487 = fcmp ogt float %485, %486
  br i1 %487, label %488, label %508

488:                                              ; preds = %483
  %489 = load i32, ptr %16, align 4, !tbaa !11
  %490 = or i32 %489, 16384
  %491 = or i32 %490, 4
  store i32 %491, ptr %16, align 4, !tbaa !11
  %492 = load ptr, ptr %91, align 8, !tbaa !5
  %493 = getelementptr inbounds [17 x %class.aiMatrix4x4t], ptr %15, i64 0, i64 14
  %494 = call noundef nonnull align 4 dereferenceable(64) ptr @_ZN12aiMatrix4x4tIfE11TranslationERK10aiVector3tIfERS0_(ptr noundef nonnull align 4 dereferenceable(12) %492, ptr noundef nonnull align 4 dereferenceable(64) %493)
  call void @llvm.lifetime.start.p0(i64 12, ptr %96) #8
  %495 = load ptr, ptr %91, align 8, !tbaa !5
  %496 = call { <2 x float>, float } @_ZngIfE10aiVector3tIT_ERKS2_(ptr noundef nonnull align 4 dereferenceable(12) %495)
  store { <2 x float>, float } %496, ptr %97, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %96, ptr align 8 %97, i64 12, i1 false)
  %497 = getelementptr inbounds [17 x %class.aiMatrix4x4t], ptr %15, i64 0, i64 2
  %498 = call noundef nonnull align 4 dereferenceable(64) ptr @_ZN12aiMatrix4x4tIfE11TranslationERK10aiVector3tIfERS0_(ptr noundef nonnull align 4 dereferenceable(12) %96, ptr noundef nonnull align 4 dereferenceable(64) %497)
  call void @llvm.lifetime.end.p0(i64 12, ptr %96) #8
  br label %508

499:                                              ; preds = %476
  %500 = landingpad { ptr, i32 }
          cleanup
  %501 = extractvalue { ptr, i32 } %500, 0
  store ptr %501, ptr %26, align 8
  %502 = extractvalue { ptr, i32 } %500, 1
  store i32 %502, ptr %27, align 4
  br label %507

503:                                              ; preds = %478
  %504 = landingpad { ptr, i32 }
          cleanup
  %505 = extractvalue { ptr, i32 } %504, 0
  store ptr %505, ptr %26, align 8
  %506 = extractvalue { ptr, i32 } %504, 1
  store i32 %506, ptr %27, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %93) #8
  br label %507

507:                                              ; preds = %503, %499
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %94) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %94) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %93) #8
  br label %660

508:                                              ; preds = %488, %483, %480
  %509 = load i32, ptr %16, align 4, !tbaa !11
  %510 = and i32 %509, 126839
  %511 = icmp ne i32 %510, 0
  br i1 %511, label %512, label %621

512:                                              ; preds = %508
  %513 = getelementptr inbounds %"class.Assimp::FBX::FBXConverter", ptr %111, i32 0, i32 17
  %514 = load ptr, ptr %513, align 8, !tbaa !22
  %515 = call noundef nonnull align 1 dereferenceable(15) ptr @_ZNK6Assimp3FBX8Document8SettingsEv(ptr noundef nonnull align 8 dereferenceable(336) %514)
  %516 = getelementptr inbounds %"struct.Assimp::FBX::ImportSettings", ptr %515, i32 0, i32 10
  %517 = load i8, ptr %516, align 1, !tbaa !82, !range !17, !noundef !18
  %518 = trunc i8 %517 to i1
  br i1 %518, label %519, label %621

519:                                              ; preds = %512
  %520 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZN6Assimp12LogFunctionsINS_11FBXImporterEE7LogInfoIJRA48_KcRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEvDpOT_(ptr noundef nonnull align 1 dereferenceable(48) @.str.45, ptr noundef nonnull align 8 dereferenceable(32) %520)
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #8
  %521 = getelementptr inbounds %"class.Assimp::FBX::FBXConverter", ptr %111, i32 0, i32 11
  %522 = load ptr, ptr %9, align 8, !tbaa !5
  %523 = call ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEE4findERS9_(ptr noundef nonnull align 8 dereferenceable(48) %521, ptr noundef nonnull align 8 dereferenceable(32) %522)
  %524 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.153", ptr %99, i32 0, i32 0
  store ptr %523, ptr %524, align 8
  call void @_ZNSt23_Rb_tree_const_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjEEC2ERKSt17_Rb_tree_iteratorIS8_E(ptr noundef nonnull align 8 dereferenceable(8) %98, ptr noundef nonnull align 8 dereferenceable(8) %99) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %100) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #8
  %525 = getelementptr inbounds %"class.Assimp::FBX::FBXConverter", ptr %111, i32 0, i32 11
  %526 = call ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %525) #8
  %527 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.153", ptr %102, i32 0, i32 0
  store ptr %526, ptr %527, align 8
  call void @_ZNSt23_Rb_tree_const_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjEEC2ERKSt17_Rb_tree_iteratorIS8_E(ptr noundef nonnull align 8 dereferenceable(8) %101, ptr noundef nonnull align 8 dereferenceable(8) %102) #8
  %528 = call noundef zeroext i1 @_ZSteqRKSt23_Rb_tree_const_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjEESB_(ptr noundef nonnull align 8 dereferenceable(8) %98, ptr noundef nonnull align 8 dereferenceable(8) %101) #8
  br i1 %528, label %529, label %530

529:                                              ; preds = %519
  br label %534

530:                                              ; preds = %519
  %531 = call noundef nonnull align 8 dereferenceable(36) ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %98) #8
  %532 = getelementptr inbounds %"struct.std::pair.154", ptr %531, i32 0, i32 1
  %533 = load i32, ptr %532, align 8, !tbaa !84
  br label %534

534:                                              ; preds = %530, %529
  %535 = phi i32 [ 0, %529 ], [ %533, %530 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #8
  store i32 %535, ptr %100, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %103) #8
  store i32 1, ptr %103, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #8
  store i64 0, ptr %104, align 8, !tbaa !88
  br label %536

536:                                              ; preds = %608, %534
  %537 = load i64, ptr %104, align 8, !tbaa !88
  %538 = icmp ult i64 %537, 17
  br i1 %538, label %540, label %539

539:                                              ; preds = %536
  store i32 5, ptr %85, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #8
  br label %614

540:                                              ; preds = %536
  call void @llvm.lifetime.start.p0(i64 4, ptr %105) #8
  %541 = load i64, ptr %104, align 8, !tbaa !88
  %542 = trunc i64 %541 to i32
  store i32 %542, ptr %105, align 4, !tbaa !89
  %543 = load i32, ptr %16, align 4, !tbaa !11
  %544 = load i32, ptr %103, align 4, !tbaa !11
  %545 = and i32 %543, %544
  %546 = icmp eq i32 %545, 0
  br i1 %546, label %547, label %553

547:                                              ; preds = %540
  %548 = load i32, ptr %100, align 4, !tbaa !11
  %549 = load i32, ptr %103, align 4, !tbaa !11
  %550 = and i32 %548, %549
  %551 = icmp eq i32 %550, 0
  br i1 %551, label %552, label %553

552:                                              ; preds = %547
  store i32 7, ptr %85, align 4
  br label %605

553:                                              ; preds = %547, %540
  %554 = load i32, ptr %105, align 4, !tbaa !89
  %555 = icmp eq i32 %554, 8
  br i1 %555, label %556, label %562

556:                                              ; preds = %553
  %557 = load i64, ptr %104, align 8, !tbaa !88
  %558 = getelementptr inbounds [17 x %class.aiMatrix4x4t], ptr %15, i64 0, i64 %557
  %559 = call noundef nonnull align 4 dereferenceable(64) ptr @_ZN12aiMatrix4x4tIfE7InverseEv(ptr noundef nonnull align 4 dereferenceable(64) %558)
  %560 = load i64, ptr %104, align 8, !tbaa !88
  %561 = getelementptr inbounds [17 x %class.aiMatrix4x4t], ptr %15, i64 0, i64 %560
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %561, ptr align 4 %559, i64 64, i1 false), !tbaa.struct !91
  br label %562

562:                                              ; preds = %556, %553
  call void @llvm.lifetime.start.p0(i64 16, ptr %106) #8
  call void @_ZN6Assimp3FBX12FBXConverter13PotentialNodeC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %106)
  %563 = invoke noundef ptr @_ZN6Assimp3FBX12FBXConverter13PotentialNodeptEv(ptr noundef nonnull align 8 dereferenceable(16) %106)
          to label %564 unwind label %587

564:                                              ; preds = %562
  %565 = getelementptr inbounds %struct.aiNode, ptr %563, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 32, ptr %107) #8
  %566 = load ptr, ptr %9, align 8, !tbaa !5
  %567 = load i32, ptr %105, align 4, !tbaa !89
  invoke void @_ZN6Assimp3FBX12FBXConverter27NameTransformationChainNodeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_18TransformationCompE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %107, ptr noundef nonnull align 8 dereferenceable(489) %111, ptr noundef nonnull align 8 dereferenceable(32) %566, i32 noundef %567)
          to label %568 unwind label %591

568:                                              ; preds = %564
  invoke void @_ZN8aiString3SetERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 4 dereferenceable(1028) %565, ptr noundef nonnull align 8 dereferenceable(32) %107)
          to label %569 unwind label %595

569:                                              ; preds = %568
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %107) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %107) #8
  %570 = load i64, ptr %104, align 8, !tbaa !88
  %571 = getelementptr inbounds [17 x %class.aiMatrix4x4t], ptr %15, i64 0, i64 %570
  %572 = invoke noundef ptr @_ZN6Assimp3FBX12FBXConverter13PotentialNodeptEv(ptr noundef nonnull align 8 dereferenceable(16) %106)
          to label %573 unwind label %587

573:                                              ; preds = %569
  %574 = getelementptr inbounds %struct.aiNode, ptr %572, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %574, ptr align 16 %571, i64 64, i1 false), !tbaa.struct !91
  %575 = load i32, ptr %105, align 4, !tbaa !89
  %576 = icmp eq i32 %575, 0
  br i1 %576, label %583, label %577

577:                                              ; preds = %573
  %578 = load i32, ptr %105, align 4, !tbaa !89
  %579 = icmp eq i32 %578, 1
  br i1 %579, label %583, label %580

580:                                              ; preds = %577
  %581 = load i32, ptr %105, align 4, !tbaa !89
  %582 = icmp eq i32 %581, 2
  br i1 %582, label %583, label %600

583:                                              ; preds = %580, %577, %573
  %584 = load ptr, ptr %11, align 8, !tbaa !5
  %585 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN6Assimp3FBX12FBXConverter13PotentialNodeESaIS3_EE12emplace_backIJS3_EEERS3_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %584, ptr noundef nonnull align 8 dereferenceable(16) %106)
          to label %586 unwind label %587

586:                                              ; preds = %583
  br label %604

587:                                              ; preds = %600, %583, %569, %562
  %588 = landingpad { ptr, i32 }
          cleanup
  %589 = extractvalue { ptr, i32 } %588, 0
  store ptr %589, ptr %26, align 8
  %590 = extractvalue { ptr, i32 } %588, 1
  store i32 %590, ptr %27, align 4
  br label %613

591:                                              ; preds = %564
  %592 = landingpad { ptr, i32 }
          cleanup
  %593 = extractvalue { ptr, i32 } %592, 0
  store ptr %593, ptr %26, align 8
  %594 = extractvalue { ptr, i32 } %592, 1
  store i32 %594, ptr %27, align 4
  br label %599

595:                                              ; preds = %568
  %596 = landingpad { ptr, i32 }
          cleanup
  %597 = extractvalue { ptr, i32 } %596, 0
  store ptr %597, ptr %26, align 8
  %598 = extractvalue { ptr, i32 } %596, 1
  store i32 %598, ptr %27, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %107) #8
  br label %599

599:                                              ; preds = %595, %591
  call void @llvm.lifetime.end.p0(i64 32, ptr %107) #8
  br label %613

600:                                              ; preds = %580
  %601 = load ptr, ptr %10, align 8, !tbaa !5
  %602 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN6Assimp3FBX12FBXConverter13PotentialNodeESaIS3_EE12emplace_backIJS3_EEERS3_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %601, ptr noundef nonnull align 8 dereferenceable(16) %106)
          to label %603 unwind label %587

603:                                              ; preds = %600
  br label %604

604:                                              ; preds = %603, %586
  call void @_ZN6Assimp3FBX12FBXConverter13PotentialNodeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %106) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %106) #8
  store i32 0, ptr %85, align 4
  br label %605

605:                                              ; preds = %604, %552
  call void @llvm.lifetime.end.p0(i64 4, ptr %105) #8
  %606 = load i32, ptr %85, align 4
  switch i32 %606, label %677 [
    i32 0, label %607
    i32 7, label %608
  ]

607:                                              ; preds = %605
  br label %608

608:                                              ; preds = %607, %605
  %609 = load i64, ptr %104, align 8, !tbaa !88
  %610 = add i64 %609, 1
  store i64 %610, ptr %104, align 8, !tbaa !88
  %611 = load i32, ptr %103, align 4, !tbaa !11
  %612 = shl i32 %611, 1
  store i32 %612, ptr %103, align 4, !tbaa !11
  br label %536, !llvm.loop !92

613:                                              ; preds = %599, %587
  call void @_ZN6Assimp3FBX12FBXConverter13PotentialNodeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %106) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %106) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %105) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %103) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %100) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #8
  br label %659

614:                                              ; preds = %539
  %615 = load ptr, ptr %10, align 8, !tbaa !5
  %616 = call noundef i64 @_ZNKSt6vectorIN6Assimp3FBX12FBXConverter13PotentialNodeESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %615) #8
  %617 = icmp ne i64 %616, 0
  br i1 %617, label %619, label %618

618:                                              ; preds = %614
  call void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef @.str.46, ptr noundef @.str.5, i32 noundef 902)
  br label %619

619:                                              ; preds = %618, %614
  %620 = phi i1 [ true, %614 ], [ false, %618 ]
  store i1 true, ptr %6, align 1
  store i32 1, ptr %85, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %103) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %100) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #8
  br label %657

621:                                              ; preds = %512, %508
  call void @llvm.lifetime.start.p0(i64 16, ptr %108) #8
  call void @_ZN6Assimp3FBX12FBXConverter13PotentialNodeC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %108)
  %622 = invoke noundef ptr @_ZN6Assimp3FBX12FBXConverter13PotentialNodeptEv(ptr noundef nonnull align 8 dereferenceable(16) %108)
          to label %623 unwind label %631

623:                                              ; preds = %621
  %624 = getelementptr inbounds %struct.aiNode, ptr %622, i32 0, i32 0
  %625 = load ptr, ptr %9, align 8, !tbaa !5
  invoke void @_ZN8aiString3SetERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 4 dereferenceable(1028) %624, ptr noundef nonnull align 8 dereferenceable(32) %625)
          to label %626 unwind label %631

626:                                              ; preds = %623
  call void @llvm.lifetime.start.p0(i64 4, ptr %109) #8
  store i32 3, ptr %109, align 4, !tbaa !11
  br label %627

627:                                              ; preds = %646, %626
  %628 = load i32, ptr %109, align 4, !tbaa !11
  %629 = icmp ult i32 %628, 17
  br i1 %629, label %635, label %630

630:                                              ; preds = %627
  store i32 8, ptr %85, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %109) #8
  br label %653

631:                                              ; preds = %653, %623, %621
  %632 = landingpad { ptr, i32 }
          cleanup
  %633 = extractvalue { ptr, i32 } %632, 0
  store ptr %633, ptr %26, align 8
  %634 = extractvalue { ptr, i32 } %632, 1
  store i32 %634, ptr %27, align 4
  br label %656

635:                                              ; preds = %627
  call void @llvm.lifetime.start.p0(i64 64, ptr %110) #8
  %636 = invoke noundef ptr @_ZN6Assimp3FBX12FBXConverter13PotentialNodeptEv(ptr noundef nonnull align 8 dereferenceable(16) %108)
          to label %637 unwind label %649

637:                                              ; preds = %635
  %638 = getelementptr inbounds %struct.aiNode, ptr %636, i32 0, i32 1
  %639 = load i32, ptr %109, align 4, !tbaa !11
  %640 = zext i32 %639 to i64
  %641 = getelementptr inbounds [17 x %class.aiMatrix4x4t], ptr %15, i64 0, i64 %640
  invoke void @_ZNK12aiMatrix4x4tIfEmlERKS0_(ptr dead_on_unwind writable sret(%class.aiMatrix4x4t) align 4 %110, ptr noundef nonnull align 4 dereferenceable(64) %638, ptr noundef nonnull align 4 dereferenceable(64) %641)
          to label %642 unwind label %649

642:                                              ; preds = %637
  %643 = invoke noundef ptr @_ZN6Assimp3FBX12FBXConverter13PotentialNodeptEv(ptr noundef nonnull align 8 dereferenceable(16) %108)
          to label %644 unwind label %649

644:                                              ; preds = %642
  %645 = getelementptr inbounds %struct.aiNode, ptr %643, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %645, ptr align 4 %110, i64 64, i1 false), !tbaa.struct !91
  call void @llvm.lifetime.end.p0(i64 64, ptr %110) #8
  br label %646

646:                                              ; preds = %644
  %647 = load i32, ptr %109, align 4, !tbaa !11
  %648 = add i32 %647, 1
  store i32 %648, ptr %109, align 4, !tbaa !11
  br label %627, !llvm.loop !93

649:                                              ; preds = %642, %637, %635
  %650 = landingpad { ptr, i32 }
          cleanup
  %651 = extractvalue { ptr, i32 } %650, 0
  store ptr %651, ptr %26, align 8
  %652 = extractvalue { ptr, i32 } %650, 1
  store i32 %652, ptr %27, align 4
  call void @llvm.lifetime.end.p0(i64 64, ptr %110) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %109) #8
  br label %656

653:                                              ; preds = %630
  %654 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIN6Assimp3FBX12FBXConverter13PotentialNodeESaIS3_EE9push_backEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %654, ptr noundef nonnull align 8 dereferenceable(16) %108)
          to label %655 unwind label %631

655:                                              ; preds = %653
  store i1 false, ptr %6, align 1
  store i32 1, ptr %85, align 4
  call void @_ZN6Assimp3FBX12FBXConverter13PotentialNodeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %108) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %108) #8
  br label %657

656:                                              ; preds = %649, %631
  call void @_ZN6Assimp3FBX12FBXConverter13PotentialNodeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %108) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %108) #8
  br label %659

657:                                              ; preds = %655, %619
  call void @llvm.lifetime.end.p0(i64 12, ptr %92) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr %87) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr %76) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr %71) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr %64) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr %59) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr %52) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr %47) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr %42) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr %35) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 1088, ptr %15) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #8
  %658 = load i1, ptr %6, align 1
  ret i1 %658

659:                                              ; preds = %656, %613
  call void @llvm.lifetime.end.p0(i64 12, ptr %92) #8
  br label %660

660:                                              ; preds = %659, %507
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr %87) #8
  br label %661

661:                                              ; preds = %660, %475
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr %76) #8
  br label %662

662:                                              ; preds = %661, %413
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr %71) #8
  br label %663

663:                                              ; preds = %662, %378
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr %64) #8
  br label %664

664:                                              ; preds = %663, %351
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr %59) #8
  br label %665

665:                                              ; preds = %664, %321
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr %52) #8
  br label %666

666:                                              ; preds = %665, %294
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr %47) #8
  br label %667

667:                                              ; preds = %666, %262
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr %42) #8
  br label %668

668:                                              ; preds = %667, %235
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr %35) #8
  br label %669

669:                                              ; preds = %668, %208
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr %30) #8
  br label %670

670:                                              ; preds = %669, %176
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr %23) #8
  br label %671

671:                                              ; preds = %670, %150
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 1088, ptr %15) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #8
  br label %672

672:                                              ; preds = %671
  %673 = load ptr, ptr %26, align 8
  %674 = load i32, ptr %27, align 4
  %675 = insertvalue { ptr, i32 } poison, ptr %673, 0
  %676 = insertvalue { ptr, i32 } %675, i32 %674, 1
  resume { ptr, i32 } %676

677:                                              ; preds = %605
  unreachable
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIN6Assimp3FBX12FBXConverter13PotentialNodeESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) #0 align 2

declare void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef, ptr noundef, i32 noundef) #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN6Assimp3FBX12FBXConverter13PotentialNodeptEv(ptr noundef nonnull align 8 dereferenceable(16)) #0 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp3FBX12FBXConverter17GetRotationMatrixENS0_5Model8RotOrderERK10aiVector3tIfER12aiMatrix4x4tIfE(ptr noundef nonnull align 8 dereferenceable(489), i32 noundef, ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(64)) #4 align 2

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNK12aiMatrix4x4tIfEmlERKS0_(ptr dead_on_unwind noalias writable sret(%class.aiMatrix4x4t) align 4, ptr noundef nonnull align 4 dereferenceable(64), ptr noundef nonnull align 4 dereferenceable(64)) #7 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { <2 x float>, float } @_ZN6Assimp3FBX11PropertyGetI10aiVector3tIfEEET_RKNS0_13PropertyTableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERbb(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(1), i1 noundef zeroext) #7

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZNK10aiVector3tIfE12SquareLengthEv(ptr noundef nonnull align 4 dereferenceable(12)) #6 align 2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZSt6fill_nIP12aiMatrix4x4tIfEjS1_ET_S3_T0_RKT1_(ptr noundef, i32 noundef, ptr noundef nonnull align 4 dereferenceable(64)) #7

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(64) ptr @_ZN12aiMatrix4x4tIfE11TranslationERK10aiVector3tIfERS0_(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(64)) #6 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(64) ptr @_ZN12aiMatrix4x4tIfE7ScalingERK10aiVector3tIfERS0_(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(64)) #6 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZN10aiVector3tIfEixEj(ptr noundef nonnull align 4 dereferenceable(12), i32 noundef) #6 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZNK10aiVector3tIfEixEj(ptr noundef nonnull align 4 dereferenceable(12), i32 noundef) #6 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(64) ptr @_ZN12aiMatrix4x4tIfE7InverseEv(ptr noundef nonnull align 4 dereferenceable(64)) #7 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEE4findERS9_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(32)) #2 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSteqRKSt23_Rb_tree_const_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjEESB_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #0

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(36) ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) #0 align 2

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

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

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

attributes #0 = { 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 #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
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 = { 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 #5 = { "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 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { 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 = !{!"_ZTSN6Assimp3FBX5Model8RotOrderE", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"float", !7, i64 0}
!15 = !{!16, !16, i64 0}
!16 = !{!"bool", !7, i64 0}
!17 = !{i8 0, i8 2}
!18 = !{}
!19 = !{i64 0, i64 4, !13, i64 4, i64 4, !13, i64 8, i64 4, !13}
!20 = distinct !{!20, !21}
!21 = !{!"llvm.loop.mustprogress"}
!22 = !{!23, !6, i64 480}
!23 = !{!"_ZTSN6Assimp3FBX12FBXConverterE", !12, i64 0, !24, i64 8, !28, i64 32, !32, i64 56, !36, i64 80, !40, i64 104, !44, i64 128, !48, i64 152, !57, i64 200, !62, i64 248, !67, i64 296, !67, i64 344, !72, i64 392, !77, i64 440, !78, i64 448, !6, i64 472, !6, i64 480, !16, i64 488}
!24 = !{!"_ZTSSt6vectorIP6aiMeshSaIS1_EE", !25, i64 0}
!25 = !{!"_ZTSSt12_Vector_baseIP6aiMeshSaIS1_EE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIP6aiMeshSaIS1_EE12_Vector_implE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIP6aiMeshSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!28 = !{!"_ZTSSt6vectorIP10aiMaterialSaIS1_EE", !29, i64 0}
!29 = !{!"_ZTSSt12_Vector_baseIP10aiMaterialSaIS1_EE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseIP10aiMaterialSaIS1_EE12_Vector_implE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseIP10aiMaterialSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!32 = !{!"_ZTSSt6vectorIP11aiAnimationSaIS1_EE", !33, i64 0}
!33 = !{!"_ZTSSt12_Vector_baseIP11aiAnimationSaIS1_EE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseIP11aiAnimationSaIS1_EE12_Vector_implE", !35, i64 0}
!35 = !{!"_ZTSNSt12_Vector_baseIP11aiAnimationSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!36 = !{!"_ZTSSt6vectorIP7aiLightSaIS1_EE", !37, i64 0}
!37 = !{!"_ZTSSt12_Vector_baseIP7aiLightSaIS1_EE", !38, i64 0}
!38 = !{!"_ZTSNSt12_Vector_baseIP7aiLightSaIS1_EE12_Vector_implE", !39, i64 0}
!39 = !{!"_ZTSNSt12_Vector_baseIP7aiLightSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!40 = !{!"_ZTSSt6vectorIP8aiCameraSaIS1_EE", !41, i64 0}
!41 = !{!"_ZTSSt12_Vector_baseIP8aiCameraSaIS1_EE", !42, i64 0}
!42 = !{!"_ZTSNSt12_Vector_baseIP8aiCameraSaIS1_EE12_Vector_implE", !43, i64 0}
!43 = !{!"_ZTSNSt12_Vector_baseIP8aiCameraSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!44 = !{!"_ZTSSt6vectorIP9aiTextureSaIS1_EE", !45, i64 0}
!45 = !{!"_ZTSSt12_Vector_baseIP9aiTextureSaIS1_EE", !46, i64 0}
!46 = !{!"_ZTSNSt12_Vector_baseIP9aiTextureSaIS1_EE12_Vector_implE", !47, i64 0}
!47 = !{!"_ZTSNSt12_Vector_baseIP9aiTextureSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!48 = !{!"_ZTSSt3mapIPKN6Assimp3FBX8MaterialEjSt4lessIS4_ESaISt4pairIKS4_jEEE", !49, i64 0}
!49 = !{!"_ZTSSt8_Rb_treeIPKN6Assimp3FBX8MaterialESt4pairIKS4_jESt10_Select1stIS7_ESt4lessIS4_ESaIS7_EE", !50, i64 0}
!50 = !{!"_ZTSNSt8_Rb_treeIPKN6Assimp3FBX8MaterialESt4pairIKS4_jESt10_Select1stIS7_ESt4lessIS4_ESaIS7_EE13_Rb_tree_implISB_Lb1EEE", !51, i64 0, !53, i64 8}
!51 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIPKN6Assimp3FBX8MaterialEEE", !52, i64 0}
!52 = !{!"_ZTSSt4lessIPKN6Assimp3FBX8MaterialEE"}
!53 = !{!"_ZTSSt15_Rb_tree_header", !54, i64 0, !56, i64 32}
!54 = !{!"_ZTSSt18_Rb_tree_node_base", !55, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!55 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!56 = !{!"long", !7, i64 0}
!57 = !{!"_ZTSSt3mapIPKN6Assimp3FBX5VideoEjSt4lessIS4_ESaISt4pairIKS4_jEEE", !58, i64 0}
!58 = !{!"_ZTSSt8_Rb_treeIPKN6Assimp3FBX5VideoESt4pairIKS4_jESt10_Select1stIS7_ESt4lessIS4_ESaIS7_EE", !59, i64 0}
!59 = !{!"_ZTSNSt8_Rb_treeIPKN6Assimp3FBX5VideoESt4pairIKS4_jESt10_Select1stIS7_ESt4lessIS4_ESaIS7_EE13_Rb_tree_implISB_Lb1EEE", !60, i64 0, !53, i64 8}
!60 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIPKN6Assimp3FBX5VideoEEE", !61, i64 0}
!61 = !{!"_ZTSSt4lessIPKN6Assimp3FBX5VideoEE"}
!62 = !{!"_ZTSSt3mapIPKN6Assimp3FBX8GeometryESt6vectorIjSaIjEESt4lessIS4_ESaISt4pairIKS4_S7_EEE", !63, i64 0}
!63 = !{!"_ZTSSt8_Rb_treeIPKN6Assimp3FBX8GeometryESt4pairIKS4_St6vectorIjSaIjEEESt10_Select1stISA_ESt4lessIS4_ESaISA_EE", !64, i64 0}
!64 = !{!"_ZTSNSt8_Rb_treeIPKN6Assimp3FBX8GeometryESt4pairIKS4_St6vectorIjSaIjEEESt10_Select1stISA_ESt4lessIS4_ESaISA_EE13_Rb_tree_implISE_Lb1EEE", !65, i64 0, !53, i64 8}
!65 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIPKN6Assimp3FBX8GeometryEEE", !66, i64 0}
!66 = !{!"_ZTSSt4lessIPKN6Assimp3FBX8GeometryEE"}
!67 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEE", !68, i64 0}
!68 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_jESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE", !69, i64 0}
!69 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_jESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE13_Rb_tree_implISC_Lb1EEE", !70, i64 0, !53, i64 8}
!70 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !71, i64 0}
!71 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!72 = !{!"_ZTSSt3mapIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP6aiBoneSt4lessIS6_ESaISt4pairIS6_S8_EEE", !73, i64 0}
!73 = !{!"_ZTSSt8_Rb_treeIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIS6_P6aiBoneESt10_Select1stISA_ESt4lessIS6_ESaISA_EE", !74, i64 0}
!74 = !{!"_ZTSNSt8_Rb_treeIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIS6_P6aiBoneESt10_Select1stISA_ESt4lessIS6_ESaISA_EE13_Rb_tree_implISE_Lb1EEE", !75, i64 0, !53, i64 8}
!75 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !76, i64 0}
!76 = !{!"_ZTSSt4lessIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!77 = !{!"double", !7, i64 0}
!78 = !{!"_ZTSSt6vectorIP10aiSkeletonSaIS1_EE", !79, i64 0}
!79 = !{!"_ZTSSt12_Vector_baseIP10aiSkeletonSaIS1_EE", !80, i64 0}
!80 = !{!"_ZTSNSt12_Vector_baseIP10aiSkeletonSaIS1_EE12_Vector_implE", !81, i64 0}
!81 = !{!"_ZTSNSt12_Vector_baseIP10aiSkeletonSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!82 = !{!83, !16, i64 10}
!83 = !{!"_ZTSN6Assimp3FBX14ImportSettingsE", !16, i64 0, !16, i64 1, !16, i64 2, !16, i64 3, !16, i64 4, !16, i64 5, !16, i64 6, !16, i64 7, !16, i64 8, !16, i64 9, !16, i64 10, !16, i64 11, !16, i64 12, !16, i64 13, !16, i64 14}
!84 = !{!85, !12, i64 32}
!85 = !{!"_ZTSSt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjE", !86, i64 0, !12, i64 32}
!86 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !87, i64 0, !56, i64 8, !7, i64 16}
!87 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!88 = !{!56, !56, i64 0}
!89 = !{!90, !90, i64 0}
!90 = !{!"_ZTSN6Assimp3FBX12FBXConverter18TransformationCompE", !7, i64 0}
!91 = !{i64 0, i64 4, !13, i64 4, i64 4, !13, i64 8, i64 4, !13, i64 12, i64 4, !13, i64 16, i64 4, !13, i64 20, i64 4, !13, i64 24, i64 4, !13, i64 28, i64 4, !13, i64 32, i64 4, !13, i64 36, i64 4, !13, i64 40, i64 4, !13, i64 44, i64 4, !13, i64 48, i64 4, !13, i64 52, i64 4, !13, i64 56, i64 4, !13, i64 60, i64 4, !13}
!92 = distinct !{!92, !21}
!93 = distinct !{!93, !21}


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

%class.aiMatrix4x4t = type { float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float }
%class.aiVector3t = 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.72" = type { i8 }
%"struct.std::_Rb_tree_const_iterator.167" = type { ptr }
%"struct.std::_Rb_tree_iterator.153" = type { ptr }
%"struct.Assimp::FBX::FBXConverter::PotentialNode" = type { %"class.std::unique_ptr.141", ptr }
%"class.std::unique_ptr.141" = type { %"struct.std::__uniq_ptr_data.142" }
%"struct.std::__uniq_ptr_data.142" = type { %"class.std::__uniq_ptr_impl.143" }
%"class.std::__uniq_ptr_impl.143" = type { %"class.std::tuple.144" }
%"class.std::tuple.144" = type { %"struct.std::_Tuple_impl.145" }
%"struct.std::_Tuple_impl.145" = type { %"struct.std::_Head_base.148" }
%"struct.std::_Head_base.148" = type { ptr }

@.str.5 = external hidden unnamed_addr constant [119 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [20 x i8], align 1

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 1 dereferenceable(15) ptr @_ZNK6Assimp3FBX8Document8SettingsEv(ptr noundef nonnull align 8 dereferenceable(336)) local_unnamed_addr #0 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN6Assimp3FBX12FBXConverter31GenerateTransformationNodeChainERKNS0_5ModelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERSt6vectorINS1_13PotentialNodeESaISE_EESH_(ptr noundef nonnull align 8 dereferenceable(489) %0, ptr noundef nonnull align 8 dereferenceable(208) %1, ptr noundef nonnull align 8 dereferenceable(32) %2, ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(24) %4) local_unnamed_addr #4 align 2 personality ptr @__gxx_personality_v0 {
  %6 = alloca i8, align 1
  %7 = alloca [17 x %class.aiMatrix4x4t], align 16
  %8 = alloca %class.aiMatrix4x4t, align 4
  %9 = alloca %class.aiVector3t, align 4
  %10 = alloca %class.aiVector3t, align 8
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::allocator.72", align 1
  %13 = alloca %class.aiVector3t, align 8
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %"class.std::allocator.72", align 1
  %16 = alloca %class.aiVector3t, align 8
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca %"class.std::allocator.72", align 1
  %19 = alloca %class.aiVector3t, align 8
  %20 = alloca %class.aiVector3t, align 8
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca %"class.std::allocator.72", align 1
  %23 = alloca %class.aiVector3t, align 8
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.std::allocator.72", align 1
  %26 = alloca %class.aiVector3t, align 8
  %27 = alloca %"class.std::__cxx11::basic_string", align 8
  %28 = alloca %"class.std::allocator.72", align 1
  %29 = alloca %class.aiVector3t, align 8
  %30 = alloca %class.aiVector3t, align 8
  %31 = alloca %"class.std::__cxx11::basic_string", align 8
  %32 = alloca %"class.std::allocator.72", align 1
  %33 = alloca %class.aiVector3t, align 8
  %34 = alloca %"class.std::__cxx11::basic_string", align 8
  %35 = alloca %"class.std::allocator.72", align 1
  %36 = alloca %class.aiVector3t, align 8
  %37 = alloca %class.aiVector3t, align 8
  %38 = alloca %"class.std::__cxx11::basic_string", align 8
  %39 = alloca %"class.std::allocator.72", align 1
  %40 = alloca %class.aiVector3t, align 8
  %41 = alloca %"class.std::__cxx11::basic_string", align 8
  %42 = alloca %"class.std::allocator.72", align 1
  %43 = alloca %class.aiVector3t, align 8
  %44 = alloca %class.aiVector3t, align 4
  %45 = alloca %class.aiVector3t, align 8
  %46 = alloca %"class.std::__cxx11::basic_string", align 8
  %47 = alloca %"class.std::allocator.72", align 1
  %48 = alloca %class.aiVector3t, align 8
  %49 = alloca %"class.std::__cxx11::basic_string", align 8
  %50 = alloca %"class.std::allocator.72", align 1
  %51 = alloca %class.aiVector3t, align 8
  %52 = alloca %"struct.std::_Rb_tree_const_iterator.167", align 8
  %53 = alloca %"struct.std::_Rb_tree_iterator.153", align 8
  %54 = alloca %"struct.std::_Rb_tree_const_iterator.167", align 8
  %55 = alloca %"struct.std::_Rb_tree_iterator.153", align 8
  %56 = alloca %"struct.Assimp::FBX::FBXConverter::PotentialNode", align 8
  %57 = alloca %"class.std::__cxx11::basic_string", align 8
  %58 = alloca %"struct.Assimp::FBX::FBXConverter::PotentialNode", align 8
  %59 = alloca %class.aiMatrix4x4t, align 4
  %60 = tail call noundef nonnull align 8 dereferenceable(120) ptr @_ZNK6Assimp3FBX5Model5PropsEv(ptr noundef nonnull align 8 dereferenceable(208) %1)
  %61 = tail call noundef i32 @_ZNK6Assimp3FBX5Model13RotationOrderEv(ptr noundef nonnull align 8 dereferenceable(208) %1)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %6) #8
  call void @llvm.lifetime.start.p0(i64 1088, ptr nonnull %7) #8
  call void @_ZN12aiMatrix4x4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(64) %7) #8
  %.ptr.1 = getelementptr inbounds i8, ptr %7, i64 64
  call void @_ZN12aiMatrix4x4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(64) %.ptr.1) #8
  %.ptr.2 = getelementptr inbounds i8, ptr %7, i64 128
  call void @_ZN12aiMatrix4x4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(64) %.ptr.2) #8
  %.ptr.3 = getelementptr inbounds i8, ptr %7, i64 192
  call void @_ZN12aiMatrix4x4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(64) %.ptr.3) #8
  %.ptr.4 = getelementptr inbounds i8, ptr %7, i64 256
  call void @_ZN12aiMatrix4x4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(64) %.ptr.4) #8
  %.ptr.5 = getelementptr inbounds i8, ptr %7, i64 320
  call void @_ZN12aiMatrix4x4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(64) %.ptr.5) #8
  %.ptr.6 = getelementptr inbounds i8, ptr %7, i64 384
  call void @_ZN12aiMatrix4x4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(64) %.ptr.6) #8
  %.ptr.7 = getelementptr inbounds i8, ptr %7, i64 448
  call void @_ZN12aiMatrix4x4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(64) %.ptr.7) #8
  %.ptr.8 = getelementptr inbounds i8, ptr %7, i64 512
  call void @_ZN12aiMatrix4x4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(64) %.ptr.8) #8
  %.ptr.9 = getelementptr inbounds i8, ptr %7, i64 576
  call void @_ZN12aiMatrix4x4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(64) %.ptr.9) #8
  %.ptr.10 = getelementptr inbounds i8, ptr %7, i64 640
  call void @_ZN12aiMatrix4x4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(64) %.ptr.10) #8
  %.ptr.11 = getelementptr inbounds i8, ptr %7, i64 704
  call void @_ZN12aiMatrix4x4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(64) %.ptr.11) #8
  %.ptr.12 = getelementptr inbounds i8, ptr %7, i64 768
  call void @_ZN12aiMatrix4x4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(64) %.ptr.12) #8
  %.ptr.13 = getelementptr inbounds i8, ptr %7, i64 832
  call void @_ZN12aiMatrix4x4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(64) %.ptr.13) #8
  %.ptr.14 = getelementptr inbounds i8, ptr %7, i64 896
  call void @_ZN12aiMatrix4x4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(64) %.ptr.14) #8
  %.ptr.15 = getelementptr inbounds i8, ptr %7, i64 960
  call void @_ZN12aiMatrix4x4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(64) %.ptr.15) #8
  %.ptr.16 = getelementptr inbounds i8, ptr %7, i64 1024
  call void @_ZN12aiMatrix4x4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(64) %.ptr.16) #8
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %8) #8
  call void @_ZN12aiMatrix4x4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(64) %8) #8
  %62 = call noundef ptr @_ZSt6fill_nIP12aiMatrix4x4tIfEjS1_ET_S3_T0_RKT1_(ptr noundef nonnull %7, i32 noundef 17, ptr noundef nonnull align 4 dereferenceable(64) %8)
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %8) #8
  %63 = call noundef float @_ZN6Assimp4Math10getEpsilonIfEET_v()
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %9) #8
  call void @_ZN10aiVector3tIfEC2Efff(ptr noundef nonnull align 4 dereferenceable(12) %9, float noundef 1.000000e+00, float noundef 1.000000e+00, float noundef 1.000000e+00)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %10) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %12) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull @.str.18, ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %64 unwind label %73

64:                                               ; preds = %5
  %65 = invoke { <2 x float>, float } @_ZN6Assimp3FBX11PropertyGetI10aiVector3tIfEEET_RKNS0_13PropertyTableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERbb(ptr noundef nonnull align 8 dereferenceable(120) %60, ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 1 dereferenceable(1) %6, i1 noundef zeroext false)
          to label %66 unwind label %75

66:                                               ; preds = %64
  %.fca.0.extract116 = extractvalue { <2 x float>, float } %65, 0
  %.fca.1.extract117 = extractvalue { <2 x float>, float } %65, 1
  store <2 x float> %.fca.0.extract116, ptr %10, align 8
  %.sroa.2119.0..sroa_idx = getelementptr inbounds i8, ptr %10, i64 8
  store float %.fca.1.extract117, ptr %.sroa.2119.0..sroa_idx, align 8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #8
  %67 = load i8, ptr %6, align 1, !tbaa !5, !range !9, !noundef !10
  %68 = trunc nuw i8 %67 to i1
  br i1 %68, label %69, label %78

69:                                               ; preds = %66
  %70 = call noundef float @_ZNK10aiVector3tIfE12SquareLengthEv(ptr noundef nonnull align 4 dereferenceable(12) %10)
  %71 = fcmp ogt float %70, %63
  br i1 %71, label %72, label %78

72:                                               ; preds = %69
  call void @_ZN6Assimp3FBX12FBXConverter17GetRotationMatrixENS0_5Model8RotOrderERK10aiVector3tIfER12aiMatrix4x4tIfE(ptr noundef nonnull align 8 dereferenceable(489) %0, i32 noundef 0, ptr noundef nonnull align 4 dereferenceable(12) %10, ptr noundef nonnull align 4 dereferenceable(64) %.ptr.6)
  br label %78

73:                                               ; preds = %5
  %74 = landingpad { ptr, i32 }
          cleanup
  br label %77

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

77:                                               ; preds = %75, %73
  %.pn = phi { ptr, i32 } [ %76, %75 ], [ %74, %73 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #8
  br label %466

78:                                               ; preds = %72, %69, %66
  %.0182 = phi i32 [ 64, %72 ], [ 0, %69 ], [ 0, %66 ]
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %13) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %15) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull @.str.20, ptr noundef nonnull align 1 dereferenceable(1) %15)
          to label %79 unwind label %89

79:                                               ; preds = %78
  %80 = invoke { <2 x float>, float } @_ZN6Assimp3FBX11PropertyGetI10aiVector3tIfEEET_RKNS0_13PropertyTableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERbb(ptr noundef nonnull align 8 dereferenceable(120) %60, ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull align 1 dereferenceable(1) %6, i1 noundef zeroext false)
          to label %81 unwind label %91

81:                                               ; preds = %79
  %.fca.0.extract110 = extractvalue { <2 x float>, float } %80, 0
  %.fca.1.extract111 = extractvalue { <2 x float>, float } %80, 1
  store <2 x float> %.fca.0.extract110, ptr %13, align 8
  %.sroa.2113.0..sroa_idx = getelementptr inbounds i8, ptr %13, i64 8
  store float %.fca.1.extract111, ptr %.sroa.2113.0..sroa_idx, align 8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #8
  %82 = load i8, ptr %6, align 1, !tbaa !5, !range !9, !noundef !10
  %83 = trunc nuw i8 %82 to i1
  br i1 %83, label %84, label %94

84:                                               ; preds = %81
  %85 = call noundef float @_ZNK10aiVector3tIfE12SquareLengthEv(ptr noundef nonnull align 4 dereferenceable(12) %13)
  %86 = fcmp ogt float %85, %63
  br i1 %86, label %87, label %94

87:                                               ; preds = %84
  %88 = or disjoint i32 %.0182, 256
  call void @_ZN6Assimp3FBX12FBXConverter17GetRotationMatrixENS0_5Model8RotOrderERK10aiVector3tIfER12aiMatrix4x4tIfE(ptr noundef nonnull align 8 dereferenceable(489) %0, i32 noundef 0, ptr noundef nonnull align 4 dereferenceable(12) %13, ptr noundef nonnull align 4 dereferenceable(64) %.ptr.8)
  br label %94

89:                                               ; preds = %78
  %90 = landingpad { ptr, i32 }
          cleanup
  br label %93

91:                                               ; preds = %79
  %92 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #8
  br label %93

93:                                               ; preds = %91, %89
  %.pn228 = phi { ptr, i32 } [ %92, %91 ], [ %90, %89 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #8
  br label %465

94:                                               ; preds = %87, %84, %81
  %.1 = phi i32 [ %88, %87 ], [ %.0182, %84 ], [ %.0182, %81 ]
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %16) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %18) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull @.str.17, ptr noundef nonnull align 1 dereferenceable(1) %18)
          to label %95 unwind label %108

95:                                               ; preds = %94
  %96 = invoke { <2 x float>, float } @_ZN6Assimp3FBX11PropertyGetI10aiVector3tIfEEET_RKNS0_13PropertyTableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERbb(ptr noundef nonnull align 8 dereferenceable(120) %60, ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull align 1 dereferenceable(1) %6, i1 noundef zeroext false)
          to label %97 unwind label %110

97:                                               ; preds = %95
  %.fca.0.extract103 = extractvalue { <2 x float>, float } %96, 0
  %.fca.1.extract104 = extractvalue { <2 x float>, float } %96, 1
  store <2 x float> %.fca.0.extract103, ptr %16, align 8
  %.sroa.2106.0..sroa_idx = getelementptr inbounds i8, ptr %16, i64 8
  store float %.fca.1.extract104, ptr %.sroa.2106.0..sroa_idx, align 8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #8
  %98 = load i8, ptr %6, align 1, !tbaa !5, !range !9, !noundef !10
  %99 = trunc nuw i8 %98 to i1
  br i1 %99, label %100, label %113

100:                                              ; preds = %97
  %101 = call noundef float @_ZNK10aiVector3tIfE12SquareLengthEv(ptr noundef nonnull align 4 dereferenceable(12) %16)
  %102 = fcmp ogt float %101, %63
  br i1 %102, label %103, label %113

103:                                              ; preds = %100
  %104 = or i32 %.1, 544
  %105 = call noundef nonnull align 4 dereferenceable(64) ptr @_ZN12aiMatrix4x4tIfE11TranslationERK10aiVector3tIfERS0_(ptr noundef nonnull align 4 dereferenceable(12) %16, ptr noundef nonnull align 4 dereferenceable(64) %.ptr.5)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %19) #8
  %106 = call { <2 x float>, float } @_ZngIfE10aiVector3tIT_ERKS2_(ptr noundef nonnull align 4 dereferenceable(12) %16)
  %.fca.0.extract99 = extractvalue { <2 x float>, float } %106, 0
  %.fca.1.extract100 = extractvalue { <2 x float>, float } %106, 1
  store <2 x float> %.fca.0.extract99, ptr %19, align 8
  %.sroa.2102.0..sroa_idx = getelementptr inbounds i8, ptr %19, i64 8
  store float %.fca.1.extract100, ptr %.sroa.2102.0..sroa_idx, align 8
  %107 = call noundef nonnull align 4 dereferenceable(64) ptr @_ZN12aiMatrix4x4tIfE11TranslationERK10aiVector3tIfERS0_(ptr noundef nonnull align 4 dereferenceable(12) %19, ptr noundef nonnull align 4 dereferenceable(64) %.ptr.9)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %19) #8
  br label %113

108:                                              ; preds = %94
  %109 = landingpad { ptr, i32 }
          cleanup
  br label %112

110:                                              ; preds = %95
  %111 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #8
  br label %112

112:                                              ; preds = %110, %108
  %.pn230 = phi { ptr, i32 } [ %111, %110 ], [ %109, %108 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #8
  br label %464

113:                                              ; preds = %103, %100, %97
  %.2 = phi i32 [ %104, %103 ], [ %.1, %100 ], [ %.1, %97 ]
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %20) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %21) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %22) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull @.str.16, ptr noundef nonnull align 1 dereferenceable(1) %22)
          to label %114 unwind label %125

114:                                              ; preds = %113
  %115 = invoke { <2 x float>, float } @_ZN6Assimp3FBX11PropertyGetI10aiVector3tIfEEET_RKNS0_13PropertyTableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERbb(ptr noundef nonnull align 8 dereferenceable(120) %60, ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull align 1 dereferenceable(1) %6, i1 noundef zeroext false)
          to label %116 unwind label %127

116:                                              ; preds = %114
  %.fca.0.extract93 = extractvalue { <2 x float>, float } %115, 0
  %.fca.1.extract94 = extractvalue { <2 x float>, float } %115, 1
  store <2 x float> %.fca.0.extract93, ptr %20, align 8
  %.sroa.296.0..sroa_idx = getelementptr inbounds i8, ptr %20, i64 8
  store float %.fca.1.extract94, ptr %.sroa.296.0..sroa_idx, align 8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %22) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #8
  %117 = load i8, ptr %6, align 1, !tbaa !5, !range !9, !noundef !10
  %118 = trunc nuw i8 %117 to i1
  br i1 %118, label %119, label %130

119:                                              ; preds = %116
  %120 = call noundef float @_ZNK10aiVector3tIfE12SquareLengthEv(ptr noundef nonnull align 4 dereferenceable(12) %20)
  %121 = fcmp ogt float %120, %63
  br i1 %121, label %122, label %130

122:                                              ; preds = %119
  %123 = or i32 %.2, 16
  %124 = call noundef nonnull align 4 dereferenceable(64) ptr @_ZN12aiMatrix4x4tIfE11TranslationERK10aiVector3tIfERS0_(ptr noundef nonnull align 4 dereferenceable(12) %20, ptr noundef nonnull align 4 dereferenceable(64) %.ptr.4)
  br label %130

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

127:                                              ; preds = %114
  %128 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #8
  br label %129

129:                                              ; preds = %127, %125
  %.pn232 = phi { ptr, i32 } [ %128, %127 ], [ %126, %125 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %22) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #8
  br label %463

130:                                              ; preds = %122, %119, %116
  %.3 = phi i32 [ %123, %122 ], [ %.2, %119 ], [ %.2, %116 ]
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %23) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %24) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %25) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull @.str.22, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %131 unwind label %142

131:                                              ; preds = %130
  %132 = invoke { <2 x float>, float } @_ZN6Assimp3FBX11PropertyGetI10aiVector3tIfEEET_RKNS0_13PropertyTableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERbb(ptr noundef nonnull align 8 dereferenceable(120) %60, ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull align 1 dereferenceable(1) %6, i1 noundef zeroext false)
          to label %133 unwind label %144

133:                                              ; preds = %131
  %.fca.0.extract87 = extractvalue { <2 x float>, float } %132, 0
  %.fca.1.extract88 = extractvalue { <2 x float>, float } %132, 1
  store <2 x float> %.fca.0.extract87, ptr %23, align 8
  %.sroa.290.0..sroa_idx = getelementptr inbounds i8, ptr %23, i64 8
  store float %.fca.1.extract88, ptr %.sroa.290.0..sroa_idx, align 8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #8
  %134 = load i8, ptr %6, align 1, !tbaa !5, !range !9, !noundef !10
  %135 = trunc nuw i8 %134 to i1
  br i1 %135, label %136, label %147

136:                                              ; preds = %133
  %137 = call noundef float @_ZNK10aiVector3tIfE12SquareLengthEv(ptr noundef nonnull align 4 dereferenceable(12) %23)
  %138 = fcmp ogt float %137, %63
  br i1 %138, label %139, label %147

139:                                              ; preds = %136
  %140 = or i32 %.3, 1024
  %141 = call noundef nonnull align 4 dereferenceable(64) ptr @_ZN12aiMatrix4x4tIfE11TranslationERK10aiVector3tIfERS0_(ptr noundef nonnull align 4 dereferenceable(12) %23, ptr noundef nonnull align 4 dereferenceable(64) %.ptr.10)
  br label %147

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

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

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

147:                                              ; preds = %139, %136, %133
  %.4 = phi i32 [ %140, %139 ], [ %.3, %136 ], [ %.3, %133 ]
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %26) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %27) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %28) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull @.str.23, ptr noundef nonnull align 1 dereferenceable(1) %28)
          to label %148 unwind label %161

148:                                              ; preds = %147
  %149 = invoke { <2 x float>, float } @_ZN6Assimp3FBX11PropertyGetI10aiVector3tIfEEET_RKNS0_13PropertyTableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERbb(ptr noundef nonnull align 8 dereferenceable(120) %60, ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull align 1 dereferenceable(1) %6, i1 noundef zeroext false)
          to label %150 unwind label %163

150:                                              ; preds = %148
  %.fca.0.extract80 = extractvalue { <2 x float>, float } %149, 0
  %.fca.1.extract81 = extractvalue { <2 x float>, float } %149, 1
  store <2 x float> %.fca.0.extract80, ptr %26, align 8
  %.sroa.283.0..sroa_idx = getelementptr inbounds i8, ptr %26, i64 8
  store float %.fca.1.extract81, ptr %.sroa.283.0..sroa_idx, align 8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #8
  %151 = load i8, ptr %6, align 1, !tbaa !5, !range !9, !noundef !10
  %152 = trunc nuw i8 %151 to i1
  br i1 %152, label %153, label %166

153:                                              ; preds = %150
  %154 = call noundef float @_ZNK10aiVector3tIfE12SquareLengthEv(ptr noundef nonnull align 4 dereferenceable(12) %26)
  %155 = fcmp ogt float %154, %63
  br i1 %155, label %156, label %166

156:                                              ; preds = %153
  %157 = or i32 %.4, 10240
  %158 = call noundef nonnull align 4 dereferenceable(64) ptr @_ZN12aiMatrix4x4tIfE11TranslationERK10aiVector3tIfERS0_(ptr noundef nonnull align 4 dereferenceable(12) %26, ptr noundef nonnull align 4 dereferenceable(64) %.ptr.11)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %29) #8
  %159 = call { <2 x float>, float } @_ZngIfE10aiVector3tIT_ERKS2_(ptr noundef nonnull align 4 dereferenceable(12) %26)
  %.fca.0.extract76 = extractvalue { <2 x float>, float } %159, 0
  %.fca.1.extract77 = extractvalue { <2 x float>, float } %159, 1
  store <2 x float> %.fca.0.extract76, ptr %29, align 8
  %.sroa.279.0..sroa_idx = getelementptr inbounds i8, ptr %29, i64 8
  store float %.fca.1.extract77, ptr %.sroa.279.0..sroa_idx, align 8
  %160 = call noundef nonnull align 4 dereferenceable(64) ptr @_ZN12aiMatrix4x4tIfE11TranslationERK10aiVector3tIfERS0_(ptr noundef nonnull align 4 dereferenceable(12) %29, ptr noundef nonnull align 4 dereferenceable(64) %.ptr.13)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %29) #8
  br label %166

161:                                              ; preds = %147
  %162 = landingpad { ptr, i32 }
          cleanup
  br label %165

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

165:                                              ; preds = %163, %161
  %.pn236 = phi { ptr, i32 } [ %164, %163 ], [ %162, %161 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #8
  br label %461

166:                                              ; preds = %156, %153, %150
  %.5 = phi i32 [ %157, %156 ], [ %.4, %153 ], [ %.4, %150 ]
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %30) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %31) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %32) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef nonnull @.str.32, ptr noundef nonnull align 1 dereferenceable(1) %32)
          to label %167 unwind label %178

167:                                              ; preds = %166
  %168 = invoke { <2 x float>, float } @_ZN6Assimp3FBX11PropertyGetI10aiVector3tIfEEET_RKNS0_13PropertyTableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERbb(ptr noundef nonnull align 8 dereferenceable(120) %60, ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef nonnull align 1 dereferenceable(1) %6, i1 noundef zeroext false)
          to label %169 unwind label %180

169:                                              ; preds = %167
  %.fca.0.extract70 = extractvalue { <2 x float>, float } %168, 0
  %.fca.1.extract71 = extractvalue { <2 x float>, float } %168, 1
  store <2 x float> %.fca.0.extract70, ptr %30, align 8
  %.sroa.273.0..sroa_idx = getelementptr inbounds i8, ptr %30, i64 8
  store float %.fca.1.extract71, ptr %.sroa.273.0..sroa_idx, align 8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %32) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #8
  %170 = load i8, ptr %6, align 1, !tbaa !5, !range !9, !noundef !10
  %171 = trunc nuw i8 %170 to i1
  br i1 %171, label %172, label %183

172:                                              ; preds = %169
  %173 = call noundef float @_ZNK10aiVector3tIfE12SquareLengthEv(ptr noundef nonnull align 4 dereferenceable(12) %30)
  %174 = fcmp ogt float %173, %63
  br i1 %174, label %175, label %183

175:                                              ; preds = %172
  %176 = or i32 %.5, 8
  %177 = call noundef nonnull align 4 dereferenceable(64) ptr @_ZN12aiMatrix4x4tIfE11TranslationERK10aiVector3tIfERS0_(ptr noundef nonnull align 4 dereferenceable(12) %30, ptr noundef nonnull align 4 dereferenceable(64) %.ptr.3)
  br label %183

178:                                              ; preds = %166
  %179 = landingpad { ptr, i32 }
          cleanup
  br label %182

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

182:                                              ; preds = %180, %178
  %.pn238 = phi { ptr, i32 } [ %181, %180 ], [ %179, %178 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %32) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #8
  br label %460

183:                                              ; preds = %175, %172, %169
  %.6 = phi i32 [ %176, %175 ], [ %.5, %172 ], [ %.5, %169 ]
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %33) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %34) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %35) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef nonnull @.str.34, ptr noundef nonnull align 1 dereferenceable(1) %35)
          to label %184 unwind label %196

184:                                              ; preds = %183
  %185 = invoke { <2 x float>, float } @_ZN6Assimp3FBX11PropertyGetI10aiVector3tIfEEET_RKNS0_13PropertyTableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERbb(ptr noundef nonnull align 8 dereferenceable(120) %60, ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef nonnull align 1 dereferenceable(1) %6, i1 noundef zeroext false)
          to label %186 unwind label %198

186:                                              ; preds = %184
  %.fca.0.extract64 = extractvalue { <2 x float>, float } %185, 0
  %.fca.1.extract65 = extractvalue { <2 x float>, float } %185, 1
  store <2 x float> %.fca.0.extract64, ptr %33, align 8
  %.sroa.267.0..sroa_idx = getelementptr inbounds i8, ptr %33, i64 8
  store float %.fca.1.extract65, ptr %.sroa.267.0..sroa_idx, align 8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %35) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #8
  %187 = load i8, ptr %6, align 1, !tbaa !5, !range !9, !noundef !10
  %188 = trunc nuw i8 %187 to i1
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %36) #8
  br i1 %188, label %189, label %.critedge

189:                                              ; preds = %186
  %190 = call { <2 x float>, float } @_ZmiIfE10aiVector3tIT_ERKS2_S4_(ptr noundef nonnull align 4 dereferenceable(12) %33, ptr noundef nonnull align 4 dereferenceable(12) %9)
  %.fca.0.extract60 = extractvalue { <2 x float>, float } %190, 0
  %.fca.1.extract61 = extractvalue { <2 x float>, float } %190, 1
  store <2 x float> %.fca.0.extract60, ptr %36, align 8
  %.sroa.263.0..sroa_idx = getelementptr inbounds i8, ptr %36, i64 8
  store float %.fca.1.extract61, ptr %.sroa.263.0..sroa_idx, align 8
  %191 = call noundef float @_ZNK10aiVector3tIfE12SquareLengthEv(ptr noundef nonnull align 4 dereferenceable(12) %36)
  %192 = fcmp ogt float %191, %63
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %36) #8
  br i1 %192, label %193, label %201

193:                                              ; preds = %189
  %194 = or i32 %.6, 4096
  %195 = call noundef nonnull align 4 dereferenceable(64) ptr @_ZN12aiMatrix4x4tIfE7ScalingERK10aiVector3tIfERS0_(ptr noundef nonnull align 4 dereferenceable(12) %33, ptr noundef nonnull align 4 dereferenceable(64) %.ptr.12)
  br label %201

196:                                              ; preds = %183
  %197 = landingpad { ptr, i32 }
          cleanup
  br label %200

198:                                              ; preds = %184
  %199 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #8
  br label %200

200:                                              ; preds = %198, %196
  %.pn240 = phi { ptr, i32 } [ %199, %198 ], [ %197, %196 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %35) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #8
  br label %459

.critedge:                                        ; preds = %186
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %36) #8
  br label %201

201:                                              ; preds = %.critedge, %193, %189
  %.7 = phi i32 [ %194, %193 ], [ %.6, %189 ], [ %.6, %.critedge ]
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %37) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %38) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %39) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef nonnull @.str.33, ptr noundef nonnull align 1 dereferenceable(1) %39)
          to label %202 unwind label %212

202:                                              ; preds = %201
  %203 = invoke { <2 x float>, float } @_ZN6Assimp3FBX11PropertyGetI10aiVector3tIfEEET_RKNS0_13PropertyTableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERbb(ptr noundef nonnull align 8 dereferenceable(120) %60, ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef nonnull align 1 dereferenceable(1) %6, i1 noundef zeroext false)
          to label %204 unwind label %214

204:                                              ; preds = %202
  %.fca.0.extract54 = extractvalue { <2 x float>, float } %203, 0
  %.fca.1.extract55 = extractvalue { <2 x float>, float } %203, 1
  store <2 x float> %.fca.0.extract54, ptr %37, align 8
  %.sroa.257.0..sroa_idx = getelementptr inbounds i8, ptr %37, i64 8
  store float %.fca.1.extract55, ptr %.sroa.257.0..sroa_idx, align 8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %39) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %38) #8
  %205 = load i8, ptr %6, align 1, !tbaa !5, !range !9, !noundef !10
  %206 = trunc nuw i8 %205 to i1
  br i1 %206, label %207, label %217

207:                                              ; preds = %204
  %208 = call noundef float @_ZNK10aiVector3tIfE12SquareLengthEv(ptr noundef nonnull align 4 dereferenceable(12) %37)
  %209 = fcmp ogt float %208, %63
  br i1 %209, label %210, label %217

210:                                              ; preds = %207
  %211 = or i32 %.7, 128
  call void @_ZN6Assimp3FBX12FBXConverter17GetRotationMatrixENS0_5Model8RotOrderERK10aiVector3tIfER12aiMatrix4x4tIfE(ptr noundef nonnull align 8 dereferenceable(489) %0, i32 noundef %61, ptr noundef nonnull align 4 dereferenceable(12) %37, ptr noundef nonnull align 4 dereferenceable(64) %.ptr.7)
  br label %217

212:                                              ; preds = %201
  %213 = landingpad { ptr, i32 }
          cleanup
  br label %216

214:                                              ; preds = %202
  %215 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #8
  br label %216

216:                                              ; preds = %214, %212
  %.pn242 = phi { ptr, i32 } [ %215, %214 ], [ %213, %212 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %39) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %38) #8
  br label %458

217:                                              ; preds = %210, %207, %204
  %.8 = phi i32 [ %211, %210 ], [ %.7, %207 ], [ %.7, %204 ]
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %40) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %41) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %42) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %41, ptr noundef nonnull @.str.26, ptr noundef nonnull align 1 dereferenceable(1) %42)
          to label %218 unwind label %234

218:                                              ; preds = %217
  %219 = invoke { <2 x float>, float } @_ZN6Assimp3FBX11PropertyGetI10aiVector3tIfEEET_RKNS0_13PropertyTableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERbb(ptr noundef nonnull align 8 dereferenceable(120) %60, ptr noundef nonnull align 8 dereferenceable(32) %41, ptr noundef nonnull align 1 dereferenceable(1) %6, i1 noundef zeroext false)
          to label %220 unwind label %236

220:                                              ; preds = %218
  %.fca.0.extract46 = extractvalue { <2 x float>, float } %219, 0
  %.fca.1.extract47 = extractvalue { <2 x float>, float } %219, 1
  store <2 x float> %.fca.0.extract46, ptr %40, align 8
  %.sroa.249.0..sroa_idx = getelementptr inbounds i8, ptr %40, i64 8
  store float %.fca.1.extract47, ptr %.sroa.249.0..sroa_idx, align 8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %42) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %41) #8
  %221 = load i8, ptr %6, align 1, !tbaa !5, !range !9, !noundef !10
  %222 = trunc nuw i8 %221 to i1
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %43) #8
  br i1 %222, label %223, label %.critedge2

223:                                              ; preds = %220
  %224 = call { <2 x float>, float } @_ZmiIfE10aiVector3tIT_ERKS2_S4_(ptr noundef nonnull align 4 dereferenceable(12) %40, ptr noundef nonnull align 4 dereferenceable(12) %9)
  %.fca.0.extract42 = extractvalue { <2 x float>, float } %224, 0
  %.fca.1.extract43 = extractvalue { <2 x float>, float } %224, 1
  store <2 x float> %.fca.0.extract42, ptr %43, align 8
  %.sroa.245.0..sroa_idx = getelementptr inbounds i8, ptr %43, i64 8
  store float %.fca.1.extract43, ptr %.sroa.245.0..sroa_idx, align 8
  %225 = call noundef float @_ZNK10aiVector3tIfE12SquareLengthEv(ptr noundef nonnull align 4 dereferenceable(12) %43)
  %226 = fcmp ogt float %225, %63
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %43) #8
  br i1 %226, label %227, label %262

227:                                              ; preds = %223
  %228 = or i32 %.8, 65536
  %229 = call noundef nonnull align 4 dereferenceable(64) ptr @_ZN12aiMatrix4x4tIfE7ScalingERK10aiVector3tIfERS0_(ptr noundef nonnull align 4 dereferenceable(12) %40, ptr noundef nonnull align 4 dereferenceable(64) %.ptr.16)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %44) #8
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %44, ptr noundef nonnull align 8 dereferenceable(12) %40, i64 12, i1 false), !tbaa.struct !11
  %230 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN10aiVector3tIfEixEj(ptr noundef nonnull align 4 dereferenceable(12) %44, i32 noundef 0)
  %231 = load float, ptr %230, align 4, !tbaa !12
  %232 = call noundef float @_ZSt4fabsf(float noundef %231)
  %233 = fcmp ogt float %232, %63
  br i1 %233, label %239, label %260

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

236:                                              ; preds = %218
  %237 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #8
  br label %238

238:                                              ; preds = %236, %234
  %.pn244 = phi { ptr, i32 } [ %237, %236 ], [ %235, %234 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %42) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %41) #8
  br label %457

239:                                              ; preds = %227
  %240 = call noundef float @_ZNK10aiVector3tIfEixEj(ptr noundef nonnull align 4 dereferenceable(12) %40, i32 noundef 0)
  %241 = fdiv float 1.000000e+00, %240
  %242 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN10aiVector3tIfEixEj(ptr noundef nonnull align 4 dereferenceable(12) %44, i32 noundef 0)
  store float %241, ptr %242, align 4, !tbaa !12
  %243 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN10aiVector3tIfEixEj(ptr noundef nonnull align 4 dereferenceable(12) %44, i32 noundef 1)
  %244 = load float, ptr %243, align 4, !tbaa !12
  %245 = call noundef float @_ZSt4fabsf(float noundef %244)
  %246 = fcmp ogt float %245, %63
  br i1 %246, label %247, label %260

247:                                              ; preds = %239
  %248 = call noundef float @_ZNK10aiVector3tIfEixEj(ptr noundef nonnull align 4 dereferenceable(12) %40, i32 noundef 1)
  %249 = fdiv float 1.000000e+00, %248
  %250 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN10aiVector3tIfEixEj(ptr noundef nonnull align 4 dereferenceable(12) %44, i32 noundef 1)
  store float %249, ptr %250, align 4, !tbaa !12
  %251 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN10aiVector3tIfEixEj(ptr noundef nonnull align 4 dereferenceable(12) %44, i32 noundef 2)
  %252 = load float, ptr %251, align 4, !tbaa !12
  %253 = call noundef float @_ZSt4fabsf(float noundef %252)
  %254 = fcmp ogt float %253, %63
  br i1 %254, label %.critedge269, label %260

.critedge269:                                     ; preds = %247
  %255 = call noundef float @_ZNK10aiVector3tIfEixEj(ptr noundef nonnull align 4 dereferenceable(12) %40, i32 noundef 2)
  %256 = fdiv float 1.000000e+00, %255
  %257 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN10aiVector3tIfEixEj(ptr noundef nonnull align 4 dereferenceable(12) %44, i32 noundef 2)
  store float %256, ptr %257, align 4, !tbaa !12
  %258 = or i32 %.8, 65537
  %259 = call noundef nonnull align 4 dereferenceable(64) ptr @_ZN12aiMatrix4x4tIfE7ScalingERK10aiVector3tIfERS0_(ptr noundef nonnull align 4 dereferenceable(12) %44, ptr noundef nonnull align 4 dereferenceable(64) %7)
  br label %261

260:                                              ; preds = %247, %239, %227
  call void @_ZN6Assimp12LogFunctionsINS_11FBXImporterEE8LogErrorIJRA66_KcEEEvDpOT_(ptr noundef nonnull align 1 dereferenceable(66) @.str.44)
  br label %261

261:                                              ; preds = %260, %.critedge269
  %.9 = phi i32 [ %258, %.critedge269 ], [ %228, %260 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %44) #8
  br label %262

.critedge2:                                       ; preds = %220
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %43) #8
  br label %262

262:                                              ; preds = %.critedge2, %261, %223
  %.10 = phi i32 [ %.9, %261 ], [ %.8, %223 ], [ %.8, %.critedge2 ]
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %45) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %46) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %47) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %46, ptr noundef nonnull @.str.27, ptr noundef nonnull align 1 dereferenceable(1) %47)
          to label %263 unwind label %274

263:                                              ; preds = %262
  %264 = invoke { <2 x float>, float } @_ZN6Assimp3FBX11PropertyGetI10aiVector3tIfEEET_RKNS0_13PropertyTableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERbb(ptr noundef nonnull align 8 dereferenceable(120) %60, ptr noundef nonnull align 8 dereferenceable(32) %46, ptr noundef nonnull align 1 dereferenceable(1) %6, i1 noundef zeroext false)
          to label %265 unwind label %276

265:                                              ; preds = %263
  %.fca.0.extract29 = extractvalue { <2 x float>, float } %264, 0
  %.fca.1.extract30 = extractvalue { <2 x float>, float } %264, 1
  store <2 x float> %.fca.0.extract29, ptr %45, align 8
  %.sroa.232.0..sroa_idx = getelementptr inbounds i8, ptr %45, i64 8
  store float %.fca.1.extract30, ptr %.sroa.232.0..sroa_idx, align 8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %47) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %46) #8
  %266 = load i8, ptr %6, align 1, !tbaa !5, !range !9, !noundef !10
  %267 = trunc nuw i8 %266 to i1
  br i1 %267, label %268, label %279

268:                                              ; preds = %265
  %269 = call noundef float @_ZNK10aiVector3tIfE12SquareLengthEv(ptr noundef nonnull align 4 dereferenceable(12) %45)
  %270 = fcmp ogt float %269, %63
  br i1 %270, label %271, label %279

271:                                              ; preds = %268
  %272 = or i32 %.10, 32770
  call void @_ZN6Assimp3FBX12FBXConverter17GetRotationMatrixENS0_5Model8RotOrderERK10aiVector3tIfER12aiMatrix4x4tIfE(ptr noundef nonnull align 8 dereferenceable(489) %0, i32 noundef %61, ptr noundef nonnull align 4 dereferenceable(12) %45, ptr noundef nonnull align 4 dereferenceable(64) %.ptr.15)
  call void @_ZN6Assimp3FBX12FBXConverter17GetRotationMatrixENS0_5Model8RotOrderERK10aiVector3tIfER12aiMatrix4x4tIfE(ptr noundef nonnull align 8 dereferenceable(489) %0, i32 noundef %61, ptr noundef nonnull align 4 dereferenceable(12) %45, ptr noundef nonnull align 4 dereferenceable(64) %.ptr.1)
  %273 = call noundef nonnull align 4 dereferenceable(64) ptr @_ZN12aiMatrix4x4tIfE7InverseEv(ptr noundef nonnull align 4 dereferenceable(64) %.ptr.1)
  br label %279

274:                                              ; preds = %262
  %275 = landingpad { ptr, i32 }
          cleanup
  br label %278

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

278:                                              ; preds = %276, %274
  %.pn246 = phi { ptr, i32 } [ %277, %276 ], [ %275, %274 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %47) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %46) #8
  br label %456

279:                                              ; preds = %271, %268, %265
  %.11 = phi i32 [ %272, %271 ], [ %.10, %268 ], [ %.10, %265 ]
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %48) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %49) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %50) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %49, ptr noundef nonnull @.str.28, ptr noundef nonnull align 1 dereferenceable(1) %50)
          to label %280 unwind label %293

280:                                              ; preds = %279
  %281 = invoke { <2 x float>, float } @_ZN6Assimp3FBX11PropertyGetI10aiVector3tIfEEET_RKNS0_13PropertyTableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERbb(ptr noundef nonnull align 8 dereferenceable(120) %60, ptr noundef nonnull align 8 dereferenceable(32) %49, ptr noundef nonnull align 1 dereferenceable(1) %6, i1 noundef zeroext false)
          to label %282 unwind label %295

282:                                              ; preds = %280
  %.fca.0.extract23 = extractvalue { <2 x float>, float } %281, 0
  %.fca.1.extract24 = extractvalue { <2 x float>, float } %281, 1
  store <2 x float> %.fca.0.extract23, ptr %48, align 8
  %.sroa.226.0..sroa_idx = getelementptr inbounds i8, ptr %48, i64 8
  store float %.fca.1.extract24, ptr %.sroa.226.0..sroa_idx, align 8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %50) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %49) #8
  %283 = load i8, ptr %6, align 1, !tbaa !5, !range !9, !noundef !10
  %284 = trunc nuw i8 %283 to i1
  br i1 %284, label %285, label %298

285:                                              ; preds = %282
  %286 = call noundef float @_ZNK10aiVector3tIfE12SquareLengthEv(ptr noundef nonnull align 4 dereferenceable(12) %48)
  %287 = fcmp ogt float %286, %63
  br i1 %287, label %288, label %298

288:                                              ; preds = %285
  %289 = or i32 %.11, 16388
  %290 = call noundef nonnull align 4 dereferenceable(64) ptr @_ZN12aiMatrix4x4tIfE11TranslationERK10aiVector3tIfERS0_(ptr noundef nonnull align 4 dereferenceable(12) %48, ptr noundef nonnull align 4 dereferenceable(64) %.ptr.14)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %51) #8
  %291 = call { <2 x float>, float } @_ZngIfE10aiVector3tIT_ERKS2_(ptr noundef nonnull align 4 dereferenceable(12) %48)
  %.fca.0.extract = extractvalue { <2 x float>, float } %291, 0
  %.fca.1.extract = extractvalue { <2 x float>, float } %291, 1
  store <2 x float> %.fca.0.extract, ptr %51, align 8
  %.sroa.2.0..sroa_idx = getelementptr inbounds i8, ptr %51, i64 8
  store float %.fca.1.extract, ptr %.sroa.2.0..sroa_idx, align 8
  %292 = call noundef nonnull align 4 dereferenceable(64) ptr @_ZN12aiMatrix4x4tIfE11TranslationERK10aiVector3tIfERS0_(ptr noundef nonnull align 4 dereferenceable(12) %51, ptr noundef nonnull align 4 dereferenceable(64) %.ptr.2)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %51) #8
  br label %298

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

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

297:                                              ; preds = %295, %293
  %.pn248 = phi { ptr, i32 } [ %296, %295 ], [ %294, %293 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %50) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %49) #8
  br label %455

298:                                              ; preds = %288, %285, %282
  %.12 = phi i32 [ %289, %288 ], [ %.11, %285 ], [ %.11, %282 ]
  %299 = and i32 %.12, 126839
  %.not = icmp eq i32 %299, 0
  br i1 %.not, label %375, label %300

300:                                              ; preds = %298
  %301 = getelementptr inbounds i8, ptr %0, i64 480
  %302 = load ptr, ptr %301, align 8, !tbaa !14
  %303 = call noundef nonnull align 1 dereferenceable(15) ptr @_ZNK6Assimp3FBX8Document8SettingsEv(ptr noundef nonnull align 8 dereferenceable(336) %302)
  %304 = getelementptr inbounds i8, ptr %303, i64 10
  %305 = load i8, ptr %304, align 1, !tbaa !76, !range !9, !noundef !10
  %306 = trunc nuw i8 %305 to i1
  br i1 %306, label %307, label %375

307:                                              ; preds = %300
  call void @_ZN6Assimp12LogFunctionsINS_11FBXImporterEE7LogInfoIJRA48_KcRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEvDpOT_(ptr noundef nonnull align 1 dereferenceable(48) @.str.45, ptr noundef nonnull align 8 dereferenceable(32) %2)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %52) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %53) #8
  %308 = getelementptr inbounds i8, ptr %0, i64 296
  %309 = call ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEE4findERS9_(ptr noundef nonnull align 8 dereferenceable(48) %308, ptr noundef nonnull align 8 dereferenceable(32) %2)
  store ptr %309, ptr %53, align 8
  call void @_ZNSt23_Rb_tree_const_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjEEC2ERKSt17_Rb_tree_iteratorIS8_E(ptr noundef nonnull align 8 dereferenceable(8) %52, ptr noundef nonnull align 8 dereferenceable(8) %53) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %53) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %54) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %55) #8
  %310 = call ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %308) #8
  store ptr %310, ptr %55, align 8
  call void @_ZNSt23_Rb_tree_const_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjEEC2ERKSt17_Rb_tree_iteratorIS8_E(ptr noundef nonnull align 8 dereferenceable(8) %54, ptr noundef nonnull align 8 dereferenceable(8) %55) #8
  %311 = call noundef zeroext i1 @_ZSteqRKSt23_Rb_tree_const_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjEESB_(ptr noundef nonnull align 8 dereferenceable(8) %52, ptr noundef nonnull align 8 dereferenceable(8) %54) #8
  br i1 %311, label %.peel.begin, label %312

312:                                              ; preds = %307
  %313 = call noundef nonnull align 8 dereferenceable(36) ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %52) #8
  %314 = getelementptr inbounds i8, ptr %313, i64 32
  %315 = load i32, ptr %314, align 8, !tbaa !78
  br label %.peel.begin

.peel.begin:                                      ; preds = %307, %312
  %316 = phi i32 [ %315, %312 ], [ 0, %307 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %55) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %54) #8
  %317 = and i32 %.12, 1
  %318 = icmp eq i32 %317, 0
  %319 = and i32 %316, 1
  %320 = icmp eq i32 %319, 0
  %or.cond.peel = select i1 %318, i1 %320, i1 false
  br i1 %or.cond.peel, label %.peel.next, label %321

321:                                              ; preds = %.peel.begin
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %56) #8
  call void @_ZN6Assimp3FBX12FBXConverter13PotentialNodeC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %56)
  %322 = call noundef ptr @_ZN6Assimp3FBX12FBXConverter13PotentialNodeptEv(ptr noundef nonnull align 8 dereferenceable(16) %56)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %57) #8
  invoke void @_ZN6Assimp3FBX12FBXConverter27NameTransformationChainNodeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_18TransformationCompE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %57, ptr noundef nonnull align 8 dereferenceable(489) %0, ptr noundef nonnull align 8 dereferenceable(32) %2, i32 noundef 0)
          to label %323 unwind label %.loopexit.split-lp

323:                                              ; preds = %321
  call void @_ZN8aiString3SetERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 4 dereferenceable(1028) %322, ptr noundef nonnull align 8 dereferenceable(32) %57)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %57) #8
  %324 = call noundef ptr @_ZN6Assimp3FBX12FBXConverter13PotentialNodeptEv(ptr noundef nonnull align 8 dereferenceable(16) %56)
  %325 = getelementptr inbounds i8, ptr %324, i64 1028
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %325, ptr noundef nonnull align 16 dereferenceable(64) %7, i64 64, i1 false), !tbaa.struct !82
  %326 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN6Assimp3FBX12FBXConverter13PotentialNodeESaIS3_EE12emplace_backIJS3_EEERS3_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 8 dereferenceable(16) %56)
          to label %327 unwind label %.loopexit.split-lp285

327:                                              ; preds = %323
  call void @_ZN6Assimp3FBX12FBXConverter13PotentialNodeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %56) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %56) #8
  br label %.peel.next

.peel.next:                                       ; preds = %.peel.begin, %327
  %328 = and i32 %.12, 2
  %329 = icmp eq i32 %328, 0
  %330 = and i32 %316, 2
  %331 = icmp eq i32 %330, 0
  %or.cond.peel276 = select i1 %329, i1 %331, i1 false
  br i1 %or.cond.peel276, label %.peel.next275, label %332

332:                                              ; preds = %.peel.next
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %56) #8
  call void @_ZN6Assimp3FBX12FBXConverter13PotentialNodeC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %56)
  %333 = call noundef ptr @_ZN6Assimp3FBX12FBXConverter13PotentialNodeptEv(ptr noundef nonnull align 8 dereferenceable(16) %56)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %57) #8
  invoke void @_ZN6Assimp3FBX12FBXConverter27NameTransformationChainNodeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_18TransformationCompE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %57, ptr noundef nonnull align 8 dereferenceable(489) %0, ptr noundef nonnull align 8 dereferenceable(32) %2, i32 noundef 1)
          to label %334 unwind label %.loopexit.split-lp

334:                                              ; preds = %332
  call void @_ZN8aiString3SetERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 4 dereferenceable(1028) %333, ptr noundef nonnull align 8 dereferenceable(32) %57)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %57) #8
  %335 = call noundef ptr @_ZN6Assimp3FBX12FBXConverter13PotentialNodeptEv(ptr noundef nonnull align 8 dereferenceable(16) %56)
  %336 = getelementptr inbounds i8, ptr %335, i64 1028
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %336, ptr noundef nonnull align 16 dereferenceable(64) %.ptr.1, i64 64, i1 false), !tbaa.struct !82
  %337 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN6Assimp3FBX12FBXConverter13PotentialNodeESaIS3_EE12emplace_backIJS3_EEERS3_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 8 dereferenceable(16) %56)
          to label %338 unwind label %.loopexit.split-lp285

338:                                              ; preds = %334
  call void @_ZN6Assimp3FBX12FBXConverter13PotentialNodeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %56) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %56) #8
  br label %.peel.next275

.peel.next275:                                    ; preds = %.peel.next, %338
  %339 = and i32 %.12, 4
  %340 = icmp eq i32 %339, 0
  %341 = and i32 %316, 4
  %342 = icmp eq i32 %341, 0
  %or.cond.peel280 = select i1 %340, i1 %342, i1 false
  br i1 %or.cond.peel280, label %.peel.next279.preheader, label %343

343:                                              ; preds = %.peel.next275
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %56) #8
  call void @_ZN6Assimp3FBX12FBXConverter13PotentialNodeC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %56)
  %344 = call noundef ptr @_ZN6Assimp3FBX12FBXConverter13PotentialNodeptEv(ptr noundef nonnull align 8 dereferenceable(16) %56)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %57) #8
  invoke void @_ZN6Assimp3FBX12FBXConverter27NameTransformationChainNodeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_18TransformationCompE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %57, ptr noundef nonnull align 8 dereferenceable(489) %0, ptr noundef nonnull align 8 dereferenceable(32) %2, i32 noundef 2)
          to label %345 unwind label %.loopexit.split-lp

345:                                              ; preds = %343
  call void @_ZN8aiString3SetERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 4 dereferenceable(1028) %344, ptr noundef nonnull align 8 dereferenceable(32) %57)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %57) #8
  %346 = call noundef ptr @_ZN6Assimp3FBX12FBXConverter13PotentialNodeptEv(ptr noundef nonnull align 8 dereferenceable(16) %56)
  %347 = getelementptr inbounds i8, ptr %346, i64 1028
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %347, ptr noundef nonnull align 16 dereferenceable(64) %.ptr.2, i64 64, i1 false), !tbaa.struct !82
  %348 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN6Assimp3FBX12FBXConverter13PotentialNodeESaIS3_EE12emplace_backIJS3_EEERS3_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 8 dereferenceable(16) %56)
          to label %349 unwind label %.loopexit.split-lp285

349:                                              ; preds = %345
  call void @_ZN6Assimp3FBX12FBXConverter13PotentialNodeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %56) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %56) #8
  br label %.peel.next279.preheader

.peel.next279.preheader:                          ; preds = %.peel.next275, %349
  br label %.peel.next279

.loopexit289:                                     ; preds = %369
  %350 = call noundef i64 @_ZNKSt6vectorIN6Assimp3FBX12FBXConverter13PotentialNodeESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #8
  %.not252 = icmp eq i64 %350, 0
  br i1 %.not252, label %373, label %374

.peel.next279:                                    ; preds = %.peel.next279.preheader, %369
  %.0180273 = phi i64 [ %370, %369 ], [ 3, %.peel.next279.preheader ]
  %.0181272 = phi i32 [ %371, %369 ], [ 8, %.peel.next279.preheader ]
  %351 = trunc nuw nsw i64 %.0180273 to i32
  %352 = and i32 %.0181272, %.12
  %353 = icmp eq i32 %352, 0
  %354 = and i32 %.0181272, %316
  %355 = icmp eq i32 %354, 0
  %or.cond = select i1 %353, i1 %355, i1 false
  br i1 %or.cond, label %369, label %356

356:                                              ; preds = %.peel.next279
  %357 = icmp eq i64 %.0180273, 8
  br i1 %357, label %358, label %360

358:                                              ; preds = %356
  %359 = call noundef nonnull align 4 dereferenceable(64) ptr @_ZN12aiMatrix4x4tIfE7InverseEv(ptr noundef nonnull align 4 dereferenceable(64) %.ptr.8)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(64) %.ptr.8, ptr noundef nonnull align 4 dereferenceable(64) %359, i64 64, i1 false), !tbaa.struct !82
  br label %360

360:                                              ; preds = %358, %356
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %56) #8
  call void @_ZN6Assimp3FBX12FBXConverter13PotentialNodeC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %56)
  %361 = call noundef ptr @_ZN6Assimp3FBX12FBXConverter13PotentialNodeptEv(ptr noundef nonnull align 8 dereferenceable(16) %56)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %57) #8
  invoke void @_ZN6Assimp3FBX12FBXConverter27NameTransformationChainNodeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_18TransformationCompE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %57, ptr noundef nonnull align 8 dereferenceable(489) %0, ptr noundef nonnull align 8 dereferenceable(32) %2, i32 noundef %351)
          to label %363 unwind label %.loopexit

.loopexit284:                                     ; preds = %363
  %lpad.loopexit286 = landingpad { ptr, i32 }
          cleanup
  br label %372

.loopexit.split-lp285:                            ; preds = %323, %334, %345
  %lpad.loopexit.split-lp287 = landingpad { ptr, i32 }
          cleanup
  br label %372

.loopexit:                                        ; preds = %360
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %362

.loopexit.split-lp:                               ; preds = %321, %332, %343
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %362

362:                                              ; preds = %.loopexit.split-lp, %.loopexit
  %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %57) #8
  br label %372

363:                                              ; preds = %360
  call void @_ZN8aiString3SetERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 4 dereferenceable(1028) %361, ptr noundef nonnull align 8 dereferenceable(32) %57)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %57) #8
  %364 = getelementptr inbounds [17 x %class.aiMatrix4x4t], ptr %7, i64 0, i64 %.0180273
  %365 = call noundef ptr @_ZN6Assimp3FBX12FBXConverter13PotentialNodeptEv(ptr noundef nonnull align 8 dereferenceable(16) %56)
  %366 = getelementptr inbounds i8, ptr %365, i64 1028
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %366, ptr noundef nonnull align 16 dereferenceable(64) %364, i64 64, i1 false), !tbaa.struct !82
  %367 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN6Assimp3FBX12FBXConverter13PotentialNodeESaIS3_EE12emplace_backIJS3_EEERS3_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(16) %56)
          to label %368 unwind label %.loopexit284

368:                                              ; preds = %363
  call void @_ZN6Assimp3FBX12FBXConverter13PotentialNodeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %56) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %56) #8
  br label %369

369:                                              ; preds = %.peel.next279, %368
  %370 = add nuw nsw i64 %.0180273, 1
  %371 = shl i32 %.0181272, 1
  %exitcond.not = icmp eq i64 %370, 17
  br i1 %exitcond.not, label %.loopexit289, label %.peel.next279, !llvm.loop !83

372:                                              ; preds = %.loopexit284, %.loopexit.split-lp285, %362
  %.pn253 = phi { ptr, i32 } [ %lpad.phi, %362 ], [ %lpad.loopexit286, %.loopexit284 ], [ %lpad.loopexit.split-lp287, %.loopexit.split-lp285 ]
  call void @_ZN6Assimp3FBX12FBXConverter13PotentialNodeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %56) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %56) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #8
  br label %454

373:                                              ; preds = %.loopexit289
  call void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.5, i32 noundef 902)
  br label %374

374:                                              ; preds = %373, %.loopexit289
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #8
  br label %453

375:                                              ; preds = %300, %298
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %58) #8
  call void @_ZN6Assimp3FBX12FBXConverter13PotentialNodeC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %58)
  %376 = call noundef ptr @_ZN6Assimp3FBX12FBXConverter13PotentialNodeptEv(ptr noundef nonnull align 8 dereferenceable(16) %58)
  call void @_ZN8aiString3SetERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 4 dereferenceable(1028) %376, ptr noundef nonnull align 8 dereferenceable(32) %2)
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %59) #8
  %377 = call noundef ptr @_ZN6Assimp3FBX12FBXConverter13PotentialNodeptEv(ptr noundef nonnull align 8 dereferenceable(16) %58)
  %378 = getelementptr inbounds i8, ptr %377, i64 1028
  invoke void @_ZNK12aiMatrix4x4tIfEmlERKS0_(ptr dead_on_unwind nonnull writable sret(%class.aiMatrix4x4t) align 4 %59, ptr noundef nonnull align 4 dereferenceable(64) %378, ptr noundef nonnull align 4 dereferenceable(64) %.ptr.3)
          to label %381 unwind label %449

379:                                              ; preds = %446
  %380 = landingpad { ptr, i32 }
          cleanup
  br label %452

381:                                              ; preds = %375
  %382 = call noundef ptr @_ZN6Assimp3FBX12FBXConverter13PotentialNodeptEv(ptr noundef nonnull align 8 dereferenceable(16) %58)
  %383 = getelementptr inbounds i8, ptr %382, i64 1028
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %383, ptr noundef nonnull align 4 dereferenceable(64) %59, i64 64, i1 false), !tbaa.struct !82
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %59) #8
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %59) #8
  %384 = call noundef ptr @_ZN6Assimp3FBX12FBXConverter13PotentialNodeptEv(ptr noundef nonnull align 8 dereferenceable(16) %58)
  %385 = getelementptr inbounds i8, ptr %384, i64 1028
  invoke void @_ZNK12aiMatrix4x4tIfEmlERKS0_(ptr dead_on_unwind nonnull writable sret(%class.aiMatrix4x4t) align 4 %59, ptr noundef nonnull align 4 dereferenceable(64) %385, ptr noundef nonnull align 4 dereferenceable(64) %.ptr.4)
          to label %386 unwind label %449

386:                                              ; preds = %381
  %387 = call noundef ptr @_ZN6Assimp3FBX12FBXConverter13PotentialNodeptEv(ptr noundef nonnull align 8 dereferenceable(16) %58)
  %388 = getelementptr inbounds i8, ptr %387, i64 1028
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %388, ptr noundef nonnull align 4 dereferenceable(64) %59, i64 64, i1 false), !tbaa.struct !82
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %59) #8
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %59) #8
  %389 = call noundef ptr @_ZN6Assimp3FBX12FBXConverter13PotentialNodeptEv(ptr noundef nonnull align 8 dereferenceable(16) %58)
  %390 = getelementptr inbounds i8, ptr %389, i64 1028
  invoke void @_ZNK12aiMatrix4x4tIfEmlERKS0_(ptr dead_on_unwind nonnull writable sret(%class.aiMatrix4x4t) align 4 %59, ptr noundef nonnull align 4 dereferenceable(64) %390, ptr noundef nonnull align 4 dereferenceable(64) %.ptr.5)
          to label %391 unwind label %449

391:                                              ; preds = %386
  %392 = call noundef ptr @_ZN6Assimp3FBX12FBXConverter13PotentialNodeptEv(ptr noundef nonnull align 8 dereferenceable(16) %58)
  %393 = getelementptr inbounds i8, ptr %392, i64 1028
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %393, ptr noundef nonnull align 4 dereferenceable(64) %59, i64 64, i1 false), !tbaa.struct !82
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %59) #8
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %59) #8
  %394 = call noundef ptr @_ZN6Assimp3FBX12FBXConverter13PotentialNodeptEv(ptr noundef nonnull align 8 dereferenceable(16) %58)
  %395 = getelementptr inbounds i8, ptr %394, i64 1028
  invoke void @_ZNK12aiMatrix4x4tIfEmlERKS0_(ptr dead_on_unwind nonnull writable sret(%class.aiMatrix4x4t) align 4 %59, ptr noundef nonnull align 4 dereferenceable(64) %395, ptr noundef nonnull align 4 dereferenceable(64) %.ptr.6)
          to label %396 unwind label %449

396:                                              ; preds = %391
  %397 = call noundef ptr @_ZN6Assimp3FBX12FBXConverter13PotentialNodeptEv(ptr noundef nonnull align 8 dereferenceable(16) %58)
  %398 = getelementptr inbounds i8, ptr %397, i64 1028
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %398, ptr noundef nonnull align 4 dereferenceable(64) %59, i64 64, i1 false), !tbaa.struct !82
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %59) #8
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %59) #8
  %399 = call noundef ptr @_ZN6Assimp3FBX12FBXConverter13PotentialNodeptEv(ptr noundef nonnull align 8 dereferenceable(16) %58)
  %400 = getelementptr inbounds i8, ptr %399, i64 1028
  invoke void @_ZNK12aiMatrix4x4tIfEmlERKS0_(ptr dead_on_unwind nonnull writable sret(%class.aiMatrix4x4t) align 4 %59, ptr noundef nonnull align 4 dereferenceable(64) %400, ptr noundef nonnull align 4 dereferenceable(64) %.ptr.7)
          to label %401 unwind label %449

401:                                              ; preds = %396
  %402 = call noundef ptr @_ZN6Assimp3FBX12FBXConverter13PotentialNodeptEv(ptr noundef nonnull align 8 dereferenceable(16) %58)
  %403 = getelementptr inbounds i8, ptr %402, i64 1028
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %403, ptr noundef nonnull align 4 dereferenceable(64) %59, i64 64, i1 false), !tbaa.struct !82
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %59) #8
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %59) #8
  %404 = call noundef ptr @_ZN6Assimp3FBX12FBXConverter13PotentialNodeptEv(ptr noundef nonnull align 8 dereferenceable(16) %58)
  %405 = getelementptr inbounds i8, ptr %404, i64 1028
  invoke void @_ZNK12aiMatrix4x4tIfEmlERKS0_(ptr dead_on_unwind nonnull writable sret(%class.aiMatrix4x4t) align 4 %59, ptr noundef nonnull align 4 dereferenceable(64) %405, ptr noundef nonnull align 4 dereferenceable(64) %.ptr.8)
          to label %406 unwind label %449

406:                                              ; preds = %401
  %407 = call noundef ptr @_ZN6Assimp3FBX12FBXConverter13PotentialNodeptEv(ptr noundef nonnull align 8 dereferenceable(16) %58)
  %408 = getelementptr inbounds i8, ptr %407, i64 1028
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %408, ptr noundef nonnull align 4 dereferenceable(64) %59, i64 64, i1 false), !tbaa.struct !82
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %59) #8
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %59) #8
  %409 = call noundef ptr @_ZN6Assimp3FBX12FBXConverter13PotentialNodeptEv(ptr noundef nonnull align 8 dereferenceable(16) %58)
  %410 = getelementptr inbounds i8, ptr %409, i64 1028
  invoke void @_ZNK12aiMatrix4x4tIfEmlERKS0_(ptr dead_on_unwind nonnull writable sret(%class.aiMatrix4x4t) align 4 %59, ptr noundef nonnull align 4 dereferenceable(64) %410, ptr noundef nonnull align 4 dereferenceable(64) %.ptr.9)
          to label %411 unwind label %449

411:                                              ; preds = %406
  %412 = call noundef ptr @_ZN6Assimp3FBX12FBXConverter13PotentialNodeptEv(ptr noundef nonnull align 8 dereferenceable(16) %58)
  %413 = getelementptr inbounds i8, ptr %412, i64 1028
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %413, ptr noundef nonnull align 4 dereferenceable(64) %59, i64 64, i1 false), !tbaa.struct !82
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %59) #8
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %59) #8
  %414 = call noundef ptr @_ZN6Assimp3FBX12FBXConverter13PotentialNodeptEv(ptr noundef nonnull align 8 dereferenceable(16) %58)
  %415 = getelementptr inbounds i8, ptr %414, i64 1028
  invoke void @_ZNK12aiMatrix4x4tIfEmlERKS0_(ptr dead_on_unwind nonnull writable sret(%class.aiMatrix4x4t) align 4 %59, ptr noundef nonnull align 4 dereferenceable(64) %415, ptr noundef nonnull align 4 dereferenceable(64) %.ptr.10)
          to label %416 unwind label %449

416:                                              ; preds = %411
  %417 = call noundef ptr @_ZN6Assimp3FBX12FBXConverter13PotentialNodeptEv(ptr noundef nonnull align 8 dereferenceable(16) %58)
  %418 = getelementptr inbounds i8, ptr %417, i64 1028
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %418, ptr noundef nonnull align 4 dereferenceable(64) %59, i64 64, i1 false), !tbaa.struct !82
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %59) #8
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %59) #8
  %419 = call noundef ptr @_ZN6Assimp3FBX12FBXConverter13PotentialNodeptEv(ptr noundef nonnull align 8 dereferenceable(16) %58)
  %420 = getelementptr inbounds i8, ptr %419, i64 1028
  invoke void @_ZNK12aiMatrix4x4tIfEmlERKS0_(ptr dead_on_unwind nonnull writable sret(%class.aiMatrix4x4t) align 4 %59, ptr noundef nonnull align 4 dereferenceable(64) %420, ptr noundef nonnull align 4 dereferenceable(64) %.ptr.11)
          to label %421 unwind label %449

421:                                              ; preds = %416
  %422 = call noundef ptr @_ZN6Assimp3FBX12FBXConverter13PotentialNodeptEv(ptr noundef nonnull align 8 dereferenceable(16) %58)
  %423 = getelementptr inbounds i8, ptr %422, i64 1028
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %423, ptr noundef nonnull align 4 dereferenceable(64) %59, i64 64, i1 false), !tbaa.struct !82
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %59) #8
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %59) #8
  %424 = call noundef ptr @_ZN6Assimp3FBX12FBXConverter13PotentialNodeptEv(ptr noundef nonnull align 8 dereferenceable(16) %58)
  %425 = getelementptr inbounds i8, ptr %424, i64 1028
  invoke void @_ZNK12aiMatrix4x4tIfEmlERKS0_(ptr dead_on_unwind nonnull writable sret(%class.aiMatrix4x4t) align 4 %59, ptr noundef nonnull align 4 dereferenceable(64) %425, ptr noundef nonnull align 4 dereferenceable(64) %.ptr.12)
          to label %426 unwind label %449

426:                                              ; preds = %421
  %427 = call noundef ptr @_ZN6Assimp3FBX12FBXConverter13PotentialNodeptEv(ptr noundef nonnull align 8 dereferenceable(16) %58)
  %428 = getelementptr inbounds i8, ptr %427, i64 1028
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %428, ptr noundef nonnull align 4 dereferenceable(64) %59, i64 64, i1 false), !tbaa.struct !82
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %59) #8
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %59) #8
  %429 = call noundef ptr @_ZN6Assimp3FBX12FBXConverter13PotentialNodeptEv(ptr noundef nonnull align 8 dereferenceable(16) %58)
  %430 = getelementptr inbounds i8, ptr %429, i64 1028
  invoke void @_ZNK12aiMatrix4x4tIfEmlERKS0_(ptr dead_on_unwind nonnull writable sret(%class.aiMatrix4x4t) align 4 %59, ptr noundef nonnull align 4 dereferenceable(64) %430, ptr noundef nonnull align 4 dereferenceable(64) %.ptr.13)
          to label %431 unwind label %449

431:                                              ; preds = %426
  %432 = call noundef ptr @_ZN6Assimp3FBX12FBXConverter13PotentialNodeptEv(ptr noundef nonnull align 8 dereferenceable(16) %58)
  %433 = getelementptr inbounds i8, ptr %432, i64 1028
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %433, ptr noundef nonnull align 4 dereferenceable(64) %59, i64 64, i1 false), !tbaa.struct !82
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %59) #8
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %59) #8
  %434 = call noundef ptr @_ZN6Assimp3FBX12FBXConverter13PotentialNodeptEv(ptr noundef nonnull align 8 dereferenceable(16) %58)
  %435 = getelementptr inbounds i8, ptr %434, i64 1028
  invoke void @_ZNK12aiMatrix4x4tIfEmlERKS0_(ptr dead_on_unwind nonnull writable sret(%class.aiMatrix4x4t) align 4 %59, ptr noundef nonnull align 4 dereferenceable(64) %435, ptr noundef nonnull align 4 dereferenceable(64) %.ptr.14)
          to label %436 unwind label %449

436:                                              ; preds = %431
  %437 = call noundef ptr @_ZN6Assimp3FBX12FBXConverter13PotentialNodeptEv(ptr noundef nonnull align 8 dereferenceable(16) %58)
  %438 = getelementptr inbounds i8, ptr %437, i64 1028
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %438, ptr noundef nonnull align 4 dereferenceable(64) %59, i64 64, i1 false), !tbaa.struct !82
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %59) #8
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %59) #8
  %439 = call noundef ptr @_ZN6Assimp3FBX12FBXConverter13PotentialNodeptEv(ptr noundef nonnull align 8 dereferenceable(16) %58)
  %440 = getelementptr inbounds i8, ptr %439, i64 1028
  invoke void @_ZNK12aiMatrix4x4tIfEmlERKS0_(ptr dead_on_unwind nonnull writable sret(%class.aiMatrix4x4t) align 4 %59, ptr noundef nonnull align 4 dereferenceable(64) %440, ptr noundef nonnull align 4 dereferenceable(64) %.ptr.15)
          to label %441 unwind label %449

441:                                              ; preds = %436
  %442 = call noundef ptr @_ZN6Assimp3FBX12FBXConverter13PotentialNodeptEv(ptr noundef nonnull align 8 dereferenceable(16) %58)
  %443 = getelementptr inbounds i8, ptr %442, i64 1028
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %443, ptr noundef nonnull align 4 dereferenceable(64) %59, i64 64, i1 false), !tbaa.struct !82
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %59) #8
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %59) #8
  %444 = call noundef ptr @_ZN6Assimp3FBX12FBXConverter13PotentialNodeptEv(ptr noundef nonnull align 8 dereferenceable(16) %58)
  %445 = getelementptr inbounds i8, ptr %444, i64 1028
  invoke void @_ZNK12aiMatrix4x4tIfEmlERKS0_(ptr dead_on_unwind nonnull writable sret(%class.aiMatrix4x4t) align 4 %59, ptr noundef nonnull align 4 dereferenceable(64) %445, ptr noundef nonnull align 4 dereferenceable(64) %.ptr.16)
          to label %446 unwind label %449

446:                                              ; preds = %441
  %447 = call noundef ptr @_ZN6Assimp3FBX12FBXConverter13PotentialNodeptEv(ptr noundef nonnull align 8 dereferenceable(16) %58)
  %448 = getelementptr inbounds i8, ptr %447, i64 1028
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %448, ptr noundef nonnull align 4 dereferenceable(64) %59, i64 64, i1 false), !tbaa.struct !82
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %59) #8
  invoke void @_ZNSt6vectorIN6Assimp3FBX12FBXConverter13PotentialNodeESaIS3_EE9push_backEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(16) %58)
          to label %451 unwind label %379

449:                                              ; preds = %441, %436, %431, %426, %421, %416, %411, %406, %401, %396, %391, %386, %381, %375
  %450 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %59) #8
  br label %452

451:                                              ; preds = %446
  call void @_ZN6Assimp3FBX12FBXConverter13PotentialNodeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %58) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %58) #8
  br label %453

452:                                              ; preds = %449, %379
  %.pn250 = phi { ptr, i32 } [ %450, %449 ], [ %380, %379 ]
  call void @_ZN6Assimp3FBX12FBXConverter13PotentialNodeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %58) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %58) #8
  br label %454

453:                                              ; preds = %451, %374
  %.0179 = phi i1 [ true, %374 ], [ false, %451 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %48) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %45) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %40) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %37) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %33) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %30) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %26) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %23) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %20) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %16) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %13) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %10) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %9) #8
  call void @llvm.lifetime.end.p0(i64 1088, ptr nonnull %7) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #8
  ret i1 %.0179

454:                                              ; preds = %452, %372
  %.pn253.pn = phi { ptr, i32 } [ %.pn253, %372 ], [ %.pn250, %452 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %48) #8
  br label %455

455:                                              ; preds = %454, %297
  %.pn253.pn.pn = phi { ptr, i32 } [ %.pn253.pn, %454 ], [ %.pn248, %297 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %45) #8
  br label %456

456:                                              ; preds = %455, %278
  %.pn253.pn.pn.pn = phi { ptr, i32 } [ %.pn253.pn.pn, %455 ], [ %.pn246, %278 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %40) #8
  br label %457

457:                                              ; preds = %456, %238
  %.pn253.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn253.pn.pn.pn, %456 ], [ %.pn244, %238 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %37) #8
  br label %458

458:                                              ; preds = %457, %216
  %.pn253.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn253.pn.pn.pn.pn, %457 ], [ %.pn242, %216 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %33) #8
  br label %459

459:                                              ; preds = %458, %200
  %.pn253.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn253.pn.pn.pn.pn.pn, %458 ], [ %.pn240, %200 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %30) #8
  br label %460

460:                                              ; preds = %459, %182
  %.pn253.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn253.pn.pn.pn.pn.pn.pn, %459 ], [ %.pn238, %182 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %26) #8
  br label %461

461:                                              ; preds = %460, %165
  %.pn253.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn253.pn.pn.pn.pn.pn.pn.pn, %460 ], [ %.pn236, %165 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %23) #8
  br label %462

462:                                              ; preds = %461, %146
  %.pn253.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn253.pn.pn.pn.pn.pn.pn.pn.pn, %461 ], [ %.pn234, %146 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %20) #8
  br label %463

463:                                              ; preds = %462, %129
  %.pn253.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn253.pn.pn.pn.pn.pn.pn.pn.pn.pn, %462 ], [ %.pn232, %129 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %16) #8
  br label %464

464:                                              ; preds = %463, %112
  %.pn253.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn253.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %463 ], [ %.pn230, %112 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %13) #8
  br label %465

465:                                              ; preds = %464, %93
  %.pn253.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn253.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %464 ], [ %.pn228, %93 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %10) #8
  br label %466

466:                                              ; preds = %465, %77
  %.pn253.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn253.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %465 ], [ %.pn, %77 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %9) #8
  call void @llvm.lifetime.end.p0(i64 1088, ptr nonnull %7) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #8
  resume { ptr, i32 } %.pn253.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIN6Assimp3FBX12FBXConverter13PotentialNodeESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #0 align 2

declare void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN6Assimp3FBX12FBXConverter13PotentialNodeptEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #0 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp3FBX12FBXConverter17GetRotationMatrixENS0_5Model8RotOrderERK10aiVector3tIfER12aiMatrix4x4tIfE(ptr noundef nonnull align 8 dereferenceable(489), i32 noundef, ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(64)) local_unnamed_addr #4 align 2

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNK12aiMatrix4x4tIfEmlERKS0_(ptr dead_on_unwind noalias writable sret(%class.aiMatrix4x4t) align 4, ptr noundef nonnull align 4 dereferenceable(64), ptr noundef nonnull align 4 dereferenceable(64)) local_unnamed_addr #7 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { <2 x float>, float } @_ZN6Assimp3FBX11PropertyGetI10aiVector3tIfEEET_RKNS0_13PropertyTableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERbb(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(1), i1 noundef zeroext) local_unnamed_addr #7

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZNK10aiVector3tIfE12SquareLengthEv(ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #6 align 2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZSt6fill_nIP12aiMatrix4x4tIfEjS1_ET_S3_T0_RKT1_(ptr noundef, i32 noundef, ptr noundef nonnull align 4 dereferenceable(64)) local_unnamed_addr #7

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(64) ptr @_ZN12aiMatrix4x4tIfE11TranslationERK10aiVector3tIfERS0_(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(64)) local_unnamed_addr #6 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(64) ptr @_ZN12aiMatrix4x4tIfE7ScalingERK10aiVector3tIfERS0_(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(64)) local_unnamed_addr #6 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZN10aiVector3tIfEixEj(ptr noundef nonnull align 4 dereferenceable(12), i32 noundef) local_unnamed_addr #6 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZNK10aiVector3tIfEixEj(ptr noundef nonnull align 4 dereferenceable(12), i32 noundef) local_unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp12LogFunctionsINS_11FBXImporterEE8LogErrorIJRA66_KcEEEvDpOT_(ptr noundef nonnull align 1 dereferenceable(66)) local_unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(64) ptr @_ZN12aiMatrix4x4tIfE7InverseEv(ptr noundef nonnull align 4 dereferenceable(64)) local_unnamed_addr #7 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEE4findERS9_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSteqRKSt23_Rb_tree_const_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjEESB_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #0

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(36) ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #0 align 2

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

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

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

attributes #0 = { 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 #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
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 = { 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 #5 = { "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 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { 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 = !{!"bool", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{i8 0, i8 2}
!10 = !{}
!11 = !{i64 0, i64 4, !12, i64 4, i64 4, !12, i64 8, i64 4, !12}
!12 = !{!13, !13, i64 0}
!13 = !{!"float", !7, i64 0}
!14 = !{!15, !21, i64 480}
!15 = !{!"_ZTSN6Assimp3FBX12FBXConverterE", !16, i64 0, !17, i64 8, !22, i64 32, !26, i64 56, !30, i64 80, !34, i64 104, !38, i64 128, !42, i64 152, !51, i64 200, !56, i64 248, !61, i64 296, !61, i64 344, !66, i64 392, !71, i64 440, !72, i64 448, !21, i64 472, !21, i64 480, !6, i64 488}
!16 = !{!"int", !7, i64 0}
!17 = !{!"_ZTSSt6vectorIP6aiMeshSaIS1_EE", !18, i64 0}
!18 = !{!"_ZTSSt12_Vector_baseIP6aiMeshSaIS1_EE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIP6aiMeshSaIS1_EE12_Vector_implE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIP6aiMeshSaIS1_EE17_Vector_impl_dataE", !21, i64 0, !21, i64 8, !21, i64 16}
!21 = !{!"any pointer", !7, i64 0}
!22 = !{!"_ZTSSt6vectorIP10aiMaterialSaIS1_EE", !23, i64 0}
!23 = !{!"_ZTSSt12_Vector_baseIP10aiMaterialSaIS1_EE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseIP10aiMaterialSaIS1_EE12_Vector_implE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIP10aiMaterialSaIS1_EE17_Vector_impl_dataE", !21, i64 0, !21, i64 8, !21, i64 16}
!26 = !{!"_ZTSSt6vectorIP11aiAnimationSaIS1_EE", !27, i64 0}
!27 = !{!"_ZTSSt12_Vector_baseIP11aiAnimationSaIS1_EE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseIP11aiAnimationSaIS1_EE12_Vector_implE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseIP11aiAnimationSaIS1_EE17_Vector_impl_dataE", !21, i64 0, !21, i64 8, !21, i64 16}
!30 = !{!"_ZTSSt6vectorIP7aiLightSaIS1_EE", !31, i64 0}
!31 = !{!"_ZTSSt12_Vector_baseIP7aiLightSaIS1_EE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseIP7aiLightSaIS1_EE12_Vector_implE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseIP7aiLightSaIS1_EE17_Vector_impl_dataE", !21, i64 0, !21, i64 8, !21, i64 16}
!34 = !{!"_ZTSSt6vectorIP8aiCameraSaIS1_EE", !35, i64 0}
!35 = !{!"_ZTSSt12_Vector_baseIP8aiCameraSaIS1_EE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseIP8aiCameraSaIS1_EE12_Vector_implE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseIP8aiCameraSaIS1_EE17_Vector_impl_dataE", !21, i64 0, !21, i64 8, !21, i64 16}
!38 = !{!"_ZTSSt6vectorIP9aiTextureSaIS1_EE", !39, i64 0}
!39 = !{!"_ZTSSt12_Vector_baseIP9aiTextureSaIS1_EE", !40, i64 0}
!40 = !{!"_ZTSNSt12_Vector_baseIP9aiTextureSaIS1_EE12_Vector_implE", !41, i64 0}
!41 = !{!"_ZTSNSt12_Vector_baseIP9aiTextureSaIS1_EE17_Vector_impl_dataE", !21, i64 0, !21, i64 8, !21, i64 16}
!42 = !{!"_ZTSSt3mapIPKN6Assimp3FBX8MaterialEjSt4lessIS4_ESaISt4pairIKS4_jEEE", !43, i64 0}
!43 = !{!"_ZTSSt8_Rb_treeIPKN6Assimp3FBX8MaterialESt4pairIKS4_jESt10_Select1stIS7_ESt4lessIS4_ESaIS7_EE", !44, i64 0}
!44 = !{!"_ZTSNSt8_Rb_treeIPKN6Assimp3FBX8MaterialESt4pairIKS4_jESt10_Select1stIS7_ESt4lessIS4_ESaIS7_EE13_Rb_tree_implISB_Lb1EEE", !45, i64 0, !47, i64 8}
!45 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIPKN6Assimp3FBX8MaterialEEE", !46, i64 0}
!46 = !{!"_ZTSSt4lessIPKN6Assimp3FBX8MaterialEE"}
!47 = !{!"_ZTSSt15_Rb_tree_header", !48, i64 0, !50, i64 32}
!48 = !{!"_ZTSSt18_Rb_tree_node_base", !49, i64 0, !21, i64 8, !21, i64 16, !21, i64 24}
!49 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!50 = !{!"long", !7, i64 0}
!51 = !{!"_ZTSSt3mapIPKN6Assimp3FBX5VideoEjSt4lessIS4_ESaISt4pairIKS4_jEEE", !52, i64 0}
!52 = !{!"_ZTSSt8_Rb_treeIPKN6Assimp3FBX5VideoESt4pairIKS4_jESt10_Select1stIS7_ESt4lessIS4_ESaIS7_EE", !53, i64 0}
!53 = !{!"_ZTSNSt8_Rb_treeIPKN6Assimp3FBX5VideoESt4pairIKS4_jESt10_Select1stIS7_ESt4lessIS4_ESaIS7_EE13_Rb_tree_implISB_Lb1EEE", !54, i64 0, !47, i64 8}
!54 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIPKN6Assimp3FBX5VideoEEE", !55, i64 0}
!55 = !{!"_ZTSSt4lessIPKN6Assimp3FBX5VideoEE"}
!56 = !{!"_ZTSSt3mapIPKN6Assimp3FBX8GeometryESt6vectorIjSaIjEESt4lessIS4_ESaISt4pairIKS4_S7_EEE", !57, i64 0}
!57 = !{!"_ZTSSt8_Rb_treeIPKN6Assimp3FBX8GeometryESt4pairIKS4_St6vectorIjSaIjEEESt10_Select1stISA_ESt4lessIS4_ESaISA_EE", !58, i64 0}
!58 = !{!"_ZTSNSt8_Rb_treeIPKN6Assimp3FBX8GeometryESt4pairIKS4_St6vectorIjSaIjEEESt10_Select1stISA_ESt4lessIS4_ESaISA_EE13_Rb_tree_implISE_Lb1EEE", !59, i64 0, !47, i64 8}
!59 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIPKN6Assimp3FBX8GeometryEEE", !60, i64 0}
!60 = !{!"_ZTSSt4lessIPKN6Assimp3FBX8GeometryEE"}
!61 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEE", !62, i64 0}
!62 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_jESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE", !63, i64 0}
!63 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_jESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE13_Rb_tree_implISC_Lb1EEE", !64, i64 0, !47, i64 8}
!64 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !65, i64 0}
!65 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!66 = !{!"_ZTSSt3mapIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP6aiBoneSt4lessIS6_ESaISt4pairIS6_S8_EEE", !67, i64 0}
!67 = !{!"_ZTSSt8_Rb_treeIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIS6_P6aiBoneESt10_Select1stISA_ESt4lessIS6_ESaISA_EE", !68, i64 0}
!68 = !{!"_ZTSNSt8_Rb_treeIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIS6_P6aiBoneESt10_Select1stISA_ESt4lessIS6_ESaISA_EE13_Rb_tree_implISE_Lb1EEE", !69, i64 0, !47, i64 8}
!69 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !70, i64 0}
!70 = !{!"_ZTSSt4lessIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!71 = !{!"double", !7, i64 0}
!72 = !{!"_ZTSSt6vectorIP10aiSkeletonSaIS1_EE", !73, i64 0}
!73 = !{!"_ZTSSt12_Vector_baseIP10aiSkeletonSaIS1_EE", !74, i64 0}
!74 = !{!"_ZTSNSt12_Vector_baseIP10aiSkeletonSaIS1_EE12_Vector_implE", !75, i64 0}
!75 = !{!"_ZTSNSt12_Vector_baseIP10aiSkeletonSaIS1_EE17_Vector_impl_dataE", !21, i64 0, !21, i64 8, !21, i64 16}
!76 = !{!77, !6, i64 10}
!77 = !{!"_ZTSN6Assimp3FBX14ImportSettingsE", !6, i64 0, !6, i64 1, !6, i64 2, !6, i64 3, !6, i64 4, !6, i64 5, !6, i64 6, !6, i64 7, !6, i64 8, !6, i64 9, !6, i64 10, !6, i64 11, !6, i64 12, !6, i64 13, !6, i64 14}
!78 = !{!79, !16, i64 32}
!79 = !{!"_ZTSSt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjE", !80, i64 0, !16, i64 32}
!80 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !81, i64 0, !50, i64 8, !7, i64 16}
!81 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !21, i64 0}
!82 = !{i64 0, i64 4, !12, i64 4, i64 4, !12, i64 8, i64 4, !12, i64 12, i64 4, !12, i64 16, i64 4, !12, i64 20, i64 4, !12, i64 24, i64 4, !12, i64 28, i64 4, !12, i64 32, i64 4, !12, i64 36, i64 4, !12, i64 40, i64 4, !12, i64 44, i64 4, !12, i64 48, i64 4, !12, i64 52, i64 4, !12, i64 56, i64 4, !12, i64 60, i64 4, !12}
!83 = distinct !{!83, !84, !85}
!84 = !{!"llvm.loop.mustprogress"}
!85 = !{!"llvm.loop.peeled.count", i32 3}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LoopFullUnrollPass,LoopRotatePass,LoopUnrollPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass